ODENOS core Component: System Manager
System Manager is in charge of managing the ComponentManager, EventManager, ComponentType, Component, and ComponentConnection.
Followings are brief description of these components' REST API
-
GET <base_uri>/objects/<object_id>
Here, <base_uri> is http://<hostname>:10080/systemmanager such as http://localhost:10080/systemmanager
- GET <base_uri>/component_managers
- GET <base_uri>/component_managers/<compmgr_id>
- GET <base_uri>/component_managers/<compmgr_id>/component_types
- PUT <base_uri>/component_managers/<compmgr_id>
- DELETE <base_uri>/component_managers/<compmgr_id>
- GET <base_uri>/components
- GET <base_uri>/components/<comp_id>
- POST <base_uri>/components
- PUT <base_uri>/components/<comp_id>
- DELETE <base_uri>/components/<comp_id>
- GET <base_uri>/component_types
- GET <base_uri>/component_types/<ComponentType>
- GET <base_uri>/connections
- GET <base_uri>/connections/<conn_id>
- POST <base_uri>/connections
- PUT <base_uri>/connections/<conn_id>
- DELETE <base_uri>/connections/<conn_id>
get Object property.
- Body : none
- Status Code : 200
- Body : ObjectProperty
update Object property.
- Body : ObjectProperty
- Status Code : 200
- Body : ObjectProperty
get Object settings.
- Body : none
- Status Code : 200
- Body : ObjectSettings
set Object settings.
- Body : ObjectSettings
- Status Code : 200
- Body : ObjectSettings
get RemoteObject ObjectProperty.(SystemManager, EventManager, ComponentManager, Component ..)
<object_id> is ObjectProperty.id
- Body : none
- Status Code : 200
- Body : ObjectProperty
Get ComponentManagers list.
- Body : none
- Status Code : 200
- Body : ComponentManager.property
get ComponentManagers property
- Body : none
- Status Code : 200
- Body : ComponentManager.property
get ComponentType list.
ComponentType is Registered Component.Property.type
- Body : none
- Status Code : 200
- Body : dict {ComponentType:{"type" :<string> "super_type":<string> , "connection_types":{<string>: <string>} , "description":<string> }
{
"Aggregator" : { "type": "Aggregator" , "super_type":"Aggregator" ,
"connection_types":{"original":"1", "aggregated":"1"}, "description":"Aggregator ...." },
"Slicer" : { "type": "Slicer" , "super_type":"Slicer" ,
"connection_types":{"original":"1", "Sliver":"*"}, "description":"Slicer ...." },
"Federator" : { "type": "Federator" , "super_type":"Federator" ,
"connection_types":{"original":"*", "Federeted":"1"}, "description":"Federator ...." }
}
| Key | Value | Description |
|---|---|---|
| type | <String> | ObjectType (example:ComponentManager,Network,Slicer,,,) |
| super_type | <String> | super class ObjectType. (example:ComponentManager,NetworkComponent,Slicer,,,) |
| connection_types | dict{<String>:<String>} | ComponentConnection.connection_type : connection max num |
| description | <String> |
get a list of ComponentManager.property <ComponentType> that can be created.
<ComponentType> is Registered Component.Property.type
- Body : none
- Status Code : 200
- Body : list[ComponentManager.property]
Registration ComponentManager in System management.
ComponentManager register themselves the SystemManager.
notification event "ComponentManagerChanged"
- Body : ComponentManager.property
- Status Code : 200
- Body : ComponentManager.property
delete ComponentManager notification event "ComponentManagerChanged"
- Body : none
- Status Code : 200
- Body : none
get EventManagers property
- Body : none
- Status Code : 200
- Body : EventManager.property
get ComponentType list.
ComponentType is Registered Component.Property.type
- Body : none
- Status Code : 200
- Body : dict {ComponentType, [ComponentManager.property]}
- Body : dict {ComponentType:{"type" :<string> , "super_type":<string> , "connection_types":{<string>: <string>} , "description":<string>, "cm_id" :list[ <string> ] }
{
"Aggregator" : { "type": "Aggregator" , "super_type":"Aggregator" ,
"connection_types":{"original":"1", "aggregated":"1"}, "description":"Aggregator ....",
"cm_id":["CompManager1", "CompManager2"]},
"Slicer" : { "type": "Slicer" , "super_type":"Slicer" ,
"connection_types":{"original":"1", "Sliver":"*"}, "description":"Slicer ....",
"cm_id":["CompManager1", "CompManager2"]},
"Federator" : { "type": "Federator" , "super_type":"Federator" ,
"connection_types":{"original":"*", "Federeted":"1"}, "description":"Federator ....",
"cm_id":["CompManager1", "CompManager2"]}
}
| Key | Value | Description |
|---|---|---|
| type | <String> | ObjectType (example:ComponentManager,Network,Slicer,,,) |
| super_type | <String> | super class ObjectType. (example:ComponentManager,NetworkComponent,Slicer,,,) |
| connection_types | dict{<String>:<String>} | ComponentConnection.connection_type : connection max num |
| description | <String> | |
| cm_id | list[<String>] | componentManager.Property.id |
get a list of ComponentManager.property <ComponentType> that can be created.
<ComponentType> is Registered Component.Property.type
- Body : none
- Status Code : 200
- Body : list[ComponentManager.property]
get Component instance List.
- Body : none
- Status Code : 200
- Body : dict { Component.Property.id, Component.Property }
- Note : Component.Property is Component instance information.
It want to get the components that are instantiated.
<comp_id> is Component.property.id
- Body : none
- Status Code : 200
- Body : Component.Property
- Note : Component.Property is Component instance information.
Component instance create.
id is granted automatically. (specified id is invalid)
notification event "ComponentChanged"
- Body : Component.Property
- Note : See below.
| key | value | description |
|---|---|---|
| type | <String> | ObjectType (example:ComponentManager, Network, Aggregator, Slicer, ...) |
| cm_id | <String> | Specify the componentManager.Property.id to generate an instance. (Optional) |
{
"type": "Network", "cm_id" : "compmgr_java"
}
Component instance create or update. notification event "ComponentChanged"
- Body : Component.Property
- Note : See below.
| key | value | description |
|---|---|---|
| id | <String> | ObjectID (unique ID of ODENOS) |
| type | <String> | ObjectType (example:ComponentManager, Network, Aggregator, Slicer, ...) |
| cm_id | <String> | Specify the componentManager.Property.id to generate an instance. (Optional) |
{
"id": "network1", "type": "Network", "cm_id" : "compmgr_java"
}
- Status Code : 200
- Body : Component.Property
- Status Code : 201
- Body : Component.Property
Delete Component instance. <comp_id> is Component.property.id notification event "ComponentChanged"
- Body : none
- Status Code : 200
- Body : none
get ComponentConnection infomation.
- Body : none
- Status Code : 200
- Body : dict{ComponentConnection.id, ComponentConnection }
get ComponentConnection. <conn_id> is ComponentConnection.id
- Body : none
- Status Code : 200
- Body : dict{ComponentConnection.id, ComponentConnection }
create ComponentConnection. notification event "ComponentConnectionChanged"
- Body : ComponentConnection
{
"type": "LogicAndNetwork",
"connection_type": "original", "logic_id": "slicer1", "network_id":"network0"
}
- Status Code : 200
- Body : ComponentConnection
update ComponentConnection. <conn_id> is ComponentConnection.id
notification event "ComponentConnectionChanged"
- Body : ComponentConnection
{
"id": "connection0", "type": "LogicAndNetwork",
"connection_type": "original", "logic_id": "slicer1", "network_id":"network0",
"status": "initializing"
}
- Status Code : 200
- Body : ComponentConnection
- Status Code : 201
- Body : ComponentConnection
delete ComponentConnection. <conn_id> is ComponentConnection.id
notification event "ComponentConnectionChanged"
- Body : none
- Status Code : 200
- Body : none
