diff --git a/manifests/ztp_server.yaml b/manifests/ztp_server.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6ed469174884bae1299c44f281be91702b9dd140 --- /dev/null +++ b/manifests/ztp_server.yaml @@ -0,0 +1,78 @@ +# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ztp_serverservice +spec: + selector: + matchLabels: + app: ztp_serverservice + #replicas: 1 + template: + metadata: + labels: + app: ztp_serverservice + spec: + terminationGracePeriodSeconds: 5 + containers: + - name: server + image: labs.etsi.org:5050/tfs/controller/ztp_server:latest + imagePullPolicy: Always + ports: + - containerPort: 8005 + - containerPort: 5051 + - containerPort: 9192 + env: + - name: LOG_LEVEL + value: "INFO" + readinessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:5051"] + livenessProbe: + exec: + command: ["/bin/grpc_health_probe", "-addr=:5051"] + resources: + requests: + cpu: 250m + memory: 128Mi + limits: + cpu: 1000m + memory: 1024Mi +--- +apiVersion: v1 +kind: Service +metadata: + name: ztp_serverservice + labels: + app: ztp_serverservice +spec: + type: ClusterIP + selector: + app: ztp_serverservice + ports: + - name: http + protocol: TCP + port: 8005 + targetPort: 8005 + - name: grpc + protocol: TCP + port: 5051 + targetPort: 5051 + - name: metrics + protocol: TCP + port: 9192 + targetPort: +--- diff --git a/proto/ztp_server.proto b/proto/ztp_server.proto index 6c575df1163cdbf77adee8ff1f5e9dbb57ca1b43..807751084e43308a98bf98ea21813d1fb332350d 100755 --- a/proto/ztp_server.proto +++ b/proto/ztp_server.proto @@ -25,11 +25,11 @@ service ZtpServerService { // Define the request message for both methods message ProvisioningScriptName { - string input = 1; + string scriptname = 1; } message ZtpFileName { - string input = 1; + string filename = 1; } message ProvisioningScript { diff --git a/src/common/Constants.py b/src/common/Constants.py index 660e99f04ba8a67d06e8e6f2a038009d2c095a55..50b792c65e58f7a5777aed51c53a6b743b428289 100644 --- a/src/common/Constants.py +++ b/src/common/Constants.py @@ -122,8 +122,9 @@ DEFAULT_SERVICE_GRPC_PORTS = { # Default HTTP/REST-API service ports DEFAULT_SERVICE_HTTP_PORTS = { - ServiceNameEnum.NBI .value : 8080, - ServiceNameEnum.WEBUI.value : 8004, + ServiceNameEnum.NBI .value : 8080, + ServiceNameEnum.WEBUI.value : 8004, + ServiceNameEnum.ZTP_SERVER.value : 8005, } # Default HTTP/REST-API service base URLs diff --git a/src/ztp_server/Dockerfile b/src/ztp_server/Dockerfile index a9be06d37c15757f51d6d849f395d683885e9508..bbcc282bd27c26959f08f7a8c55477a68f35994f 100755 --- a/src/ztp_server/Dockerfile +++ b/src/ztp_server/Dockerfile @@ -19,21 +19,6 @@ RUN apt-get --yes --quiet --quiet update && \ apt-get --yes --quiet --quiet install wget g++ git build-essential cmake libpcre2-dev python3-dev python3-cffi && \ rm -rf /var/lib/apt/lists/* -# Download, build and install libyang. Note that APT package is outdated -# - Ref: https://github.com/CESNET/libyang -# - Ref: https://github.com/CESNET/libyang-python/ -RUN mkdir -p /var/libyang -RUN git clone https://github.com/CESNET/libyang.git /var/libyang -WORKDIR /var/libyang -RUN git fetch -RUN git checkout v2.1.148 -RUN mkdir -p /var/libyang/build -WORKDIR /var/libyang/build -RUN cmake -D CMAKE_BUILD_TYPE:String="Release" .. -RUN make -RUN make install -RUN ldconfig - # Set Python to show logs as they occur ENV PYTHONUNBUFFERED=0 @@ -69,29 +54,19 @@ RUN rm *.proto RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; # Create component sub-folders, get specific Python packages -RUN mkdir -p /var/teraflow/nbi -WORKDIR /var/teraflow/nbi -COPY src/nbi/requirements.in requirements.in +RUN mkdir -p /var/teraflow/ztp_server +WORKDIR /var/teraflow/ztp_server +COPY src/ztp_server/requirements.in requirements.in RUN pip-compile --quiet --output-file=requirements.txt requirements.in RUN python3 -m pip install -r requirements.txt # Add component files into working directory WORKDIR /var/teraflow -COPY src/nbi/. nbi/ -COPY src/context/__init__.py context/__init__.py -COPY src/context/client/. context/client/ -COPY src/device/__init__.py device/__init__.py -COPY src/device/client/. device/client/ -COPY src/service/__init__.py service/__init__.py -COPY src/service/client/. service/client/ -COPY src/slice/__init__.py slice/__init__.py -COPY src/slice/client/. slice/client/ -COPY src/qkd_app/__init__.py qkd_app/__init__.py -COPY src/qkd_app/client/. qkd_app/client/ -COPY src/vnt_manager/__init__.py vnt_manager/__init__.py -COPY src/vnt_manager/client/. vnt_manager/client/ -RUN mkdir -p /var/teraflow/tests/tools -COPY src/tests/tools/mock_osm/. tests/tools/mock_osm/ +COPY src/ztp_server/. ztp_server/ + +#ToDo Implement Test +#RUN mkdir -p /var/teraflow/tests/tools +#COPY src/tests/tools/mock_osm/. tests/tools/mock_osm/ # Start the service -ENTRYPOINT ["python", "-m", "nbi.service"] +ENTRYPOINT ["python", "-m", "ztp_server.service"] diff --git a/src/ztp_server/README.md b/src/ztp_server/README.md deleted file mode 100755 index 32902a0b33dba2f9ce3df4a60833608bac6e129d..0000000000000000000000000000000000000000 --- a/src/ztp_server/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# NBI Component - -The NBI component uses libyang to validate and process messages. Follow instructions below to install it. - -## Install libyang -- Ref: https://github.com/CESNET/libyang -- Ref: https://github.com/CESNET/libyang-python/ - -__NOTE__: APT package is extremely outdated and does not work for our purposes. - -### Build Requisites -```bash -sudo apt-get install build-essential cmake libpcre2-dev -sudo apt-get install python3-dev gcc python3-cffi -``` - -### Build from source -```bash -mkdir ~/tfs-ctrl/libyang -git clone https://github.com/CESNET/libyang.git ~/tfs-ctrl/libyang -cd ~/tfs-ctrl/libyang -git fetch -git checkout v2.1.148 -mkdir ~/tfs-ctrl/libyang/build -cd ~/tfs-ctrl/libyang/build -cmake -D CMAKE_BUILD_TYPE:String="Release" .. -make -sudo make install -sudo ldconfig -``` - -### Install Python bindings -```bash -pip install libyang==2.8.0 -``` diff --git a/src/ztp_server/client/ZtpClient.py b/src/ztp_server/client/ZtpClient.py index 5e5737857996672650d5fb95dcda5537552699eb..9e14bd694c6789828c515ec0f339ad2bbb35957c 100755 --- a/src/ztp_server/client/ZtpClient.py +++ b/src/ztp_server/client/ZtpClient.py @@ -15,9 +15,8 @@ import grpc, logging from common.Constants import ServiceNameEnum from common.Settings import get_service_host, get_service_port_grpc -from common.proto.ztp_server_pb2_grpc import ztpServerServiceStub -from common.proto.context_pb2 import ( - ZtpFileName, ZtpFile, ProvisioningScriptName, ProvisioningScript) +from common.proto.ztp_server_pb2_grpc import ZtpServerServiceStub +from common.proto.ztp_server_pb2 import ProvisioningScriptName, ProvisioningScript, ZtpFileName, ZtpFile from common.tools.client.RetryDecorator import retry, delay_exponential from common.tools.grpc.Tools import grpc_message_to_json_string @@ -39,7 +38,7 @@ class ZtpClient: def connect(self): self.channel = grpc.insecure_channel(self.endpoint) - self.stub = ztpServerServiceStub(self.channel) + self.stub = ZtpServerServiceStub(self.channel) def close(self): if self.channel is not None: self.channel.close() diff --git a/src/ztp_server/data/nso_client.proto b/src/ztp_server/data/nso_client.proto deleted file mode 100644 index d5983c62cfb5d6524d340be2c6570e7b5133ee03..0000000000000000000000000000000000000000 --- a/src/ztp_server/data/nso_client.proto +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/) -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; -package nos_client; - -message NOS_SW { - string ztp_device_sw_url = 1; - bytes ztp_device_sw_file = 2; -} - -// For ONIE Requests -message NOS_SW_REQ { - string serial_number = 1; - string eth_addr = 2; - string vendor_id = 3; - string machine = 4; - string machine_rev = 5; - string arch = 6; - string security_key = 7; - string operation = 8; -} - -message Config_Script { - string config_script_url = 1; - bytes config_script_file = 2; -} - -message Config_Script_REQ { - string agent = 1; - string machine = 2; - string serial_number = 3; - string eth_addr = 4; - string version = 5; -} - -message Status_Notification { - string status = 1; - string serial_number = 2; - string eth_addr = 3; -} - -message Empty{} - -service nos_client { - rpc GetNOSFile (NOS_SW_REQ) returns (NOS_SW) {} - rpc GetConfigScriptFile (Config_Script_REQ) returns (Config_Script) {} - rpc NotifyStatus (Status_Notification) returns (Empty) {} -} diff --git a/src/ztp_server/requirements.in b/src/ztp_server/requirements.in index 0d780483626979cc993a984d3da709762c749d56..ba715494d122a2c5959c50cab052559a524ccb63 100755 --- a/src/ztp_server/requirements.in +++ b/src/ztp_server/requirements.in @@ -18,10 +18,7 @@ Flask==2.1.3 Flask-HTTPAuth==4.5.0 Flask-RESTful==0.3.9 jsonschema==4.4.0 -libyang==2.8.0 netaddr==0.9.0 -pyang==2.6.0 -git+https://github.com/robshakir/pyangbind.git pydantic==2.6.3 requests==2.27.1 werkzeug==2.3.7 diff --git a/src/ztp_server/service/ZtpServerService.py b/src/ztp_server/service/ZtpServerService.py index aba4aee94196b350b268502af785d3d712cd81dd..c099cf7f6579b7f885c3a7cdc863170888252efa 100755 --- a/src/ztp_server/service/ZtpServerService.py +++ b/src/ztp_server/service/ZtpServerService.py @@ -14,7 +14,7 @@ from common.Constants import ServiceNameEnum from common.Settings import get_service_port_grpc -from common.proto.ztp_server_pb2_grpc import add_Ztp_ServerServiceServicer_to_server +from common.proto.ztp_server_pb2_grpc import add_ZtpServerServiceServicer_to_server from common.tools.service.GenericGrpcService import GenericGrpcService from ztp_server.service.ZtpServerServiceServicerImpl import ZtpServerServiceServicerImpl @@ -25,4 +25,4 @@ class ZtpServerService(GenericGrpcService): self.ztp_servicer = ZtpServerServiceServicerImpl() def install_servicers(self): - add_Ztp_ServerServiceServicer_to_server(self.ztp_servicer, self.server) + add_ZtpServerServiceServicer_to_server(self.ztp_servicer, self.server) diff --git a/src/ztp_server/service/ZtpServerServiceServicerImpl.py b/src/ztp_server/service/ZtpServerServiceServicerImpl.py index 015f958f489b0ffb250b7a7436477e27fbd6b49b..410db6cb3211af7c1ffc562a67b3813b46cc3195 100755 --- a/src/ztp_server/service/ZtpServerServiceServicerImpl.py +++ b/src/ztp_server/service/ZtpServerServiceServicerImpl.py @@ -12,17 +12,17 @@ # See the License for the specific language governing permissions and # limitations under the License. -import grpc, logging, json +import grpc, logging, json, os from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method -from common.proto.context_pb2 import ( - ZtpFileName, ZtpFile, ProvisioningScriptName, ProvisioningScript) -from common.proto.ztp_server_pb2_grpc import ztpServerServiceServicer +from common.proto.ztp_server_pb2 import ProvisioningScriptName, ProvisioningScript, ZtpFileName, ZtpFile +from common.proto.ztp_server_pb2_grpc import ZtpServerServiceServicer LOGGER = logging.getLogger(__name__) METRICS_POOL = MetricsPool('ZTP_SERVER', 'RPC') -class ZtpServerServiceServicerImpl(ztpServerServiceServicer): + +class ZtpServerServiceServicerImpl(ZtpServerServiceServicer): def __init__(self): LOGGER.info('Creating Servicer...') LOGGER.info('Servicer Created') @@ -30,24 +30,24 @@ class ZtpServerServiceServicerImpl(ztpServerServiceServicer): @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetZtpProvisioning(self, request : ProvisioningScriptName, context : grpc.ServicerContext) -> ProvisioningScript: try: - filePath = '../data/' + ProvisioningScriptName - with open(filePath, 'r') as provisioning_file: + provisioningPath = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'data', request.scriptname) + with open(provisioningPath, 'r') as provisioning_file: provisioning_content = provisioning_file.read() - return ztpServerServiceServicer.ProvisioningScript(script=provisioning_content) + return ProvisioningScript(script=provisioning_content) except FileNotFoundError: context.set_code(grpc.StatusCode.NOT_FOUND) context.set_details('File not found') - return ztpServerServiceServicer.ProvisioningScript() + return ProvisioningScript() @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def GetZtpProvisioning(self, request : ZtpFileName, context : grpc.ServicerContext) -> ZtpFile: try: - filePath = '../data/' + ZtpFileName - with open(filePath, 'r') as json_file: + ztpPath = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'data', request.filename) + with open(ztpPath, 'r') as json_file: json_content = json_file.read() - return ztpServerServiceServicer.ZtpFile(json=json_content) + return ZtpFile(json=json_content) except FileNotFoundError: context.set_code(grpc.StatusCode.NOT_FOUND) context.set_details('File not found') - return ztpServerServiceServicer.ZtpFile(json=json_content) \ No newline at end of file + return ZtpFile() \ No newline at end of file diff --git a/src/ztp_server/service/context_subscription/__init__.py b/src/ztp_server/service/context_subscription/__init__.py deleted file mode 100755 index 758f3d82c538fe364add40cc5119f745aea1dc34..0000000000000000000000000000000000000000 --- a/src/ztp_server/service/context_subscription/__init__.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging - -from websockets.sync.server import serve -from common.proto.vnt_manager_pb2 import VNTSubscriptionRequest -from common.Settings import get_setting -from context.client.ContextClient import ContextClient -from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME -from common.tools.object_factory.Topology import json_topology_id -from common.tools.object_factory.Context import json_context_id -from common.proto.context_pb2 import ContextId, TopologyId -import json -import os -from vnt_manager.client.VNTManagerClient import VNTManagerClient - -JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME) -ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID) -ADMIN_TOPOLOGY_ID = TopologyId(**json_topology_id(DEFAULT_TOPOLOGY_NAME, context_id=JSON_ADMIN_CONTEXT_ID)) - -vnt_manager_client: VNTManagerClient = VNTManagerClient() -context_client: ContextClient = ContextClient() - -ALL_HOSTS = "0.0.0.0" -WS_E2E_PORT = int(get_setting('WS_E2E_PORT', default='8762')) - -LOGGER = logging.getLogger(__name__) - - -def register_context_subscription(): - with serve(subcript_to_vnt_manager, ALL_HOSTS, WS_E2E_PORT, logger=LOGGER) as server: - LOGGER.info("Running subscription server...: {}:{}".format(ALL_HOSTS, str(WS_E2E_PORT))) - server.serve_forever() - LOGGER.info("Exiting subscription server...") - - -def subcript_to_vnt_manager(websocket): - for message in websocket: - LOGGER.debug("Message received: {}".format(message)) - message_json = json.loads(message) - request = VNTSubscriptionRequest() - request.host = message_json['host'] - request.port = message_json['port'] - LOGGER.debug("Received gRPC from ws: {}".format(request)) - - try: - vntm_reply = vnt_manager_client.VNTSubscript(request) - LOGGER.debug("Received gRPC from vntm: {}".format(vntm_reply)) - except Exception as e: - LOGGER.error('Could not subscript to VTNManager: {}'.format(e)) - - websocket.send(vntm_reply.subscription) diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py index c1b8c3733c17e0d70638ddde1bd2e0754fb7cc7a..43b7b79b6aa5c189b5e1f4e832fb76cdda23c630 100755 --- a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py +++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py @@ -16,32 +16,22 @@ import json import logging from flask.json import jsonify from flask_restful import Resource, request -from werkzeug.exceptions import BadRequest -from common.proto.context_pb2 import Empty, LinkTypeEnum from common.tools.grpc.Tools import grpc_message_to_json -from context.client.ContextClient import ContextClient -from device.client.DeviceClient import DeviceClient -from service.client.ServiceClient import ServiceClient -from slice.client.SliceClient import SliceClient -from vnt_manager.client.VNTManagerClient import VNTManagerClient +from ztp_server.service.rest_server.ztpServer_plugins.tools.Authentication import HTTP_AUTH from .Tools import ( - format_grpc_to_json, returnConfigFile + returnConfigFile ) LOGGER = logging.getLogger(__name__) - class _Resource(Resource): def __init__(self) -> None: super().__init__() - self.context_client = ContextClient() - self.device_client = DeviceClient() - self.service_client = ServiceClient() - self.vntmanager_client = VNTManagerClient() - self.slice_client = SliceClient() - class config(_Resource): + @HTTP_AUTH.login_required def get(self, config_db : str): - return returnConfigFile(config_db) #TODO define how to return configFile.json + #if returnConfigFile(config_db) + + return diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py index 6665dd4ce544867cb380e2d1030525d5a7caacfb..7d05816ee5cf64d38546909cae7deffbe4fb10c4 100755 --- a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py +++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py @@ -12,30 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict -from flask.json import jsonify -from common.proto.context_pb2 import ( - ConnectionId, returnConfigFile -) -from common.proto.policy_pb2 import PolicyRule, PolicyRuleId -from common.tools.grpc.Tools import grpc_message_to_json -from common.tools.object_factory.Connection import json_connection_id -from common.tools.object_factory.Context import json_context_id -from common.tools.object_factory.Device import json_device_id -from common.tools.object_factory.Link import json_link_id -from common.tools.object_factory.PolicyRule import json_policyrule_id -from common.tools.object_factory.Service import json_service_id -from common.tools.object_factory.Slice import json_slice_id -from common.tools.object_factory.Topology import json_topology_id - - -def format_grpc_to_json(grpc_reply): - return jsonify(grpc_message_to_json(grpc_reply)) +import os def returnConfigFile(config_db): - path = config_db - - with open(path, 'r', encoding='utf-8') as configFile: - content = configFile.read() + try: + configFilePath = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..','..','..','..','..', 'data', config_db) + with open(configFilePath, 'r', encoding='utf-8') as configFile: + content = configFile.read() + except FileNotFoundError: + return "File not Found" return content \ No newline at end of file diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py deleted file mode 100755 index 66b607c8bd6b115c83ff9173446646cebae11697..0000000000000000000000000000000000000000 --- a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from typing import List -from flask.json import jsonify -from jsonschema import _utils -from jsonschema.validators import validator_for -from jsonschema.protocols import Validator -from jsonschema.exceptions import ValidationError -from werkzeug.exceptions import BadRequest -from .HttpStatusCodes import HTTP_BADREQUEST - -def validate_message(schema, message): - validator_class = validator_for(schema) - validator : Validator = validator_class(schema) - errors : List[ValidationError] = sorted(validator.iter_errors(message), key=str) - if len(errors) == 0: return - response = jsonify([ - {'message': str(error.message), 'schema': str(error.schema), 'validator': str(error.validator), - 'where': str(_utils.format_as_index(container='message', indices=error.relative_path))} - for error in errors - ]) - response.status_code = HTTP_BADREQUEST - raise BadRequest(response=response) diff --git a/src/ztp_server/tests/Constants.py b/src/ztp_server/tests/Constants.py deleted file mode 100755 index 886ddcafa4c3e1d798558f5dc285808ac7deecc6..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/Constants.py +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -USERNAME = 'admin' -PASSWORD = 'admin' - -# Ref: https://osm.etsi.org/wikipub/index.php/WIM -WIM_MAPPING = [ - { - 'device-id' : 'dev-1', # pop_switch_dpid - #'device_interface_id' : ??, # pop_switch_port - 'service_endpoint_id' : 'ep-1', # wan_service_endpoint_id - 'service_mapping_info': { # wan_service_mapping_info, other extra info - 'bearer': {'bearer-reference': 'R1-EMU:13/1/2'}, - 'site-id': '1', - }, - #'switch_dpid' : ??, # wan_switch_dpid - #'switch_port' : ??, # wan_switch_port - #'datacenter_id' : ??, # vim_account - }, - { - 'device-id' : 'dev-2', # pop_switch_dpid - #'device_interface_id' : ??, # pop_switch_port - 'service_endpoint_id' : 'ep-2', # wan_service_endpoint_id - 'service_mapping_info': { # wan_service_mapping_info, other extra info - 'bearer': {'bearer-reference': 'R2-EMU:13/1/2'}, - 'site-id': '2', - }, - #'switch_dpid' : ??, # wan_switch_dpid - #'switch_port' : ??, # wan_switch_port - #'datacenter_id' : ??, # vim_account - }, - { - 'device-id' : 'dev-3', # pop_switch_dpid - #'device_interface_id' : ??, # pop_switch_port - 'service_endpoint_id' : 'ep-3', # wan_service_endpoint_id - 'service_mapping_info': { # wan_service_mapping_info, other extra info - 'bearer': {'bearer-reference': 'R3-EMU:13/1/2'}, - 'site-id': '3', - }, - #'switch_dpid' : ??, # wan_switch_dpid - #'switch_port' : ??, # wan_switch_port - #'datacenter_id' : ??, # vim_account - }, - { - 'device-id' : 'dev-4', # pop_switch_dpid - #'device_interface_id' : ??, # pop_switch_port - 'service_endpoint_id' : 'ep-4', # wan_service_endpoint_id - 'service_mapping_info': { # wan_service_mapping_info, other extra info - 'bearer': {'bearer-reference': 'R4-EMU:13/1/2'}, - 'site-id': '4', - }, - #'switch_dpid' : ??, # wan_switch_dpid - #'switch_port' : ??, # wan_switch_port - #'datacenter_id' : ??, # vim_account - }, -] - -SERVICE_TYPE = 'ELINE' - -SERVICE_CONNECTION_POINTS_1 = [ - {'service_endpoint_id': 'ep-1', - 'service_endpoint_encapsulation_type': 'dot1q', - 'service_endpoint_encapsulation_info': {'vlan': 1234}}, - {'service_endpoint_id': 'ep-2', - 'service_endpoint_encapsulation_type': 'dot1q', - 'service_endpoint_encapsulation_info': {'vlan': 1234}}, -] - -SERVICE_CONNECTION_POINTS_2 = [ - {'service_endpoint_id': 'ep-3', - 'service_endpoint_encapsulation_type': 'dot1q', - 'service_endpoint_encapsulation_info': {'vlan': 1234}}, -] \ No newline at end of file diff --git a/src/ztp_server/tests/MockService_Dependencies.py b/src/ztp_server/tests/MockService_Dependencies.py deleted file mode 100755 index 3224413670f02a3318e4f6af95b258993b2edd2d..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/MockService_Dependencies.py +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -from typing import Union -from common.Constants import ServiceNameEnum -from common.Settings import ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name -from common.proto.context_pb2_grpc import add_ContextServiceServicer_to_server -from common.proto.service_pb2_grpc import add_ServiceServiceServicer_to_server -from common.proto.slice_pb2_grpc import add_SliceServiceServicer_to_server -from common.tests.MockServicerImpl_Context import MockServicerImpl_Context -from common.tests.MockServicerImpl_Service import MockServicerImpl_Service -from common.tests.MockServicerImpl_Slice import MockServicerImpl_Slice -from common.tools.service.GenericGrpcService import GenericGrpcService - -LOCAL_HOST = '127.0.0.1' - -SERVICE_CONTEXT = ServiceNameEnum.CONTEXT -SERVICE_SERVICE = ServiceNameEnum.SERVICE -SERVICE_SLICE = ServiceNameEnum.SLICE - -class MockService_Dependencies(GenericGrpcService): - # Mock Service implementing Context, Service and Slice to simplify unitary tests of NBI - - def __init__(self, bind_port: Union[str, int]) -> None: - super().__init__(bind_port, LOCAL_HOST, enable_health_servicer=False, cls_name='MockService') - - # pylint: disable=attribute-defined-outside-init - def install_servicers(self): - self.context_servicer = MockServicerImpl_Context() - add_ContextServiceServicer_to_server(self.context_servicer, self.server) - - self.service_servicer = MockServicerImpl_Service() - add_ServiceServiceServicer_to_server(self.service_servicer, self.server) - - self.slice_servicer = MockServicerImpl_Slice() - add_SliceServiceServicer_to_server(self.slice_servicer, self.server) - - def configure_env_vars(self): - os.environ[get_env_var_name(SERVICE_CONTEXT, ENVVAR_SUFIX_SERVICE_HOST )] = str(self.bind_address) - os.environ[get_env_var_name(SERVICE_CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(self.bind_port) - - os.environ[get_env_var_name(SERVICE_SERVICE, ENVVAR_SUFIX_SERVICE_HOST )] = str(self.bind_address) - os.environ[get_env_var_name(SERVICE_SERVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(self.bind_port) - - os.environ[get_env_var_name(SERVICE_SLICE, ENVVAR_SUFIX_SERVICE_HOST )] = str(self.bind_address) - os.environ[get_env_var_name(SERVICE_SLICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(self.bind_port) diff --git a/src/ztp_server/tests/PrepareTestScenario.py b/src/ztp_server/tests/PrepareTestScenario.py deleted file mode 100755 index a574f086b30cf0125d82f1b41a986e3dc0fd2366..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/PrepareTestScenario.py +++ /dev/null @@ -1,169 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import enum, logging, os, pytest, requests, time -from typing import Any, Dict, List, Optional, Set, Union -from common.Constants import ServiceNameEnum -from common.Settings import ( - ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_HTTP, - get_env_var_name, get_service_baseurl_http, get_service_port_http -) -from context.client.ContextClient import ContextClient -from nbi.service.rest_server.RestServer import RestServer -from nbi.service.rest_server.nbi_plugins.etsi_bwm import register_etsi_bwm_api -from nbi.service.rest_server.nbi_plugins.ietf_l2vpn import register_ietf_l2vpn -from nbi.service.rest_server.nbi_plugins.ietf_l3vpn import register_ietf_l3vpn -from nbi.service.rest_server.nbi_plugins.ietf_network import register_ietf_network -from nbi.service.rest_server.nbi_plugins.tfs_api import register_tfs_api -from nbi.tests.MockService_Dependencies import MockService_Dependencies -from service.client.ServiceClient import ServiceClient -from slice.client.SliceClient import SliceClient -from tests.tools.mock_osm.MockOSM import MockOSM -from .Constants import USERNAME, PASSWORD, WIM_MAPPING - -LOCAL_HOST = '127.0.0.1' -MOCKSERVICE_PORT = 10000 -NBI_SERVICE_PORT = MOCKSERVICE_PORT + get_service_port_http(ServiceNameEnum.NBI) # avoid privileged ports -os.environ[get_env_var_name(ServiceNameEnum.NBI, ENVVAR_SUFIX_SERVICE_HOST )] = str(LOCAL_HOST) -os.environ[get_env_var_name(ServiceNameEnum.NBI, ENVVAR_SUFIX_SERVICE_PORT_HTTP)] = str(NBI_SERVICE_PORT) - -@pytest.fixture(scope='session') -def mock_service(): - _service = MockService_Dependencies(MOCKSERVICE_PORT) - _service.configure_env_vars() - _service.start() - yield _service - _service.stop() - -@pytest.fixture(scope='session') -def nbi_service_rest(mock_service : MockService_Dependencies): # pylint: disable=redefined-outer-name, unused-argument - _rest_server = RestServer() - register_etsi_bwm_api(_rest_server) - register_ietf_l2vpn(_rest_server) - register_ietf_l3vpn(_rest_server) - register_ietf_network(_rest_server) - register_tfs_api(_rest_server) - _rest_server.start() - time.sleep(1) # bring time for the server to start - yield _rest_server - _rest_server.shutdown() - _rest_server.join() - -@pytest.fixture(scope='session') -def osm_wim(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - wim_url = 'http://{:s}:{:d}'.format(LOCAL_HOST, NBI_SERVICE_PORT) - return MockOSM(wim_url, WIM_MAPPING, USERNAME, PASSWORD) - -@pytest.fixture(scope='session') -def context_client(mock_service : MockService_Dependencies): # pylint: disable=redefined-outer-name, unused-argument - _client = ContextClient() - yield _client - _client.close() - -@pytest.fixture(scope='session') -def service_client(mock_service : MockService_Dependencies): # pylint: disable=redefined-outer-name, unused-argument - _client = ServiceClient() - yield _client - _client.close() - -@pytest.fixture(scope='session') -def slice_client(mock_service : MockService_Dependencies): # pylint: disable=redefined-outer-name, unused-argument - _client = SliceClient() - yield _client - _client.close() - -class RestRequestMethod(enum.Enum): - GET = 'get' - POST = 'post' - PUT = 'put' - PATCH = 'patch' - DELETE = 'delete' - -EXPECTED_STATUS_CODES : Set[int] = { - requests.codes['OK' ], - requests.codes['CREATED' ], - requests.codes['ACCEPTED' ], - requests.codes['NO_CONTENT'], -} - -def do_rest_request( - method : RestRequestMethod, url : str, body : Optional[Any] = None, timeout : int = 10, - allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, - logger : Optional[logging.Logger] = None -) -> Optional[Union[Dict, List]]: - base_url = get_service_baseurl_http(ServiceNameEnum.NBI) or '' - request_url = 'http://{:s}:{:s}@{:s}:{:d}{:s}{:s}'.format( - USERNAME, PASSWORD, LOCAL_HOST, NBI_SERVICE_PORT, str(base_url), url - ) - if logger is not None: - msg = 'Request: {:s} {:s}'.format(str(method.value).upper(), str(request_url)) - if body is not None: msg += ' body={:s}'.format(str(body)) - logger.warning(msg) - reply = requests.request(method.value, request_url, timeout=timeout, json=body, allow_redirects=allow_redirects) - if logger is not None: - logger.warning('Reply: {:s}'.format(str(reply.text))) - assert reply.status_code in expected_status_codes, 'Reply failed with status code {:d}'.format(reply.status_code) - - if reply.content and len(reply.content) > 0: return reply.json() - return None - -def do_rest_get_request( - url : str, body : Optional[Any] = None, timeout : int = 10, - allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, - logger : Optional[logging.Logger] = None -) -> Optional[Union[Dict, List]]: - return do_rest_request( - RestRequestMethod.GET, url, body=body, timeout=timeout, allow_redirects=allow_redirects, - expected_status_codes=expected_status_codes, logger=logger - ) - -def do_rest_post_request( - url : str, body : Optional[Any] = None, timeout : int = 10, - allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, - logger : Optional[logging.Logger] = None -) -> Optional[Union[Dict, List]]: - return do_rest_request( - RestRequestMethod.POST, url, body=body, timeout=timeout, allow_redirects=allow_redirects, - expected_status_codes=expected_status_codes, logger=logger - ) - -def do_rest_put_request( - url : str, body : Optional[Any] = None, timeout : int = 10, - allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, - logger : Optional[logging.Logger] = None -) -> Optional[Union[Dict, List]]: - return do_rest_request( - RestRequestMethod.PUT, url, body=body, timeout=timeout, allow_redirects=allow_redirects, - expected_status_codes=expected_status_codes, logger=logger - ) - -def do_rest_patch_request( - url : str, body : Optional[Any] = None, timeout : int = 10, - allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, - logger : Optional[logging.Logger] = None -) -> Optional[Union[Dict, List]]: - return do_rest_request( - RestRequestMethod.PATCH, url, body=body, timeout=timeout, allow_redirects=allow_redirects, - expected_status_codes=expected_status_codes, logger=logger - ) - -def do_rest_delete_request( - url : str, body : Optional[Any] = None, timeout : int = 10, - allow_redirects : bool = True, expected_status_codes : Set[int] = EXPECTED_STATUS_CODES, - logger : Optional[logging.Logger] = None -) -> Optional[Union[Dict, List]]: - return do_rest_request( - RestRequestMethod.DELETE, url, body=body, timeout=timeout, allow_redirects=allow_redirects, - expected_status_codes=expected_status_codes, logger=logger - ) diff --git a/src/ztp_server/tests/__init__.py b/src/ztp_server/tests/__init__.py deleted file mode 100755 index 53d5157f750bfb085125cbd33faff1cec5924e14..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - diff --git a/src/ztp_server/tests/data/ietf_acl.json b/src/ztp_server/tests/data/ietf_acl.json deleted file mode 100755 index 072df6d01513db8e47e50ffd42fc6719a6715f77..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/ietf_acl.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "ietf-access-control-list": { - "acls": { - "acl": [ - { - "name": "sample-ipv4-acl", - "type": "ipv4-acl-type", - "aces": { - "ace": [ - { - "name": "rule1", - "matches": { - "ipv4": { - "dscp": 18, - "source-ipv4-network": "128.32.10.6/24", - "destination-ipv4-network": "172.10.33.0/24" - }, - "tcp": { - "flags": "syn", - "source-port": { - "port": 1444, - "operator": "eq" - }, - "destination-port": { - "port": 1333, - "operator": "eq" - } - } - }, - "actions": { - "forwarding": "drop" - } - } - ] - } - } - ], - "attachment-points": { - "interface": [ - { - "interface-id": "200", - "ingress": { - "acl-sets": { - "acl-set": [ - { - "name": "sample-ipv4-acl" - } - ] - } - } - } - ] - } - } - } -} diff --git a/src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json b/src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json deleted file mode 100755 index bfeb93fb74c9513ef4d175d5962110127303a2a7..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json +++ /dev/null @@ -1,231 +0,0 @@ -{ - "ietf-l3vpn-svc:l3vpn-svc": { - "vpn-services": { - "vpn-service": [ - { - "vpn-id": "vpn1" - } - ] - }, - "sites": { - "site": [ - { - "site-id": "site_OLT", - "management": { - "type": "ietf-l3vpn-svc:provider-managed" - }, - "locations": { - "location": [ - { - "location-id": "OLT" - } - ] - }, - "devices": { - "device": [ - { - "device-id": "128.32.33.5", - "location": "OLT" - } - ] - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": "ietf-l3vpn-svc:static", - "static": { - "cascaded-lan-prefixes": { - "ipv4-lan-prefixes": [ - { - "lan": "128.32.10.1/24", - "lan-tag": "vlan21", - "next-hop": "128.32.33.2" - }, - { - "lan": "128.32.20.1/24", - "lan-tag": "vlan21", - "next-hop": "128.32.33.2" - } - ] - } - } - } - ] - }, - "site-network-accesses": { - "site-network-access": [ - { - "site-network-access-id": "500", - "site-network-access-type": "ietf-l3vpn-svc:multipoint", - "device-reference": "128.32.33.5", - "vpn-attachment": { - "vpn-id": "vpn1", - "site-role": "ietf-l3vpn-svc:spoke-role" - }, - "ip-connection": { - "ipv4": { - "address-allocation-type": "ietf-l3vpn-svc:static-address", - "addresses": { - "provider-address": "128.32.33.254", - "customer-address": "128.32.33.2", - "prefix-length": 24 - } - } - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": "ietf-l3vpn-svc:static", - "static": { - "cascaded-lan-prefixes": { - "ipv4-lan-prefixes": [ - { - "lan": "172.1.101.1/24", - "lan-tag": "vlan21", - "next-hop": "128.32.33.254" - } - ] - } - } - } - ] - }, - "service": { - "svc-mtu": 1500, - "svc-input-bandwidth": 1000000000, - "svc-output-bandwidth": 1000000000, - "qos": { - "qos-profile": { - "classes": { - "class": [ - { - "class-id": "qos-realtime", - "direction": "ietf-l3vpn-svc:both", - "latency": { - "latency-boundary": 10 - }, - "bandwidth": { - "guaranteed-bw-percent": 100 - } - } - ] - } - } - } - } - } - ] - } - }, - { - "site-id": "site_POP", - "management": { - "type": "ietf-l3vpn-svc:provider-managed" - }, - "locations": { - "location": [ - { - "location-id": "POP" - } - ] - }, - "devices": { - "device": [ - { - "device-id": "172.10.33.5", - "location": "POP" - } - ] - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": "ietf-l3vpn-svc:static", - "static": { - "cascaded-lan-prefixes": { - "ipv4-lan-prefixes": [ - { - "lan": "172.1.101.1/24", - "lan-tag": "vlan101", - "next-hop": "172.10.33.2" - } - ] - } - } - } - ] - }, - "site-network-accesses": { - "site-network-access": [ - { - "site-network-access-id": "500", - "site-network-access-type": "ietf-l3vpn-svc:multipoint", - "device-reference": "172.10.33.5", - "vpn-attachment": { - "vpn-id": "vpn1", - "site-role": "ietf-l3vpn-svc:hub-role" - }, - "ip-connection": { - "ipv4": { - "address-allocation-type": "ietf-l3vpn-svc:static-address", - "addresses": { - "provider-address": "172.10.33.254", - "customer-address": "172.10.33.2", - "prefix-length": 24 - } - } - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": "ietf-l3vpn-svc:static", - "static": { - "cascaded-lan-prefixes": { - "ipv4-lan-prefixes": [ - { - "lan": "128.32.10.1/24", - "lan-tag": "vlan101", - "next-hop": "172.10.33.254" - }, - { - "lan": "128.32.20.1/24", - "lan-tag": "vlan101", - "next-hop": "172.10.33.254" - } - ] - } - } - } - ] - }, - "service": { - "svc-mtu": 1500, - "svc-input-bandwidth": 1000000000, - "svc-output-bandwidth": 1000000000, - "qos": { - "qos-profile": { - "classes": { - "class": [ - { - "class-id": "qos-realtime", - "direction": "ietf-l3vpn-svc:both", - "latency": { - "latency-boundary": 10 - }, - "bandwidth": { - "guaranteed-bw-percent": 100 - } - } - ] - } - } - } - } - } - ] - } - } - ] - } - } -} \ No newline at end of file diff --git a/src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json b/src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json deleted file mode 100755 index 2cc512e595c820a8df42ec06af973fefa4601095..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json +++ /dev/null @@ -1,231 +0,0 @@ -{ - "ietf-l3vpn-svc:l3vpn-svc": { - "vpn-services": { - "vpn-service": [ - { - "vpn-id": "vpn2" - } - ] - }, - "sites": { - "site": [ - { - "site-id": "site_OLT", - "management": { - "type": "ietf-l3vpn-svc:provider-managed" - }, - "locations": { - "location": [ - { - "location-id": "OLT" - } - ] - }, - "devices": { - "device": [ - { - "device-id": "128.32.33.5", - "location": "OLT" - } - ] - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": "ietf-l3vpn-svc:static", - "static": { - "cascaded-lan-prefixes": { - "ipv4-lan-prefixes": [ - { - "lan": "128.32.10.1/24", - "lan-tag": "vlan31", - "next-hop": "128.32.33.2" - }, - { - "lan": "128.32.20.1/24", - "lan-tag": "vlan31", - "next-hop": "128.32.33.2" - } - ] - } - } - } - ] - }, - "site-network-accesses": { - "site-network-access": [ - { - "site-network-access-id": "500", - "site-network-access-type": "ietf-l3vpn-svc:multipoint", - "device-reference": "128.32.33.5", - "vpn-attachment": { - "vpn-id": "vpn2", - "site-role": "ietf-l3vpn-svc:spoke-role" - }, - "ip-connection": { - "ipv4": { - "address-allocation-type": "ietf-l3vpn-svc:static-address", - "addresses": { - "provider-address": "128.32.33.254", - "customer-address": "128.32.33.2", - "prefix-length": 24 - } - } - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": "ietf-l3vpn-svc:static", - "static": { - "cascaded-lan-prefixes": { - "ipv4-lan-prefixes": [ - { - "lan": "172.1.201.1/24", - "lan-tag": "vlan31", - "next-hop": "128.32.33.254" - } - ] - } - } - } - ] - }, - "service": { - "svc-mtu": 1500, - "svc-input-bandwidth": 1000000000, - "svc-output-bandwidth": 1000000000, - "qos": { - "qos-profile": { - "classes": { - "class": [ - { - "class-id": "qos-realtime", - "direction": "ietf-l3vpn-svc:both", - "latency": { - "latency-boundary": 10 - }, - "bandwidth": { - "guaranteed-bw-percent": 100 - } - } - ] - } - } - } - } - } - ] - } - }, - { - "site-id": "site_POP", - "management": { - "type": "ietf-l3vpn-svc:provider-managed" - }, - "locations": { - "location": [ - { - "location-id": "POP" - } - ] - }, - "devices": { - "device": [ - { - "device-id": "172.10.33.5", - "location": "POP" - } - ] - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": "ietf-l3vpn-svc:static", - "static": { - "cascaded-lan-prefixes": { - "ipv4-lan-prefixes": [ - { - "lan": "172.1.201.1/24", - "lan-tag": "vlan201", - "next-hop": "172.10.33.2" - } - ] - } - } - } - ] - }, - "site-network-accesses": { - "site-network-access": [ - { - "site-network-access-id": "500", - "site-network-access-type": "ietf-l3vpn-svc:multipoint", - "device-reference": "172.10.33.5", - "vpn-attachment": { - "vpn-id": "vpn2", - "site-role": "ietf-l3vpn-svc:hub-role" - }, - "ip-connection": { - "ipv4": { - "address-allocation-type": "ietf-l3vpn-svc:static-address", - "addresses": { - "provider-address": "172.10.33.254", - "customer-address": "172.10.33.2", - "prefix-length": 24 - } - } - }, - "routing-protocols": { - "routing-protocol": [ - { - "type": "ietf-l3vpn-svc:static", - "static": { - "cascaded-lan-prefixes": { - "ipv4-lan-prefixes": [ - { - "lan": "128.32.10.1/24", - "lan-tag": "vlan201", - "next-hop": "172.10.33.254" - }, - { - "lan": "128.32.20.1/24", - "lan-tag": "vlan201", - "next-hop": "172.10.33.254" - } - ] - } - } - } - ] - }, - "service": { - "svc-mtu": 1500, - "svc-input-bandwidth": 1000000000, - "svc-output-bandwidth": 1000000000, - "qos": { - "qos-profile": { - "classes": { - "class": [ - { - "class-id": "qos-realtime", - "direction": "ietf-l3vpn-svc:both", - "latency": { - "latency-boundary": 10 - }, - "bandwidth": { - "guaranteed-bw-percent": 100 - } - } - ] - } - } - } - } - } - ] - } - } - ] - } - } -} \ No newline at end of file diff --git a/src/ztp_server/tests/data/test-ietf-network.json b/src/ztp_server/tests/data/test-ietf-network.json deleted file mode 100755 index 7643ef53a18e0aca583189bdefe097a10c2e502d..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/test-ietf-network.json +++ /dev/null @@ -1,1962 +0,0 @@ -{ - "ietf-network:networks": { - "network": [ - { - "network-id": "providerId-10-clientId-0-topologyId-1", - "ietf-te-topology:te": { - "name": "Huawei-Network" - }, - "ietf-te-topology:te-topology-identifier": { - "provider-id": 10, - "client-id": 0, - "topology-id": "1" - }, - "network-types": { - "ietf-te-topology:te-topology": { - "ietf-otn-topology:otn-topology": {} - } - }, - "node": [ - { - "node-id": "10.0.10.1", - "ietf-te-topology:te-node-id": "10.0.10.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "501", - "ietf-te-topology:te-tp-id": 501, - "ietf-te-topology:te": { - "name": "1-1-1-1-1", - "admin-status": "up", - "oper-status": "up", - "ietf-otn-topology:client-svc": { - "client-facing": false - }, - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-oduk", - "switching-capability": "ietf-te-types:switching-otn", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odu-type": "ietf-layer1-types:ODU4" - } - } - } - ] - } - ] - } - }, - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-te-topology:te": { - "name": "1-1-1-1-1", - "admin-status": "up", - "oper-status": "up", - "ietf-otn-topology:client-svc": { - "client-facing": false - }, - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-oduk", - "switching-capability": "ietf-te-types:switching-otn", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odu-type": "ietf-layer1-types:ODU4" - } - } - } - ] - } - ] - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "OA" - }, - "tunnel-termination-point": [ - { - "tunnel-tp-id": "NTAx", - "admin-status": "up", - "oper-status": "up", - "encoding": "ietf-te-types:lsp-encoding-oduk", - "name": "1-1-1-1-1", - "protection-type": "ietf-te-types:lsp-protection-unprotected", - "switching-capability": "ietf-te-types:switching-otn", - "local-link-connectivities": { - "local-link-connectivity": [ - { - "is-allowed": true, - "link-tp-ref": "501" - } - ] - } - }, - { - "tunnel-tp-id": "NTAw", - "admin-status": "up", - "oper-status": "up", - "encoding": "ietf-te-types:lsp-encoding-oduk", - "name": "1-1-1-1-1", - "protection-type": "ietf-te-types:lsp-protection-unprotected", - "switching-capability": "ietf-te-types:switching-otn", - "local-link-connectivities": { - "local-link-connectivity": [ - { - "is-allowed": true, - "link-tp-ref": "500" - } - ] - } - } - ] - } - }, - { - "node-id": "10.0.20.1", - "ietf-te-topology:te-node-id": "10.0.20.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "501", - "ietf-te-topology:te-tp-id": 501, - "ietf-te-topology:te": { - "name": "1-1-1-1-1", - "admin-status": "up", - "oper-status": "up", - "ietf-otn-topology:client-svc": { - "client-facing": false - }, - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-oduk", - "switching-capability": "ietf-te-types:switching-otn", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odu-type": "ietf-layer1-types:ODU4" - } - } - } - ] - } - ] - } - }, - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-te-topology:te": { - "name": "1-1-1-1-1", - "admin-status": "up", - "oper-status": "up", - "ietf-otn-topology:client-svc": { - "client-facing": false - }, - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-oduk", - "switching-capability": "ietf-te-types:switching-otn", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odu-type": "ietf-layer1-types:ODU4" - } - } - } - ] - } - ] - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "P" - }, - "tunnel-termination-point": [ - { - "tunnel-tp-id": "NTAx", - "admin-status": "up", - "oper-status": "up", - "encoding": "ietf-te-types:lsp-encoding-oduk", - "name": "1-1-1-1-1", - "protection-type": "ietf-te-types:lsp-protection-unprotected", - "switching-capability": "ietf-te-types:switching-otn", - "local-link-connectivities": { - "local-link-connectivity": [ - { - "is-allowed": true, - "link-tp-ref": "501" - } - ] - } - }, - { - "tunnel-tp-id": "NTAw", - "admin-status": "up", - "oper-status": "up", - "encoding": "ietf-te-types:lsp-encoding-oduk", - "name": "1-1-1-1-1", - "protection-type": "ietf-te-types:lsp-protection-unprotected", - "switching-capability": "ietf-te-types:switching-otn", - "local-link-connectivities": { - "local-link-connectivity": [ - { - "is-allowed": true, - "link-tp-ref": "500" - } - ] - } - } - ] - } - }, - { - "node-id": "10.0.40.1", - "ietf-te-topology:te-node-id": "10.0.40.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-te-topology:te": { - "name": "1-1-1-1-1", - "admin-status": "up", - "oper-status": "up", - "ietf-otn-topology:client-svc": { - "client-facing": false - }, - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-oduk", - "switching-capability": "ietf-te-types:switching-otn", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odu-type": "ietf-layer1-types:ODU4" - } - } - } - ] - } - ] - } - }, - { - "tp-id": "501", - "ietf-te-topology:te-tp-id": 501, - "ietf-te-topology:te": { - "name": "1-1-1-1-1", - "admin-status": "up", - "oper-status": "up", - "ietf-otn-topology:client-svc": { - "client-facing": false - }, - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-oduk", - "switching-capability": "ietf-te-types:switching-otn", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odu-type": "ietf-layer1-types:ODU4" - } - } - } - ] - } - ] - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "P" - }, - "tunnel-termination-point": [ - { - "tunnel-tp-id": "NTAw", - "admin-status": "up", - "oper-status": "up", - "encoding": "ietf-te-types:lsp-encoding-oduk", - "name": "1-1-1-1-1", - "protection-type": "ietf-te-types:lsp-protection-unprotected", - "switching-capability": "ietf-te-types:switching-otn", - "local-link-connectivities": { - "local-link-connectivity": [ - { - "is-allowed": true, - "link-tp-ref": "500" - } - ] - } - }, - { - "tunnel-tp-id": "NTAx", - "admin-status": "up", - "oper-status": "up", - "encoding": "ietf-te-types:lsp-encoding-oduk", - "name": "1-1-1-1-1", - "protection-type": "ietf-te-types:lsp-protection-unprotected", - "switching-capability": "ietf-te-types:switching-otn", - "local-link-connectivities": { - "local-link-connectivity": [ - { - "is-allowed": true, - "link-tp-ref": "501" - } - ] - } - } - ] - } - }, - { - "node-id": "10.0.30.1", - "ietf-te-topology:te-node-id": "10.0.30.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-te-topology:te": { - "name": "1-1-1-1-1", - "admin-status": "up", - "oper-status": "up", - "ietf-otn-topology:client-svc": { - "client-facing": false - }, - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-oduk", - "switching-capability": "ietf-te-types:switching-otn", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odu-type": "ietf-layer1-types:ODU4" - } - } - } - ] - } - ] - } - }, - { - "tp-id": "501", - "ietf-te-topology:te-tp-id": 501, - "ietf-te-topology:te": { - "name": "1-1-1-1-1", - "admin-status": "up", - "oper-status": "up", - "ietf-otn-topology:client-svc": { - "client-facing": false - }, - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-oduk", - "switching-capability": "ietf-te-types:switching-otn", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odu-type": "ietf-layer1-types:ODU4" - } - } - } - ] - } - ] - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "OE" - }, - "tunnel-termination-point": [ - { - "tunnel-tp-id": "NTAw", - "admin-status": "up", - "oper-status": "up", - "encoding": "ietf-te-types:lsp-encoding-oduk", - "name": "1-1-1-1-1", - "protection-type": "ietf-te-types:lsp-protection-unprotected", - "switching-capability": "ietf-te-types:switching-otn", - "local-link-connectivities": { - "local-link-connectivity": [ - { - "is-allowed": true, - "link-tp-ref": "500" - } - ] - } - }, - { - "tunnel-tp-id": "NTAx", - "admin-status": "up", - "oper-status": "up", - "encoding": "ietf-te-types:lsp-encoding-oduk", - "name": "1-1-1-1-1", - "protection-type": "ietf-te-types:lsp-protection-unprotected", - "switching-capability": "ietf-te-types:switching-otn", - "local-link-connectivities": { - "local-link-connectivity": [ - { - "is-allowed": true, - "link-tp-ref": "501" - } - ] - } - } - ] - } - } - ], - "ietf-network-topology:link": [ - { - "link-id": "10.0.10.1-501", - "source": { - "source-node": "10.0.10.1", - "source-tp": "501" - }, - "destination": { - "dest-node": "10.0.20.1", - "dest-tp": "501" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.10.1-501", - "te-delay-metric": 1, - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "odu-type": "ietf-layer1-types:ODU0", - "ts-number": 80 - } - ] - } - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "ts-number": 80, - "odu-type": "ietf-layer1-types:ODU0" - } - ] - } - } - } - ] - } - } - }, - { - "link-id": "10.0.10.1-500", - "source": { - "source-node": "10.0.10.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.40.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.10.1-500", - "te-delay-metric": 1, - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "odu-type": "ietf-layer1-types:ODU0", - "ts-number": 80 - } - ] - } - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "ts-number": 80, - "odu-type": "ietf-layer1-types:ODU0" - } - ] - } - } - } - ] - } - } - }, - { - "link-id": "10.0.20.1-501", - "source": { - "source-node": "10.0.20.1", - "source-tp": "501" - }, - "destination": { - "dest-node": "10.0.10.1", - "dest-tp": "501" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.20.1-501", - "te-delay-metric": 1, - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "odu-type": "ietf-layer1-types:ODU0", - "ts-number": 80 - } - ] - } - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "ts-number": 80, - "odu-type": "ietf-layer1-types:ODU0" - } - ] - } - } - } - ] - } - } - }, - { - "link-id": "10.0.20.1-500", - "source": { - "source-node": "10.0.20.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.30.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.20.1-500", - "te-delay-metric": 1, - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "odu-type": "ietf-layer1-types:ODU0", - "ts-number": 80 - } - ] - } - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "ts-number": 80, - "odu-type": "ietf-layer1-types:ODU0" - } - ] - } - } - } - ] - } - } - }, - { - "link-id": "10.0.40.1-500", - "source": { - "source-node": "10.0.40.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.10.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.40.1-500", - "te-delay-metric": 1, - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "odu-type": "ietf-layer1-types:ODU0", - "ts-number": 80 - } - ] - } - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "ts-number": 80, - "odu-type": "ietf-layer1-types:ODU0" - } - ] - } - } - } - ] - } - } - }, - { - "link-id": "10.0.40.1-501", - "source": { - "source-node": "10.0.40.1", - "source-tp": "501" - }, - "destination": { - "dest-node": "10.0.30.1", - "dest-tp": "501" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.40.1-501", - "te-delay-metric": 1, - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "odu-type": "ietf-layer1-types:ODU0", - "ts-number": 80 - } - ] - } - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "ts-number": 80, - "odu-type": "ietf-layer1-types:ODU0" - } - ] - } - } - } - ] - } - } - }, - { - "link-id": "10.0.30.1-500", - "source": { - "source-node": "10.0.30.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.20.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.30.1-500", - "te-delay-metric": 1, - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "odu-type": "ietf-layer1-types:ODU0", - "ts-number": 80 - } - ] - } - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "ts-number": 80, - "odu-type": "ietf-layer1-types:ODU0" - } - ] - } - } - } - ] - } - } - }, - { - "link-id": "10.0.30.1-501", - "source": { - "source-node": "10.0.30.1", - "source-tp": "501" - }, - "destination": { - "dest-node": "10.0.40.1", - "dest-tp": "501" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.30.1-501", - "te-delay-metric": 1, - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "odu-type": "ietf-layer1-types:ODU0", - "ts-number": 80 - } - ] - } - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-otn-topology:otn": { - "odulist": [ - { - "ts-number": 80, - "odu-type": "ietf-layer1-types:ODU0" - } - ] - } - } - } - ] - } - } - } - ] - }, - { - "network-id": "providerId-10-clientId-0-topologyId-2", - "ietf-te-topology:te": { - "name": "Huawei-Network" - }, - "ietf-te-topology:te-topology-identifier": { - "provider-id": 10, - "client-id": 0, - "topology-id": "2" - }, - "network-types": { - "ietf-te-topology:te-topology": { - "ietf-eth-te-topology:eth-tran-topology": {} - } - }, - "node": [ - { - "node-id": "10.0.10.1", - "ietf-te-topology:te-node-id": "10.0.10.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "200", - "ietf-te-topology:te-tp-id": "128.32.33.254", - "ietf-eth-te-topology:eth-svc": { - "client-facing": true, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - }, - { - "tp-id": "501", - "ietf-te-topology:te-tp-id": 501, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - }, - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "OA" - } - } - }, - { - "node-id": "10.0.20.1", - "ietf-te-topology:te-node-id": "10.0.20.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "501", - "ietf-te-topology:te-tp-id": 501, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - }, - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "P" - } - } - }, - { - "node-id": "10.0.40.1", - "ietf-te-topology:te-node-id": "10.0.40.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "501", - "ietf-te-topology:te-tp-id": 501, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - }, - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "P" - } - } - }, - { - "node-id": "10.0.30.1", - "ietf-te-topology:te-node-id": "10.0.30.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "200", - "ietf-te-topology:te-tp-id": "172.10.33.254", - "ietf-eth-te-topology:eth-svc": { - "client-facing": true, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - }, - { - "tp-id": "501", - "ietf-te-topology:te-tp-id": 501, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - }, - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "OE" - } - } - }, - { - "node-id": "128.32.33.5", - "ietf-te-topology:te-node-id": "128.32.33.5", - "ietf-network-topology:termination-point": [ - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": "128.32.33.2", - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - }, - "ietf-te-topology:te": { - "name": "endpoint:111", - "admin-status": "up", - "oper-status": "up", - "interface-switching-capability": [ - { - "encoding": "ietf-te-types:lsp-encoding-ethernet", - "switching-capability": "ietf-te-types:switching-l2sc", - "max-lsp-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - ] - } - }, - { - "tp-id": "200", - "ietf-te-topology:te-tp-id": 200, - "ietf-eth-te-topology:eth-svc": { - "client-facing": true, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - } - }, - { - "tp-id": "201", - "ietf-te-topology:te-tp-id": 201, - "ietf-eth-te-topology:eth-svc": { - "client-facing": true, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "OLT", - "connectivity-matrices": { - "label-restrictions": { - "label-restriction": [ - { - "index": 0, - "label-start": { - "te-label": { - "ietf-eth-te-topology:vlanid": 21 - } - }, - "label-end": { - "te-label": { - "ietf-eth-te-topology:vlanid": 21 - } - } - }, - { - "index": 1, - "label-start": { - "te-label": { - "ietf-eth-te-topology:vlanid": 31 - } - }, - "label-end": { - "te-label": { - "ietf-eth-te-topology:vlanid": 31 - } - } - } - ] - } - } - } - } - }, - { - "node-id": "128.32.10.1", - "ietf-te-topology:te-node-id": "128.32.10.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - } - }, - { - "tp-id": "200", - "ietf-te-topology:te-tp-id": 200, - "ietf-eth-te-topology:eth-svc": { - "client-facing": true, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "ONT1" - } - } - }, - { - "node-id": "128.32.20.1", - "ietf-te-topology:te-node-id": "128.32.20.1", - "ietf-network-topology:termination-point": [ - { - "tp-id": "500", - "ietf-te-topology:te-tp-id": 500, - "ietf-eth-te-topology:eth-svc": { - "client-facing": false, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - } - }, - { - "tp-id": "200", - "ietf-te-topology:te-tp-id": 200, - "ietf-eth-te-topology:eth-svc": { - "client-facing": true, - "supported-classification": { - "port-classification": true, - "vlan-classification": { - "outer-tag": { - "supported-tag-types": [ - "ietf-eth-tran-types:classify-c-vlan", - "ietf-eth-tran-types:classify-s-vlan" - ], - "vlan-bundling": false, - "vlan-range": "1-4094" - } - } - } - } - } - ], - "ietf-te-topology:te": { - "oper-status": "up", - "te-node-attributes": { - "admin-status": "up", - "name": "ONT2" - } - } - } - ], - "ietf-network-topology:link": [ - { - "link-id": "10.0.10.1-200", - "source": { - "source-node": "10.0.10.1", - "source-tp": "200" - }, - "destination": { - "dest-node": "128.32.33.5", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.10.1-200", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "128.32.33.5-500", - "source": { - "source-node": "128.32.33.5", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.10.1", - "dest-tp": "200" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "128.32.33.5-500", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "10.0.10.1-501", - "source": { - "source-node": "10.0.10.1", - "source-tp": "501" - }, - "destination": { - "dest-node": "10.0.20.1", - "dest-tp": "501" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.10.1-501", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "10.0.10.1-500", - "source": { - "source-node": "10.0.10.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.40.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.10.1-500", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "10.0.20.1-501", - "source": { - "source-node": "10.0.20.1", - "source-tp": "501" - }, - "destination": { - "dest-node": "10.0.10.1", - "dest-tp": "501" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.20.1-501", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "10.0.20.1-500", - "source": { - "source-node": "10.0.20.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.30.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.20.1-500", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "10.0.40.1-501", - "source": { - "source-node": "10.0.40.1", - "source-tp": "501" - }, - "destination": { - "dest-node": "10.0.30.1", - "dest-tp": "501" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.40.1-501", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "10.0.40.1-500", - "source": { - "source-node": "10.0.40.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.10.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.40.1-500", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "10.0.30.1-501", - "source": { - "source-node": "10.0.30.1", - "source-tp": "501" - }, - "destination": { - "dest-node": "10.0.40.1", - "dest-tp": "501" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.30.1-501", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "10.0.30.1-500", - "source": { - "source-node": "10.0.30.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "10.0.20.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "10.0.30.1-500", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "128.32.33.5-200", - "source": { - "source-node": "128.32.33.5", - "source-tp": "200" - }, - "destination": { - "dest-node": "128.32.10.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "128.32.33.5-200", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "128.32.10.1-500", - "source": { - "source-node": "128.32.10.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "128.32.33.5", - "dest-tp": "200" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "128.32.10.1-500", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "128.32.33.5-201", - "source": { - "source-node": "128.32.33.5", - "source-tp": "201" - }, - "destination": { - "dest-node": "128.32.20.1", - "dest-tp": "500" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "128.32.33.5-201", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - }, - { - "link-id": "128.32.20.1-500", - "source": { - "source-node": "128.32.20.1", - "source-tp": "500" - }, - "destination": { - "dest-node": "128.32.33.5", - "dest-tp": "201" - }, - "ietf-te-topology:te": { - "oper-status": "up", - "te-link-attributes": { - "access-type": "point-to-point", - "admin-status": "up", - "name": "128.32.20.1-500", - "max-link-bandwidth": { - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - }, - "unreserved-bandwidth": [ - { - "priority": 7, - "te-bandwidth": { - "ietf-eth-te-topology:eth-bandwidth": 10000000 - } - } - ] - } - } - } - ] - } - ] - } -} \ No newline at end of file diff --git a/src/ztp_server/tests/data/tfs_api_dummy.json b/src/ztp_server/tests/data/tfs_api_dummy.json deleted file mode 100755 index d8f5137578629408556e3758c512f137fc633d6c..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/tfs_api_dummy.json +++ /dev/null @@ -1,442 +0,0 @@ -{ - "dummy_mode": true, - "contexts": [ - { - "context_id": {"context_uuid": {"uuid": "admin"}}, - "name": "admin", - "topology_ids": [ - {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - ], - "service_ids": [ - {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R2/200"}}, - {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R3/200"}}, - {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R2/200==R3/200"}} - ], - "slice_ids": [ - {"context_id": {"context_uuid": {"uuid": "admin"}}, "slice_uuid": {"uuid": "SLC:R1-R2-R3"}} - ] - } - ], - "topologies": [ - { - "device_ids": [ - {"device_uuid": {"uuid": "R1"}}, - {"device_uuid": {"uuid": "R2"}}, - {"device_uuid": {"uuid": "R3"}} - ], - "link_ids": [ - {"link_uuid": {"uuid": "R1/502==R2/501"}}, - {"link_uuid": {"uuid": "R1/503==R3/501"}}, - {"link_uuid": {"uuid": "R2/501==R1/502"}}, - {"link_uuid": {"uuid": "R2/503==R3/502"}}, - {"link_uuid": {"uuid": "R3/501==R1/503"}}, - {"link_uuid": {"uuid": "R3/502==R2/503"}} - ], - "name": "admin", - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ], - "devices": [ - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "name": "R1", "device_type": "emu-packet-router", - "device_drivers": [0], "device_operational_status": 2, - "device_endpoints": [ - {"name": "200", "endpoint_type": "copper", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"name": "502", "endpoint_type": "optical", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "502"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"name": "503", "endpoint_type": "optical", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }} - ], - "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": 0}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "200", "name": "200", "type": "copper"}, - {"uuid": "502", "name": "502", "type": "optical"}, - {"uuid": "503", "name": "503", "type": "optical"} - ]}}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[200]", "resource_value": { - "uuid": "200", "name": "200", "type": "copper" - }}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[502]", "resource_value": { - "uuid": "502", "name": "502", "type": "optical" - }}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[503]", "resource_value": { - "uuid": "503", "name": "503", "type": "optical" - }}} - ]} - }, - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "name": "R2", "device_type": "emu-packet-router", - "device_drivers": [0], "device_operational_status": 2, - "device_endpoints": [ - {"name": "200", "endpoint_type": "copper", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"name": "501", "endpoint_type": "optical", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "501"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"name": "503", "endpoint_type": "optical", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }} - ], - "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": 0}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "200", "name": "200", "type": "copper"}, - {"uuid": "501", "name": "501", "type": "optical"}, - {"uuid": "503", "name": "503", "type": "optical"} - ]}}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[200]", "resource_value": { - "uuid": "200", "name": "200", "type": "copper" - }}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[501]", "resource_value": { - "uuid": "501", "name": "501", "type": "optical" - }}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[503]", "resource_value": { - "uuid": "503", "name": "503", "type": "optical" - }}} - ]} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "name": "R3", "device_type": "emu-packet-router", - "device_drivers": [0], "device_operational_status": 2, - "device_endpoints": [ - {"name": "200", "endpoint_type": "copper", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"name": "502", "endpoint_type": "optical", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "502"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }}, - {"name": "503", "endpoint_type": "optical", "endpoint_id": { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }} - ], - "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": 0}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "200", "name": "200", "type": "copper"}, - {"uuid": "502", "name": "502", "type": "optical"}, - {"uuid": "503", "name": "503", "type": "optical"} - ]}}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[200]", "resource_value": { - "uuid": "200", "name": "200", "type": "copper" - }}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[502]", "resource_value": { - "uuid": "502", "name": "502", "type": "optical" - }}}, - {"action": 1, "custom": {"resource_key": "/endpoints/endpoint[503]", "resource_value": { - "uuid": "503", "name": "503", "type": "optical" - }}} - ]} - } - ], - "links": [ - { - "link_id": {"link_uuid": {"uuid": "R1/502==R2/501"}}, "name": "R1/502==R2/501", - "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0}, - "link_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "502"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "501"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ] - }, - { - "link_id": {"link_uuid": {"uuid": "R1/503==R3/501"}}, "name": "R1/503==R3/501", - "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0}, - "link_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "501"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ] - }, - { - "link_id": {"link_uuid": {"uuid": "R2/501==R1/502"}}, "name": "R2/501==R1/502", - "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0}, - "link_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "501"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "502"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ] - }, - { - "link_id": {"link_uuid": {"uuid": "R2/503==R3/502"}}, "name": "R2/503==R3/502", - "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0}, - "link_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "502"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ] - }, - { - "link_id": {"link_uuid": {"uuid": "R3/501==R1/503"}}, "name": "R3/501==R1/503", - "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0}, - "link_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "501"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ] - }, - { - "link_id": {"link_uuid": {"uuid": "R3/502==R2/503"}}, "name": "R3/502==R2/503", - "attributes": {"total_capacity_gbps": 10.0, "used_capacity_gbps": 0.0}, - "link_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "502"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ] - } - ], - "services": [ - { - "service_id" : {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R2/200"}}, - "name": "SVC:R1/200==R2/200", "service_type": 1, "service_status": {"service_status": 1}, - "service_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ], - "service_constraints": [ - {"action": 1, "sla_capacity": {"capacity_gbps": 40.0}}, - {"action": 1, "sla_latency": {"e2e_latency_ms": 10.0}}, - {"action": 1, "sla_availability": {"num_disjoint_paths": 1, "all_active": true, "availability": 99.99}} - ], - "service_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "/device[R1]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.1.1", "ipv4_prefix": 24 - }}}, - {"action": 1, "custom": {"resource_key": "/device[R2]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.2.1", "ipv4_prefix": 24 - }}} - ]} - }, - { - "service_id" : {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R3/200"}}, - "name": "SVC:R1/200==R3/200", "service_type": 1, "service_status": {"service_status": 1}, - "service_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ], - "service_constraints": [ - {"action": 1, "sla_capacity": {"capacity_gbps": 50.0}}, - {"action": 1, "sla_latency": {"e2e_latency_ms": 8.0}}, - {"action": 1, "sla_availability": {"num_disjoint_paths": 1, "all_active": true, "availability": 99.9}} - ], - "service_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "/device[R1]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.1.1", "ipv4_prefix": 24 - }}}, - {"action": 1, "custom": {"resource_key": "/device[R3]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.3.1", "ipv4_prefix": 24 - }}} - ]} - }, - { - "service_id" : {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R2/200==R3/200"}}, - "name": "SVC:R2/200==R3/200", "service_type": 1, "service_status": {"service_status": 1}, - "service_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ], - "service_constraints": [ - {"action": 1, "sla_capacity": {"capacity_gbps": 10.0}}, - {"action": 1, "sla_latency": {"e2e_latency_ms": 3.0}}, - {"action": 1, "sla_availability": {"num_disjoint_paths": 1, "all_active": true, "availability": 99.9999}} - ], - "service_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "/device[R2]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.2.1", "ipv4_prefix": 24 - }}}, - {"action": 1, "custom": {"resource_key": "/device[R3]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.3.1", "ipv4_prefix": 24 - }}} - ]} - } - ], - "slices": [ - { - "slice_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "slice_uuid": {"uuid": "SLC:R1-R2-R3"}}, - "name": "SLC:R1-R2-R3", - "slice_endpoint_ids": [ - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ], - "slice_constraints": [ - {"action": 1, "sla_capacity": {"capacity_gbps": 40.0}}, - {"action": 1, "sla_latency": {"e2e_latency_ms": 10.0}}, - {"action": 1, "sla_availability": {"num_disjoint_paths": 1, "all_active": true, "availability": 99.99}} - ], - "slice_service_ids": [ - {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R2/200"}}, - {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R3/200"}}, - {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R2/200==R3/200"}} - ], - "slice_subslice_ids": [], - "slice_status": {"slice_status" : 1}, - "slice_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "/device[R1]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.1.1", "ipv4_prefix": 24 - }}}, - {"action": 1, "custom": {"resource_key": "/device[R2]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.2.1", "ipv4_prefix": 24 - }}}, - {"action": 1, "custom": {"resource_key": "/device[R3]/endpoint[200]/settings", "resource_value": { - "ipv4_address": "10.0.3.1", "ipv4_prefix": 24 - }}} - ]}, - "slice_owner": {"owner_uuid": {"uuid": "TFS"}, "owner_string": "TFS:SLC:R1-R2-R3"} - } - ], - "connections": [ - { - "connection_id": {"connection_uuid": {"uuid": "CON:R1/200==R2/200:1"}}, - "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R2/200"}}, - "path_hops_endpoint_ids" : [ - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "502"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "501"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ], - "sub_service_ids": [], - "settings": { - "l3": {"src_ip_address": "10.0.1.10", "dst_ip_address": "10.0.2.10", "ttl": 20} - } - }, - { - "connection_id": {"connection_uuid": {"uuid": "CON:R1/200==R3/200:1"}}, - "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R1/200==R3/200"}}, - "path_hops_endpoint_ids" : [ - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "501"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ], - "sub_service_ids": [], - "settings": { - "l3": {"src_ip_address": "10.0.1.10", "dst_ip_address": "10.0.3.10", "ttl": 20} - } - }, - { - "connection_id": {"connection_uuid": {"uuid": "CON:R2/200==R3/200:1"}}, - "service_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "service_uuid": {"uuid": "SVC:R2/200==R3/200"}}, - "path_hops_endpoint_ids" : [ - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "503"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "502"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - }, - { - "device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "200"}, - "topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}} - } - ], - "sub_service_ids": [], - "settings": { - "l3": {"src_ip_address": "10.0.2.10", "dst_ip_address": "10.0.3.10", "ttl": 20} - } - } - ] -} diff --git a/src/ztp_server/tests/data/topology-7router-emu-dummy.json b/src/ztp_server/tests/data/topology-7router-emu-dummy.json deleted file mode 100755 index 3bb62262652d0eaab411ac71824af3d167b031dd..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/topology-7router-emu-dummy.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "dummy_mode": true, - "contexts": [ - {"context_id": {"context_uuid": {"uuid": "admin"}}} - ], - "topologies": [ - {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}} - ], - "devices": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R2"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R3"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R4"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R5"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R6"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R7"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, - {"uuid": "1/3", "type": "copper"}, {"uuid": "2/1", "type": "copper"}, - {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}, - {"uuid": "2/4", "type": "copper"}, {"uuid": "2/5", "type": "copper"}, - {"uuid": "2/6", "type": "copper"} - ]}}} - ]}} - ], - "links": [ - {"link_id": {"link_uuid": {"uuid": "R1==R2"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R1==R6"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R1==R7"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/3"}}, - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R2==R1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R2==R3"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R3==R2"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R3==R4"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R3==R7"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/3"}}, - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/3"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R4==R3"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R4==R5"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R5==R4"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R5==R6"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R5==R7"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/3"}}, - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/5"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R6==R1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R6==R5"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R7==R1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/3"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R7==R3"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/3"}}, - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/3"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R7==R5"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/5"}}, - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/3"}} - ]} - ] -} diff --git a/src/ztp_server/tests/data/topology-7router-emu.json b/src/ztp_server/tests/data/topology-7router-emu.json deleted file mode 100755 index 4174f4fb460c6ff31ff56a45122d9a589f265f80..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/topology-7router-emu.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "contexts": [ - {"context_id": {"context_uuid": {"uuid": "admin"}}} - ], - "topologies": [ - {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}} - ], - "devices": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R2"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R3"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R4"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R5"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R6"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, {"uuid": "1/3", "type": "copper"}, - {"uuid": "1/4", "type": "copper"}, {"uuid": "1/5", "type": "copper"}, {"uuid": "1/6", "type": "copper"}, - {"uuid": "2/1", "type": "copper"}, {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"} - ]}}} - ]}}, - {"device_id": {"device_uuid": {"uuid": "R7"}}, "device_type": "emu-packet-router", "device_drivers": [0], - "device_endpoints": [], "device_operational_status": 1, "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "1/1", "type": "copper"}, {"uuid": "1/2", "type": "copper"}, - {"uuid": "1/3", "type": "copper"}, {"uuid": "2/1", "type": "copper"}, - {"uuid": "2/2", "type": "copper"}, {"uuid": "2/3", "type": "copper"}, - {"uuid": "2/4", "type": "copper"}, {"uuid": "2/5", "type": "copper"}, - {"uuid": "2/6", "type": "copper"} - ]}}} - ]}} - ], - "links": [ - {"link_id": {"link_uuid": {"uuid": "R1==R2"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R1==R6"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R1==R7"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/3"}}, - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R2==R1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R2==R3"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R3==R2"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R2"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R3==R4"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R3==R7"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/3"}}, - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/3"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R4==R3"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R4==R5"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R5==R4"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R4"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R5==R6"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R5==R7"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/3"}}, - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/5"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R6==R1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/2"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R6==R5"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R6"}}, "endpoint_uuid": {"uuid": "2/2"}}, - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/1"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R7==R1"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/1"}}, - {"device_id": {"device_uuid": {"uuid": "R1"}}, "endpoint_uuid": {"uuid": "2/3"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R7==R3"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/3"}}, - {"device_id": {"device_uuid": {"uuid": "R3"}}, "endpoint_uuid": {"uuid": "2/3"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "R7==R5"}}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "R7"}}, "endpoint_uuid": {"uuid": "2/5"}}, - {"device_id": {"device_uuid": {"uuid": "R5"}}, "endpoint_uuid": {"uuid": "2/3"}} - ]} - ] -} diff --git a/src/ztp_server/tests/data/topology-dummy.json b/src/ztp_server/tests/data/topology-dummy.json deleted file mode 100755 index f066051eedf4e2c09b6987ec781c9c17ea4afd82..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/topology-dummy.json +++ /dev/null @@ -1,3134 +0,0 @@ -{ - "contexts": [ - { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "name": "admin", - "service_ids": [], - "slice_ids": [], - "topology_ids": [ - { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - ] - } - ], - "devices": [ - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - }, - { - "name": "200", - "type": "copper", - "uuid": "200" - }, - { - "name": "500", - "type": "optical", - "uuid": "500" - }, - { - "name": "501", - "type": "optical", - "uuid": "501" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[mgmt]", - "resource_value": { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[200]", - "resource_value": { - "name": "200", - "type": "copper", - "uuid": "200" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[500]", - "resource_value": { - "name": "500", - "type": "optical", - "uuid": "500" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[501]", - "resource_value": { - "name": "501", - "type": "optical", - "uuid": "501" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "161ad889-3839-5dfb-a4a9-95a1de8c3ad5" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "optical", - "kpi_sample_types": [], - "name": "500" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "1e35cf03-d55d-5648-9cb6-fca37bfbf23a" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "200" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "859813e0-24c1-518e-ba77-44a4f392e321" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "optical", - "kpi_sample_types": [], - "name": "501" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "b72983bd-57d8-5cf8-8ec7-da9084382d7a" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "mgmt", - "kpi_sample_types": [], - "name": "mgmt" - } - ], - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "device_operational_status": 2, - "device_type": "emu-packet-router", - "name": "10.0.30.1" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "200", - "type": "copper", - "uuid": "200" - }, - { - "name": "500", - "type": "copper", - "uuid": "500" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[200]", - "resource_value": { - "name": "200", - "type": "copper", - "uuid": "200" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[500]", - "resource_value": { - "name": "500", - "type": "copper", - "uuid": "500" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f" - } - }, - "endpoint_uuid": { - "uuid": "207ef8a3-18fd-5a63-ac24-4a1cc6af3e92" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "200" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f" - } - }, - "endpoint_uuid": { - "uuid": "6fad7bc2-4ce5-5794-8bf0-ddd06cde20a6" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "500" - } - ], - "device_id": { - "device_uuid": { - "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f" - } - }, - "device_operational_status": 2, - "device_type": "emu-packet-router", - "name": "128.32.10.1" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "200", - "type": "copper", - "uuid": "200" - }, - { - "name": "201", - "type": "copper", - "uuid": "201" - }, - { - "name": "500", - "type": "copper", - "uuid": "500" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[200]", - "resource_value": { - "name": "200", - "type": "copper", - "uuid": "200" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[201]", - "resource_value": { - "name": "201", - "type": "copper", - "uuid": "201" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[500]", - "resource_value": { - "name": "500", - "type": "copper", - "uuid": "500" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "4c367472-545c-544d-935d-829f0a0e1c72" - } - }, - "endpoint_uuid": { - "uuid": "227b6bb2-dacf-5b3d-84e9-c1d0c107bcd8" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "201" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "4c367472-545c-544d-935d-829f0a0e1c72" - } - }, - "endpoint_uuid": { - "uuid": "3d0c36bb-80dc-5bab-8a7d-c47cce8d474f" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "500" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "4c367472-545c-544d-935d-829f0a0e1c72" - } - }, - "endpoint_uuid": { - "uuid": "d8528b70-9215-59ed-851d-b9590ab0c94b" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "200" - } - ], - "device_id": { - "device_uuid": { - "uuid": "4c367472-545c-544d-935d-829f0a0e1c72" - } - }, - "device_operational_status": 2, - "device_type": "emu-datacenter", - "name": "172.10.33.5" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - }, - { - "name": "500", - "type": "optical", - "uuid": "500" - }, - { - "name": "501", - "type": "optical", - "uuid": "501" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[mgmt]", - "resource_value": { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[500]", - "resource_value": { - "name": "500", - "type": "optical", - "uuid": "500" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[501]", - "resource_value": { - "name": "501", - "type": "optical", - "uuid": "501" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "endpoint_uuid": { - "uuid": "75e62edc-a0f9-53f9-821b-023045db1551" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "optical", - "kpi_sample_types": [], - "name": "501" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "endpoint_uuid": { - "uuid": "b5efeee2-5062-5d8f-ae06-f901fed7a7d7" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "optical", - "kpi_sample_types": [], - "name": "500" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "endpoint_uuid": { - "uuid": "ede34dea-6b51-5787-88d2-553fe548f540" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "mgmt", - "kpi_sample_types": [], - "name": "mgmt" - } - ], - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "device_operational_status": 2, - "device_type": "emu-packet-router", - "name": "10.0.40.1" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "200", - "type": "copper", - "uuid": "200" - }, - { - "name": "201", - "type": "copper", - "uuid": "201" - }, - { - "name": "500", - "type": "copper", - "uuid": "500" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[200]", - "resource_value": { - "name": "200", - "type": "copper", - "uuid": "200" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[201]", - "resource_value": { - "name": "201", - "type": "copper", - "uuid": "201" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[500]", - "resource_value": { - "name": "500", - "type": "copper", - "uuid": "500" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "387f7f12-3168-5c75-801e-f06c8afdbf88" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "201" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "9095f6af-6381-54fa-9a0e-b1ef5720d163" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "500" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "c6435612-3aca-590f-89ba-e606f54df474" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "200" - } - ], - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "device_operational_status": 2, - "device_type": "emu-optical-transponder", - "name": "128.32.33.5" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - }, - { - "name": "200", - "type": "copper", - "uuid": "200" - }, - { - "name": "500", - "type": "optical", - "uuid": "500" - }, - { - "name": "501", - "type": "optical", - "uuid": "501" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[mgmt]", - "resource_value": { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[200]", - "resource_value": { - "name": "200", - "type": "copper", - "uuid": "200" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[500]", - "resource_value": { - "name": "500", - "type": "optical", - "uuid": "500" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[501]", - "resource_value": { - "name": "501", - "type": "optical", - "uuid": "501" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "59e1e30f-ea65-5e04-8a91-760a648a02c6" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "mgmt", - "kpi_sample_types": [], - "name": "mgmt" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "70cbb732-8149-59ee-939b-011828e4292b" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "200" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "a2579e11-2e86-5e53-a235-3dd6ba92bb9a" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "optical", - "kpi_sample_types": [], - "name": "500" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "ad2e136d-a981-5c9a-8427-07352ac03351" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "optical", - "kpi_sample_types": [], - "name": "501" - } - ], - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "device_operational_status": 2, - "device_type": "emu-packet-router", - "name": "10.0.10.1" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - }, - { - "name": "500", - "type": "optical", - "uuid": "500" - }, - { - "name": "501", - "type": "optical", - "uuid": "501" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[mgmt]", - "resource_value": { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[500]", - "resource_value": { - "name": "500", - "type": "optical", - "uuid": "500" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[501]", - "resource_value": { - "name": "501", - "type": "optical", - "uuid": "501" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "endpoint_uuid": { - "uuid": "23c04144-5ad3-5419-8b96-cf4eb329ca96" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "optical", - "kpi_sample_types": [], - "name": "501" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "endpoint_uuid": { - "uuid": "356378dd-952b-5032-912d-37fc21284b4c" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "optical", - "kpi_sample_types": [], - "name": "500" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "endpoint_uuid": { - "uuid": "da826790-a4b0-5317-b30b-e1370918a644" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "mgmt", - "kpi_sample_types": [], - "name": "mgmt" - } - ], - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "device_operational_status": 2, - "device_type": "emu-packet-router", - "name": "10.0.20.1" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "eth1", - "type": "copper", - "uuid": "eth1" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[eth1]", - "resource_value": { - "name": "eth1", - "type": "copper", - "uuid": "eth1" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6" - } - }, - "endpoint_uuid": { - "uuid": "0701f406-633f-53e7-a44d-c93384745df8" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "eth1" - } - ], - "device_id": { - "device_uuid": { - "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6" - } - }, - "device_operational_status": 2, - "device_type": "emu-client", - "name": "128.32.20.5" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "200", - "type": "copper", - "uuid": "200" - }, - { - "name": "500", - "type": "copper", - "uuid": "500" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[200]", - "resource_value": { - "name": "200", - "type": "copper", - "uuid": "200" - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[500]", - "resource_value": { - "name": "500", - "type": "copper", - "uuid": "500" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2" - } - }, - "endpoint_uuid": { - "uuid": "852a3fd3-3f55-5e31-865d-c52984efb186" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "500" - }, - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2" - } - }, - "endpoint_uuid": { - "uuid": "bbbec9f8-618a-591a-bc3e-c188ee31008e" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "200" - } - ], - "device_id": { - "device_uuid": { - "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2" - } - }, - "device_operational_status": 2, - "device_type": "emu-packet-router", - "name": "128.32.20.1" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "eth1", - "type": "copper", - "uuid": "eth1" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[eth1]", - "resource_value": { - "name": "eth1", - "type": "copper", - "uuid": "eth1" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6" - } - }, - "endpoint_uuid": { - "uuid": "16d56d61-63cd-5704-9d2a-5515e633b64b" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "copper", - "kpi_sample_types": [], - "name": "eth1" - } - ], - "device_id": { - "device_uuid": { - "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6" - } - }, - "device_operational_status": 2, - "device_type": "emu-client", - "name": "128.32.10.5" - }, - { - "components": [], - "controller_id": {}, - "device_config": { - "config_rules": [ - { - "action": 1, - "custom": { - "resource_key": "_connect/address", - "resource_value": "127.0.0.1" - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/port", - "resource_value": 0 - } - }, - { - "action": 1, - "custom": { - "resource_key": "_connect/settings", - "resource_value": { - "endpoints": [ - { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - } - ] - } - } - }, - { - "action": 1, - "custom": { - "resource_key": "/endpoints/endpoint[mgmt]", - "resource_value": { - "name": "mgmt", - "type": "mgmt", - "uuid": "mgmt" - } - } - } - ] - }, - "device_drivers": [ - 0 - ], - "device_endpoints": [ - { - "endpoint_id": { - "device_id": { - "device_uuid": { - "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde" - } - }, - "endpoint_uuid": { - "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - "endpoint_location": {}, - "endpoint_type": "mgmt", - "kpi_sample_types": [], - "name": "mgmt" - } - ], - "device_id": { - "device_uuid": { - "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde" - } - }, - "device_operational_status": 2, - "device_type": "emu-open-line-system", - "name": "nce-t" - } - ], - "dummy_mode": true, - "links": [ - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "70cbb732-8149-59ee-939b-011828e4292b" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "9095f6af-6381-54fa-9a0e-b1ef5720d163" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "0b3d5943-c2bf-595f-a805-dc29c2be2f52" - } - }, - "name": "10.0.10.1-200" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "endpoint_uuid": { - "uuid": "b5efeee2-5062-5d8f-ae06-f901fed7a7d7" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "a2579e11-2e86-5e53-a235-3dd6ba92bb9a" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "1490e70f-472c-5e4c-8280-21c48ed03477" - } - }, - "name": "10.0.40.1-500" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f" - } - }, - "endpoint_uuid": { - "uuid": "6fad7bc2-4ce5-5794-8bf0-ddd06cde20a6" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "c6435612-3aca-590f-89ba-e606f54df474" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "18ba8eb2-342b-5a73-aeae-7288ea9bb28b" - } - }, - "name": "128.32.10.1-500" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f" - } - }, - "endpoint_uuid": { - "uuid": "207ef8a3-18fd-5a63-ac24-4a1cc6af3e92" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6" - } - }, - "endpoint_uuid": { - "uuid": "16d56d61-63cd-5704-9d2a-5515e633b64b" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "1901b0dc-1b5e-5fdf-b9ac-9168787464c1" - } - }, - "name": "128.32.10.1-200" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "9095f6af-6381-54fa-9a0e-b1ef5720d163" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "70cbb732-8149-59ee-939b-011828e4292b" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "1afdae8b-a281-53aa-99c2-205afb8f4ee7" - } - }, - "name": "128.32.33.5-500" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "endpoint_uuid": { - "uuid": "356378dd-952b-5032-912d-37fc21284b4c" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "161ad889-3839-5dfb-a4a9-95a1de8c3ad5" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "30ca0f8f-b150-57f2-ae5e-8a6844944783" - } - }, - "name": "10.0.20.1-500" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "endpoint_uuid": { - "uuid": "23c04144-5ad3-5419-8b96-cf4eb329ca96" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "ad2e136d-a981-5c9a-8427-07352ac03351" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "34c9c6c3-0dcf-54e5-ba67-da33eb2d3c1a" - } - }, - "name": "10.0.20.1-501" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "161ad889-3839-5dfb-a4a9-95a1de8c3ad5" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "endpoint_uuid": { - "uuid": "356378dd-952b-5032-912d-37fc21284b4c" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "35801e61-45f3-564e-ad5c-09baf4aae906" - } - }, - "name": "10.0.30.1-500" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "4c367472-545c-544d-935d-829f0a0e1c72" - } - }, - "endpoint_uuid": { - "uuid": "3d0c36bb-80dc-5bab-8a7d-c47cce8d474f" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "1e35cf03-d55d-5648-9cb6-fca37bfbf23a" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "36643dba-e8fa-5fb7-952d-dff313db957b" - } - }, - "name": "172.10.33.5-500" - }, - { - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde" - } - }, - "endpoint_uuid": { - "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "endpoint_uuid": { - "uuid": "ede34dea-6b51-5787-88d2-553fe548f540" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "36856920-3387-5384-b1b1-dbc9e54da226" - } - }, - "name": "nce-t/mgmt==10.0.40.1/mgmt" - }, - { - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde" - } - }, - "endpoint_uuid": { - "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "b72983bd-57d8-5cf8-8ec7-da9084382d7a" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "46ba12f9-dd17-5f2a-9558-e4611515a6b9" - } - }, - "name": "nce-t/mgmt==10.0.30.1/mgmt" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "859813e0-24c1-518e-ba77-44a4f392e321" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "endpoint_uuid": { - "uuid": "75e62edc-a0f9-53f9-821b-023045db1551" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "4dfe28dd-ac28-53d5-b330-1707e350d772" - } - }, - "name": "10.0.30.1-501" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2" - } - }, - "endpoint_uuid": { - "uuid": "852a3fd3-3f55-5e31-865d-c52984efb186" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "387f7f12-3168-5c75-801e-f06c8afdbf88" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "644ab377-572c-53a4-8ab5-f5cf45591d88" - } - }, - "name": "128.32.20.1-500" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "c6435612-3aca-590f-89ba-e606f54df474" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f" - } - }, - "endpoint_uuid": { - "uuid": "6fad7bc2-4ce5-5794-8bf0-ddd06cde20a6" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "661ac531-4309-58cc-b70e-2a79492c2488" - } - }, - "name": "128.32.33.5-200" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - "endpoint_uuid": { - "uuid": "387f7f12-3168-5c75-801e-f06c8afdbf88" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2" - } - }, - "endpoint_uuid": { - "uuid": "852a3fd3-3f55-5e31-865d-c52984efb186" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "6a236e01-853c-51d0-8915-2d09b45923b0" - } - }, - "name": "128.32.33.5-201" - }, - { - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde" - } - }, - "endpoint_uuid": { - "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "endpoint_uuid": { - "uuid": "da826790-a4b0-5317-b30b-e1370918a644" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "6c802ae7-59d1-55e7-9498-146c465bcab5" - } - }, - "name": "nce-t/mgmt==10.0.20.1/mgmt" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2" - } - }, - "endpoint_uuid": { - "uuid": "bbbec9f8-618a-591a-bc3e-c188ee31008e" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6" - } - }, - "endpoint_uuid": { - "uuid": "0701f406-633f-53e7-a44d-c93384745df8" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "6fa77ad9-e4d7-5830-bf84-ab206eff613a" - } - }, - "name": "128.32.20.1-200" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "1e35cf03-d55d-5648-9cb6-fca37bfbf23a" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "4c367472-545c-544d-935d-829f0a0e1c72" - } - }, - "endpoint_uuid": { - "uuid": "3d0c36bb-80dc-5bab-8a7d-c47cce8d474f" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "808b54e8-3d5a-5e03-a42e-d6c2a57cf6f3" - } - }, - "name": "10.0.30.1-200" - }, - { - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde" - } - }, - "endpoint_uuid": { - "uuid": "086906ec-fd3b-55e1-b9bb-5a9e5bb5daff" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "59e1e30f-ea65-5e04-8a91-760a648a02c6" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "85a18715-3ce0-57f9-8025-5634fe622a06" - } - }, - "name": "nce-t/mgmt==10.0.10.1/mgmt" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "endpoint_uuid": { - "uuid": "75e62edc-a0f9-53f9-821b-023045db1551" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - "endpoint_uuid": { - "uuid": "859813e0-24c1-518e-ba77-44a4f392e321" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "8e8d1a2b-beae-5624-8826-9235bd73a3a8" - } - }, - "name": "10.0.40.1-501" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "a2579e11-2e86-5e53-a235-3dd6ba92bb9a" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - "endpoint_uuid": { - "uuid": "b5efeee2-5062-5d8f-ae06-f901fed7a7d7" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "e9c5b57e-de50-509c-9f5a-0107ff233703" - } - }, - "name": "10.0.10.1-500" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6" - } - }, - "endpoint_uuid": { - "uuid": "0701f406-633f-53e7-a44d-c93384745df8" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2" - } - }, - "endpoint_uuid": { - "uuid": "bbbec9f8-618a-591a-bc3e-c188ee31008e" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "effca6e0-acf3-5c02-ba9a-d82c17a3f006" - } - }, - "name": "128.32.20.5-eth1" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - "endpoint_uuid": { - "uuid": "ad2e136d-a981-5c9a-8427-07352ac03351" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - "endpoint_uuid": { - "uuid": "23c04144-5ad3-5419-8b96-cf4eb329ca96" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "f45b4432-4ae2-5719-b4e8-a5e8baa1ccd2" - } - }, - "name": "10.0.10.1-501" - }, - { - "attributes": { - "total_capacity_gbps": 10.0, - "used_capacity_gbps": 0.0 - }, - "link_endpoint_ids": [ - { - "device_id": { - "device_uuid": { - "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6" - } - }, - "endpoint_uuid": { - "uuid": "16d56d61-63cd-5704-9d2a-5515e633b64b" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - }, - { - "device_id": { - "device_uuid": { - "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f" - } - }, - "endpoint_uuid": { - "uuid": "207ef8a3-18fd-5a63-ac24-4a1cc6af3e92" - }, - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ], - "link_id": { - "link_uuid": { - "uuid": "fd005f34-39f5-550e-b2c0-c6e6f8c16325" - } - }, - "name": "128.32.10.5-eth1" - } - ], - "topologies": [ - { - "device_ids": [ - { - "device_uuid": { - "uuid": "0392c251-b5d3-526b-8f3b-a3d4137829fa" - } - }, - { - "device_uuid": { - "uuid": "118295c8-318a-52ec-a394-529fc4b70f2f" - } - }, - { - "device_uuid": { - "uuid": "4c367472-545c-544d-935d-829f0a0e1c72" - } - }, - { - "device_uuid": { - "uuid": "4f2234d0-a9b8-5a86-b1dd-9139d86e3925" - } - }, - { - "device_uuid": { - "uuid": "97d846b3-d0ba-5b4d-b12e-a9365eda205c" - } - }, - { - "device_uuid": { - "uuid": "bf749ed2-fcc4-5bfc-9116-4ea18b722069" - } - }, - { - "device_uuid": { - "uuid": "cf9c4a78-f019-5023-aa0f-4fdba909473b" - } - }, - { - "device_uuid": { - "uuid": "df4be2f2-a4a2-587d-b3ed-61a53cae3aa6" - } - }, - { - "device_uuid": { - "uuid": "e15007fb-aae4-50d6-b686-b6dc4ae504e2" - } - }, - { - "device_uuid": { - "uuid": "f3840f4a-6ea2-551a-8afd-0f3faa8ac1e6" - } - }, - { - "device_uuid": { - "uuid": "fe0dc2e8-b9ce-555f-8f28-a1a4468fabde" - } - } - ], - "link_ids": [ - { - "link_uuid": { - "uuid": "0b3d5943-c2bf-595f-a805-dc29c2be2f52" - } - }, - { - "link_uuid": { - "uuid": "1490e70f-472c-5e4c-8280-21c48ed03477" - } - }, - { - "link_uuid": { - "uuid": "18ba8eb2-342b-5a73-aeae-7288ea9bb28b" - } - }, - { - "link_uuid": { - "uuid": "1901b0dc-1b5e-5fdf-b9ac-9168787464c1" - } - }, - { - "link_uuid": { - "uuid": "1afdae8b-a281-53aa-99c2-205afb8f4ee7" - } - }, - { - "link_uuid": { - "uuid": "30ca0f8f-b150-57f2-ae5e-8a6844944783" - } - }, - { - "link_uuid": { - "uuid": "34c9c6c3-0dcf-54e5-ba67-da33eb2d3c1a" - } - }, - { - "link_uuid": { - "uuid": "35801e61-45f3-564e-ad5c-09baf4aae906" - } - }, - { - "link_uuid": { - "uuid": "36643dba-e8fa-5fb7-952d-dff313db957b" - } - }, - { - "link_uuid": { - "uuid": "36856920-3387-5384-b1b1-dbc9e54da226" - } - }, - { - "link_uuid": { - "uuid": "46ba12f9-dd17-5f2a-9558-e4611515a6b9" - } - }, - { - "link_uuid": { - "uuid": "4dfe28dd-ac28-53d5-b330-1707e350d772" - } - }, - { - "link_uuid": { - "uuid": "644ab377-572c-53a4-8ab5-f5cf45591d88" - } - }, - { - "link_uuid": { - "uuid": "661ac531-4309-58cc-b70e-2a79492c2488" - } - }, - { - "link_uuid": { - "uuid": "6a236e01-853c-51d0-8915-2d09b45923b0" - } - }, - { - "link_uuid": { - "uuid": "6c802ae7-59d1-55e7-9498-146c465bcab5" - } - }, - { - "link_uuid": { - "uuid": "6fa77ad9-e4d7-5830-bf84-ab206eff613a" - } - }, - { - "link_uuid": { - "uuid": "808b54e8-3d5a-5e03-a42e-d6c2a57cf6f3" - } - }, - { - "link_uuid": { - "uuid": "85a18715-3ce0-57f9-8025-5634fe622a06" - } - }, - { - "link_uuid": { - "uuid": "8e8d1a2b-beae-5624-8826-9235bd73a3a8" - } - }, - { - "link_uuid": { - "uuid": "e9c5b57e-de50-509c-9f5a-0107ff233703" - } - }, - { - "link_uuid": { - "uuid": "effca6e0-acf3-5c02-ba9a-d82c17a3f006" - } - }, - { - "link_uuid": { - "uuid": "f45b4432-4ae2-5719-b4e8-a5e8baa1ccd2" - } - }, - { - "link_uuid": { - "uuid": "fd005f34-39f5-550e-b2c0-c6e6f8c16325" - } - } - ], - "name": "admin", - "topology_id": { - "context_id": { - "context_uuid": { - "uuid": "admin" - } - }, - "topology_uuid": { - "uuid": "admin" - } - } - } - ] -} \ No newline at end of file diff --git a/src/ztp_server/tests/data/topology-real.json b/src/ztp_server/tests/data/topology-real.json deleted file mode 100755 index bb158d920ecbd0bf3e9998f4bd856a349c9e91c7..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/data/topology-real.json +++ /dev/null @@ -1,259 +0,0 @@ -{ - "contexts": [ - {"context_id": {"context_uuid": {"uuid": "admin"}}} - ], - - "topologies": [ - {"topology_id": {"context_id": {"context_uuid": {"uuid": "admin"}}, "topology_uuid": {"uuid": "admin"}}} - ], - - "devices": [ - {"device_id": {"device_uuid": {"uuid": "nce-t"}}, "name": "nce-t", "device_type": "emu-open-line-system", - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "mgmt", "name": "mgmt", "type": "mgmt"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "name": "10.0.10.1", "device_type": "emu-packet-router", - "controller_id": {"device_uuid": {"uuid": "nce-t"}}, - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "mgmt", "name": "mgmt", "type": "mgmt" }, - {"uuid": "200", "name": "200", "type": "copper" }, - {"uuid": "500", "name": "500", "type": "optical"}, - {"uuid": "501", "name": "501", "type": "optical"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "name": "10.0.20.1", "device_type": "emu-packet-router", - "controller_id": {"device_uuid": {"uuid": "nce-t"}}, - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "mgmt", "name": "mgmt", "type": "mgmt" }, - {"uuid": "500", "name": "500", "type": "optical"}, - {"uuid": "501", "name": "501", "type": "optical"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "name": "10.0.30.1", "device_type": "emu-packet-router", - "controller_id": {"device_uuid": {"uuid": "nce-t"}}, - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "mgmt", "name": "mgmt", "type": "mgmt" }, - {"uuid": "200", "name": "200", "type": "copper" }, - {"uuid": "500", "name": "500", "type": "optical"}, - {"uuid": "501", "name": "501", "type": "optical"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "name": "10.0.40.1", "device_type": "emu-packet-router", - "controller_id": {"device_uuid": {"uuid": "nce-t"}}, - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "mgmt", "name": "mgmt", "type": "mgmt" }, - {"uuid": "500", "name": "500", "type": "optical"}, - {"uuid": "501", "name": "501", "type": "optical"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "128.32.10.5"}}, "name": "128.32.10.5", "device_type": "emu-client", - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "eth1", "name": "eth1", "type": "copper"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "name": "128.32.10.1", "device_type": "emu-packet-router", - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "200", "name": "200", "type": "copper"}, - {"uuid": "500", "name": "500", "type": "copper"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "128.32.20.5"}}, "name": "128.32.20.5", "device_type": "emu-client", - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "eth1", "name": "eth1", "type": "copper"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "name": "128.32.20.1", "device_type": "emu-packet-router", - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "200", "name": "200", "type": "copper"}, - {"uuid": "500", "name": "500", "type": "copper"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "name": "128.32.33.5", "device_type": "emu-optical-transponder", - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "200", "name": "200", "type": "copper"}, - {"uuid": "201", "name": "201", "type": "copper"}, - {"uuid": "500", "name": "500", "type": "copper"} - ]}}} - ]}}, - - {"device_id": {"device_uuid": {"uuid": "172.10.33.5"}}, "name": "172.10.33.5", "device_type": "emu-datacenter", - "device_operational_status": 1, "device_drivers": [0], "device_config": {"config_rules": [ - {"action": 1, "custom": {"resource_key": "_connect/address", "resource_value": "127.0.0.1"}}, - {"action": 1, "custom": {"resource_key": "_connect/port", "resource_value": "0"}}, - {"action": 1, "custom": {"resource_key": "_connect/settings", "resource_value": {"endpoints": [ - {"uuid": "200", "name": "200", "type": "copper"}, - {"uuid": "201", "name": "201", "type": "copper"}, - {"uuid": "500", "name": "500", "type": "copper"} - ]}}} - ]}} - ], - - "links": [ - {"link_id": {"link_uuid": {"uuid": "nce-t/mgmt==10.0.10.1/mgmt"}}, "name": "nce-t/mgmt==10.0.10.1/mgmt", "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "nce-t" }}, "endpoint_uuid": {"uuid": "mgmt"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "mgmt"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "nce-t/mgmt==10.0.20.1/mgmt"}}, "name": "nce-t/mgmt==10.0.20.1/mgmt", "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "nce-t" }}, "endpoint_uuid": {"uuid": "mgmt"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "mgmt"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "nce-t/mgmt==10.0.30.1/mgmt"}}, "name": "nce-t/mgmt==10.0.30.1/mgmt", "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "nce-t" }}, "endpoint_uuid": {"uuid": "mgmt"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "mgmt"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "nce-t/mgmt==10.0.40.1/mgmt"}}, "name": "nce-t/mgmt==10.0.40.1/mgmt", "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "nce-t" }}, "endpoint_uuid": {"uuid": "mgmt"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "mgmt"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "10.0.10.1-501"}}, "name": "10.0.10.1-501", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "501"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "501"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "10.0.20.1-501"}}, "name": "10.0.20.1-501", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "501"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "501"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "10.0.10.1-500"}}, "name": "10.0.10.1-500", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "500"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "500"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "10.0.40.1-500"}}, "name": "10.0.40.1-500", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "500"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "500"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "10.0.20.1-500"}}, "name": "10.0.20.1-500", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "500"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "500"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "10.0.30.1-500"}}, "name": "10.0.30.1-500", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "500"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.20.1"}}, "endpoint_uuid": {"uuid": "500"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "10.0.40.1-501"}}, "name": "10.0.40.1-501", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "501"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "501"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "10.0.30.1-501"}}, "name": "10.0.30.1-501", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "501"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.40.1"}}, "endpoint_uuid": {"uuid": "501"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "128.32.10.5-eth1"}}, "name": "128.32.10.5-eth1", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.10.5"}}, "endpoint_uuid": {"uuid": "eth1"}}, - {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "endpoint_uuid": {"uuid": "200" }} - ]}, - {"link_id": {"link_uuid": {"uuid": "128.32.10.1-200"}}, "name": "128.32.10.1-200", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "endpoint_uuid": {"uuid": "200" }}, - {"device_id": {"device_uuid": {"uuid": "128.32.10.5"}}, "endpoint_uuid": {"uuid": "eth1"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "128.32.10.1-500"}}, "name": "128.32.10.1-500", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "endpoint_uuid": {"uuid": "500"}}, - {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "200"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "128.32.33.5-200"}}, "name": "128.32.33.5-200", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "200"}}, - {"device_id": {"device_uuid": {"uuid": "128.32.10.1"}}, "endpoint_uuid": {"uuid": "500"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "128.32.20.5-eth1"}}, "name": "128.32.20.5-eth1", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.20.5"}}, "endpoint_uuid": {"uuid": "eth1"}}, - {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "endpoint_uuid": {"uuid": "200" }} - ]}, - {"link_id": {"link_uuid": {"uuid": "128.32.20.1-200"}}, "name": "128.32.20.1-200", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "endpoint_uuid": {"uuid": "200" }}, - {"device_id": {"device_uuid": {"uuid": "128.32.20.5"}}, "endpoint_uuid": {"uuid": "eth1"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "128.32.20.1-500"}}, "name": "128.32.20.1-500", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "endpoint_uuid": {"uuid": "500"}}, - {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "201"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "128.32.33.5-201"}}, "name": "128.32.33.5-201", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "201"}}, - {"device_id": {"device_uuid": {"uuid": "128.32.20.1"}}, "endpoint_uuid": {"uuid": "500"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "128.32.33.5-500"}}, "name": "128.32.33.5-500", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "500"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "200"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "10.0.10.1-200"}}, "name": "10.0.10.1-200", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.10.1"}}, "endpoint_uuid": {"uuid": "200"}}, - {"device_id": {"device_uuid": {"uuid": "128.32.33.5"}}, "endpoint_uuid": {"uuid": "500"}} - ]}, - - {"link_id": {"link_uuid": {"uuid": "172.10.33.5-500"}}, "name": "172.10.33.5-500", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "172.10.33.5"}}, "endpoint_uuid": {"uuid": "500"}}, - {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "200"}} - ]}, - {"link_id": {"link_uuid": {"uuid": "10.0.30.1-200"}}, "name": "10.0.30.1-200", - "attributes": {"total_capacity_gbps": 10, "used_capacity_gbps": 0}, "link_endpoint_ids": [ - {"device_id": {"device_uuid": {"uuid": "10.0.30.1"}}, "endpoint_uuid": {"uuid": "200"}}, - {"device_id": {"device_uuid": {"uuid": "172.10.33.5"}}, "endpoint_uuid": {"uuid": "500"}} - ]} - ] -} diff --git a/src/ztp_server/tests/ietf_acl_client.py b/src/ztp_server/tests/ietf_acl_client.py deleted file mode 100755 index 20887f1a8ac037d700e3df4a5c1da91f2ae58899..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/ietf_acl_client.py +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import requests, time -from typing import Optional -from requests.auth import HTTPBasicAuth - -BASE_URL = '{:s}://{:s}:{:d}/restconf/data' -ACLS_URL = '{:s}/device={:s}/ietf-access-control-list:acls' -ACL_URL = '{:s}/device={:s}/ietf-access-control-list:acl={:s}' - -CSG1_DEVICE_UUID = '118295c8-318a-52ec-a394-529fc4b70f2f' # router: 128.32.10.1 -ACL_NAME = 'sample-ipv4-acl' -ACL_RULE = {"ietf-access-control-list:acls": { - "acl": [{ - "name": "sample-ipv4-acl", "type": "ipv4-acl-type", - "aces": {"ace": [{ - "name": "rule1", - "matches": { - "ipv4": { - "source-ipv4-network": "128.32.10.6/24", - "destination-ipv4-network": "172.10.33.0/24", - "dscp": 18 - }, - "tcp": { - "source-port": {"operator": "eq", "port": 1444}, - "destination-port": {"operator": "eq", "port": 1333}, - "flags": "syn" - } - }, - "actions": {"forwarding": "drop"} - }]} - }], - "attachment-points": {"interface": [{ - "interface-id": "200", - "ingress": {"acl-sets": {"acl-set": [{"name": "sample-ipv4-acl"}]}} - }] -}}} - -class TfsIetfAclClient: - def __init__( - self, host : str = 'localhost', port : int = 80, schema : str = 'http', - username : Optional[str] = 'admin', password : Optional[str] = 'admin', - timeout : int = 10, allow_redirects : bool = True, verify : bool = False - ) -> None: - self._base_url = BASE_URL.format(schema, host, port) - auth = HTTPBasicAuth(username, password) if username is not None and password is not None else None - self._settings = dict(auth=auth, timeout=timeout, allow_redirects=allow_redirects, verify=verify) - - def post(self, device_uuid : str, ietf_acl_data : dict) -> str: - request_url = ACLS_URL.format(self._base_url, device_uuid) - reply = requests.post(request_url, json=ietf_acl_data, **(self._settings)) - return reply.text - - def get(self, device_uuid : str, acl_name : str) -> str: - request_url = ACL_URL.format(self._base_url, device_uuid, acl_name) - reply = requests.get(request_url, **(self._settings)) - return reply.text - - def delete(self, device_uuid : str, acl_name : str) -> str: - request_url = ACL_URL.format(self._base_url, device_uuid, acl_name) - reply = requests.delete(request_url, **(self._settings)) - return reply.text - -def main(): - client = TfsIetfAclClient() - print(f'ACL rule: {ACL_RULE}') - post_response = client.post(CSG1_DEVICE_UUID, ACL_RULE) - print(f'post response: {post_response}') - time.sleep(.5) - get_response = client.get(CSG1_DEVICE_UUID, ACL_NAME) - print(f'get response: {get_response}') - time.sleep(.5) - delete_response = client.delete(CSG1_DEVICE_UUID, ACL_NAME) - print(f'delete response: {delete_response}') - -if __name__ == '__main__': - main() diff --git a/src/ztp_server/tests/test_etsi_bwm.py b/src/ztp_server/tests/test_etsi_bwm.py deleted file mode 100755 index 9400de00f95d7f1ec11c2fcf9af7e3b480c70ad2..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/test_etsi_bwm.py +++ /dev/null @@ -1,240 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import deepdiff, json, logging, pytest -from typing import Dict -from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME -from common.proto.context_pb2 import ContextId, TopologyId -from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario -from common.tools.object_factory.Context import json_context_id -from common.tools.object_factory.Topology import json_topology_id -from context.client.ContextClient import ContextClient -from nbi.service.rest_server import RestServer -from .PrepareTestScenario import ( # pylint: disable=unused-import - # be careful, order of symbols is important here! - do_rest_delete_request, do_rest_get_request, do_rest_patch_request, do_rest_post_request, do_rest_put_request, - mock_service, nbi_service_rest, context_client -) - -LOGGER = logging.getLogger(__name__) -LOGGER.setLevel(logging.DEBUG) - -DESCRIPTOR_FILE = 'nbi/tests/data/topology-dummy.json' - -JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME) -ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID) -ADMIN_TOPOLOGY_ID = TopologyId(**json_topology_id(DEFAULT_TOPOLOGY_NAME, context_id=JSON_ADMIN_CONTEXT_ID)) -BASE_URL = '/restconf/bwm/v1' - -@pytest.fixture(scope='session') -def storage() -> Dict: - yield dict() - -#def compare_dicts(dict1, dict2): -# # Function to recursively sort dictionaries -# def recursively_sort(d): -# if isinstance(d, dict): -# return {k: recursively_sort(v) for k, v in sorted(d.items())} -# if isinstance(d, list): -# return [recursively_sort(item) for item in d] -# return d -# -# # Sort dictionaries to ignore the order of fields -# sorted_dict1 = recursively_sort(dict1) -# sorted_dict2 = recursively_sort(dict2) -# -# if sorted_dict1 != sorted_dict2: -# LOGGER.error(sorted_dict1) -# LOGGER.error(sorted_dict2) -# -# return sorted_dict1 != sorted_dict2 - -def check_timestamps(bwm_service): - assert 'timeStamp' in bwm_service - assert 'seconds' in bwm_service['timeStamp'] - assert 'nanoseconds' in bwm_service['timeStamp'] - -def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - validate_empty_scenario(context_client) - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - results = descriptor_loader.process() - check_descriptor_load_results(results, descriptor_loader) - descriptor_loader.validate() - - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 0 - assert len(response.slice_ids ) == 0 - -def test_get_allocations_empty(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument - URL = BASE_URL + '/bw_allocations' - retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200}) - LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True))) - assert len(retrieved_data) == 0 - -def test_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument - URL = BASE_URL + '/bw_allocations' - data = { - "appInsId" : "service_uuid_01", - "allocationDirection" : "00", - "fixedAllocation" : "123000.0", - "fixedBWPriority" : "SEE_DESCRIPTION", - "requestType" : 0, - "sessionFilter" : [{ - "sourceIp" : "192.168.1.2", - "sourcePort" : ["a"], - "protocol" : "string", - "dstAddress" : "192.168.3.2", - "dstPort" : ["b"], - }] - } - retrieved_data = do_rest_post_request(URL, body=data, logger=LOGGER, expected_status_codes={200}) - LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True))) - storage['service_uuid_01'] = 'service_uuid_01' - - -def test_get_allocations(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument - assert 'service_uuid_01' in storage - URL = BASE_URL + '/bw_allocations' - retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200}) - LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True))) - assert len(retrieved_data) == 1 - good_result = [ - { - "appInsId" : "service_uuid_01", - "fixedAllocation" : "123000.0", - "allocationDirection" : "00", - "fixedBWPriority" : "SEE_DESCRIPTION", - "requestType" : "0", - "sessionFilter" : [{ - "sourceIp" : "192.168.1.2", - "sourcePort" : ["a"], - "protocol" : "string", - "dstAddress" : "192.168.3.2", - "dstPort" : ["b"], - }], - } - ] - check_timestamps(retrieved_data[0]) - del retrieved_data[0]['timeStamp'] - diff_data = deepdiff.DeepDiff(good_result, retrieved_data) - LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty()))) - assert len(diff_data) == 0 - - -def test_get_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument - assert 'service_uuid_01' in storage - URL = BASE_URL + '/bw_allocations/service_uuid_01' - retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200}) - LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True))) - good_result = { - "appInsId" : "service_uuid_01", - "fixedAllocation" : "123000.0", - "allocationDirection": "00", - "fixedBWPriority" : "SEE_DESCRIPTION", - "requestType" : "0", - "sessionFilter" : [{ - "sourceIp" : "192.168.1.2", - "sourcePort" : ["a"], - "protocol" : "string", - "dstAddress" : "192.168.3.2", - "dstPort" : ["b"], - }] - } - check_timestamps(retrieved_data) - del retrieved_data['timeStamp'] - diff_data = deepdiff.DeepDiff(good_result, retrieved_data) - LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty()))) - assert len(diff_data) == 0 - - -def test_put_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument - assert 'service_uuid_01' in storage - URL = BASE_URL + '/bw_allocations/service_uuid_01' - changed_allocation = { - "appInsId" : "service_uuid_01", - "fixedAllocation" : "200.0", - "allocationDirection": "00", - "fixedBWPriority" : "NOPRIORITY", - "requestType" : "0", - "sessionFilter" : [{ - "sourceIp" : "192.168.1.2", - "sourcePort" : ["a"], - "protocol" : "string", - "dstAddress" : "192.168.3.2", - "dstPort" : ["b"], - }] - } - retrieved_data = do_rest_put_request(URL, body=json.dumps(changed_allocation), logger=LOGGER, expected_status_codes={200}) - check_timestamps(retrieved_data) - del retrieved_data['timeStamp'] - diff_data = deepdiff.DeepDiff(changed_allocation, retrieved_data) - LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty()))) - assert len(diff_data) == 0 - - -def test_patch_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument - assert 'service_uuid_01' in storage - URL = BASE_URL + '/bw_allocations/service_uuid_01' - difference = { - "fixedBWPriority":"FULLPRIORITY", - } - changed_allocation = { - "appInsId" : "service_uuid_01", - "fixedAllocation" : "200.0", - "allocationDirection": "00", - "fixedBWPriority" : "FULLPRIORITY", - "requestType" : "0", - "sessionFilter" : [{ - "sourceIp" : "192.168.1.2", - "sourcePort" : ["a"], - "protocol" : "string", - "dstAddress" : "192.168.3.2", - "dstPort" : ["b"], - }] - } - retrieved_data = do_rest_patch_request(URL, body=difference, logger=LOGGER, expected_status_codes={200}) - check_timestamps(retrieved_data) - del retrieved_data['timeStamp'] - diff_data = deepdiff.DeepDiff(changed_allocation, retrieved_data) - LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty()))) - assert len(diff_data) == 0 - - -def test_delete_allocation(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument - assert 'service_uuid_01' in storage - URL = BASE_URL + '/bw_allocations/service_uuid_01' - do_rest_delete_request(URL, logger=LOGGER, expected_status_codes={200}) - - -def test_get_allocations_empty_final(nbi_service_rest : RestServer, storage : Dict): # pylint: disable=redefined-outer-name, unused-argument - URL = BASE_URL + '/bw_allocations' - retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200}) - LOGGER.debug('retrieved_data={:s}'.format(json.dumps(retrieved_data, sort_keys=True))) - assert len(retrieved_data) == 0 - - -def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 0 - assert len(response.slice_ids ) == 0 - - # Load descriptors and validate the base scenario - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - descriptor_loader.validate() - descriptor_loader.unload() - validate_empty_scenario(context_client) diff --git a/src/ztp_server/tests/test_ietf_l2vpn.py b/src/ztp_server/tests/test_ietf_l2vpn.py deleted file mode 100755 index 7bed8ff5db57a59e90f39dce1ba1bc9e43dd005b..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/test_ietf_l2vpn.py +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging -from common.Constants import DEFAULT_CONTEXT_NAME -from common.proto.context_pb2 import ContextId -from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario -from common.tools.object_factory.Context import json_context_id -from context.client.ContextClient import ContextClient -from tests.tools.mock_osm.MockOSM import MockOSM -from .Constants import SERVICE_CONNECTION_POINTS_1, SERVICE_CONNECTION_POINTS_2, SERVICE_TYPE -from .PrepareTestScenario import ( # pylint: disable=unused-import - # be careful, order of symbols is important here! - mock_service, nbi_service_rest, osm_wim, context_client -) - -LOGGER = logging.getLogger(__name__) -LOGGER.setLevel(logging.DEBUG) - -DESCRIPTOR_FILE = 'nbi/tests/data/topology-7router-emu-dummy.json' - -JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME) -ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID) - -def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - validate_empty_scenario(context_client) - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - results = descriptor_loader.process() - check_descriptor_load_results(results, descriptor_loader) - descriptor_loader.validate() - - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 0 - assert len(response.slice_ids ) == 0 - -def test_create_service(osm_wim : MockOSM): # pylint: disable=redefined-outer-name - osm_wim.create_connectivity_service(SERVICE_TYPE, SERVICE_CONNECTION_POINTS_1) - -def test_get_service_status(osm_wim : MockOSM): # pylint: disable=redefined-outer-name - service_uuid = list(osm_wim.conn_info.keys())[0] # this test adds a single service - osm_wim.get_connectivity_service_status(service_uuid) - -def test_edit_service(osm_wim : MockOSM): # pylint: disable=redefined-outer-name - service_uuid = list(osm_wim.conn_info.keys())[0] # this test adds a single service - osm_wim.edit_connectivity_service(service_uuid, SERVICE_CONNECTION_POINTS_2) - -def test_delete_service(osm_wim : MockOSM): # pylint: disable=redefined-outer-name - service_uuid = list(osm_wim.conn_info.keys())[0] # this test adds a single service - osm_wim.delete_connectivity_service(service_uuid) - -def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 0 - assert len(response.slice_ids ) == 0 - - # Load descriptors and validate the base scenario - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - descriptor_loader.validate() - descriptor_loader.unload() - validate_empty_scenario(context_client) diff --git a/src/ztp_server/tests/test_ietf_l3vpn.py b/src/ztp_server/tests/test_ietf_l3vpn.py deleted file mode 100755 index 0f214661f4451317520db5dc0fc115459ce8e015..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/test_ietf_l3vpn.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json, logging, pytest -from typing import Dict -from common.Constants import DEFAULT_CONTEXT_NAME -from common.proto.context_pb2 import ContextId -from common.tools.descriptor.Loader import ( - DescriptorLoader, check_descriptor_load_results, validate_empty_scenario -) -from common.tools.object_factory.Context import json_context_id -from context.client.ContextClient import ContextClient -from nbi.service.rest_server.RestServer import RestServer -from .PrepareTestScenario import ( # pylint: disable=unused-import - # be careful, order of symbols is important here! - do_rest_delete_request, do_rest_get_request, do_rest_post_request, - mock_service, nbi_service_rest, osm_wim, context_client -) - -LOGGER = logging.getLogger(__name__) -LOGGER.setLevel(logging.DEBUG) - -DESCRIPTOR_FILE = 'nbi/tests/data/topology-dummy.json' -SVC1_DATA_FILE = 'nbi/tests/data/ietf_l3vpn_req_svc1.json' -SVC2_DATA_FILE = 'nbi/tests/data/ietf_l3vpn_req_svc2.json' - -JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME) -ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID) - -@pytest.fixture(scope='session') -def storage() -> Dict: - yield dict() - -def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - validate_empty_scenario(context_client) - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - results = descriptor_loader.process() - check_descriptor_load_results(results, descriptor_loader) - descriptor_loader.validate() - - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 0 - assert len(response.slice_ids ) == 0 - -# pylint: disable=redefined-outer-name, unused-argument -def test_create_svc1(nbi_service_rest : RestServer, storage : Dict): - with open(SVC1_DATA_FILE, 'r', encoding='UTF-8') as f: - svc1_data = json.load(f) - URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services' - do_rest_post_request(URL, body=svc1_data, logger=LOGGER, expected_status_codes={201}) - storage['svc1-uuid'] = svc1_data['ietf-l3vpn-svc:l3vpn-svc']['vpn-services']['vpn-service'][0]['vpn-id'] - -# pylint: disable=redefined-outer-name, unused-argument -def test_create_svc2(nbi_service_rest : RestServer, storage : Dict): - with open(SVC2_DATA_FILE, 'r', encoding='UTF-8') as f: - svc2_data = json.load(f) - URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services' - do_rest_post_request(URL, body=svc2_data, logger=LOGGER, expected_status_codes={201}) - storage['svc2-uuid'] = svc2_data['ietf-l3vpn-svc:l3vpn-svc']['vpn-services']['vpn-service'][0]['vpn-id'] - -# pylint: disable=redefined-outer-name, unused-argument -def test_get_state_svc1(nbi_service_rest : RestServer, storage : Dict): - assert 'svc1-uuid' in storage - service_uuid = storage['svc1-uuid'] - URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid) - do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200}) - -# pylint: disable=redefined-outer-name, unused-argument -def test_get_state_svc2(nbi_service_rest : RestServer, storage : Dict): - assert 'svc2-uuid' in storage - service_uuid = storage['svc2-uuid'] - URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid) - do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200}) - -# pylint: disable=redefined-outer-name, unused-argument -def test_delete_svc1(nbi_service_rest : RestServer, storage : Dict): - assert 'svc1-uuid' in storage - service_uuid = storage['svc1-uuid'] - URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid) - do_rest_delete_request(URL, logger=LOGGER, expected_status_codes={204}) - -# pylint: disable=redefined-outer-name, unused-argument -def test_delete_svc2(nbi_service_rest : RestServer, storage : Dict): - assert 'svc2-uuid' in storage - service_uuid = storage['svc2-uuid'] - URL = '/restconf/data/ietf-l3vpn-svc:l3vpn-svc/vpn-services/vpn-service={:s}/'.format(service_uuid) - do_rest_delete_request(URL, logger=LOGGER, expected_status_codes={204}) - -def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 0 - assert len(response.slice_ids ) == 0 - - # Load descriptors and validate the base scenario - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - descriptor_loader.validate() - descriptor_loader.unload() - validate_empty_scenario(context_client) diff --git a/src/ztp_server/tests/test_ietf_network.py b/src/ztp_server/tests/test_ietf_network.py deleted file mode 100755 index 68337d0a8b3cf4b4942f9cba7c4ca9a60b338268..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/test_ietf_network.py +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import deepdiff, json, logging, operator, os -from typing import Dict -from common.Constants import DEFAULT_CONTEXT_NAME -from common.proto.context_pb2 import ContextId -from common.tools.descriptor.Loader import ( - DescriptorLoader, check_descriptor_load_results, validate_empty_scenario -) -from common.tools.object_factory.Context import json_context_id -from context.client.ContextClient import ContextClient -from nbi.service.rest_server import RestServer - -# Explicitly state NBI to use PyangBind Renderer for this test -os.environ['IETF_NETWORK_RENDERER'] = 'PYANGBIND' - -from .PrepareTestScenario import ( # pylint: disable=unused-import - # be careful, order of symbols is important here! - do_rest_get_request, mock_service, nbi_service_rest, osm_wim, context_client -) - -LOGGER = logging.getLogger(__name__) -LOGGER.setLevel(logging.DEBUG) - -DESCRIPTOR_FILE = 'nbi/tests/data/topology-dummy.json' -TARGET_DATA_FILE = 'nbi/tests/data/test-ietf-network.json' - -JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME) -ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID) - -def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - validate_empty_scenario(context_client) - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - results = descriptor_loader.process() - check_descriptor_load_results(results, descriptor_loader) - descriptor_loader.validate() - - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 0 - assert len(response.slice_ids ) == 0 - -def sort_data(data : Dict) -> None: - if 'ietf-network:networks' not in data: return - if 'network' not in data['ietf-network:networks']: return - data['ietf-network:networks']['network'] = sorted( - data['ietf-network:networks']['network'], - key=operator.itemgetter('network-id') - ) - for network in data['ietf-network:networks']['network']: - if 'node' in network: - network['node'] = sorted( - network['node'], - key=operator.itemgetter('node-id') - ) - - for node in network['node']: - if 'ietf-network-topology:termination-point' in node: - node['ietf-network-topology:termination-point'] = sorted( - node['ietf-network-topology:termination-point'], - key=operator.itemgetter('tp-id') - ) - - if 'ietf-network-topology:link' in network: - network['ietf-network-topology:link'] = sorted( - network['ietf-network-topology:link'], - key=operator.itemgetter('link-id') - ) - -def test_rest_get_networks(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - with open(TARGET_DATA_FILE, 'r', encoding='UTF-8') as f: - target_data = json.load(f) - URL = '/restconf/data/ietf-network:networks' - retrieved_data = do_rest_get_request(URL, logger=LOGGER, expected_status_codes={200}) - sort_data(retrieved_data) - sort_data(target_data) - diff_data = deepdiff.DeepDiff(target_data, retrieved_data) - LOGGER.error('Differences:\n{:s}'.format(str(diff_data.pretty()))) - assert len(diff_data) == 0 - -def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 0 - assert len(response.slice_ids ) == 0 - - # Load descriptors and validate the base scenario - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - descriptor_loader.validate() - descriptor_loader.unload() - validate_empty_scenario(context_client) diff --git a/src/ztp_server/tests/test_slice.py b/src/ztp_server/tests/test_slice.py deleted file mode 100755 index fe112e6fc70c94caa1f5fc3824e56758c2ec442c..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/test_slice.py +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json, random, uuid -from typing import Dict, Tuple -from nbi.service.rest_server.nbi_plugins.ietf_network_slice.bindings.network_slice_services import ( - NetworkSliceServices -) - -# R1 emulated devices -# Port 13-0 is Optical -# Port 13-1 is Copper -R1_UUID = "ed2388eb-5fb9-5888-a4f4-160267d3e19b" -R1_PORT_13_0_UUID_OPTICAL = "20440915-1a6c-5e7b-a80f-b0e0e51f066d" -R1_PORT_13_1_UUID_COPPER = "ff900d5d-2ac0-576c-9628-a2d016681f9d" - -# R2 emulated devices -# Port 13-0 is Optical -# Port 13-1 is Copper -R2_UUID = "49ce0312-1274-523b-97b8-24d0eca2d72d" -R2_PORT_13_0_UUID_OPTICAL = "214618cb-b63b-5e66-84c2-45c1c016e5f0" -R2_PORT_13_1_UUID_COPPER = "4e0f7fb4-5d22-56ad-a00e-20bffb4860f9" - -# R3 emulated devices -# Port 13-0 is Optical -# Port 13-1 is Copper -R3_UUID = "3bc8e994-a3b9-5f60-9c77-6608b1d08313" -R3_PORT_13_0_UUID_OPTICAL = "da5196f5-d651-5def-ada6-50ed6430279d" -R3_PORT_13_1_UUID_COPPER = "43d221fa-5701-5740-a129-502131f5bda2" - -# R4 emulated devices -# Port 13-0 is Optical -# Port 13-1 is Copper -R4_UUID = "b43e6361-2573-509d-9a88-1793e751b10d" -R4_PORT_13_0_UUID_OPTICAL = "241b74a7-8677-595c-ad65-cc9093c1e341" -R4_PORT_13_1_UUID_COPPER = "c57abf46-caaf-5954-90cc-1fec0a69330e" - -node_dict = {R1_PORT_13_1_UUID_COPPER: R1_UUID, - R2_PORT_13_1_UUID_COPPER: R2_UUID, - R3_PORT_13_1_UUID_COPPER: R3_UUID, - R4_PORT_13_1_UUID_COPPER: R4_UUID} -list_endpoints = [R1_PORT_13_1_UUID_COPPER, - R2_PORT_13_1_UUID_COPPER, - R3_PORT_13_1_UUID_COPPER, - R4_PORT_13_1_UUID_COPPER] - -list_availability= [99, 99.9, 99.99, 99.999, 99.9999] -list_bw = [10, 40, 50, 100, 150, 200, 400] -list_owner = ["Telefonica", "CTTC", "Telenor", "ADVA", "Ubitech", "ATOS"] - -URL_POST = "/restconf/data/ietf-network-slice-service:ietf-nss/network-slice-services" -URL_DELETE = "/restconf/data/ietf-network-slice-service:ietf-nss/network-slice-services/slice-service=" - -def generate_request(seed: str) -> Tuple[Dict, str]: - - ns = NetworkSliceServices() - - # Slice 1 - suuid = str(uuid.uuid5(uuid.NAMESPACE_DNS, str(seed))) - slice1 = ns.slice_service[suuid] - slice1.service_description = "Test slice for OFC 2023 demo" - slice1.status().admin_status().status = "Planned" # TODO not yet mapped - - # SDPS: R1 optical to R3 optical - sdps1 = slice1.sdps().sdp - while True: - ep1_uuid = random.choice(list_endpoints) - ep2_uuid = random.choice(list_endpoints) - if ep1_uuid != ep2_uuid: - break - - sdps1[ep1_uuid].node_id = node_dict.get(ep1_uuid) - sdps1[ep2_uuid].node_id = node_dict.get(ep2_uuid) - - # Connectivity group: Connection construct and 2 sla constrains: - # - Bandwidth - # - Availability - cg_uuid = str(uuid.uuid4()) - cg = slice1.connection_groups().connection_group - cg1 = cg[cg_uuid] - - cc1 = cg1.connectivity_construct[0] - cc1.cc_id = 5 - p2p = cc1.connectivity_construct_type.p2p() - p2p.p2p_sender_sdp = ep1_uuid - p2p.p2p_receiver_sdp = ep2_uuid - - slo_custom = cc1.slo_sle_policy.custom() - metric_bounds = slo_custom.service_slo_sle_policy().metric_bounds().metric_bound - - # SLO Bandwidth - slo_bandwidth = metric_bounds["service-slo-two-way-bandwidth"] - slo_bandwidth.value_description = "Guaranteed bandwidth" - slo_bandwidth.bound = int(random.choice(list_bw)) - slo_bandwidth.metric_unit = "Gbps" - - # SLO Availability - slo_availability = metric_bounds["service-slo-availability"] - slo_availability.value_description = "Guaranteed availability" - slo_availability.metric_unit = "percentage" - slo_availability.bound = random.choice(list_availability) - - json_request = {"data": ns.to_json()} - - #Last, add name and owner manually - list_name_owner = [{"tag-type": "owner", "value": random.choice(list_owner)}] - json_request["data"]["ietf-network-slice-service:network-slice-services"]["slice-service"][0]["service-tags"] = list_name_owner - - return (json_request, suuid) - - -if __name__ == "__main__": - request = generate_request(123) - print(json.dumps(request[0], sort_keys=True, indent=4)) diff --git a/src/ztp_server/tests/test_tfs_api.py b/src/ztp_server/tests/test_tfs_api.py deleted file mode 100755 index eab2f8d9ba6408491fb272cd59bc2f79a1c08a64..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/test_tfs_api.py +++ /dev/null @@ -1,217 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging, urllib -from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME -from common.proto.context_pb2 import ContextId -from common.tools.descriptor.Loader import ( - DescriptorLoader, check_descriptor_load_results, validate_empty_scenario -) -from common.tools.object_factory.Context import json_context_id -from common.type_checkers.Assertions import ( - validate_connection, validate_connection_ids, validate_connections, - validate_context, validate_context_ids, validate_contexts, - validate_device, validate_device_ids, validate_devices, - validate_link, validate_link_ids, validate_links, - validate_service, validate_service_ids, validate_services, - validate_slice, validate_slice_ids, validate_slices, - validate_topologies, validate_topology, validate_topology_ids -) -from context.client.ContextClient import ContextClient -from nbi.service.rest_server.RestServer import RestServer -from .PrepareTestScenario import ( # pylint: disable=unused-import - # be careful, order of symbols is important here! - mock_service, nbi_service_rest, context_client, - do_rest_get_request -) - -LOGGER = logging.getLogger(__name__) -LOGGER.setLevel(logging.DEBUG) - -DESCRIPTOR_FILE = 'nbi/tests/data/tfs_api_dummy.json' - -JSON_ADMIN_CONTEXT_ID = json_context_id(DEFAULT_CONTEXT_NAME) -ADMIN_CONTEXT_ID = ContextId(**JSON_ADMIN_CONTEXT_ID) - - -# ----- Prepare Environment -------------------------------------------------------------------------------------------- - -def test_prepare_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - validate_empty_scenario(context_client) - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - results = descriptor_loader.process() - check_descriptor_load_results(results, descriptor_loader) - descriptor_loader.validate() - - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 3 - assert len(response.slice_ids ) == 1 - - -# ----- Context -------------------------------------------------------------------------------------------------------- - -def test_rest_get_context_ids(nbi_service_rest: RestServer): # pylint: disable=redefined-outer-name, unused-argument - reply = do_rest_get_request('/tfs-api/context_ids') - validate_context_ids(reply) - -def test_rest_get_contexts(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - reply = do_rest_get_request('/tfs-api/contexts') - validate_contexts(reply) - -def test_rest_get_context(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/tfs-api/context/{:s}'.format(context_uuid)) - validate_context(reply) - - -# ----- Topology ------------------------------------------------------------------------------------------------------- - -def test_rest_get_topology_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/tfs-api/context/{:s}/topology_ids'.format(context_uuid)) - validate_topology_ids(reply) - -def test_rest_get_topologies(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/tfs-api/context/{:s}/topologies'.format(context_uuid)) - validate_topologies(reply) - -def test_rest_get_topology(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - topology_uuid = urllib.parse.quote(DEFAULT_TOPOLOGY_NAME) - reply = do_rest_get_request('/tfs-api/context/{:s}/topology/{:s}'.format(context_uuid, topology_uuid)) - validate_topology(reply, num_devices=3, num_links=6) - - -# ----- Device --------------------------------------------------------------------------------------------------------- - -def test_rest_get_device_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - reply = do_rest_get_request('/tfs-api/device_ids') - validate_device_ids(reply) - -def test_rest_get_devices(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - reply = do_rest_get_request('/tfs-api/devices') - validate_devices(reply) - -def test_rest_get_device(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - device_uuid = urllib.parse.quote('R1', safe='') - reply = do_rest_get_request('/tfs-api/device/{:s}'.format(device_uuid)) - validate_device(reply) - - -# ----- Link ----------------------------------------------------------------------------------------------------------- - -def test_rest_get_link_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - reply = do_rest_get_request('/tfs-api/link_ids') - validate_link_ids(reply) - -def test_rest_get_links(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - reply = do_rest_get_request('/tfs-api/links') - validate_links(reply) - -def test_rest_get_link(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - link_uuid = urllib.parse.quote('R1/502==R2/501', safe='') - reply = do_rest_get_request('/tfs-api/link/{:s}'.format(link_uuid)) - validate_link(reply) - - -# ----- Service -------------------------------------------------------------------------------------------------------- - -def test_rest_get_service_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/tfs-api/context/{:s}/service_ids'.format(context_uuid)) - validate_service_ids(reply) - -def test_rest_get_services(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/tfs-api/context/{:s}/services'.format(context_uuid)) - validate_services(reply) - -def test_rest_get_service(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='') - reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}'.format(context_uuid, service_uuid)) - validate_service(reply) - - -# ----- Slice ---------------------------------------------------------------------------------------------------------- - -def test_rest_get_slice_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/tfs-api/context/{:s}/slice_ids'.format(context_uuid)) - validate_slice_ids(reply) - -def test_rest_get_slices(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/tfs-api/context/{:s}/slices'.format(context_uuid)) - validate_slices(reply) - -def test_rest_get_slice(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - slice_uuid = urllib.parse.quote('SLC:R1-R2-R3', safe='') - reply = do_rest_get_request('/tfs-api/context/{:s}/slice/{:s}'.format(context_uuid, slice_uuid)) - validate_slice(reply) - - -# ----- Connection ----------------------------------------------------------------------------------------------------- - -def test_rest_get_connection_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='') - reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}/connection_ids'.format(context_uuid, service_uuid)) - validate_connection_ids(reply) - -def test_rest_get_connections(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - service_uuid = urllib.parse.quote('SVC:R1/200==R2/200', safe='') - reply = do_rest_get_request('/tfs-api/context/{:s}/service/{:s}/connections'.format(context_uuid, service_uuid)) - validate_connections(reply) - -def test_rest_get_connection(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument - connection_uuid = urllib.parse.quote('CON:R1/200==R2/200:1', safe='') - reply = do_rest_get_request('/tfs-api/connection/{:s}'.format(connection_uuid)) - validate_connection(reply) - -# ----- Policy --------------------------------------------------------------------------------------------------------- - -#def test_rest_get_policyrule_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument -# reply = do_rest_get_request('/tfs-api/policyrule_ids') -# validate_policyrule_ids(reply) - -#def test_rest_get_policyrules(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument -# reply = do_rest_get_request('/tfs-api/policyrules') -# validate_policyrules(reply) - -#def test_rest_get_policyrule(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name, unused-argument -# policyrule_uuid_quoted = urllib.parse.quote(policyrule_uuid, safe='') -# reply = do_rest_get_request('/tfs-api/policyrule/{:s}'.format(policyrule_uuid_quoted)) -# validate_policyrule(reply) - - -# ----- Cleanup Environment -------------------------------------------------------------------------------------------- - -def test_cleanup_environment(context_client : ContextClient) -> None: # pylint: disable=redefined-outer-name - # Verify the scenario has no services/slices - response = context_client.GetContext(ADMIN_CONTEXT_ID) - assert len(response.topology_ids) == 1 - assert len(response.service_ids ) == 3 - assert len(response.slice_ids ) == 1 - - # Load descriptors and validate the base scenario - descriptor_loader = DescriptorLoader(descriptors_file=DESCRIPTOR_FILE, context_client=context_client) - descriptor_loader.validate() - descriptor_loader.unload() - validate_empty_scenario(context_client) diff --git a/src/ztp_server/tests/test_yang_acl.py b/src/ztp_server/tests/test_yang_acl.py deleted file mode 100755 index 2f45c50bc4a140ca289aad03969f94148efa71d4..0000000000000000000000000000000000000000 --- a/src/ztp_server/tests/test_yang_acl.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import copy, json, libyang, logging, os -from typing import Dict, List, Optional - -LOGGER = logging.getLogger(__name__) - -YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang') -YANG_MODULES = [ - 'ietf-yang-types', - 'ietf-interfaces', - 'iana-if-type', - 'ietf-access-control-list', -] - -class YangValidator: - def __init__(self) -> None: - self._yang_context = libyang.Context(YANG_DIR) - for module_name in YANG_MODULES: - LOGGER.info('Loading module: {:s}'.format(str(module_name))) - yang_module = self._yang_context.load_module(module_name) - yang_module.feature_enable_all() - yang_module_prefix = yang_module.prefix() - LOGGER.info(' Prefix: {:s}'.format(str(yang_module_prefix))) - - def parse_to_dict(self, message : Dict, interface_names : List[str]) -> Dict: - interfaces = self._yang_context.create_data_path('/ietf-interfaces:interfaces') - for if_index,interface_name in enumerate(interface_names): - if_path = 'interface[name="{:s}"]'.format(str(interface_name)) - interface = interfaces.create_path(if_path) - interface.create_path('if-index', if_index + 1) - interface.create_path('type', 'iana-if-type:ethernetCsmacd') - interface.create_path('admin-status', 'up') - interface.create_path('oper-status', 'up') - statistics = interface.create_path('statistics') - statistics.create_path('discontinuity-time', '2024-07-11T10:00:00.000000Z') - - message = copy.deepcopy(message) - message['ietf-interfaces:interfaces'] = interfaces.print_dict()['interfaces'] - - dnode : Optional[libyang.DNode] = self._yang_context.parse_data_mem( - json.dumps(message), 'json', validate_present=True, strict=True - ) - if dnode is None: raise Exception('Unable to parse Message({:s})'.format(str(message))) - message = dnode.print_dict() - dnode.free() - interfaces.free() - return message - - def destroy(self) -> None: - self._yang_context.destroy() - self._yang_context = None - -def main() -> None: - import uuid # pylint: disable=import-outside-toplevel - logging.basicConfig(level=logging.DEBUG) - - interface_names = {'200', '500', str(uuid.uuid4()), str(uuid.uuid4())} - ACL_RULE = {"ietf-access-control-list:acls": { - "acl": [{ - "name": "sample-ipv4-acl", "type": "ipv4-acl-type", - "aces": {"ace": [{ - "name": "rule1", - "matches": { - "ipv4": { - "source-ipv4-network": "128.32.10.6/24", - "destination-ipv4-network": "172.10.33.0/24", - "dscp": 18 - }, - "tcp": { - "source-port": {"operator": "eq", "port": 1444}, - "destination-port": {"operator": "eq", "port": 1333}, - "flags": "syn" - } - }, - "actions": {"forwarding": "drop"} - }]} - }], - "attachment-points": {"interface": [{ - "interface-id": "200", - "ingress": {"acl-sets": {"acl-set": [{"name": "sample-ipv4-acl"}]}} - }] - }}} - - yang_validator = YangValidator() - request_data = yang_validator.parse_to_dict(ACL_RULE, list(interface_names)) - yang_validator.destroy() - - LOGGER.info('request_data = {:s}'.format(str(request_data))) - -if __name__ == '__main__': - main()