Network has a function of storing an object according to an abstract model of network.
Network notifies the Event when there is a change in information.
-
Create Instance of Network.
Generate an instance of Network by performing a POST to the System Manager.
key | value | description |
---|---|---|
id | <String> | Unique Identifier in ODENOS. |
type | "Network" | ObjectType |
cm_id | <String> | Specify the componentManager.Property.id to generate an instance. (Optional) |
- Topology
URI | GET | POST | PUT | DELETE |
---|---|---|---|---|
<base_uri>/topology | x | x | ||
<base_uri>/topology/nodes | x | x | ||
<base_uri>/topology/nodes/<node_id> | x | x | x | |
<base_uri>/topology/nodes/<node_id>/attributes | x | |||
<base_uri>/topology/physical_nodes/<physical_id> | x | x | x | |
<base_uri>/topology/physical_nodes/<physical_id>/attributes | x | |||
<base_uri>/topology/nodes/<node_id>/ports | x | x | ||
<base_uri>/topology/nodes/<node_id>/ports/<port_id> | x | x | x | |
<base_uri>/topology/nodes/<node_id>/ports/<port_id>/attributes | x | |||
<base_uri>/topology/physical_ports/<physical_id> | x | x | x | |
<base_uri>/topology/physical_ports/<physical_id>/attributes | x | |||
<base_uri>/topology/links | x | x | ||
<base_uri>/topology/links/<link_id> | x | x | x | |
<base_uri>/topology/links/<link_id>/attributes | x |
Here, <base_uri> is http://<hostname>:10080/<remote_object_id> such as http://localhost:10080/network1
- Flows
URI | GET | POST | PUT | DELETE |
---|---|---|---|---|
<base_uri>/flows | x | x | ||
<base_uri>/flows/<flow_id> | x | x | x | |
<base_uri>/flows/<flow_id>/attributes | x |
- Packets
URI | GET | POST | PUT | DELETE |
---|---|---|---|---|
<base_uri>/packets | x | |||
<base_uri>/packets/in | x | x | x | |
<base_uri>/packets/in/head | x | x | ||
<base_uri>/packets/in/<packet_id> | x | x | ||
<base_uri>/packets/out | x | x | x | |
<base_uri>/packets/out/head | x | x | ||
<base_uri>/packets/out/<packet_id> | x | x |
- POST <base_uri>/topology/nodes
- GET <base_uri>/topology/nodes
- GET <base_uri>/topology/nodes/<node_id>
- PUT <base_uri>/topology/nodes/<node_id>
- PUT <base_uri>/topology/nodes/<node_id>/attributes
- DELETE <base_uri>/topology/nodes/<node_id>
- GET <base_uri>/topology/physical_nodes/<physical_id>
- PUT <base_uri>/topology/physical_nodes/<physical_id>
- PUT <base_uri>/topology/physical_nodes/<physical_id>/attributes
- DELETE <base_uri>/topology/physical_nodes/<physical_id>
- POST <base_uri>/topology/nodes/<node_id>/ports
- GET <base_uri>/topology/nodes/<node_id>/ports
- GET <base_uri>/topology/nodes/<node_id>/ports/<port_id>
- PUT <base_uri>/topology/nodes/<node_id>/ports/<port_id>
- PUT <base_uri>/topology/nodes/<node_id>/ports/<port_id>/attributes
- DELETE <base_uri>/topology/nodes/<node_id>/ports/<port_id>
- GET <base_uri>/topology/physical_ports/<physical_id>
- PUT <base_uri>/topology/physical_ports/<physical_id>
- PUT <base_uri>/topology/physical_ports/<physical_id>/attributes
- DELETE <base_uri>/topology/physical_ports/<physical_id>
- POST <base_uri>/topology/links
- GET <base_uri>/topology/links
- GET <base_uri>/topology/links/<link_id>
- PUT <base_uri>/topology/links/<link_id>
- PUT <base_uri>/topology/links/<link_id>/attributes
- DELETE <base_uri>/topology/links/<link_id>
- POST <base_uri>/flows
- GET <base_uri>/flows
- GET <base_uri>/flows/<flow_id>
- PUT <base_uri>/flows/<flow_id>
- PUT <base_uri>/flows/<flow_id>/attributes
- DELETE <base_uri>/flows/<flow_id>
- GET <base_uri>/packets
- POST <base_uri>/packets/in
- GET <base_uri>/packets/in
- DELETE <base_uri>/packets/in
- GET <base_uri>/packets/in/head
- DELETE <base_uri>/packets/in/head
- GET <base_uri>/packets/in/<packet_id>
- DELETE <base_uri>/packets/in/<packet_id>
- POST <base_uri>/packets/out
- GET <base_uri>/packets/out
- DELETE <base_uri>/packets/out
- GET <base_uri>/packets/out/head
- DELETE <base_uri>/packets/out/head
- GET <base_uri>/packets/out/<packet_id>
- DELETE <base_uri>/packets/out/<packet_id>
get Object property.
- Body : none
- Status Code : 200
- Body : ObjectProperty
update Object property.
- Body : ObjectProperty
- Status Code : 200
- Body : ObjectProperty
get topology NetworkComponent
- Body : none
- Status Code : 200
- Body : Topology
update the entire topology.
- Body : Topology
- Status Code : 200
- Body : Topology
add a Node to Network.id is granted automatically. (specified id is invalid)
- Body : Node
- Status Code : 200
- Body : Node
Get node List.
- Body : none
get the node. (specify the id that you want to get)
- Body : none
- Status Code : 200
- Body : Node
update the node.(specify the id that you want to update)
create a new node if id does not exist.
- Body : Node
- Status Code : 200
- Body : Node
- Status Code : 201
- Body : Node
update the node without check of the version. (specify the id that you want to update) using the one before updating, if any, as values of the attributes which aren't specified.
- Body : attributes dict{<String>, <String>}
- Status Code : 200
- Body : Node
Delete the Node. (specify the id that you want to delete)
can not delete if the link is set to port.
- Body : Node or none
- Note : If body is none, the deleted regardless of the version.
- Status Code : 200
- Body : none
- Status Code : 409
- Body : Node or none
- Note : failure(Version mismatch, Link exists.)
get the node. (specify the physical id that you want to get)
- Body : none
- Status Code : 200
- Body : Node
- Note : Physical ID is the only id in the system. If the same id exists, I will respond the first to found id.
update the node.(specify the physical id that you want to update)
create a new node if id does not exist.
- Status Code : 200
- Body : Node
- Status Code : 201
- Body : Node
update the node without check of the version. (specify the physical id that you want to update) using the one before updating, if any, as values of the attributes which aren't specified.
- Body : attributes dict{<String>, <String>}
- Status Code : 200
- Body : Node
Delete the Node. (specify the physical id that you want to delete)
can not delete if the link is set to port.
- Body : Node or none
- Note : If body is none, the deleted regardless of the version.
- Status Code : 200
- Body : none
- Status Code : 409
- Body : Node or none
- Note : failure(Version mismatch, Link exists.)
add a Port to Node. Port id will be generated automatically. (Port id specified by request body will be ignored)
- Body : Port
- Status Code : 200
- Body : Port
Get port List.
- Body : none
get the port. (specify the id that you want to get)
- Body : none
- Status Code : 200
- Body : Port
update the port. (specify the id that you want to update)
create a new port if id does not exist.
- Body : Port
- Status Code : 200
- Body : Port
- Status Code : 201
- Body : Port
update the port without check of the version. (specify the id that you want to update) using the one before updating, if any, as values of the attributes which aren't specified.
- Body : attributes dict{<String>, <String>}
- Status Code : 200
- Body : Port
Delete the port. (specify the id that you want to delete)
can not delete if the link is set to port.
- Body : Port or none
- Note : If body is none, the deleted regardless of the version.
- Status Code : 200
- Body : none
- Status Code : 409
- Body : Port or none
- Note : failure(Version mismatch, Link exists.)
get the port. (specify the physical id that you want to get)
- Body : none
- Status Code : 200
- Body : Port
- Note : Physical ID is the only id in the system. If the same id exists, I will respond the first to found id.
update the port.(specify the physical id that you want to update)
create a new port if id does not exist.
- Body : Port
- Status Code : 200
- Body : Port
- Status Code : 201
- Body : Port
update the port without check of the version. (specify the physical id that you want to update) using the one before updating, if any, as values of the attributes which aren't specified.
- Body : attributes dict{<String>, <String>}
- Status Code : 200
- Body : Port
Delete the port. (specify the physical id that you want to delete)
can not delete if the link is set to port.
- Body : Port or none
- Note : If body is none, the deleted regardless of the version.
- Status Code : 200
- Body : none
- Status Code : 409
- Body : Port or none
- Note : failure(Version mismatch, Link exists.)
add a Link to Network.id is granted automatically. (specified id is invalid)
- Body : Link
- Status Code : 200
- Body : Link
Get Link List.
- Body : none
get the link. (specify the id that you want to get)
- Body : none
- Status Code : 200
- Body : Link
update the link.(specify the id that you want to update)
create a new link if id does not exist.
- Body : Link
- Status Code : 200
- Body : Link
- Status Code : 201
- Body : Link
update the link without check of the version. (specify the id that you want to update) using the one before updating, if any, as values of the attributes which aren't specified.
- Body : attributes dict{<String>, <String>}
- Status Code : 200
- Body : Link
Delete the link. (specify the id that you want to delete)
- Body : Link or none
- Note : If body is none, the deleted regardless of the version.
- Status Code : 200
- Body : none
- Status Code : 409
- Body : Link or none
- Note : failure(Version mismatch)
add a Flow to Network.id is granted automatically. (specified id is invalid)
- Body : Flow
- Status Code : 200
- Body : Flow
{
"type": "BasicFlow",
"owner": "xxxxxxxx",
"enabled": true,
"matches": [ {...(BasicFlowMatch)...} ]
"path": ["LINK_ID1", "LINK_ID2"]
"edge_actions": {
"NODE_ID_1": [
{...(BasicFlowAction)...},
{...(BasicFlowAction)...},]
}
}
Get Flow List.
- Body : none
- Status Code : 200
- Body : dict<Flow.id , : Flow
get the flow. (specify the id that you want to get)
- Body : none
- Status Code : 200
- Body : Flow
update the flow.(specify the id that you want to update)
create a new flow if id does not exist.
- Body : Flow
- Status Code : 200
- Body : Flow
- Status Code : 201
- Body : Flow
update the flow without check of the version. (specify the id that you want to update) using the one before updating, if any, as values of the attributes which aren't specified.
- Body : attributes dict{<String>, <String>}
- Status Code : 200
- Body : Flow
Delete the flow. (specify the id that you want to delete)
- Body : Flow or none
- Note : If body is none, the deleted regardless of the version.
- Status Code : 200
- Body : none
- Status Code : 409
- Body : Flow
- Note : failure(Version mismatch)
get the statistics of packets.
- Body : none
- Status Code : 200
- Body : PacketStatus
get the statistics of InPackets.
- Body : none
- Status Code : 200
- Body : PacketStatus
add a InPacket to network. want to add to the queue of tail.
- Body : InPacket
- Status Code : 200
- Body : InPacket
Delete all of the InPacket.
- Body : none
- Status Code : 200
- Body : none
Get InPacket of the first.
- Body : none
- Status Code : 200
- Body : InPacket
- Status Code : 204
- Body : none
- Note : InPacket Not exist.
Get InPacket and Delete OutPacket of the first.
- Body : none
- Status Code : 200
- Body : InPacket
- Status Code : 204
- Body : none
- Note : InPacket Not exist.
get the InPacket. (specify the physical id that you want to get)
- Body : none
- Status Code : 200
- Body : InPacket
- Status Code : 404
- Body : none
- Note : InPacket Not exist.
get the InPacket. and delete. (specify the physical id that you want to get)
- Body : none
- Status Code : 200
- Body : InPacket
- Status Code : 404
- Body : none
- Note : InPacket Not exist.
add a OutPacket to network. want to add to the queue of tail.
- Body : OutPacket
- Status Code : 200
- Body : OutPacket
get the statistics of OutPackets.
- Body : none
- Status Code : 200
- Body : PacketStatus
Delete all of the OutPacket.
- Body : none
- Status Code : 200
- Body : none
Get OutPacket of the first.
- Body : none
- Status Code : 200
- Body : OutPacket
- Status Code : 204
- Body : none
- Note : OutPacket Not exist.
Get OutPacket and Delete OutPacket of the first.
- Body : none
- Status Code : 200
- Body : OutPacket
- Status Code : 204
- Body : none
- Note : OutPacket Not exist.
get the OutPacket.(specify the physical id that you want to get)
- Body : none
- Status Code : 200
- Body : OutPacket
get the OutPacket. and Delete. (specify the physical id that you want to get)
- Body : none
- Status Code : 200
- Body : OutPacket
- Search by specifying in the query form.( ./src/example/rest_sample/rest_query.sh)
- The search for the API, not only for REST, is also available from logic of Python and Java.
- topology and flow and the packet is available search.
- value match for key of attribute.
- Search specify exact only.
- [GET] topology/nodes?attributes="key1=value1"&attributes="key2=value2"....
- [GET] topology/nodes/<node_id>/ports?attributes="key1=value1"&attributes="key2=value2"....
- [GET] topology/links?attributes="key1=value1"&attributes="key2=value2"....
- value match for key of attribute.
- Search specify exact only.
- [GET] packets/in?attributes="key1=value1"&attributes="key2=value2"....
- [GET] packets/out?attributes="key1=value1"&attributes="key2=value2"....
- In combination of the following key is searchable.
- Searchable key
- flow.type
- flow.enabled
- flow.status
- flow.path
- That it contains the values for the following specified key.
- Searchable key : link_id, node_id, node_id&port_id
- flow.matches
- That it contains the values for the following specified key.
- "type" is mandatory key.
- flow.actions
- That it contains the values for the following specified key.
- "type" is mandatory key.Searchable type is only "OFPFlowActionOutput".
- edge_node=node1
- edge_node=node1,output=port1
- flow.attributes
- Need to specify the exact keys and values.
- [GET] flows?type=typevalue&key1=value1&key2=value2....
- Flow.enabled
- [GET] flows?type=value1&enabled=value2....
- Flow.status
- [GET] flows?type=value1&status=value2....
- Flow.path
- [GET] flows?type=value1&path="link_id=link1"....
- [GET] flows?type=value1&path="node_id=node1"....
- [GET] flows?type=value1&path="node_id=node1,port_id=port1"....
- Flow.match
- [GET] flows?type=value1&match="type=value2,key3=value3,key4=value4"....
- Flow.actions
- [GET] flows?type=value1&actions="type=OFPFlowActionOutput,edge_node=node1,edge_node=node1,output=port1"....
- attributes
- [GET] flows?type=value1&attributes="key1=value1"....