Development RoadMap for ChimeraPy-Dashboard/ API Planning #87
Replies: 5 comments 14 replies
-
ManagerStatesA manager can be in the following states (we can name them accordingly):
Propertiesenum ManagerState {
STARTED = 0, // Just Launched
WORKERS_CONNECTED = 1, // Few Workers are connected
NODES_READY = 2, // Nodes are ready (Graph Commited)
EXECUTING = 3, // Executing the current pipeline
STOPPED = 4, // Stop Command has been applied
FINALIZING = 5, // Finalizing the bookkeeping and datatransfoer
}
interface Manager {
state: ManagerState;
ip: string; // Define proper IP
port: number;
workers: Worker[]; // ToDo Worker Definitions
graph?: Graph; // ToDo Graph Definitions
worker_graph_map?: { string: string }[];
} Capabilities
More thought is needed here? |
Beta Was this translation helpful? Give feedback.
-
WorkerA worker will have similar properties (is a peer in the distributed network) and can data is only accessible from the Currently, I have thought the following properties for a worker: interface Worker {
ip: string;
name: string;
id: string;
port: number;
nodes: Node[]; // ToDo NodeDefinition
} |
Beta Was this translation helpful? Give feedback.
-
A node is an actual process entity running in the worker. It can be a source / sink node producing/ consuming data but Propertiesinterface Node {
name: string;
id: string;
port: number;
running: boolean;
data_type: 'Video' | 'Series' | 'Audio';
dashboard_component: null | string;
capabilities: ('callibrate'| 'start' | 'stop')[];
} |
Beta Was this translation helpful? Give feedback.
-
Additionally, the dashboard code development has been haphazard. It might be nice to build an acceptable version and work on one feature at a time. I am thinking that we might just do the following:
|
Beta Was this translation helpful? Give feedback.
-
This has stalled a bit but here's a JSON schema that we can start out with. {
"$schema": "http://json-schema.org/draft/2020-12/schema",
"$id": "network.schema.json",
"title": "network",
"description": "network details for chimerapy",
"type": "object",
"properties": {
"id": {
"description": "manager id",
"type": "string"
},
"name": {
"description": "manager name",
"type": "string"
},
"ip": {
"description": "manager ip",
"type": "string"
},
"port": {
"description": "manager port",
"type": "integer"
},
"platform": {
"description": "manager platform information",
"type": "object",
"properties": {
"name": {
"description": "platform name",
"type": "string"
},
"operating_system": {
"description": "operating system",
"type": "string"
},
"architecture": {
"description": "architecture",
"type": "string"
},
"python_version": {
"description": "python version",
"type": "string"
},
"ram": {
"description": "ram",
"type": "string"
}
}
},
"routes": {
"description": "routes for the manager",
"items": {
"$ref": "#/$defs/route"
}
},
"publishing_logs": {
"description": "publishing logs",
"type": "boolean"
},
"logs_subscription_port": {
"description": "logs subscription port",
"type": "integer"
},
"workers": {
"description": "workers connected to the manager",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "worker id",
"type": "string"
},
"name": {
"description": "worker name",
"type": "string"
},
"ip": {
"description": "worker ip",
"type": "string"
},
"port": {
"description": "worker port",
"type": "integer"
},
"nodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"description": "node id",
"type": "string"
},
"name": {
"description": "node name",
"type": "string"
},
"ip": {
"description": "node ip",
"type": "string"
},
"port": {
"description": "node port",
"type": "integer"
}
},
"required": [
"id",
"name",
"ip",
"port"
]
}
}
},
"required": [
"id",
"name",
"ip",
"port",
"publishing_logs"
]
}
},
"required": [
"id",
"name",
"ip",
"port",
"routes",
"workers"
]
},
"$defs": {
"route": {
"type": "object",
"properties": {
"url": {
"description": "url for the route",
"type": "string"
},
"method": {
"description": "method for the route",
"$ref": "#/$defs/method"
},
"body": {
"description": "body for the route",
"type": "object"
},
"description": {
"description": "description for the route",
"type": "string"
}
},
"required": [
"url",
"method",
"description"
]
},
"method": {
"type": "string",
"enum": [
"GET",
"POST",
"PUT",
"DELETE"
]
}
}
}
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Development RoadMap for ChimeraPy-Dashboard/ API Planning
This is a rough road map for developing dashboard for ChimeraPy. Eventually, this will be formalized but this is a quick
and dirty version (per se).
Currently, the challenge is how to think about different nodes and their components. So, a nice roadmap with API Schema
and corresponding typescript components should be made possible. There are several possibilities, however, the straight
forward way to do it is to gather the network tree at once is a svelte store and eventual changes in the tree should be
populated by a message passing interface from the server.
But, what does the data look like. And what are the routes?
This is an ongoing/evolving thought process. However, Lets look at the entities in our Network. Note that the graph is a
separate entity and should be treated as such. i.e. A manager will have access to all the global nodes that can be used
to create a pipeline.
Beta Was this translation helpful? Give feedback.
All reactions