diff --git a/commands.txt b/commands.txt index 79e803a..fc2798e 100644 --- a/commands.txt +++ b/commands.txt @@ -23,6 +23,7 @@ $ pyang -f pybind topology.yang --plugindir $PYBINDPLUGIN -o binding_topology.py $ python3 topology.py === EXERCISE: CONNECTION +$ cd /root/OFC_SC472/yang/connection $ python3 connection.py == NETCONF @@ -34,30 +35,46 @@ In another window, run client: $ cd /root/OFC_SC472/netconf $ python3 clientTopology.py +=== EXERCISE: NETCONF EDIT-CONFIG + +Run server: +$ cd /root/OFC_SC472/netconf/connection +$ python3 serverTopologyConnection.py + +In another window, run client: +$ cd /root/OFC_SC472/netconf/connection +$ python3 clientConnection.py + + == RESTCONF === YANG2SWAGGER $ cd /root/OFC_SC472/restconf +(if needed) $ wget https://github.com/bartoszm/yang2swagger/releases/download/1.1.11/swagger-generator-cli-1.1.11-executable.jar + +Generate swagger files: $ java -jar swagger-generator-cli-1.1.11-executable.jar -yang-dir ../yang/ -output topology.yaml topology $ java -jar swagger-generator-cli-1.1.11-executable.jar -yang-dir ../yang/ -output connection.yaml connection === SERVER $ cd /root/OFC_SC472/restconf +(if needed) $ wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.11/swagger-codegen-cli-3.0.11.jar -O swagger-codegen-cli.jar + Create the server: -$ java -jar swagger-codegen-cli.jar generate -i connection.yaml -l python-flask -o server/ +$ mkdir /root/OFC_SC472/restconf/server +$ java -jar swagger-codegen-cli.jar generate -i connection.yaml -l python-flask -o server + Run the server: $ cd /root/OFC_SC472/restconf/server $ pip3 install -r requirements.txt -(Open /root/OFC_SC472/restconfserver/swagger_server/swagger/swagger.yaml and modify all: "name: connection_id" for "name: connection-id") +(Open /root/OFC_SC472/restconf/server/swagger_server/swagger/swagger.yaml and modify all: "name: connection_id" for "name: connection-id") RUN AUTOGENERATED SERVER $ python3 -m swagger_server -RUN CONNECTION SERVER -$ cd /root/OFC_SC472/restconf/connectionserver -$ python3 -m swagger_server +(you have the solution in /root/OFC_SC472/restconf/connectionserver ) RUN CURL AS CLIENT (In another window) $ cd /root/OFC_SC472/restconf/ @@ -66,19 +83,15 @@ $ curl -X GET -H "Content-Type: application/yang-data+json" http://127.0.0.1:808 $ curl -X DELETE -H "Content-Type: application/yang-data+json" http://127.0.0.1:8080/data/connection=0/ -== RUN ONOS -$ cd /root/onos-2.1.0/apache-karaf-4.2.3/bin/ -$ ./karaf clean -> app activate org.onosproject.openflow -> app activate org.onosproject.gui - -In another terminal, run mininet: -$ mn --topo linear,3 --mac --controller=remote,ip=127.0.0.1,port=6653 --switch ovs,protocols=OpenFlow13 +=== Exercise: RESTCONF TOPOLOGY === +$ mkdir /root/OFC_SC472/restconf/topologyserver +$ java -jar swagger-codegen-cli.jar generate -i topology.yaml -l python-flask -o topologyserver +$ cd /root/OFC_SC472/restconf/topologyserver +(Open /root/OFC_SC472/restconf/topologyserver/swagger_server/swagger/swagger.yaml and modify all: "name: link_id" for "name: link-id", same for node and port) +$ python3 -m swagger_server -In another terminal, we use ONOS REST API: -$ curl -X GET -u onos:rocks --header 'Accept: application/json' http://localhost:8181/onos/v1/links | python -m json.tool -$ cd /root/OFC_SC472/onos_api/ -$ python3 onos_topology.py +RUN CURL AS CLIENT (In another window) +$curl -X GET -H "Content-Type: application/yang-data+json" http://127.0.0.1:8080/data/topology/ == TAPI RUN TAPI SERVER: @@ -191,13 +204,16 @@ $ ./confd_cli > exit > exit -== APPENDIX: NETCONF EDIT-CONFIG - -Run server: -$ cd /root/OFC_SC472/netconf/connection -$ python3 serverTopologyConnection.py +== RUN ONOS +$ cd /root/onos-2.1.0/apache-karaf-4.2.3/bin/ +$ ./karaf clean +> app activate org.onosproject.openflow +> app activate org.onosproject.gui -In another window, run client: -$ cd /root/OFC_SC472/netconf/connection -$ python3 clientConnection.py +In another terminal, run mininet: +$ mn --topo linear,3 --mac --controller=remote,ip=127.0.0.1,port=6653 --switch ovs,protocols=OpenFlow13 +In another terminal, we use ONOS REST API: +$ curl -X GET -u onos:rocks --header 'Accept: application/json' http://localhost:8181/onos/v1/links | python -m json.tool +$ cd /root/OFC_SC472/onos_api/ +$ python3 onos_topology.py diff --git a/restconf/server/swagger_server/controllers/connection_controller.py b/restconf/server/swagger_server/controllers/connection_controller.py deleted file mode 100644 index f8c82bd..0000000 --- a/restconf/server/swagger_server/controllers/connection_controller.py +++ /dev/null @@ -1,80 +0,0 @@ -import connexion -import six - -from swagger_server.models.connection_connection import ConnectionConnection # noqa: E501 -from swagger_server import util - - -def data_connection_post(body=None): # noqa: E501 - """data_connection_post - - creates connection.Connection # noqa: E501 - - :param body: connection.Connection to be added to list - :type body: dict | bytes - - :rtype: None - """ - if connexion.request.is_json: - body = ConnectionConnection.from_dict(connexion.request.get_json()) # noqa: E501 - return 'do some magic!' - - -def data_connectionconnection_id_delete(connection_id): # noqa: E501 - """data_connectionconnection_id_delete - - removes connection.Connection # noqa: E501 - - :param connection_id: Id of connection - :type connection_id: str - - :rtype: None - """ - return 'do some magic!' - - -def data_connectionconnection_id_get(connection_id): # noqa: E501 - """data_connectionconnection_id_get - - returns connection.Connection # noqa: E501 - - :param connection_id: Id of connection - :type connection_id: str - - :rtype: ConnectionConnection - """ - return 'do some magic!' - - -def data_connectionconnection_id_post(connection_id, body=None): # noqa: E501 - """data_connectionconnection_id_post - - creates connection.Connection # noqa: E501 - - :param connection_id: Id of connection - :type connection_id: str - :param body: connection.Connection to be added to list - :type body: dict | bytes - - :rtype: None - """ - if connexion.request.is_json: - body = ConnectionConnection.from_dict(connexion.request.get_json()) # noqa: E501 - return 'do some magic!' - - -def data_connectionconnection_id_put(connection_id, body=None): # noqa: E501 - """data_connectionconnection_id_put - - creates or updates connection.Connection # noqa: E501 - - :param connection_id: Id of connection - :type connection_id: str - :param body: connection.Connection to be added or updated - :type body: dict | bytes - - :rtype: None - """ - if connexion.request.is_json: - body = ConnectionConnection.from_dict(connexion.request.get_json()) # noqa: E501 - return 'do some magic!' diff --git a/restconf/server/swagger_server/models/__init__.py b/restconf/server/swagger_server/models/__init__.py deleted file mode 100644 index 4df8464..0000000 --- a/restconf/server/swagger_server/models/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# coding: utf-8 - -# flake8: noqa -from __future__ import absolute_import -# import models into model package -from swagger_server.models.connection_connection import ConnectionConnection -from swagger_server.models.topology_layer_protocol_name import TopologyLayerProtocolName diff --git a/restconf/server/swagger_server/models/connection_connection.py b/restconf/server/swagger_server/models/connection_connection.py deleted file mode 100644 index 6d6ab83..0000000 --- a/restconf/server/swagger_server/models/connection_connection.py +++ /dev/null @@ -1,219 +0,0 @@ -# coding: utf-8 - -from __future__ import absolute_import -from datetime import date, datetime # noqa: F401 - -from typing import List, Dict # noqa: F401 - -from swagger_server.models.base_model_ import Model -from swagger_server.models.topology_layer_protocol_name import TopologyLayerProtocolName # noqa: F401,E501 -from swagger_server import util - - -class ConnectionConnection(Model): - """NOTE: This class is auto generated by the swagger code generator program. - - Do not edit the class manually. - """ - def __init__(self, target_port: str=None, source_port: str=None, target_node: str=None, connection_id: str=None, bandwidth: int=None, source_node: str=None, layer_protocol_name: TopologyLayerProtocolName=None): # noqa: E501 - """ConnectionConnection - a model defined in Swagger - - :param target_port: The target_port of this ConnectionConnection. # noqa: E501 - :type target_port: str - :param source_port: The source_port of this ConnectionConnection. # noqa: E501 - :type source_port: str - :param target_node: The target_node of this ConnectionConnection. # noqa: E501 - :type target_node: str - :param connection_id: The connection_id of this ConnectionConnection. # noqa: E501 - :type connection_id: str - :param bandwidth: The bandwidth of this ConnectionConnection. # noqa: E501 - :type bandwidth: int - :param source_node: The source_node of this ConnectionConnection. # noqa: E501 - :type source_node: str - :param layer_protocol_name: The layer_protocol_name of this ConnectionConnection. # noqa: E501 - :type layer_protocol_name: TopologyLayerProtocolName - """ - self.swagger_types = { - 'target_port': str, - 'source_port': str, - 'target_node': str, - 'connection_id': str, - 'bandwidth': int, - 'source_node': str, - 'layer_protocol_name': TopologyLayerProtocolName - } - - self.attribute_map = { - 'target_port': 'target-port', - 'source_port': 'source-port', - 'target_node': 'target-node', - 'connection_id': 'connection-id', - 'bandwidth': 'bandwidth', - 'source_node': 'source-node', - 'layer_protocol_name': 'layer-protocol-name' - } - self._target_port = target_port - self._source_port = source_port - self._target_node = target_node - self._connection_id = connection_id - self._bandwidth = bandwidth - self._source_node = source_node - self._layer_protocol_name = layer_protocol_name - - @classmethod - def from_dict(cls, dikt) -> 'ConnectionConnection': - """Returns the dict as a model - - :param dikt: A dict. - :type: dict - :return: The connection.Connection of this ConnectionConnection. # noqa: E501 - :rtype: ConnectionConnection - """ - return util.deserialize_model(dikt, cls) - - @property - def target_port(self) -> str: - """Gets the target_port of this ConnectionConnection. - - - :return: The target_port of this ConnectionConnection. - :rtype: str - """ - return self._target_port - - @target_port.setter - def target_port(self, target_port: str): - """Sets the target_port of this ConnectionConnection. - - - :param target_port: The target_port of this ConnectionConnection. - :type target_port: str - """ - - self._target_port = target_port - - @property - def source_port(self) -> str: - """Gets the source_port of this ConnectionConnection. - - - :return: The source_port of this ConnectionConnection. - :rtype: str - """ - return self._source_port - - @source_port.setter - def source_port(self, source_port: str): - """Sets the source_port of this ConnectionConnection. - - - :param source_port: The source_port of this ConnectionConnection. - :type source_port: str - """ - - self._source_port = source_port - - @property - def target_node(self) -> str: - """Gets the target_node of this ConnectionConnection. - - - :return: The target_node of this ConnectionConnection. - :rtype: str - """ - return self._target_node - - @target_node.setter - def target_node(self, target_node: str): - """Sets the target_node of this ConnectionConnection. - - - :param target_node: The target_node of this ConnectionConnection. - :type target_node: str - """ - - self._target_node = target_node - - @property - def connection_id(self) -> str: - """Gets the connection_id of this ConnectionConnection. - - - :return: The connection_id of this ConnectionConnection. - :rtype: str - """ - return self._connection_id - - @connection_id.setter - def connection_id(self, connection_id: str): - """Sets the connection_id of this ConnectionConnection. - - - :param connection_id: The connection_id of this ConnectionConnection. - :type connection_id: str - """ - - self._connection_id = connection_id - - @property - def bandwidth(self) -> int: - """Gets the bandwidth of this ConnectionConnection. - - - :return: The bandwidth of this ConnectionConnection. - :rtype: int - """ - return self._bandwidth - - @bandwidth.setter - def bandwidth(self, bandwidth: int): - """Sets the bandwidth of this ConnectionConnection. - - - :param bandwidth: The bandwidth of this ConnectionConnection. - :type bandwidth: int - """ - - self._bandwidth = bandwidth - - @property - def source_node(self) -> str: - """Gets the source_node of this ConnectionConnection. - - - :return: The source_node of this ConnectionConnection. - :rtype: str - """ - return self._source_node - - @source_node.setter - def source_node(self, source_node: str): - """Sets the source_node of this ConnectionConnection. - - - :param source_node: The source_node of this ConnectionConnection. - :type source_node: str - """ - - self._source_node = source_node - - @property - def layer_protocol_name(self) -> TopologyLayerProtocolName: - """Gets the layer_protocol_name of this ConnectionConnection. - - - :return: The layer_protocol_name of this ConnectionConnection. - :rtype: TopologyLayerProtocolName - """ - return self._layer_protocol_name - - @layer_protocol_name.setter - def layer_protocol_name(self, layer_protocol_name: TopologyLayerProtocolName): - """Sets the layer_protocol_name of this ConnectionConnection. - - - :param layer_protocol_name: The layer_protocol_name of this ConnectionConnection. - :type layer_protocol_name: TopologyLayerProtocolName - """ - - self._layer_protocol_name = layer_protocol_name diff --git a/restconf/server/swagger_server/swagger/swagger.yaml b/restconf/server/swagger_server/swagger/swagger.yaml deleted file mode 100644 index 85af552..0000000 --- a/restconf/server/swagger_server/swagger/swagger.yaml +++ /dev/null @@ -1,174 +0,0 @@ -openapi: 3.0.1 -info: - title: connection API - description: connection API generated from yang definitions - version: "1.0" -servers: -- url: //localhost:1234/ -paths: - /data/connection/: - post: - tags: - - connection - description: creates connection.Connection - operationId: data_connection_post - requestBody: - description: connection.Connection to be added to list - content: - application/yang-data+json: - schema: - $ref: '#/components/schemas/connection.Connection' - required: false - responses: - 201: - description: Object created - content: {} - 400: - description: Internal error - content: {} - 409: - description: Object already exists - content: {} - x-openapi-router-controller: swagger_server.controllers.connection_controller - /data/connection={connection-id}/: - get: - tags: - - connection - description: returns connection.Connection - operationId: data_connectionconnection_id_get - parameters: - - name: connection-id - in: path - description: Id of connection - required: true - schema: - type: string - responses: - 200: - description: connection.Connection - content: - application/yang-data+json: - schema: - $ref: '#/components/schemas/connection.Connection' - 400: - description: Internal error - content: {} - x-openapi-router-controller: swagger_server.controllers.connection_controller - put: - tags: - - connection - description: creates or updates connection.Connection - operationId: data_connectionconnection_id_put - parameters: - - name: connection-id - in: path - description: Id of connection - required: true - schema: - type: string - requestBody: - description: connection.Connection to be added or updated - content: - application/yang-data+json: - schema: - $ref: '#/components/schemas/connection.Connection' - required: false - responses: - 201: - description: Object created - content: {} - 204: - description: Object modified - content: {} - 400: - description: Internal error - content: {} - x-openapi-router-controller: swagger_server.controllers.connection_controller - post: - tags: - - connection - description: creates connection.Connection - operationId: data_connectionconnection_id_post - parameters: - - name: connection-id - in: path - description: Id of connection - required: true - schema: - type: string - requestBody: - description: connection.Connection to be added to list - content: - application/yang-data+json: - schema: - $ref: '#/components/schemas/connection.Connection' - required: false - responses: - 201: - description: Object created - content: {} - 400: - description: Internal error - content: {} - 409: - description: Object already exists - content: {} - x-openapi-router-controller: swagger_server.controllers.connection_controller - delete: - tags: - - connection - description: removes connection.Connection - operationId: data_connectionconnection_id_delete - parameters: - - name: connection-id - in: path - description: Id of connection - required: true - schema: - type: string - responses: - 204: - description: Object deleted - content: {} - 400: - description: Internal error - content: {} - x-openapi-router-controller: swagger_server.controllers.connection_controller -components: - schemas: - connection.Connection: - type: object - properties: - target-port: - type: string - x-path: /topology:topology/topology:node/topology:port/topology:port-id - source-port: - type: string - x-path: /topology:topology/topology:node/topology:port/topology:port-id - target-node: - type: string - x-path: /topology:topology/topology:node/topology:node-id - connection-id: - type: string - bandwidth: - type: integer - format: int64 - source-node: - type: string - x-path: /topology:topology/topology:node/topology:node-id - layer-protocol-name: - $ref: '#/components/schemas/topology.LayerProtocolName' - example: - target-port: target-port - source-port: source-port - target-node: target-node - connection-id: connection-id - bandwidth: 0 - source-node: source-node - layer-protocol-name: ETH - topology.LayerProtocolName: - type: string - enum: - - ETH - - OPTICAL - diff --git a/restconf/server/swagger_server/test/test_connection_controller.py b/restconf/server/swagger_server/test/test_connection_controller.py deleted file mode 100644 index 325dad4..0000000 --- a/restconf/server/swagger_server/test/test_connection_controller.py +++ /dev/null @@ -1,82 +0,0 @@ -# coding: utf-8 - -from __future__ import absolute_import - -from flask import json -from six import BytesIO - -from swagger_server.models.connection_connection import ConnectionConnection # noqa: E501 -from swagger_server.test import BaseTestCase - - -class TestConnectionController(BaseTestCase): - """ConnectionController integration test stubs""" - - def test_data_connection_post(self): - """Test case for data_connection_post - - - """ - body = ConnectionConnection() - response = self.client.open( - '/data/connection/', - method='POST', - data=json.dumps(body), - content_type='application/yang-data+json') - self.assert200(response, - 'Response body is : ' + response.data.decode('utf-8')) - - def test_data_connectionconnection_id_delete(self): - """Test case for data_connectionconnection_id_delete - - - """ - response = self.client.open( - '/data/connection={connection-id}/'.format(connection_id='connection_id_example'), - method='DELETE') - self.assert200(response, - 'Response body is : ' + response.data.decode('utf-8')) - - def test_data_connectionconnection_id_get(self): - """Test case for data_connectionconnection_id_get - - - """ - response = self.client.open( - '/data/connection={connection-id}/'.format(connection_id='connection_id_example'), - method='GET') - self.assert200(response, - 'Response body is : ' + response.data.decode('utf-8')) - - def test_data_connectionconnection_id_post(self): - """Test case for data_connectionconnection_id_post - - - """ - body = ConnectionConnection() - response = self.client.open( - '/data/connection={connection-id}/'.format(connection_id='connection_id_example'), - method='POST', - data=json.dumps(body), - content_type='application/yang-data+json') - self.assert200(response, - 'Response body is : ' + response.data.decode('utf-8')) - - def test_data_connectionconnection_id_put(self): - """Test case for data_connectionconnection_id_put - - - """ - body = ConnectionConnection() - response = self.client.open( - '/data/connection={connection-id}/'.format(connection_id='connection_id_example'), - method='PUT', - data=json.dumps(body), - content_type='application/yang-data+json') - self.assert200(response, - 'Response body is : ' + response.data.decode('utf-8')) - - -if __name__ == '__main__': - import unittest - unittest.main() diff --git a/restconf/server/.dockerignore b/restconf/topologyserver/.dockerignore similarity index 100% rename from restconf/server/.dockerignore rename to restconf/topologyserver/.dockerignore diff --git a/restconf/server/.gitignore b/restconf/topologyserver/.gitignore similarity index 100% rename from restconf/server/.gitignore rename to restconf/topologyserver/.gitignore diff --git a/restconf/server/.swagger-codegen-ignore b/restconf/topologyserver/.swagger-codegen-ignore similarity index 100% rename from restconf/server/.swagger-codegen-ignore rename to restconf/topologyserver/.swagger-codegen-ignore diff --git a/restconf/server/.swagger-codegen/VERSION b/restconf/topologyserver/.swagger-codegen/VERSION similarity index 100% rename from restconf/server/.swagger-codegen/VERSION rename to restconf/topologyserver/.swagger-codegen/VERSION diff --git a/restconf/server/.travis.yml b/restconf/topologyserver/.travis.yml similarity index 100% rename from restconf/server/.travis.yml rename to restconf/topologyserver/.travis.yml diff --git a/restconf/server/Dockerfile b/restconf/topologyserver/Dockerfile similarity index 100% rename from restconf/server/Dockerfile rename to restconf/topologyserver/Dockerfile diff --git a/restconf/server/README.md b/restconf/topologyserver/README.md similarity index 100% rename from restconf/server/README.md rename to restconf/topologyserver/README.md diff --git a/restconf/server/git_push.sh b/restconf/topologyserver/git_push.sh similarity index 100% rename from restconf/server/git_push.sh rename to restconf/topologyserver/git_push.sh diff --git a/restconf/server/requirements.txt b/restconf/topologyserver/requirements.txt similarity index 100% rename from restconf/server/requirements.txt rename to restconf/topologyserver/requirements.txt diff --git a/restconf/server/setup.py b/restconf/topologyserver/setup.py similarity index 83% rename from restconf/server/setup.py rename to restconf/topologyserver/setup.py index ba555c8..69a77b6 100644 --- a/restconf/server/setup.py +++ b/restconf/topologyserver/setup.py @@ -17,10 +17,10 @@ setup( name=NAME, version=VERSION, - description="connection API", + description="topology API", author_email="", url="", - keywords=["Swagger", "connection API"], + keywords=["Swagger", "topology API"], install_requires=REQUIRES, packages=find_packages(), package_data={'': ['swagger/swagger.yaml']}, @@ -28,6 +28,6 @@ entry_points={ 'console_scripts': ['swagger_server=swagger_server.__main__:main']}, long_description="""\ - connection API generated from yang definitions + topology API generated from yang definitions """ ) diff --git a/restconf/server/swagger_server/__init__.py b/restconf/topologyserver/swagger_server/__init__.py similarity index 100% rename from restconf/server/swagger_server/__init__.py rename to restconf/topologyserver/swagger_server/__init__.py diff --git a/restconf/server/swagger_server/__main__.py b/restconf/topologyserver/swagger_server/__main__.py similarity index 74% rename from restconf/server/swagger_server/__main__.py rename to restconf/topologyserver/swagger_server/__main__.py index 0121e50..752351a 100644 --- a/restconf/server/swagger_server/__main__.py +++ b/restconf/topologyserver/swagger_server/__main__.py @@ -8,7 +8,7 @@ def main(): app = connexion.App(__name__, specification_dir='./swagger/') app.app.json_encoder = encoder.JSONEncoder - app.add_api('swagger.yaml', arguments={'title': 'connection API'}, pythonic_params=True) + app.add_api('swagger.yaml', arguments={'title': 'topology API'}, pythonic_params=True) app.run(port=8080) diff --git a/restconf/server/swagger_server/controllers/__init__.py b/restconf/topologyserver/swagger_server/controllers/__init__.py similarity index 100% rename from restconf/server/swagger_server/controllers/__init__.py rename to restconf/topologyserver/swagger_server/controllers/__init__.py diff --git a/restconf/server/swagger_server/controllers/authorization_controller.py b/restconf/topologyserver/swagger_server/controllers/authorization_controller.py similarity index 100% rename from restconf/server/swagger_server/controllers/authorization_controller.py rename to restconf/topologyserver/swagger_server/controllers/authorization_controller.py diff --git a/restconf/topologyserver/swagger_server/controllers/topology_controller.py b/restconf/topologyserver/swagger_server/controllers/topology_controller.py new file mode 100644 index 0000000..068c938 --- /dev/null +++ b/restconf/topologyserver/swagger_server/controllers/topology_controller.py @@ -0,0 +1,295 @@ +import connexion +import six + +from swagger_server.models.topology_link import TopologyLink # noqa: E501 +from swagger_server.models.topology_node import TopologyNode # noqa: E501 +from swagger_server.models.topology_port import TopologyPort # noqa: E501 +from swagger_server.models.topology_topology import TopologyTopology # noqa: E501 +from swagger_server import util + + +def data_topology_delete(): # noqa: E501 + """data_topology_delete + + removes topology.Topology # noqa: E501 + + + :rtype: None + """ + return 'do some magic!' + + +def data_topology_get(): # noqa: E501 + """data_topology_get + + returns topology.Topology # noqa: E501 + + + :rtype: TopologyTopology + """ + return 'do some magic!' + + +def data_topology_link_post(body=None): # noqa: E501 + """data_topology_link_post + + creates topology.Link # noqa: E501 + + :param body: topology.Link to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyLink.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_linklink_id_delete(link_id): # noqa: E501 + """data_topology_linklink_id_delete + + removes topology.Link # noqa: E501 + + :param link_id: Id of link + :type link_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_topology_linklink_id_get(link_id): # noqa: E501 + """data_topology_linklink_id_get + + returns topology.Link # noqa: E501 + + :param link_id: Id of link + :type link_id: str + + :rtype: TopologyLink + """ + return 'do some magic!' + + +def data_topology_linklink_id_post(link_id, body=None): # noqa: E501 + """data_topology_linklink_id_post + + creates topology.Link # noqa: E501 + + :param link_id: Id of link + :type link_id: str + :param body: topology.Link to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyLink.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_linklink_id_put(link_id, body=None): # noqa: E501 + """data_topology_linklink_id_put + + creates or updates topology.Link # noqa: E501 + + :param link_id: Id of link + :type link_id: str + :param body: topology.Link to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyLink.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_node_post(body=None): # noqa: E501 + """data_topology_node_post + + creates topology.Node # noqa: E501 + + :param body: topology.Node to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyNode.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_delete(node_id): # noqa: E501 + """data_topology_nodenode_id_delete + + removes topology.Node # noqa: E501 + + :param node_id: Id of node + :type node_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_topology_nodenode_id_get(node_id): # noqa: E501 + """data_topology_nodenode_id_get + + returns topology.Node # noqa: E501 + + :param node_id: Id of node + :type node_id: str + + :rtype: TopologyNode + """ + return 'do some magic!' + + +def data_topology_nodenode_id_port_post(node_id, body=None): # noqa: E501 + """data_topology_nodenode_id_port_post + + creates topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param body: topology.Port to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyPort.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_portport_id_delete(node_id, port_id): # noqa: E501 + """data_topology_nodenode_id_portport_id_delete + + removes topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param port_id: Id of port + :type port_id: str + + :rtype: None + """ + return 'do some magic!' + + +def data_topology_nodenode_id_portport_id_get(node_id, port_id): # noqa: E501 + """data_topology_nodenode_id_portport_id_get + + returns topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param port_id: Id of port + :type port_id: str + + :rtype: TopologyPort + """ + return 'do some magic!' + + +def data_topology_nodenode_id_portport_id_post(node_id, port_id, body=None): # noqa: E501 + """data_topology_nodenode_id_portport_id_post + + creates topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param port_id: Id of port + :type port_id: str + :param body: topology.Port to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyPort.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_portport_id_put(node_id, port_id, body=None): # noqa: E501 + """data_topology_nodenode_id_portport_id_put + + creates or updates topology.Port # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param port_id: Id of port + :type port_id: str + :param body: topology.Port to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyPort.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_post(node_id, body=None): # noqa: E501 + """data_topology_nodenode_id_post + + creates topology.Node # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param body: topology.Node to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyNode.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_nodenode_id_put(node_id, body=None): # noqa: E501 + """data_topology_nodenode_id_put + + creates or updates topology.Node # noqa: E501 + + :param node_id: Id of node + :type node_id: str + :param body: topology.Node to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyNode.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_post(body=None): # noqa: E501 + """data_topology_post + + creates topology.Topology # noqa: E501 + + :param body: topology.Topology to be added to list + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyTopology.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' + + +def data_topology_put(body=None): # noqa: E501 + """data_topology_put + + creates or updates topology.Topology # noqa: E501 + + :param body: topology.Topology to be added or updated + :type body: dict | bytes + + :rtype: None + """ + if connexion.request.is_json: + body = TopologyTopology.from_dict(connexion.request.get_json()) # noqa: E501 + return 'do some magic!' diff --git a/restconf/server/swagger_server/encoder.py b/restconf/topologyserver/swagger_server/encoder.py similarity index 100% rename from restconf/server/swagger_server/encoder.py rename to restconf/topologyserver/swagger_server/encoder.py diff --git a/restconf/topologyserver/swagger_server/models/__init__.py b/restconf/topologyserver/swagger_server/models/__init__.py new file mode 100644 index 0000000..a2b2239 --- /dev/null +++ b/restconf/topologyserver/swagger_server/models/__init__.py @@ -0,0 +1,10 @@ +# coding: utf-8 + +# flake8: noqa +from __future__ import absolute_import +# import models into model package +from swagger_server.models.topology_layer_protocol_name import TopologyLayerProtocolName +from swagger_server.models.topology_link import TopologyLink +from swagger_server.models.topology_node import TopologyNode +from swagger_server.models.topology_port import TopologyPort +from swagger_server.models.topology_topology import TopologyTopology diff --git a/restconf/server/swagger_server/models/base_model_.py b/restconf/topologyserver/swagger_server/models/base_model_.py similarity index 100% rename from restconf/server/swagger_server/models/base_model_.py rename to restconf/topologyserver/swagger_server/models/base_model_.py diff --git a/restconf/server/swagger_server/models/topology_layer_protocol_name.py b/restconf/topologyserver/swagger_server/models/topology_layer_protocol_name.py similarity index 100% rename from restconf/server/swagger_server/models/topology_layer_protocol_name.py rename to restconf/topologyserver/swagger_server/models/topology_layer_protocol_name.py diff --git a/restconf/topologyserver/swagger_server/models/topology_link.py b/restconf/topologyserver/swagger_server/models/topology_link.py new file mode 100644 index 0000000..536e45c --- /dev/null +++ b/restconf/topologyserver/swagger_server/models/topology_link.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server import util + + +class TopologyLink(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, target_port: str=None, source_port: str=None, target_node: str=None, link_id: str=None, source_node: str=None): # noqa: E501 + """TopologyLink - a model defined in Swagger + + :param target_port: The target_port of this TopologyLink. # noqa: E501 + :type target_port: str + :param source_port: The source_port of this TopologyLink. # noqa: E501 + :type source_port: str + :param target_node: The target_node of this TopologyLink. # noqa: E501 + :type target_node: str + :param link_id: The link_id of this TopologyLink. # noqa: E501 + :type link_id: str + :param source_node: The source_node of this TopologyLink. # noqa: E501 + :type source_node: str + """ + self.swagger_types = { + 'target_port': str, + 'source_port': str, + 'target_node': str, + 'link_id': str, + 'source_node': str + } + + self.attribute_map = { + 'target_port': 'target-port', + 'source_port': 'source-port', + 'target_node': 'target-node', + 'link_id': 'link-id', + 'source_node': 'source-node' + } + self._target_port = target_port + self._source_port = source_port + self._target_node = target_node + self._link_id = link_id + self._source_node = source_node + + @classmethod + def from_dict(cls, dikt) -> 'TopologyLink': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.Link of this TopologyLink. # noqa: E501 + :rtype: TopologyLink + """ + return util.deserialize_model(dikt, cls) + + @property + def target_port(self) -> str: + """Gets the target_port of this TopologyLink. + + + :return: The target_port of this TopologyLink. + :rtype: str + """ + return self._target_port + + @target_port.setter + def target_port(self, target_port: str): + """Sets the target_port of this TopologyLink. + + + :param target_port: The target_port of this TopologyLink. + :type target_port: str + """ + + self._target_port = target_port + + @property + def source_port(self) -> str: + """Gets the source_port of this TopologyLink. + + + :return: The source_port of this TopologyLink. + :rtype: str + """ + return self._source_port + + @source_port.setter + def source_port(self, source_port: str): + """Sets the source_port of this TopologyLink. + + + :param source_port: The source_port of this TopologyLink. + :type source_port: str + """ + + self._source_port = source_port + + @property + def target_node(self) -> str: + """Gets the target_node of this TopologyLink. + + + :return: The target_node of this TopologyLink. + :rtype: str + """ + return self._target_node + + @target_node.setter + def target_node(self, target_node: str): + """Sets the target_node of this TopologyLink. + + + :param target_node: The target_node of this TopologyLink. + :type target_node: str + """ + + self._target_node = target_node + + @property + def link_id(self) -> str: + """Gets the link_id of this TopologyLink. + + + :return: The link_id of this TopologyLink. + :rtype: str + """ + return self._link_id + + @link_id.setter + def link_id(self, link_id: str): + """Sets the link_id of this TopologyLink. + + + :param link_id: The link_id of this TopologyLink. + :type link_id: str + """ + + self._link_id = link_id + + @property + def source_node(self) -> str: + """Gets the source_node of this TopologyLink. + + + :return: The source_node of this TopologyLink. + :rtype: str + """ + return self._source_node + + @source_node.setter + def source_node(self, source_node: str): + """Sets the source_node of this TopologyLink. + + + :param source_node: The source_node of this TopologyLink. + :type source_node: str + """ + + self._source_node = source_node diff --git a/restconf/topologyserver/swagger_server/models/topology_node.py b/restconf/topologyserver/swagger_server/models/topology_node.py new file mode 100644 index 0000000..811038a --- /dev/null +++ b/restconf/topologyserver/swagger_server/models/topology_node.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server.models.topology_port import TopologyPort # noqa: F401,E501 +from swagger_server import util + + +class TopologyNode(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, node_id: str=None, port: List[TopologyPort]=None): # noqa: E501 + """TopologyNode - a model defined in Swagger + + :param node_id: The node_id of this TopologyNode. # noqa: E501 + :type node_id: str + :param port: The port of this TopologyNode. # noqa: E501 + :type port: List[TopologyPort] + """ + self.swagger_types = { + 'node_id': str, + 'port': List[TopologyPort] + } + + self.attribute_map = { + 'node_id': 'node-id', + 'port': 'port' + } + self._node_id = node_id + self._port = port + + @classmethod + def from_dict(cls, dikt) -> 'TopologyNode': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.Node of this TopologyNode. # noqa: E501 + :rtype: TopologyNode + """ + return util.deserialize_model(dikt, cls) + + @property + def node_id(self) -> str: + """Gets the node_id of this TopologyNode. + + + :return: The node_id of this TopologyNode. + :rtype: str + """ + return self._node_id + + @node_id.setter + def node_id(self, node_id: str): + """Sets the node_id of this TopologyNode. + + + :param node_id: The node_id of this TopologyNode. + :type node_id: str + """ + + self._node_id = node_id + + @property + def port(self) -> List[TopologyPort]: + """Gets the port of this TopologyNode. + + + :return: The port of this TopologyNode. + :rtype: List[TopologyPort] + """ + return self._port + + @port.setter + def port(self, port: List[TopologyPort]): + """Sets the port of this TopologyNode. + + + :param port: The port of this TopologyNode. + :type port: List[TopologyPort] + """ + + self._port = port diff --git a/restconf/topologyserver/swagger_server/models/topology_port.py b/restconf/topologyserver/swagger_server/models/topology_port.py new file mode 100644 index 0000000..7f6431b --- /dev/null +++ b/restconf/topologyserver/swagger_server/models/topology_port.py @@ -0,0 +1,89 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server.models.topology_layer_protocol_name import TopologyLayerProtocolName # noqa: F401,E501 +from swagger_server import util + + +class TopologyPort(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, layer_protocol_name: TopologyLayerProtocolName=None, port_id: str=None): # noqa: E501 + """TopologyPort - a model defined in Swagger + + :param layer_protocol_name: The layer_protocol_name of this TopologyPort. # noqa: E501 + :type layer_protocol_name: TopologyLayerProtocolName + :param port_id: The port_id of this TopologyPort. # noqa: E501 + :type port_id: str + """ + self.swagger_types = { + 'layer_protocol_name': TopologyLayerProtocolName, + 'port_id': str + } + + self.attribute_map = { + 'layer_protocol_name': 'layer-protocol-name', + 'port_id': 'port-id' + } + self._layer_protocol_name = layer_protocol_name + self._port_id = port_id + + @classmethod + def from_dict(cls, dikt) -> 'TopologyPort': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.Port of this TopologyPort. # noqa: E501 + :rtype: TopologyPort + """ + return util.deserialize_model(dikt, cls) + + @property + def layer_protocol_name(self) -> TopologyLayerProtocolName: + """Gets the layer_protocol_name of this TopologyPort. + + + :return: The layer_protocol_name of this TopologyPort. + :rtype: TopologyLayerProtocolName + """ + return self._layer_protocol_name + + @layer_protocol_name.setter + def layer_protocol_name(self, layer_protocol_name: TopologyLayerProtocolName): + """Sets the layer_protocol_name of this TopologyPort. + + + :param layer_protocol_name: The layer_protocol_name of this TopologyPort. + :type layer_protocol_name: TopologyLayerProtocolName + """ + + self._layer_protocol_name = layer_protocol_name + + @property + def port_id(self) -> str: + """Gets the port_id of this TopologyPort. + + + :return: The port_id of this TopologyPort. + :rtype: str + """ + return self._port_id + + @port_id.setter + def port_id(self, port_id: str): + """Sets the port_id of this TopologyPort. + + + :param port_id: The port_id of this TopologyPort. + :type port_id: str + """ + + self._port_id = port_id diff --git a/restconf/topologyserver/swagger_server/models/topology_topology.py b/restconf/topologyserver/swagger_server/models/topology_topology.py new file mode 100644 index 0000000..5f90f6f --- /dev/null +++ b/restconf/topologyserver/swagger_server/models/topology_topology.py @@ -0,0 +1,90 @@ +# coding: utf-8 + +from __future__ import absolute_import +from datetime import date, datetime # noqa: F401 + +from typing import List, Dict # noqa: F401 + +from swagger_server.models.base_model_ import Model +from swagger_server.models.topology_link import TopologyLink # noqa: F401,E501 +from swagger_server.models.topology_node import TopologyNode # noqa: F401,E501 +from swagger_server import util + + +class TopologyTopology(Model): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + def __init__(self, link: List[TopologyLink]=None, node: List[TopologyNode]=None): # noqa: E501 + """TopologyTopology - a model defined in Swagger + + :param link: The link of this TopologyTopology. # noqa: E501 + :type link: List[TopologyLink] + :param node: The node of this TopologyTopology. # noqa: E501 + :type node: List[TopologyNode] + """ + self.swagger_types = { + 'link': List[TopologyLink], + 'node': List[TopologyNode] + } + + self.attribute_map = { + 'link': 'link', + 'node': 'node' + } + self._link = link + self._node = node + + @classmethod + def from_dict(cls, dikt) -> 'TopologyTopology': + """Returns the dict as a model + + :param dikt: A dict. + :type: dict + :return: The topology.Topology of this TopologyTopology. # noqa: E501 + :rtype: TopologyTopology + """ + return util.deserialize_model(dikt, cls) + + @property + def link(self) -> List[TopologyLink]: + """Gets the link of this TopologyTopology. + + + :return: The link of this TopologyTopology. + :rtype: List[TopologyLink] + """ + return self._link + + @link.setter + def link(self, link: List[TopologyLink]): + """Sets the link of this TopologyTopology. + + + :param link: The link of this TopologyTopology. + :type link: List[TopologyLink] + """ + + self._link = link + + @property + def node(self) -> List[TopologyNode]: + """Gets the node of this TopologyTopology. + + + :return: The node of this TopologyTopology. + :rtype: List[TopologyNode] + """ + return self._node + + @node.setter + def node(self, node: List[TopologyNode]): + """Sets the node of this TopologyTopology. + + + :param node: The node of this TopologyTopology. + :type node: List[TopologyNode] + """ + + self._node = node diff --git a/restconf/topologyserver/swagger_server/swagger/swagger.yaml b/restconf/topologyserver/swagger_server/swagger/swagger.yaml new file mode 100644 index 0000000..c359192 --- /dev/null +++ b/restconf/topologyserver/swagger_server/swagger/swagger.yaml @@ -0,0 +1,592 @@ +openapi: 3.0.1 +info: + title: topology API + description: topology API generated from yang definitions + version: "1.0" +servers: +- url: //localhost:1234/ +paths: + /data/topology/: + get: + tags: + - topology + description: returns topology.Topology + operationId: data_topology_get + responses: + 200: + description: topology.Topology + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Topology' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + put: + tags: + - topology + description: creates or updates topology.Topology + operationId: data_topology_put + requestBody: + description: topology.Topology to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Topology' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + post: + tags: + - topology + description: creates topology.Topology + operationId: data_topology_post + requestBody: + description: topology.Topology to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Topology' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + delete: + tags: + - topology + description: removes topology.Topology + operationId: data_topology_delete + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/link/: + post: + tags: + - topology + description: creates topology.Link + operationId: data_topology_link_post + requestBody: + description: topology.Link to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Link' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/link={link-id}/: + get: + tags: + - topology + description: returns topology.Link + operationId: data_topology_linklink_id_get + parameters: + - name: link-id + in: path + description: Id of link + required: true + schema: + type: string + responses: + 200: + description: topology.Link + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Link' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + put: + tags: + - topology + description: creates or updates topology.Link + operationId: data_topology_linklink_id_put + parameters: + - name: link-id + in: path + description: Id of link + required: true + schema: + type: string + requestBody: + description: topology.Link to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Link' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + post: + tags: + - topology + description: creates topology.Link + operationId: data_topology_linklink_id_post + parameters: + - name: link-id + in: path + description: Id of link + required: true + schema: + type: string + requestBody: + description: topology.Link to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Link' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + delete: + tags: + - topology + description: removes topology.Link + operationId: data_topology_linklink_id_delete + parameters: + - name: link-id + in: path + description: Id of link + required: true + schema: + type: string + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/node/: + post: + tags: + - topology + description: creates topology.Node + operationId: data_topology_node_post + requestBody: + description: topology.Node to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Node' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/node={node-id}/: + get: + tags: + - topology + description: returns topology.Node + operationId: data_topology_nodenode_id_get + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + responses: + 200: + description: topology.Node + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Node' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + put: + tags: + - topology + description: creates or updates topology.Node + operationId: data_topology_nodenode_id_put + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + requestBody: + description: topology.Node to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Node' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + post: + tags: + - topology + description: creates topology.Node + operationId: data_topology_nodenode_id_post + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + requestBody: + description: topology.Node to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Node' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + delete: + tags: + - topology + description: removes topology.Node + operationId: data_topology_nodenode_id_delete + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/node={node-id}/port/: + post: + tags: + - topology + description: creates topology.Port + operationId: data_topology_nodenode_id_port_post + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + requestBody: + description: topology.Port to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Port' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + /data/topology/node={node-id}/port={port-id}/: + get: + tags: + - topology + description: returns topology.Port + operationId: data_topology_nodenode_id_portport_id_get + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + - name: port-id + in: path + description: Id of port + required: true + schema: + type: string + responses: + 200: + description: topology.Port + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Port' + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + put: + tags: + - topology + description: creates or updates topology.Port + operationId: data_topology_nodenode_id_portport_id_put + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + - name: port-id + in: path + description: Id of port + required: true + schema: + type: string + requestBody: + description: topology.Port to be added or updated + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Port' + required: false + responses: + 201: + description: Object created + content: {} + 204: + description: Object modified + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + post: + tags: + - topology + description: creates topology.Port + operationId: data_topology_nodenode_id_portport_id_post + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + - name: port-id + in: path + description: Id of port + required: true + schema: + type: string + requestBody: + description: topology.Port to be added to list + content: + application/yang-data+json: + schema: + $ref: '#/components/schemas/topology.Port' + required: false + responses: + 201: + description: Object created + content: {} + 400: + description: Internal error + content: {} + 409: + description: Object already exists + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller + delete: + tags: + - topology + description: removes topology.Port + operationId: data_topology_nodenode_id_portport_id_delete + parameters: + - name: node-id + in: path + description: Id of node + required: true + schema: + type: string + - name: port-id + in: path + description: Id of port + required: true + schema: + type: string + responses: + 204: + description: Object deleted + content: {} + 400: + description: Internal error + content: {} + x-openapi-router-controller: swagger_server.controllers.topology_controller +components: + schemas: + topology.LayerProtocolName: + type: string + enum: + - ETH + - OPTICAL + topology.Link: + type: object + properties: + target-port: + type: string + x-path: /topology/node/port/port-id + source-port: + type: string + x-path: /topology/node/port/port-id + target-node: + type: string + x-path: /topology/node/node-id + link-id: + type: string + source-node: + type: string + x-path: /topology/node/node-id + example: + target-port: target-port + source-port: source-port + target-node: target-node + link-id: link-id + source-node: source-node + topology.Node: + type: object + properties: + node-id: + type: string + port: + type: array + items: + $ref: '#/components/schemas/topology.Port' + example: + node-id: node-id + port: + - layer-protocol-name: ETH + port-id: port-id + - layer-protocol-name: ETH + port-id: port-id + topology.Port: + type: object + properties: + layer-protocol-name: + $ref: '#/components/schemas/topology.LayerProtocolName' + port-id: + type: string + example: + layer-protocol-name: ETH + port-id: port-id + topology.Topology: + type: object + properties: + link: + type: array + items: + $ref: '#/components/schemas/topology.Link' + node: + type: array + items: + $ref: '#/components/schemas/topology.Node' + example: + node: + - node-id: node-id + port: + - layer-protocol-name: ETH + port-id: port-id + - layer-protocol-name: ETH + port-id: port-id + - node-id: node-id + port: + - layer-protocol-name: ETH + port-id: port-id + - layer-protocol-name: ETH + port-id: port-id + link: + - target-port: target-port + source-port: source-port + target-node: target-node + link-id: link-id + source-node: source-node + - target-port: target-port + source-port: source-port + target-node: target-node + link-id: link-id + source-node: source-node + diff --git a/restconf/server/swagger_server/test/__init__.py b/restconf/topologyserver/swagger_server/test/__init__.py similarity index 100% rename from restconf/server/swagger_server/test/__init__.py rename to restconf/topologyserver/swagger_server/test/__init__.py diff --git a/restconf/topologyserver/swagger_server/test/test_topology_controller.py b/restconf/topologyserver/swagger_server/test/test_topology_controller.py new file mode 100644 index 0000000..69c6a2f --- /dev/null +++ b/restconf/topologyserver/swagger_server/test/test_topology_controller.py @@ -0,0 +1,263 @@ +# coding: utf-8 + +from __future__ import absolute_import + +from flask import json +from six import BytesIO + +from swagger_server.models.topology_link import TopologyLink # noqa: E501 +from swagger_server.models.topology_node import TopologyNode # noqa: E501 +from swagger_server.models.topology_port import TopologyPort # noqa: E501 +from swagger_server.models.topology_topology import TopologyTopology # noqa: E501 +from swagger_server.test import BaseTestCase + + +class TestTopologyController(BaseTestCase): + """TopologyController integration test stubs""" + + def test_data_topology_delete(self): + """Test case for data_topology_delete + + + """ + response = self.client.open( + '/data/topology/', + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_get(self): + """Test case for data_topology_get + + + """ + response = self.client.open( + '/data/topology/', + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_link_post(self): + """Test case for data_topology_link_post + + + """ + body = TopologyLink() + response = self.client.open( + '/data/topology/link/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_linklink_id_delete(self): + """Test case for data_topology_linklink_id_delete + + + """ + response = self.client.open( + '/data/topology/link={link-id}/'.format(link_id='link_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_linklink_id_get(self): + """Test case for data_topology_linklink_id_get + + + """ + response = self.client.open( + '/data/topology/link={link-id}/'.format(link_id='link_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_linklink_id_post(self): + """Test case for data_topology_linklink_id_post + + + """ + body = TopologyLink() + response = self.client.open( + '/data/topology/link={link-id}/'.format(link_id='link_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_linklink_id_put(self): + """Test case for data_topology_linklink_id_put + + + """ + body = TopologyLink() + response = self.client.open( + '/data/topology/link={link-id}/'.format(link_id='link_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_node_post(self): + """Test case for data_topology_node_post + + + """ + body = TopologyNode() + response = self.client.open( + '/data/topology/node/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_delete(self): + """Test case for data_topology_nodenode_id_delete + + + """ + response = self.client.open( + '/data/topology/node={node-id}/'.format(node_id='node_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_get(self): + """Test case for data_topology_nodenode_id_get + + + """ + response = self.client.open( + '/data/topology/node={node-id}/'.format(node_id='node_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_port_post(self): + """Test case for data_topology_nodenode_id_port_post + + + """ + body = TopologyPort() + response = self.client.open( + '/data/topology/node={node-id}/port/'.format(node_id='node_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_portport_id_delete(self): + """Test case for data_topology_nodenode_id_portport_id_delete + + + """ + response = self.client.open( + '/data/topology/node={node-id}/port={port-id}/'.format(node_id='node_id_example', port_id='port_id_example'), + method='DELETE') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_portport_id_get(self): + """Test case for data_topology_nodenode_id_portport_id_get + + + """ + response = self.client.open( + '/data/topology/node={node-id}/port={port-id}/'.format(node_id='node_id_example', port_id='port_id_example'), + method='GET') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_portport_id_post(self): + """Test case for data_topology_nodenode_id_portport_id_post + + + """ + body = TopologyPort() + response = self.client.open( + '/data/topology/node={node-id}/port={port-id}/'.format(node_id='node_id_example', port_id='port_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_portport_id_put(self): + """Test case for data_topology_nodenode_id_portport_id_put + + + """ + body = TopologyPort() + response = self.client.open( + '/data/topology/node={node-id}/port={port-id}/'.format(node_id='node_id_example', port_id='port_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_post(self): + """Test case for data_topology_nodenode_id_post + + + """ + body = TopologyNode() + response = self.client.open( + '/data/topology/node={node-id}/'.format(node_id='node_id_example'), + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_nodenode_id_put(self): + """Test case for data_topology_nodenode_id_put + + + """ + body = TopologyNode() + response = self.client.open( + '/data/topology/node={node-id}/'.format(node_id='node_id_example'), + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_post(self): + """Test case for data_topology_post + + + """ + body = TopologyTopology() + response = self.client.open( + '/data/topology/', + method='POST', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + def test_data_topology_put(self): + """Test case for data_topology_put + + + """ + body = TopologyTopology() + response = self.client.open( + '/data/topology/', + method='PUT', + data=json.dumps(body), + content_type='application/yang-data+json') + self.assert200(response, + 'Response body is : ' + response.data.decode('utf-8')) + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/restconf/server/swagger_server/util.py b/restconf/topologyserver/swagger_server/util.py similarity index 100% rename from restconf/server/swagger_server/util.py rename to restconf/topologyserver/swagger_server/util.py diff --git a/restconf/server/test-requirements.txt b/restconf/topologyserver/test-requirements.txt similarity index 100% rename from restconf/server/test-requirements.txt rename to restconf/topologyserver/test-requirements.txt diff --git a/restconf/server/tox.ini b/restconf/topologyserver/tox.ini similarity index 100% rename from restconf/server/tox.ini rename to restconf/topologyserver/tox.ini diff --git a/yang/binding_connection.py b/yang/connection/binding_connection.py similarity index 100% rename from yang/binding_connection.py rename to yang/connection/binding_connection.py diff --git a/yang/connection.py b/yang/connection/connection.py similarity index 100% rename from yang/connection.py rename to yang/connection/connection.py diff --git a/yang/connection.tree b/yang/connection/connection.tree similarity index 100% rename from yang/connection.tree rename to yang/connection/connection.tree diff --git a/yang/connection.uml b/yang/connection/connection.uml similarity index 100% rename from yang/connection.uml rename to yang/connection/connection.uml diff --git a/yang/connection.yang b/yang/connection/connection.yang similarity index 100% rename from yang/connection.yang rename to yang/connection/connection.yang