From c8b24867b30f8e2632a9f597f70e4d46f6c7dbbf Mon Sep 17 00:00:00 2001
From: jimenezquesa <manuel.jimenez@eviden.com>
Date: Wed, 27 Nov 2024 16:21:42 +0100
Subject: [PATCH 1/8] First draft

---
 proto/ztp_server.proto                        |   23 +
 src/common/Constants.py                       |    2 +
 src/ztp_server/.gitlab-ci.yml                 |  120 +
 src/ztp_server/Config.py                      |   20 +
 src/ztp_server/Dockerfile                     |   97 +
 src/ztp_server/README.md                      |   35 +
 src/ztp_server/__init__.py                    |   14 +
 src/ztp_server/client/ZtpClient.py            |   61 +
 src/ztp_server/client/__init__.py             |   14 +
 src/ztp_server/data/nso_client.proto          |   60 +
 .../data/provisioning_script_sonic.sh         |   38 +
 src/ztp_server/data/ztp.json                  |   11 +
 src/ztp_server/requirements.in                |   28 +
 src/ztp_server/service/ZtpServerService.py    |   28 +
 .../service/ZtpServerServiceServicerImpl.py   |   40 +
 src/ztp_server/service/__init__.py            |   14 +
 src/ztp_server/service/__main__.py            |   78 +
 .../service/context_subscription/__init__.py  |   64 +
 .../service/rest_server/RestServer.py         |   23 +
 .../service/rest_server/__init__.py           |   14 +
 .../rest_server/ztpServer_plugins/__init__.py |   14 +
 .../ztpServer_plugins/tfs_api/Resources.py    |   47 +
 .../ztpServer_plugins/tfs_api/Tools.py        |   41 +
 .../ztpServer_plugins/tfs_api/__init__.py     |   30 +
 .../ztpServer_plugins/tools/Authentication.py |   25 +
 .../tools/HttpStatusCodes.py                  |   20 +
 .../ztpServer_plugins/tools/Validator.py      |   35 +
 .../ztpServer_plugins/tools/__init__.py       |   14 +
 src/ztp_server/tests/Constants.py             |   85 +
 .../tests/MockService_Dependencies.py         |   58 +
 src/ztp_server/tests/PrepareTestScenario.py   |  169 +
 src/ztp_server/tests/__init__.py              |   14 +
 src/ztp_server/tests/data/ietf_acl.json       |   56 +
 .../tests/data/ietf_l3vpn_req_svc1.json       |  231 ++
 .../tests/data/ietf_l3vpn_req_svc2.json       |  231 ++
 .../tests/data/test-ietf-network.json         | 1962 +++++++++++
 src/ztp_server/tests/data/tfs_api_dummy.json  |  442 +++
 .../data/topology-7router-emu-dummy.json      |  157 +
 .../tests/data/topology-7router-emu.json      |  156 +
 src/ztp_server/tests/data/topology-dummy.json | 3134 +++++++++++++++++
 src/ztp_server/tests/data/topology-real.json  |  259 ++
 src/ztp_server/tests/ietf_acl_client.py       |   89 +
 src/ztp_server/tests/test_etsi_bwm.py         |  240 ++
 src/ztp_server/tests/test_ietf_l2vpn.py       |   75 +
 src/ztp_server/tests/test_ietf_l3vpn.py       |  113 +
 src/ztp_server/tests/test_ietf_network.py     |  105 +
 src/ztp_server/tests/test_slice.py            |  125 +
 src/ztp_server/tests/test_tfs_api.py          |  217 ++
 src/ztp_server/tests/test_yang_acl.py         |  104 +
 49 files changed, 9032 insertions(+)
 create mode 100755 proto/ztp_server.proto
 create mode 100755 src/ztp_server/.gitlab-ci.yml
 create mode 100755 src/ztp_server/Config.py
 create mode 100755 src/ztp_server/Dockerfile
 create mode 100755 src/ztp_server/README.md
 create mode 100755 src/ztp_server/__init__.py
 create mode 100755 src/ztp_server/client/ZtpClient.py
 create mode 100755 src/ztp_server/client/__init__.py
 create mode 100644 src/ztp_server/data/nso_client.proto
 create mode 100644 src/ztp_server/data/provisioning_script_sonic.sh
 create mode 100644 src/ztp_server/data/ztp.json
 create mode 100755 src/ztp_server/requirements.in
 create mode 100755 src/ztp_server/service/ZtpServerService.py
 create mode 100755 src/ztp_server/service/ZtpServerServiceServicerImpl.py
 create mode 100755 src/ztp_server/service/__init__.py
 create mode 100755 src/ztp_server/service/__main__.py
 create mode 100755 src/ztp_server/service/context_subscription/__init__.py
 create mode 100755 src/ztp_server/service/rest_server/RestServer.py
 create mode 100755 src/ztp_server/service/rest_server/__init__.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py
 create mode 100755 src/ztp_server/tests/Constants.py
 create mode 100755 src/ztp_server/tests/MockService_Dependencies.py
 create mode 100755 src/ztp_server/tests/PrepareTestScenario.py
 create mode 100755 src/ztp_server/tests/__init__.py
 create mode 100755 src/ztp_server/tests/data/ietf_acl.json
 create mode 100755 src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json
 create mode 100755 src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json
 create mode 100755 src/ztp_server/tests/data/test-ietf-network.json
 create mode 100755 src/ztp_server/tests/data/tfs_api_dummy.json
 create mode 100755 src/ztp_server/tests/data/topology-7router-emu-dummy.json
 create mode 100755 src/ztp_server/tests/data/topology-7router-emu.json
 create mode 100755 src/ztp_server/tests/data/topology-dummy.json
 create mode 100755 src/ztp_server/tests/data/topology-real.json
 create mode 100755 src/ztp_server/tests/ietf_acl_client.py
 create mode 100755 src/ztp_server/tests/test_etsi_bwm.py
 create mode 100755 src/ztp_server/tests/test_ietf_l2vpn.py
 create mode 100755 src/ztp_server/tests/test_ietf_l3vpn.py
 create mode 100755 src/ztp_server/tests/test_ietf_network.py
 create mode 100755 src/ztp_server/tests/test_slice.py
 create mode 100755 src/ztp_server/tests/test_tfs_api.py
 create mode 100755 src/ztp_server/tests/test_yang_acl.py

diff --git a/proto/ztp_server.proto b/proto/ztp_server.proto
new file mode 100755
index 000000000..37ccc71d3
--- /dev/null
+++ b/proto/ztp_server.proto
@@ -0,0 +1,23 @@
+// 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.
+
+syntax = "proto3";
+package ztpServer;
+
+import "context.proto";
+
+service ZtpServerService {
+  rpc GetProvisioningScript     (context.ProvisioningScriptName         ) returns (context.ProvisioningScript       ) {}
+  rpc GetZtpProvisioning        (context.ZtpFileName                    ) returns (context.ZtpFile       ) {}
+}
diff --git a/src/common/Constants.py b/src/common/Constants.py
index 682007646..660e99f04 100644
--- a/src/common/Constants.py
+++ b/src/common/Constants.py
@@ -42,6 +42,7 @@ class ServiceNameEnum(Enum):
     SERVICE                = 'service'
     SLICE                  = 'slice'
     ZTP                    = 'ztp'
+    ZTP_SERVER             = 'ztp_server'
     POLICY                 = 'policy'
     MONITORING             = 'monitoring'
     DLT                    = 'dlt'
@@ -84,6 +85,7 @@ DEFAULT_SERVICE_GRPC_PORTS = {
     ServiceNameEnum.SERVICE                .value :  3030,
     ServiceNameEnum.SLICE                  .value :  4040,
     ServiceNameEnum.ZTP                    .value :  5050,
+    ServiceNameEnum.ZTP_SERVER             .value :  5051,
     ServiceNameEnum.POLICY                 .value :  6060,
     ServiceNameEnum.MONITORING             .value :  7070,
     ServiceNameEnum.DLT                    .value :  8080,
diff --git a/src/ztp_server/.gitlab-ci.yml b/src/ztp_server/.gitlab-ci.yml
new file mode 100755
index 000000000..71bf223ba
--- /dev/null
+++ b/src/ztp_server/.gitlab-ci.yml
@@ -0,0 +1,120 @@
+# 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.
+
+# Build, tag, and push the Docker image to the GitLab Docker registry
+build nbi:
+  variables:
+    IMAGE_NAME: 'nbi' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+  stage: build
+  before_script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+  script:
+    - docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile .
+    - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+    - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+  after_script:
+    - docker images --filter="dangling=true" --quiet | xargs -r docker rmi
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+    - changes:
+      - src/common/**/*.py
+      - proto/*.proto
+      - src/$IMAGE_NAME/**/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - manifests/${IMAGE_NAME}service.yaml
+      - .gitlab-ci.yml
+
+# Apply unit test to the component
+unit_test nbi:
+  variables:
+    IMAGE_NAME: 'nbi' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+  stage: unit_test
+  needs:
+    - build nbi
+  before_script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+    - >
+      if docker network list | grep teraflowbridge; then
+        echo "teraflowbridge is already created";
+      else
+        docker network create -d bridge teraflowbridge;
+      fi
+    - >
+      if docker container ls | grep $IMAGE_NAME; then
+        docker rm -f $IMAGE_NAME;
+      else
+        echo "$IMAGE_NAME image is not in the system";
+      fi
+  script:
+    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+    - docker run --name $IMAGE_NAME -d -p 9090:9090 -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
+    - sleep 5
+    - docker ps -a
+    - docker logs $IMAGE_NAME
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_tfs_api.py --junitxml=/opt/results/${IMAGE_NAME}_report_tfs_api.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l2vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l2vpn.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_network.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_network.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l3vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l3vpn.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_etsi_bwm.py --junitxml=/opt/results/${IMAGE_NAME}_report_etsi_bwm.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
+  coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
+  after_script:
+    - docker rm -f $IMAGE_NAME
+    - docker network rm teraflowbridge
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+    - changes:
+      - src/common/**/*.py
+      - proto/*.proto
+      - src/$IMAGE_NAME/**/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - src/$IMAGE_NAME/tests/Dockerfile
+      - manifests/${IMAGE_NAME}service.yaml
+      - .gitlab-ci.yml
+  artifacts:
+      when: always
+      reports:
+        junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report_*.xml
+
+## Deployment of the service in Kubernetes Cluster
+#deploy nbi:
+#  variables:
+#    IMAGE_NAME: 'nbi' # name of the microservice
+#    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+#  stage: deploy
+#  needs:
+#    - unit test nbi
+#    # - integ_test execute
+#  script:
+#    - 'sed -i "s/$IMAGE_NAME:.*/$IMAGE_NAME:$IMAGE_TAG/" manifests/${IMAGE_NAME}service.yaml'
+#    - kubectl version
+#    - kubectl get all
+#    - kubectl apply -f "manifests/${IMAGE_NAME}service.yaml"
+#    - kubectl get all
+#  # environment:
+#  #   name: test
+#  #   url: https://example.com
+#  #   kubernetes:
+#  #     namespace: test
+#  rules:
+#    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+#      when: manual    
+#    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+#      when: manual
diff --git a/src/ztp_server/Config.py b/src/ztp_server/Config.py
new file mode 100755
index 000000000..83a350058
--- /dev/null
+++ b/src/ztp_server/Config.py
@@ -0,0 +1,20 @@
+# 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 werkzeug.security import generate_password_hash
+
+# REST-API users
+RESTAPI_USERS = {   # TODO: implement a database of credentials and permissions
+    'admin': generate_password_hash('admin'),
+}
diff --git a/src/ztp_server/Dockerfile b/src/ztp_server/Dockerfile
new file mode 100755
index 000000000..a9be06d37
--- /dev/null
+++ b/src/ztp_server/Dockerfile
@@ -0,0 +1,97 @@
+# 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 python:3.9-slim
+
+# Install dependencies
+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
+
+# Download the gRPC health probe
+RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
+    wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
+    chmod +x /bin/grpc_health_probe
+
+# Get generic Python packages
+RUN python3 -m pip install --upgrade pip
+RUN python3 -m pip install --upgrade setuptools wheel
+RUN python3 -m pip install --upgrade pip-tools
+
+# Get common Python packages
+# Note: this step enables sharing the previous Docker build steps among all the Python components
+WORKDIR /var/teraflow
+COPY common_requirements.in common_requirements.in
+RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in
+RUN python3 -m pip install -r common_requirements.txt
+
+# Add common files into working directory
+WORKDIR /var/teraflow/common
+COPY src/common/. ./
+RUN rm -rf proto
+
+# Create proto sub-folder, copy .proto files, and generate Python code
+RUN mkdir -p /var/teraflow/common/proto
+WORKDIR /var/teraflow/common/proto
+RUN touch __init__.py
+COPY proto/*.proto ./
+RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto
+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 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/
+
+# Start the service
+ENTRYPOINT ["python", "-m", "nbi.service"]
diff --git a/src/ztp_server/README.md b/src/ztp_server/README.md
new file mode 100755
index 000000000..32902a0b3
--- /dev/null
+++ b/src/ztp_server/README.md
@@ -0,0 +1,35 @@
+# 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/__init__.py b/src/ztp_server/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/__init__.py
@@ -0,0 +1,14 @@
+# 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/client/ZtpClient.py b/src/ztp_server/client/ZtpClient.py
new file mode 100755
index 000000000..a790b76e2
--- /dev/null
+++ b/src/ztp_server/client/ZtpClient.py
@@ -0,0 +1,61 @@
+# 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 grpc, logging
+from common.Constants import ServiceNameEnum
+from common.Settings import get_service_host, get_service_port_grpc
+from common.proto.ztpServer_pb2_grpc import ztpServerServiceStub    #TODO
+from common.proto.context_pb2 import (
+    ZtpFileName, ZtpFile, ProvisioningScriptName, ProvisioningScript)
+from common.tools.client.RetryDecorator import retry, delay_exponential
+from common.tools.grpc.Tools import grpc_message_to_json_string
+
+LOGGER = logging.getLogger(__name__)
+MAX_RETRIES = 15
+DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0)
+RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect')
+
+class ZtpClient:
+    def __init__(self, host=None, port=None):
+        if not host: host = get_service_host(ServiceNameEnum.ZTP_SERVER)
+        if not port: port = get_service_port_grpc(ServiceNameEnum.ZTP_SERVER)
+        self.endpoint = '{:s}:{:s}'.format(str(host), str(port))
+        LOGGER.debug('Creating channel to {:s}...'.format(str(self.endpoint)))
+        self.channel = None
+        self.stub = None
+        self.connect()
+        LOGGER.debug('Channel created')
+
+    def connect(self):
+        self.channel = grpc.insecure_channel(self.endpoint)
+        self.stub = ztpServerServiceStub(self.channel) #TODO
+
+    def close(self):
+        if self.channel is not None: self.channel.close()
+        self.channel = None
+        self.stub = None
+
+    @RETRY_DECORATOR
+    def GetProvisioningScript(self, request : ProvisioningScriptName) -> ProvisioningScript:
+        LOGGER.debug('GetProvisioningScript request: {:s}'.format(grpc_message_to_json_string(request)))
+        response = self.stub.GetProvisioningScript(request)
+        LOGGER.debug('GetProvisioningScript result: {:s}'.format(grpc_message_to_json_string(response)))
+        return response
+
+    @RETRY_DECORATOR
+    def GetZtpProvisioning(self, request : ZtpFileName) -> ZtpFile:
+        LOGGER.debug('GetZtpProvisioning request: {:s}'.format(grpc_message_to_json_string(request)))
+        response = self.stub.GetZtpProvisioning(request)
+        LOGGER.debug('GetZtpProvisioning result: {:s}'.format(grpc_message_to_json_string(response)))
+        return response
diff --git a/src/ztp_server/client/__init__.py b/src/ztp_server/client/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/client/__init__.py
@@ -0,0 +1,14 @@
+# 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/data/nso_client.proto b/src/ztp_server/data/nso_client.proto
new file mode 100644
index 000000000..d5983c62c
--- /dev/null
+++ b/src/ztp_server/data/nso_client.proto
@@ -0,0 +1,60 @@
+// 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/data/provisioning_script_sonic.sh b/src/ztp_server/data/provisioning_script_sonic.sh
new file mode 100644
index 000000000..c4dd20438
--- /dev/null
+++ b/src/ztp_server/data/provisioning_script_sonic.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+PRODUCT_NAME=$(show version | grep 'Platform' | awk '{print $2}')
+SERIAL_NUMBER=$(show version | grep 'Serial Number' | awk '{print $3}')
+BASE_MAC_ADDRESS=$(show platform syseeprom | grep 'Base MAC Address' | awk '{print $6}')
+SONIC_VERSION=$(show version | grep 'SONiC Software Version' | awk '{print $4}')
+
+# URL of the config_db.json file
+CONFIG_DB_URL="http://10.1.1.119:9001/config/config_db.json"
+
+# Directory where the file will be saved
+DEST_DIR="/etc/sonic"
+DEST_FILE="$DEST_DIR/config_db.json"
+
+# Download the config_db.json file
+curl -o $DEST_FILE -H "User-Agent: SONiC-ZTP/0.1" \
+                     -H "PRODUCT-NAME: $PRODUCT_NAME" \
+                     -H "SERIAL-NUMBER: $SERIAL_NUMBER" \
+                     -H "BASE-MAC-ADDRESS: $BASE_MAC_ADDRESS" \
+                     -H "SONiC-VERSION: $SONIC_VERSION" \
+                     $CONFIG_DB_URL
+if [ $? -ne 0 ]; then
+    logger "Error: Failed to download the file from $CONFIG_DB_URL"
+    exit 1
+fi
+
+# Reload the configuration database
+sudo config reload -y
+
+# Check if the reload was successful
+if [ $? -eq 0 ]; then
+    logger "The configuration database reloaded successfully."
+else
+    logger "Error: Failed to reload the configuration database."
+    exit 1
+fi
+
+logger "Plugin executed successfully."
diff --git a/src/ztp_server/data/ztp.json b/src/ztp_server/data/ztp.json
new file mode 100644
index 000000000..6e606a5e8
--- /dev/null
+++ b/src/ztp_server/data/ztp.json
@@ -0,0 +1,11 @@
+{
+    "ztp": {
+      "01-provisioning-script": {
+        "plugin": {
+          "url": "http://localhost:9001/provisioning/provisioning_script_sonic.sh"
+        },
+        "reboot-on-success": true
+      }
+    }
+  }
+  
\ No newline at end of file
diff --git a/src/ztp_server/requirements.in b/src/ztp_server/requirements.in
new file mode 100755
index 000000000..0d7804836
--- /dev/null
+++ b/src/ztp_server/requirements.in
@@ -0,0 +1,28 @@
+# 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.
+
+deepdiff==6.7.*
+deepmerge==1.1.*
+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
+websockets==12.0
diff --git a/src/ztp_server/service/ZtpServerService.py b/src/ztp_server/service/ZtpServerService.py
new file mode 100755
index 000000000..2b4da4f93
--- /dev/null
+++ b/src/ztp_server/service/ZtpServerService.py
@@ -0,0 +1,28 @@
+# 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 common.Constants import ServiceNameEnum
+from common.Settings import get_service_port_grpc
+from common.proto.ztpServer_pb2_grpc import add_Ztp_ServerServiceServicer_to_server 
+from common.tools.service.GenericGrpcService import GenericGrpcService
+from ztp_server.service.ZtpServerServiceServicerImpl import ZtpServerServiceServicerImpl
+
+class ZtpServerService(GenericGrpcService):
+    def __init__(self, cls_name: str = __name__) -> None:
+        port = get_service_port_grpc(ServiceNameEnum.ZTP_SERVER)
+        super().__init__(port, cls_name=cls_name)
+        self.ztp_servicer = ZtpServerServiceServicerImpl()
+
+    def install_servicers(self):
+        add_Ztp_ServerServiceServicer_to_server(self.ztp_servicer, self.server)
diff --git a/src/ztp_server/service/ZtpServerServiceServicerImpl.py b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
new file mode 100755
index 000000000..009cda922
--- /dev/null
+++ b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
@@ -0,0 +1,40 @@
+# 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 grpc, logging
+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.ztpServer_pb2_grpc import ztpServerServiceServicer
+
+LOGGER = logging.getLogger(__name__)
+
+METRICS_POOL = MetricsPool('ZTP_SERVER', 'RPC')
+
+class ZtpServerServiceServicerImpl(ztpServerServiceServicer):
+    def __init__(self):
+        LOGGER.info('Creating Servicer...')
+        LOGGER.info('Servicer Created')
+
+    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
+    def GetZtpProvisioning(self, request : ProvisioningScriptName, context : grpc.ServicerContext) -> ProvisioningScript:
+        LOGGER.warning('NOT IMPLEMENTED')
+        return ProvisioningScript()
+    
+    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
+    def GetZtpProvisioning(self, request : ZtpFileName, context : grpc.ServicerContext) -> ZtpFile:
+        LOGGER.warning('NOT IMPLEMENTED')
+        return ZtpFile()
+    
+
diff --git a/src/ztp_server/service/__init__.py b/src/ztp_server/service/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/service/__init__.py
@@ -0,0 +1,14 @@
+# 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/service/__main__.py b/src/ztp_server/service/__main__.py
new file mode 100755
index 000000000..25e8605d3
--- /dev/null
+++ b/src/ztp_server/service/__main__.py
@@ -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.
+
+import logging, signal, sys, threading
+from prometheus_client import start_http_server
+from common.Constants import ServiceNameEnum
+from common.Settings import (
+    ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC,
+    get_env_var_name, get_log_level, get_metrics_port,
+)
+from .ZtpServerService import ZtpServerService
+from .rest_server.RestServer import RestServer
+
+from .context_subscription import register_context_subscription
+
+terminate = threading.Event()
+LOGGER = None
+
+def signal_handler(signal, frame): # pylint: disable=redefined-outer-name, unused-argument
+    LOGGER.warning('Terminate signal received')
+    terminate.set()
+
+def main():
+    global LOGGER # pylint: disable=global-statement
+
+    log_level = get_log_level()
+    logging.basicConfig(level=log_level)
+    LOGGER = logging.getLogger(__name__)
+
+    signal.signal(signal.SIGINT,  signal_handler)
+    signal.signal(signal.SIGTERM, signal_handler)
+
+    LOGGER.info('Starting...')
+
+    # Start metrics server
+    metrics_port = get_metrics_port()
+    start_http_server(metrics_port)
+
+    # Starting ZtpServer service
+    grpc_service = ZtpServerService()
+    grpc_service.start()
+
+    rest_server = RestServer()
+    register_tfs_api(rest_server)
+    rest_server.start()
+
+    LOGGER.debug('Configured Resources:')
+    for resource in rest_server.api.resources:
+        LOGGER.debug(' - {:s}'.format(str(resource)))
+
+    LOGGER.debug('Configured Rules:')
+    for rule in rest_server.app.url_map.iter_rules():
+        LOGGER.debug(' - {:s}'.format(str(rule)))
+
+    # Wait for Ctrl+C or termination signal
+    while not terminate.wait(timeout=1.0): pass
+
+    LOGGER.info('Terminating...')
+    grpc_service.stop()
+    rest_server.shutdown()
+    rest_server.join()
+
+    LOGGER.info('Bye')
+    return 0
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/src/ztp_server/service/context_subscription/__init__.py b/src/ztp_server/service/context_subscription/__init__.py
new file mode 100755
index 000000000..758f3d82c
--- /dev/null
+++ b/src/ztp_server/service/context_subscription/__init__.py
@@ -0,0 +1,64 @@
+# 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/RestServer.py b/src/ztp_server/service/rest_server/RestServer.py
new file mode 100755
index 000000000..0c4e45a8c
--- /dev/null
+++ b/src/ztp_server/service/rest_server/RestServer.py
@@ -0,0 +1,23 @@
+# 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 common.Constants import ServiceNameEnum
+from common.Settings import get_service_baseurl_http, get_service_port_http
+from common.tools.service.GenericRestServer import GenericRestServer
+
+class RestServer(GenericRestServer):
+    def __init__(self, cls_name: str = __name__) -> None:
+        bind_port = get_service_port_http(ServiceNameEnum.ZTP_SERVER)
+        base_url = get_service_baseurl_http(ServiceNameEnum.ZTP_SERVER)
+        super().__init__(bind_port, base_url, cls_name=cls_name)
diff --git a/src/ztp_server/service/rest_server/__init__.py b/src/ztp_server/service/rest_server/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/service/rest_server/__init__.py
@@ -0,0 +1,14 @@
+# 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/service/rest_server/ztpServer_plugins/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py
@@ -0,0 +1,14 @@
+# 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/service/rest_server/ztpServer_plugins/tfs_api/Resources.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
new file mode 100755
index 000000000..c1b8c3733
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
@@ -0,0 +1,47 @@
+# 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
+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 .Tools import (
+    format_grpc_to_json, 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):
+    def get(self, config_db : str):
+        return returnConfigFile(config_db)  #TODO define how to return configFile.json
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
new file mode 100755
index 000000000..6665dd4ce
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py
@@ -0,0 +1,41 @@
+# 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 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))
+
+def returnConfigFile(config_db):
+    path = config_db
+
+    with open(path, 'r', encoding='utf-8') as configFile:
+        content = configFile.read()
+
+    return content
\ No newline at end of file
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
new file mode 100755
index 000000000..7062772b4
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
@@ -0,0 +1,30 @@
+# 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 ztp_server.service.rest_server.RestServer import RestServer
+from .Resources import (
+    config
+)
+
+URL_PREFIX = '/provisioning'
+
+# Use 'path' type since some identifiers might contain char '/' and Flask is unable to recognize them in 'string' type.
+RESOURCES = [
+    # (endpoint_name, resource_class, resource_url)
+    ('api.config',    config,    '/config/<path:config_db>'),
+]
+
+def register_tfs_api(rest_server : RestServer):
+    for endpoint_name, resource_class, resource_url in RESOURCES:
+        rest_server.add_resource(resource_class, URL_PREFIX + resource_url, endpoint=endpoint_name)
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py
new file mode 100755
index 000000000..aab239f36
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py
@@ -0,0 +1,25 @@
+# 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 flask_httpauth import HTTPBasicAuth
+from werkzeug.security import check_password_hash
+from ztp_server.Config import RESTAPI_USERS
+
+HTTP_AUTH = HTTPBasicAuth()
+
+@HTTP_AUTH.verify_password
+def verify_password(username, password):
+    if username not in RESTAPI_USERS: return None
+    if not check_password_hash(RESTAPI_USERS[username], password): return None
+    return username
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
new file mode 100755
index 000000000..56ea475c7
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
@@ -0,0 +1,20 @@
+# 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.
+
+HTTP_OK             = 200
+HTTP_CREATED        = 201
+HTTP_NOCONTENT      = 204
+HTTP_BADREQUEST     = 400
+HTTP_SERVERERROR    = 500
+HTTP_GATEWAYTIMEOUT = 504
\ 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
new file mode 100755
index 000000000..66b607c8b
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py
@@ -0,0 +1,35 @@
+# 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/service/rest_server/ztpServer_plugins/tools/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py
@@ -0,0 +1,14 @@
+# 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/Constants.py b/src/ztp_server/tests/Constants.py
new file mode 100755
index 000000000..886ddcafa
--- /dev/null
+++ b/src/ztp_server/tests/Constants.py
@@ -0,0 +1,85 @@
+# 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
new file mode 100755
index 000000000..322441367
--- /dev/null
+++ b/src/ztp_server/tests/MockService_Dependencies.py
@@ -0,0 +1,58 @@
+# 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
new file mode 100755
index 000000000..a574f086b
--- /dev/null
+++ b/src/ztp_server/tests/PrepareTestScenario.py
@@ -0,0 +1,169 @@
+# 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
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/tests/__init__.py
@@ -0,0 +1,14 @@
+# 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
new file mode 100755
index 000000000..072df6d01
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_acl.json
@@ -0,0 +1,56 @@
+{
+    "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
new file mode 100755
index 000000000..bfeb93fb7
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json
@@ -0,0 +1,231 @@
+{
+  "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
new file mode 100755
index 000000000..2cc512e59
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json
@@ -0,0 +1,231 @@
+{
+  "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
new file mode 100755
index 000000000..7643ef53a
--- /dev/null
+++ b/src/ztp_server/tests/data/test-ietf-network.json
@@ -0,0 +1,1962 @@
+{
+    "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
new file mode 100755
index 000000000..d8f513757
--- /dev/null
+++ b/src/ztp_server/tests/data/tfs_api_dummy.json
@@ -0,0 +1,442 @@
+{
+    "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
new file mode 100755
index 000000000..3bb622626
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-7router-emu-dummy.json
@@ -0,0 +1,157 @@
+{
+    "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
new file mode 100755
index 000000000..4174f4fb4
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-7router-emu.json
@@ -0,0 +1,156 @@
+{
+    "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
new file mode 100755
index 000000000..f066051ee
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-dummy.json
@@ -0,0 +1,3134 @@
+{
+    "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
new file mode 100755
index 000000000..bb158d920
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-real.json
@@ -0,0 +1,259 @@
+{
+    "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
new file mode 100755
index 000000000..20887f1a8
--- /dev/null
+++ b/src/ztp_server/tests/ietf_acl_client.py
@@ -0,0 +1,89 @@
+# 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
new file mode 100755
index 000000000..9400de00f
--- /dev/null
+++ b/src/ztp_server/tests/test_etsi_bwm.py
@@ -0,0 +1,240 @@
+# 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
new file mode 100755
index 000000000..7bed8ff5d
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_l2vpn.py
@@ -0,0 +1,75 @@
+# 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
new file mode 100755
index 000000000..0f214661f
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_l3vpn.py
@@ -0,0 +1,113 @@
+# 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
new file mode 100755
index 000000000..68337d0a8
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_network.py
@@ -0,0 +1,105 @@
+# 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
new file mode 100755
index 000000000..fe112e6fc
--- /dev/null
+++ b/src/ztp_server/tests/test_slice.py
@@ -0,0 +1,125 @@
+# 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
new file mode 100755
index 000000000..eab2f8d9b
--- /dev/null
+++ b/src/ztp_server/tests/test_tfs_api.py
@@ -0,0 +1,217 @@
+# 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
new file mode 100755
index 000000000..2f45c50bc
--- /dev/null
+++ b/src/ztp_server/tests/test_yang_acl.py
@@ -0,0 +1,104 @@
+# 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()
-- 
GitLab


From 11b4748c60ca1dd0526ab31857ac6d4b05e9d0d6 Mon Sep 17 00:00:00 2001
From: jimenezquesa <manuel.jimenez@eviden.com>
Date: Thu, 19 Dec 2024 11:57:22 +0100
Subject: [PATCH 2/8] Second Draft

---
 proto/ztp_server.proto                        | 24 +++++++++++++--
 src/ztp_server/client/ZtpClient.py            |  4 +--
 src/ztp_server/service/ZtpServerService.py    |  2 +-
 .../service/ZtpServerServiceServicerImpl.py   | 29 ++++++++++++++-----
 src/ztp_server/service/__main__.py            |  1 +
 5 files changed, 46 insertions(+), 14 deletions(-)

diff --git a/proto/ztp_server.proto b/proto/ztp_server.proto
index 37ccc71d3..6c575df11 100755
--- a/proto/ztp_server.proto
+++ b/proto/ztp_server.proto
@@ -15,9 +15,27 @@
 syntax = "proto3";
 package ztpServer;
 
-import "context.proto";
+//import "context.proto";
 
 service ZtpServerService {
-  rpc GetProvisioningScript     (context.ProvisioningScriptName         ) returns (context.ProvisioningScript       ) {}
-  rpc GetZtpProvisioning        (context.ZtpFileName                    ) returns (context.ZtpFile       ) {}
+  rpc GetProvisioningScript     (ProvisioningScriptName         ) returns (ProvisioningScript       ) {}
+  rpc GetZtpProvisioning        (ZtpFileName                    ) returns (ZtpFile       ) {}
+}
+
+
+// Define the request message for both methods
+message ProvisioningScriptName {
+  string input = 1;
+}
+
+message ZtpFileName {
+  string input = 1;
+}
+
+message ProvisioningScript {
+  string script = 1;
+}
+
+message ZtpFile {
+  string json = 1;
 }
diff --git a/src/ztp_server/client/ZtpClient.py b/src/ztp_server/client/ZtpClient.py
index a790b76e2..5e5737857 100755
--- a/src/ztp_server/client/ZtpClient.py
+++ b/src/ztp_server/client/ZtpClient.py
@@ -15,7 +15,7 @@
 import grpc, logging
 from common.Constants import ServiceNameEnum
 from common.Settings import get_service_host, get_service_port_grpc
-from common.proto.ztpServer_pb2_grpc import ztpServerServiceStub    #TODO
+from common.proto.ztp_server_pb2_grpc import ztpServerServiceStub
 from common.proto.context_pb2 import (
     ZtpFileName, ZtpFile, ProvisioningScriptName, ProvisioningScript)
 from common.tools.client.RetryDecorator import retry, delay_exponential
@@ -39,7 +39,7 @@ class ZtpClient:
 
     def connect(self):
         self.channel = grpc.insecure_channel(self.endpoint)
-        self.stub = ztpServerServiceStub(self.channel) #TODO
+        self.stub = ztpServerServiceStub(self.channel)
 
     def close(self):
         if self.channel is not None: self.channel.close()
diff --git a/src/ztp_server/service/ZtpServerService.py b/src/ztp_server/service/ZtpServerService.py
index 2b4da4f93..aba4aee94 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.ztpServer_pb2_grpc import add_Ztp_ServerServiceServicer_to_server 
+from common.proto.ztp_server_pb2_grpc import add_Ztp_ServerServiceServicer_to_server 
 from common.tools.service.GenericGrpcService import GenericGrpcService
 from ztp_server.service.ZtpServerServiceServicerImpl import ZtpServerServiceServicerImpl
 
diff --git a/src/ztp_server/service/ZtpServerServiceServicerImpl.py b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
index 009cda922..015f958f4 100755
--- a/src/ztp_server/service/ZtpServerServiceServicerImpl.py
+++ b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
@@ -12,11 +12,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import grpc, logging
+import grpc, logging, json
 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.ztpServer_pb2_grpc import ztpServerServiceServicer
+from common.proto.ztp_server_pb2_grpc import ztpServerServiceServicer
 
 LOGGER = logging.getLogger(__name__)
 
@@ -29,12 +29,25 @@ class ZtpServerServiceServicerImpl(ztpServerServiceServicer):
 
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
     def GetZtpProvisioning(self, request : ProvisioningScriptName, context : grpc.ServicerContext) -> ProvisioningScript:
-        LOGGER.warning('NOT IMPLEMENTED')
-        return ProvisioningScript()
+        try:
+            filePath = '../data/' + ProvisioningScriptName
+            with open(filePath, 'r') as provisioning_file:
+                provisioning_content = provisioning_file.read()
+            return ztpServerServiceServicer.ProvisioningScript(script=provisioning_content)
+        except FileNotFoundError:
+            context.set_code(grpc.StatusCode.NOT_FOUND)
+            context.set_details('File not found')
+            return ztpServerServiceServicer.ProvisioningScript()
+
     
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
     def GetZtpProvisioning(self, request : ZtpFileName, context : grpc.ServicerContext) -> ZtpFile:
-        LOGGER.warning('NOT IMPLEMENTED')
-        return ZtpFile()
-    
-
+        try:
+            filePath = '../data/' + ZtpFileName
+            with open(filePath, 'r') as json_file:
+                json_content = json_file.read()
+            return ztpServerServiceServicer.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
diff --git a/src/ztp_server/service/__main__.py b/src/ztp_server/service/__main__.py
index 25e8605d3..55bd5f187 100755
--- a/src/ztp_server/service/__main__.py
+++ b/src/ztp_server/service/__main__.py
@@ -21,6 +21,7 @@ from common.Settings import (
 )
 from .ZtpServerService import ZtpServerService
 from .rest_server.RestServer import RestServer
+from .rest_server.ztpServer_plugins.tfs_api import register_tfs_api
 
 from .context_subscription import register_context_subscription
 
-- 
GitLab


From 21a72d9806f82395b19d0cee6dce3ae81058fc2c Mon Sep 17 00:00:00 2001
From: jimenezquesa <manuel.jimenez@eviden.com>
Date: Mon, 27 Jan 2025 14:57:40 +0000
Subject: [PATCH 3/8] Add HTTP Server and gRPC Server Add manifest.yaml Add
 DockerFile

Solve some typo on .proto file
---
 manifests/ztp_server.yaml                     |   78 +
 proto/ztp_server.proto                        |    4 +-
 src/common/Constants.py                       |    5 +-
 src/ztp_server/Dockerfile                     |   43 +-
 src/ztp_server/README.md                      |   35 -
 src/ztp_server/client/ZtpClient.py            |    7 +-
 src/ztp_server/data/nso_client.proto          |   60 -
 src/ztp_server/requirements.in                |    3 -
 src/ztp_server/service/ZtpServerService.py    |    4 +-
 .../service/ZtpServerServiceServicerImpl.py   |   26 +-
 .../service/context_subscription/__init__.py  |   64 -
 .../ztpServer_plugins/tfs_api/Resources.py    |   22 +-
 .../ztpServer_plugins/tfs_api/Tools.py        |   30 +-
 .../ztpServer_plugins/tools/Validator.py      |   35 -
 src/ztp_server/tests/Constants.py             |   85 -
 .../tests/MockService_Dependencies.py         |   58 -
 src/ztp_server/tests/PrepareTestScenario.py   |  169 -
 src/ztp_server/tests/__init__.py              |   14 -
 src/ztp_server/tests/data/ietf_acl.json       |   56 -
 .../tests/data/ietf_l3vpn_req_svc1.json       |  231 --
 .../tests/data/ietf_l3vpn_req_svc2.json       |  231 --
 .../tests/data/test-ietf-network.json         | 1962 -----------
 src/ztp_server/tests/data/tfs_api_dummy.json  |  442 ---
 .../data/topology-7router-emu-dummy.json      |  157 -
 .../tests/data/topology-7router-emu.json      |  156 -
 src/ztp_server/tests/data/topology-dummy.json | 3134 -----------------
 src/ztp_server/tests/data/topology-real.json  |  259 --
 src/ztp_server/tests/ietf_acl_client.py       |   89 -
 src/ztp_server/tests/test_etsi_bwm.py         |  240 --
 src/ztp_server/tests/test_ietf_l2vpn.py       |   75 -
 src/ztp_server/tests/test_ietf_l3vpn.py       |  113 -
 src/ztp_server/tests/test_ietf_network.py     |  105 -
 src/ztp_server/tests/test_slice.py            |  125 -
 src/ztp_server/tests/test_tfs_api.py          |  217 --
 src/ztp_server/tests/test_yang_acl.py         |  104 -
 35 files changed, 123 insertions(+), 8315 deletions(-)
 create mode 100644 manifests/ztp_server.yaml
 delete mode 100755 src/ztp_server/README.md
 delete mode 100644 src/ztp_server/data/nso_client.proto
 delete mode 100755 src/ztp_server/service/context_subscription/__init__.py
 delete mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py
 delete mode 100755 src/ztp_server/tests/Constants.py
 delete mode 100755 src/ztp_server/tests/MockService_Dependencies.py
 delete mode 100755 src/ztp_server/tests/PrepareTestScenario.py
 delete mode 100755 src/ztp_server/tests/__init__.py
 delete mode 100755 src/ztp_server/tests/data/ietf_acl.json
 delete mode 100755 src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json
 delete mode 100755 src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json
 delete mode 100755 src/ztp_server/tests/data/test-ietf-network.json
 delete mode 100755 src/ztp_server/tests/data/tfs_api_dummy.json
 delete mode 100755 src/ztp_server/tests/data/topology-7router-emu-dummy.json
 delete mode 100755 src/ztp_server/tests/data/topology-7router-emu.json
 delete mode 100755 src/ztp_server/tests/data/topology-dummy.json
 delete mode 100755 src/ztp_server/tests/data/topology-real.json
 delete mode 100755 src/ztp_server/tests/ietf_acl_client.py
 delete mode 100755 src/ztp_server/tests/test_etsi_bwm.py
 delete mode 100755 src/ztp_server/tests/test_ietf_l2vpn.py
 delete mode 100755 src/ztp_server/tests/test_ietf_l3vpn.py
 delete mode 100755 src/ztp_server/tests/test_ietf_network.py
 delete mode 100755 src/ztp_server/tests/test_slice.py
 delete mode 100755 src/ztp_server/tests/test_tfs_api.py
 delete mode 100755 src/ztp_server/tests/test_yang_acl.py

diff --git a/manifests/ztp_server.yaml b/manifests/ztp_server.yaml
new file mode 100644
index 000000000..6ed469174
--- /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 6c575df11..807751084 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 660e99f04..50b792c65 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 a9be06d37..bbcc282bd 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 32902a0b3..000000000
--- 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 5e5737857..9e14bd694 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 d5983c62c..000000000
--- 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 0d7804836..ba715494d 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 aba4aee94..c099cf7f6 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 015f958f4..410db6cb3 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 758f3d82c..000000000
--- 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 c1b8c3733..43b7b79b6 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 6665dd4ce..7d05816ee 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 66b607c8b..000000000
--- 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 886ddcafa..000000000
--- 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 322441367..000000000
--- 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 a574f086b..000000000
--- 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 53d5157f7..000000000
--- 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 072df6d01..000000000
--- 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 bfeb93fb7..000000000
--- 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 2cc512e59..000000000
--- 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 7643ef53a..000000000
--- 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 d8f513757..000000000
--- 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 3bb622626..000000000
--- 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 4174f4fb4..000000000
--- 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 f066051ee..000000000
--- 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 bb158d920..000000000
--- 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 20887f1a8..000000000
--- 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 9400de00f..000000000
--- 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 7bed8ff5d..000000000
--- 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 0f214661f..000000000
--- 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 68337d0a8..000000000
--- 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 fe112e6fc..000000000
--- 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 eab2f8d9b..000000000
--- 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 2f45c50bc..000000000
--- 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()
-- 
GitLab


From 5a155f4bc15485cb575df81c555a7a22c525b716 Mon Sep 17 00:00:00 2001
From: jimenezquesa <manuel.jimenez@eviden.com>
Date: Wed, 27 Nov 2024 16:21:42 +0100
Subject: [PATCH 4/8] First draft

---
 proto/ztp_server.proto                        |   23 +
 src/common/Constants.py                       |    2 +
 src/ztp_server/.gitlab-ci.yml                 |  120 +
 src/ztp_server/Config.py                      |   20 +
 src/ztp_server/Dockerfile                     |   97 +
 src/ztp_server/README.md                      |   35 +
 src/ztp_server/__init__.py                    |   14 +
 src/ztp_server/client/ZtpClient.py            |   61 +
 src/ztp_server/client/__init__.py             |   14 +
 src/ztp_server/data/nso_client.proto          |   60 +
 .../data/provisioning_script_sonic.sh         |   38 +
 src/ztp_server/data/ztp.json                  |   11 +
 src/ztp_server/requirements.in                |   28 +
 src/ztp_server/service/ZtpServerService.py    |   28 +
 .../service/ZtpServerServiceServicerImpl.py   |   40 +
 src/ztp_server/service/__init__.py            |   14 +
 src/ztp_server/service/__main__.py            |   78 +
 .../service/context_subscription/__init__.py  |   64 +
 .../service/rest_server/RestServer.py         |   23 +
 .../service/rest_server/__init__.py           |   14 +
 .../rest_server/ztpServer_plugins/__init__.py |   14 +
 .../ztpServer_plugins/tfs_api/Resources.py    |   47 +
 .../ztpServer_plugins/tfs_api/Tools.py        |   41 +
 .../ztpServer_plugins/tfs_api/__init__.py     |   30 +
 .../ztpServer_plugins/tools/Authentication.py |   25 +
 .../tools/HttpStatusCodes.py                  |   20 +
 .../ztpServer_plugins/tools/Validator.py      |   35 +
 .../ztpServer_plugins/tools/__init__.py       |   14 +
 src/ztp_server/tests/Constants.py             |   85 +
 .../tests/MockService_Dependencies.py         |   58 +
 src/ztp_server/tests/PrepareTestScenario.py   |  169 +
 src/ztp_server/tests/__init__.py              |   14 +
 src/ztp_server/tests/data/ietf_acl.json       |   56 +
 .../tests/data/ietf_l3vpn_req_svc1.json       |  231 ++
 .../tests/data/ietf_l3vpn_req_svc2.json       |  231 ++
 .../tests/data/test-ietf-network.json         | 1962 +++++++++++
 src/ztp_server/tests/data/tfs_api_dummy.json  |  442 +++
 .../data/topology-7router-emu-dummy.json      |  157 +
 .../tests/data/topology-7router-emu.json      |  156 +
 src/ztp_server/tests/data/topology-dummy.json | 3134 +++++++++++++++++
 src/ztp_server/tests/data/topology-real.json  |  259 ++
 src/ztp_server/tests/ietf_acl_client.py       |   89 +
 src/ztp_server/tests/test_etsi_bwm.py         |  240 ++
 src/ztp_server/tests/test_ietf_l2vpn.py       |   75 +
 src/ztp_server/tests/test_ietf_l3vpn.py       |  113 +
 src/ztp_server/tests/test_ietf_network.py     |  105 +
 src/ztp_server/tests/test_slice.py            |  125 +
 src/ztp_server/tests/test_tfs_api.py          |  217 ++
 src/ztp_server/tests/test_yang_acl.py         |  104 +
 49 files changed, 9032 insertions(+)
 create mode 100755 proto/ztp_server.proto
 create mode 100755 src/ztp_server/.gitlab-ci.yml
 create mode 100755 src/ztp_server/Config.py
 create mode 100755 src/ztp_server/Dockerfile
 create mode 100755 src/ztp_server/README.md
 create mode 100755 src/ztp_server/__init__.py
 create mode 100755 src/ztp_server/client/ZtpClient.py
 create mode 100755 src/ztp_server/client/__init__.py
 create mode 100644 src/ztp_server/data/nso_client.proto
 create mode 100644 src/ztp_server/data/provisioning_script_sonic.sh
 create mode 100644 src/ztp_server/data/ztp.json
 create mode 100755 src/ztp_server/requirements.in
 create mode 100755 src/ztp_server/service/ZtpServerService.py
 create mode 100755 src/ztp_server/service/ZtpServerServiceServicerImpl.py
 create mode 100755 src/ztp_server/service/__init__.py
 create mode 100755 src/ztp_server/service/__main__.py
 create mode 100755 src/ztp_server/service/context_subscription/__init__.py
 create mode 100755 src/ztp_server/service/rest_server/RestServer.py
 create mode 100755 src/ztp_server/service/rest_server/__init__.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py
 create mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py
 create mode 100755 src/ztp_server/tests/Constants.py
 create mode 100755 src/ztp_server/tests/MockService_Dependencies.py
 create mode 100755 src/ztp_server/tests/PrepareTestScenario.py
 create mode 100755 src/ztp_server/tests/__init__.py
 create mode 100755 src/ztp_server/tests/data/ietf_acl.json
 create mode 100755 src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json
 create mode 100755 src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json
 create mode 100755 src/ztp_server/tests/data/test-ietf-network.json
 create mode 100755 src/ztp_server/tests/data/tfs_api_dummy.json
 create mode 100755 src/ztp_server/tests/data/topology-7router-emu-dummy.json
 create mode 100755 src/ztp_server/tests/data/topology-7router-emu.json
 create mode 100755 src/ztp_server/tests/data/topology-dummy.json
 create mode 100755 src/ztp_server/tests/data/topology-real.json
 create mode 100755 src/ztp_server/tests/ietf_acl_client.py
 create mode 100755 src/ztp_server/tests/test_etsi_bwm.py
 create mode 100755 src/ztp_server/tests/test_ietf_l2vpn.py
 create mode 100755 src/ztp_server/tests/test_ietf_l3vpn.py
 create mode 100755 src/ztp_server/tests/test_ietf_network.py
 create mode 100755 src/ztp_server/tests/test_slice.py
 create mode 100755 src/ztp_server/tests/test_tfs_api.py
 create mode 100755 src/ztp_server/tests/test_yang_acl.py

diff --git a/proto/ztp_server.proto b/proto/ztp_server.proto
new file mode 100755
index 000000000..37ccc71d3
--- /dev/null
+++ b/proto/ztp_server.proto
@@ -0,0 +1,23 @@
+// 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.
+
+syntax = "proto3";
+package ztpServer;
+
+import "context.proto";
+
+service ZtpServerService {
+  rpc GetProvisioningScript     (context.ProvisioningScriptName         ) returns (context.ProvisioningScript       ) {}
+  rpc GetZtpProvisioning        (context.ZtpFileName                    ) returns (context.ZtpFile       ) {}
+}
diff --git a/src/common/Constants.py b/src/common/Constants.py
index 682007646..660e99f04 100644
--- a/src/common/Constants.py
+++ b/src/common/Constants.py
@@ -42,6 +42,7 @@ class ServiceNameEnum(Enum):
     SERVICE                = 'service'
     SLICE                  = 'slice'
     ZTP                    = 'ztp'
+    ZTP_SERVER             = 'ztp_server'
     POLICY                 = 'policy'
     MONITORING             = 'monitoring'
     DLT                    = 'dlt'
@@ -84,6 +85,7 @@ DEFAULT_SERVICE_GRPC_PORTS = {
     ServiceNameEnum.SERVICE                .value :  3030,
     ServiceNameEnum.SLICE                  .value :  4040,
     ServiceNameEnum.ZTP                    .value :  5050,
+    ServiceNameEnum.ZTP_SERVER             .value :  5051,
     ServiceNameEnum.POLICY                 .value :  6060,
     ServiceNameEnum.MONITORING             .value :  7070,
     ServiceNameEnum.DLT                    .value :  8080,
diff --git a/src/ztp_server/.gitlab-ci.yml b/src/ztp_server/.gitlab-ci.yml
new file mode 100755
index 000000000..71bf223ba
--- /dev/null
+++ b/src/ztp_server/.gitlab-ci.yml
@@ -0,0 +1,120 @@
+# 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.
+
+# Build, tag, and push the Docker image to the GitLab Docker registry
+build nbi:
+  variables:
+    IMAGE_NAME: 'nbi' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+  stage: build
+  before_script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+  script:
+    - docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile .
+    - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+    - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+  after_script:
+    - docker images --filter="dangling=true" --quiet | xargs -r docker rmi
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+    - changes:
+      - src/common/**/*.py
+      - proto/*.proto
+      - src/$IMAGE_NAME/**/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - manifests/${IMAGE_NAME}service.yaml
+      - .gitlab-ci.yml
+
+# Apply unit test to the component
+unit_test nbi:
+  variables:
+    IMAGE_NAME: 'nbi' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+  stage: unit_test
+  needs:
+    - build nbi
+  before_script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+    - >
+      if docker network list | grep teraflowbridge; then
+        echo "teraflowbridge is already created";
+      else
+        docker network create -d bridge teraflowbridge;
+      fi
+    - >
+      if docker container ls | grep $IMAGE_NAME; then
+        docker rm -f $IMAGE_NAME;
+      else
+        echo "$IMAGE_NAME image is not in the system";
+      fi
+  script:
+    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+    - docker run --name $IMAGE_NAME -d -p 9090:9090 -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
+    - sleep 5
+    - docker ps -a
+    - docker logs $IMAGE_NAME
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_tfs_api.py --junitxml=/opt/results/${IMAGE_NAME}_report_tfs_api.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l2vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l2vpn.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_network.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_network.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l3vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l3vpn.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_etsi_bwm.py --junitxml=/opt/results/${IMAGE_NAME}_report_etsi_bwm.xml"
+    - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
+  coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
+  after_script:
+    - docker rm -f $IMAGE_NAME
+    - docker network rm teraflowbridge
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+    - changes:
+      - src/common/**/*.py
+      - proto/*.proto
+      - src/$IMAGE_NAME/**/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - src/$IMAGE_NAME/tests/Dockerfile
+      - manifests/${IMAGE_NAME}service.yaml
+      - .gitlab-ci.yml
+  artifacts:
+      when: always
+      reports:
+        junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report_*.xml
+
+## Deployment of the service in Kubernetes Cluster
+#deploy nbi:
+#  variables:
+#    IMAGE_NAME: 'nbi' # name of the microservice
+#    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+#  stage: deploy
+#  needs:
+#    - unit test nbi
+#    # - integ_test execute
+#  script:
+#    - 'sed -i "s/$IMAGE_NAME:.*/$IMAGE_NAME:$IMAGE_TAG/" manifests/${IMAGE_NAME}service.yaml'
+#    - kubectl version
+#    - kubectl get all
+#    - kubectl apply -f "manifests/${IMAGE_NAME}service.yaml"
+#    - kubectl get all
+#  # environment:
+#  #   name: test
+#  #   url: https://example.com
+#  #   kubernetes:
+#  #     namespace: test
+#  rules:
+#    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+#      when: manual    
+#    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+#      when: manual
diff --git a/src/ztp_server/Config.py b/src/ztp_server/Config.py
new file mode 100755
index 000000000..83a350058
--- /dev/null
+++ b/src/ztp_server/Config.py
@@ -0,0 +1,20 @@
+# 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 werkzeug.security import generate_password_hash
+
+# REST-API users
+RESTAPI_USERS = {   # TODO: implement a database of credentials and permissions
+    'admin': generate_password_hash('admin'),
+}
diff --git a/src/ztp_server/Dockerfile b/src/ztp_server/Dockerfile
new file mode 100755
index 000000000..a9be06d37
--- /dev/null
+++ b/src/ztp_server/Dockerfile
@@ -0,0 +1,97 @@
+# 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 python:3.9-slim
+
+# Install dependencies
+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
+
+# Download the gRPC health probe
+RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
+    wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
+    chmod +x /bin/grpc_health_probe
+
+# Get generic Python packages
+RUN python3 -m pip install --upgrade pip
+RUN python3 -m pip install --upgrade setuptools wheel
+RUN python3 -m pip install --upgrade pip-tools
+
+# Get common Python packages
+# Note: this step enables sharing the previous Docker build steps among all the Python components
+WORKDIR /var/teraflow
+COPY common_requirements.in common_requirements.in
+RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in
+RUN python3 -m pip install -r common_requirements.txt
+
+# Add common files into working directory
+WORKDIR /var/teraflow/common
+COPY src/common/. ./
+RUN rm -rf proto
+
+# Create proto sub-folder, copy .proto files, and generate Python code
+RUN mkdir -p /var/teraflow/common/proto
+WORKDIR /var/teraflow/common/proto
+RUN touch __init__.py
+COPY proto/*.proto ./
+RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto
+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 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/
+
+# Start the service
+ENTRYPOINT ["python", "-m", "nbi.service"]
diff --git a/src/ztp_server/README.md b/src/ztp_server/README.md
new file mode 100755
index 000000000..32902a0b3
--- /dev/null
+++ b/src/ztp_server/README.md
@@ -0,0 +1,35 @@
+# 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/__init__.py b/src/ztp_server/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/__init__.py
@@ -0,0 +1,14 @@
+# 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/client/ZtpClient.py b/src/ztp_server/client/ZtpClient.py
new file mode 100755
index 000000000..a790b76e2
--- /dev/null
+++ b/src/ztp_server/client/ZtpClient.py
@@ -0,0 +1,61 @@
+# 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 grpc, logging
+from common.Constants import ServiceNameEnum
+from common.Settings import get_service_host, get_service_port_grpc
+from common.proto.ztpServer_pb2_grpc import ztpServerServiceStub    #TODO
+from common.proto.context_pb2 import (
+    ZtpFileName, ZtpFile, ProvisioningScriptName, ProvisioningScript)
+from common.tools.client.RetryDecorator import retry, delay_exponential
+from common.tools.grpc.Tools import grpc_message_to_json_string
+
+LOGGER = logging.getLogger(__name__)
+MAX_RETRIES = 15
+DELAY_FUNCTION = delay_exponential(initial=0.01, increment=2.0, maximum=5.0)
+RETRY_DECORATOR = retry(max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect')
+
+class ZtpClient:
+    def __init__(self, host=None, port=None):
+        if not host: host = get_service_host(ServiceNameEnum.ZTP_SERVER)
+        if not port: port = get_service_port_grpc(ServiceNameEnum.ZTP_SERVER)
+        self.endpoint = '{:s}:{:s}'.format(str(host), str(port))
+        LOGGER.debug('Creating channel to {:s}...'.format(str(self.endpoint)))
+        self.channel = None
+        self.stub = None
+        self.connect()
+        LOGGER.debug('Channel created')
+
+    def connect(self):
+        self.channel = grpc.insecure_channel(self.endpoint)
+        self.stub = ztpServerServiceStub(self.channel) #TODO
+
+    def close(self):
+        if self.channel is not None: self.channel.close()
+        self.channel = None
+        self.stub = None
+
+    @RETRY_DECORATOR
+    def GetProvisioningScript(self, request : ProvisioningScriptName) -> ProvisioningScript:
+        LOGGER.debug('GetProvisioningScript request: {:s}'.format(grpc_message_to_json_string(request)))
+        response = self.stub.GetProvisioningScript(request)
+        LOGGER.debug('GetProvisioningScript result: {:s}'.format(grpc_message_to_json_string(response)))
+        return response
+
+    @RETRY_DECORATOR
+    def GetZtpProvisioning(self, request : ZtpFileName) -> ZtpFile:
+        LOGGER.debug('GetZtpProvisioning request: {:s}'.format(grpc_message_to_json_string(request)))
+        response = self.stub.GetZtpProvisioning(request)
+        LOGGER.debug('GetZtpProvisioning result: {:s}'.format(grpc_message_to_json_string(response)))
+        return response
diff --git a/src/ztp_server/client/__init__.py b/src/ztp_server/client/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/client/__init__.py
@@ -0,0 +1,14 @@
+# 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/data/nso_client.proto b/src/ztp_server/data/nso_client.proto
new file mode 100644
index 000000000..d5983c62c
--- /dev/null
+++ b/src/ztp_server/data/nso_client.proto
@@ -0,0 +1,60 @@
+// 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/data/provisioning_script_sonic.sh b/src/ztp_server/data/provisioning_script_sonic.sh
new file mode 100644
index 000000000..c4dd20438
--- /dev/null
+++ b/src/ztp_server/data/provisioning_script_sonic.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+PRODUCT_NAME=$(show version | grep 'Platform' | awk '{print $2}')
+SERIAL_NUMBER=$(show version | grep 'Serial Number' | awk '{print $3}')
+BASE_MAC_ADDRESS=$(show platform syseeprom | grep 'Base MAC Address' | awk '{print $6}')
+SONIC_VERSION=$(show version | grep 'SONiC Software Version' | awk '{print $4}')
+
+# URL of the config_db.json file
+CONFIG_DB_URL="http://10.1.1.119:9001/config/config_db.json"
+
+# Directory where the file will be saved
+DEST_DIR="/etc/sonic"
+DEST_FILE="$DEST_DIR/config_db.json"
+
+# Download the config_db.json file
+curl -o $DEST_FILE -H "User-Agent: SONiC-ZTP/0.1" \
+                     -H "PRODUCT-NAME: $PRODUCT_NAME" \
+                     -H "SERIAL-NUMBER: $SERIAL_NUMBER" \
+                     -H "BASE-MAC-ADDRESS: $BASE_MAC_ADDRESS" \
+                     -H "SONiC-VERSION: $SONIC_VERSION" \
+                     $CONFIG_DB_URL
+if [ $? -ne 0 ]; then
+    logger "Error: Failed to download the file from $CONFIG_DB_URL"
+    exit 1
+fi
+
+# Reload the configuration database
+sudo config reload -y
+
+# Check if the reload was successful
+if [ $? -eq 0 ]; then
+    logger "The configuration database reloaded successfully."
+else
+    logger "Error: Failed to reload the configuration database."
+    exit 1
+fi
+
+logger "Plugin executed successfully."
diff --git a/src/ztp_server/data/ztp.json b/src/ztp_server/data/ztp.json
new file mode 100644
index 000000000..6e606a5e8
--- /dev/null
+++ b/src/ztp_server/data/ztp.json
@@ -0,0 +1,11 @@
+{
+    "ztp": {
+      "01-provisioning-script": {
+        "plugin": {
+          "url": "http://localhost:9001/provisioning/provisioning_script_sonic.sh"
+        },
+        "reboot-on-success": true
+      }
+    }
+  }
+  
\ No newline at end of file
diff --git a/src/ztp_server/requirements.in b/src/ztp_server/requirements.in
new file mode 100755
index 000000000..0d7804836
--- /dev/null
+++ b/src/ztp_server/requirements.in
@@ -0,0 +1,28 @@
+# 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.
+
+deepdiff==6.7.*
+deepmerge==1.1.*
+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
+websockets==12.0
diff --git a/src/ztp_server/service/ZtpServerService.py b/src/ztp_server/service/ZtpServerService.py
new file mode 100755
index 000000000..2b4da4f93
--- /dev/null
+++ b/src/ztp_server/service/ZtpServerService.py
@@ -0,0 +1,28 @@
+# 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 common.Constants import ServiceNameEnum
+from common.Settings import get_service_port_grpc
+from common.proto.ztpServer_pb2_grpc import add_Ztp_ServerServiceServicer_to_server 
+from common.tools.service.GenericGrpcService import GenericGrpcService
+from ztp_server.service.ZtpServerServiceServicerImpl import ZtpServerServiceServicerImpl
+
+class ZtpServerService(GenericGrpcService):
+    def __init__(self, cls_name: str = __name__) -> None:
+        port = get_service_port_grpc(ServiceNameEnum.ZTP_SERVER)
+        super().__init__(port, cls_name=cls_name)
+        self.ztp_servicer = ZtpServerServiceServicerImpl()
+
+    def install_servicers(self):
+        add_Ztp_ServerServiceServicer_to_server(self.ztp_servicer, self.server)
diff --git a/src/ztp_server/service/ZtpServerServiceServicerImpl.py b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
new file mode 100755
index 000000000..009cda922
--- /dev/null
+++ b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
@@ -0,0 +1,40 @@
+# 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 grpc, logging
+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.ztpServer_pb2_grpc import ztpServerServiceServicer
+
+LOGGER = logging.getLogger(__name__)
+
+METRICS_POOL = MetricsPool('ZTP_SERVER', 'RPC')
+
+class ZtpServerServiceServicerImpl(ztpServerServiceServicer):
+    def __init__(self):
+        LOGGER.info('Creating Servicer...')
+        LOGGER.info('Servicer Created')
+
+    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
+    def GetZtpProvisioning(self, request : ProvisioningScriptName, context : grpc.ServicerContext) -> ProvisioningScript:
+        LOGGER.warning('NOT IMPLEMENTED')
+        return ProvisioningScript()
+    
+    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
+    def GetZtpProvisioning(self, request : ZtpFileName, context : grpc.ServicerContext) -> ZtpFile:
+        LOGGER.warning('NOT IMPLEMENTED')
+        return ZtpFile()
+    
+
diff --git a/src/ztp_server/service/__init__.py b/src/ztp_server/service/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/service/__init__.py
@@ -0,0 +1,14 @@
+# 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/service/__main__.py b/src/ztp_server/service/__main__.py
new file mode 100755
index 000000000..25e8605d3
--- /dev/null
+++ b/src/ztp_server/service/__main__.py
@@ -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.
+
+import logging, signal, sys, threading
+from prometheus_client import start_http_server
+from common.Constants import ServiceNameEnum
+from common.Settings import (
+    ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC,
+    get_env_var_name, get_log_level, get_metrics_port,
+)
+from .ZtpServerService import ZtpServerService
+from .rest_server.RestServer import RestServer
+
+from .context_subscription import register_context_subscription
+
+terminate = threading.Event()
+LOGGER = None
+
+def signal_handler(signal, frame): # pylint: disable=redefined-outer-name, unused-argument
+    LOGGER.warning('Terminate signal received')
+    terminate.set()
+
+def main():
+    global LOGGER # pylint: disable=global-statement
+
+    log_level = get_log_level()
+    logging.basicConfig(level=log_level)
+    LOGGER = logging.getLogger(__name__)
+
+    signal.signal(signal.SIGINT,  signal_handler)
+    signal.signal(signal.SIGTERM, signal_handler)
+
+    LOGGER.info('Starting...')
+
+    # Start metrics server
+    metrics_port = get_metrics_port()
+    start_http_server(metrics_port)
+
+    # Starting ZtpServer service
+    grpc_service = ZtpServerService()
+    grpc_service.start()
+
+    rest_server = RestServer()
+    register_tfs_api(rest_server)
+    rest_server.start()
+
+    LOGGER.debug('Configured Resources:')
+    for resource in rest_server.api.resources:
+        LOGGER.debug(' - {:s}'.format(str(resource)))
+
+    LOGGER.debug('Configured Rules:')
+    for rule in rest_server.app.url_map.iter_rules():
+        LOGGER.debug(' - {:s}'.format(str(rule)))
+
+    # Wait for Ctrl+C or termination signal
+    while not terminate.wait(timeout=1.0): pass
+
+    LOGGER.info('Terminating...')
+    grpc_service.stop()
+    rest_server.shutdown()
+    rest_server.join()
+
+    LOGGER.info('Bye')
+    return 0
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/src/ztp_server/service/context_subscription/__init__.py b/src/ztp_server/service/context_subscription/__init__.py
new file mode 100755
index 000000000..758f3d82c
--- /dev/null
+++ b/src/ztp_server/service/context_subscription/__init__.py
@@ -0,0 +1,64 @@
+# 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/RestServer.py b/src/ztp_server/service/rest_server/RestServer.py
new file mode 100755
index 000000000..0c4e45a8c
--- /dev/null
+++ b/src/ztp_server/service/rest_server/RestServer.py
@@ -0,0 +1,23 @@
+# 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 common.Constants import ServiceNameEnum
+from common.Settings import get_service_baseurl_http, get_service_port_http
+from common.tools.service.GenericRestServer import GenericRestServer
+
+class RestServer(GenericRestServer):
+    def __init__(self, cls_name: str = __name__) -> None:
+        bind_port = get_service_port_http(ServiceNameEnum.ZTP_SERVER)
+        base_url = get_service_baseurl_http(ServiceNameEnum.ZTP_SERVER)
+        super().__init__(bind_port, base_url, cls_name=cls_name)
diff --git a/src/ztp_server/service/rest_server/__init__.py b/src/ztp_server/service/rest_server/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/service/rest_server/__init__.py
@@ -0,0 +1,14 @@
+# 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/service/rest_server/ztpServer_plugins/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/__init__.py
@@ -0,0 +1,14 @@
+# 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/service/rest_server/ztpServer_plugins/tfs_api/Resources.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
new file mode 100755
index 000000000..c1b8c3733
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
@@ -0,0 +1,47 @@
+# 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
+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 .Tools import (
+    format_grpc_to_json, 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):
+    def get(self, config_db : str):
+        return returnConfigFile(config_db)  #TODO define how to return configFile.json
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
new file mode 100755
index 000000000..6665dd4ce
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py
@@ -0,0 +1,41 @@
+# 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 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))
+
+def returnConfigFile(config_db):
+    path = config_db
+
+    with open(path, 'r', encoding='utf-8') as configFile:
+        content = configFile.read()
+
+    return content
\ No newline at end of file
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
new file mode 100755
index 000000000..7062772b4
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
@@ -0,0 +1,30 @@
+# 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 ztp_server.service.rest_server.RestServer import RestServer
+from .Resources import (
+    config
+)
+
+URL_PREFIX = '/provisioning'
+
+# Use 'path' type since some identifiers might contain char '/' and Flask is unable to recognize them in 'string' type.
+RESOURCES = [
+    # (endpoint_name, resource_class, resource_url)
+    ('api.config',    config,    '/config/<path:config_db>'),
+]
+
+def register_tfs_api(rest_server : RestServer):
+    for endpoint_name, resource_class, resource_url in RESOURCES:
+        rest_server.add_resource(resource_class, URL_PREFIX + resource_url, endpoint=endpoint_name)
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py
new file mode 100755
index 000000000..aab239f36
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Authentication.py
@@ -0,0 +1,25 @@
+# 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 flask_httpauth import HTTPBasicAuth
+from werkzeug.security import check_password_hash
+from ztp_server.Config import RESTAPI_USERS
+
+HTTP_AUTH = HTTPBasicAuth()
+
+@HTTP_AUTH.verify_password
+def verify_password(username, password):
+    if username not in RESTAPI_USERS: return None
+    if not check_password_hash(RESTAPI_USERS[username], password): return None
+    return username
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
new file mode 100755
index 000000000..56ea475c7
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
@@ -0,0 +1,20 @@
+# 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.
+
+HTTP_OK             = 200
+HTTP_CREATED        = 201
+HTTP_NOCONTENT      = 204
+HTTP_BADREQUEST     = 400
+HTTP_SERVERERROR    = 500
+HTTP_GATEWAYTIMEOUT = 504
\ 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
new file mode 100755
index 000000000..66b607c8b
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py
@@ -0,0 +1,35 @@
+# 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/service/rest_server/ztpServer_plugins/tools/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/__init__.py
@@ -0,0 +1,14 @@
+# 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/Constants.py b/src/ztp_server/tests/Constants.py
new file mode 100755
index 000000000..886ddcafa
--- /dev/null
+++ b/src/ztp_server/tests/Constants.py
@@ -0,0 +1,85 @@
+# 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
new file mode 100755
index 000000000..322441367
--- /dev/null
+++ b/src/ztp_server/tests/MockService_Dependencies.py
@@ -0,0 +1,58 @@
+# 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
new file mode 100755
index 000000000..a574f086b
--- /dev/null
+++ b/src/ztp_server/tests/PrepareTestScenario.py
@@ -0,0 +1,169 @@
+# 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
new file mode 100755
index 000000000..53d5157f7
--- /dev/null
+++ b/src/ztp_server/tests/__init__.py
@@ -0,0 +1,14 @@
+# 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
new file mode 100755
index 000000000..072df6d01
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_acl.json
@@ -0,0 +1,56 @@
+{
+    "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
new file mode 100755
index 000000000..bfeb93fb7
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json
@@ -0,0 +1,231 @@
+{
+  "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
new file mode 100755
index 000000000..2cc512e59
--- /dev/null
+++ b/src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json
@@ -0,0 +1,231 @@
+{
+  "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
new file mode 100755
index 000000000..7643ef53a
--- /dev/null
+++ b/src/ztp_server/tests/data/test-ietf-network.json
@@ -0,0 +1,1962 @@
+{
+    "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
new file mode 100755
index 000000000..d8f513757
--- /dev/null
+++ b/src/ztp_server/tests/data/tfs_api_dummy.json
@@ -0,0 +1,442 @@
+{
+    "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
new file mode 100755
index 000000000..3bb622626
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-7router-emu-dummy.json
@@ -0,0 +1,157 @@
+{
+    "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
new file mode 100755
index 000000000..4174f4fb4
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-7router-emu.json
@@ -0,0 +1,156 @@
+{
+    "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
new file mode 100755
index 000000000..f066051ee
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-dummy.json
@@ -0,0 +1,3134 @@
+{
+    "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
new file mode 100755
index 000000000..bb158d920
--- /dev/null
+++ b/src/ztp_server/tests/data/topology-real.json
@@ -0,0 +1,259 @@
+{
+    "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
new file mode 100755
index 000000000..20887f1a8
--- /dev/null
+++ b/src/ztp_server/tests/ietf_acl_client.py
@@ -0,0 +1,89 @@
+# 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
new file mode 100755
index 000000000..9400de00f
--- /dev/null
+++ b/src/ztp_server/tests/test_etsi_bwm.py
@@ -0,0 +1,240 @@
+# 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
new file mode 100755
index 000000000..7bed8ff5d
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_l2vpn.py
@@ -0,0 +1,75 @@
+# 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
new file mode 100755
index 000000000..0f214661f
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_l3vpn.py
@@ -0,0 +1,113 @@
+# 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
new file mode 100755
index 000000000..68337d0a8
--- /dev/null
+++ b/src/ztp_server/tests/test_ietf_network.py
@@ -0,0 +1,105 @@
+# 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
new file mode 100755
index 000000000..fe112e6fc
--- /dev/null
+++ b/src/ztp_server/tests/test_slice.py
@@ -0,0 +1,125 @@
+# 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
new file mode 100755
index 000000000..eab2f8d9b
--- /dev/null
+++ b/src/ztp_server/tests/test_tfs_api.py
@@ -0,0 +1,217 @@
+# 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
new file mode 100755
index 000000000..2f45c50bc
--- /dev/null
+++ b/src/ztp_server/tests/test_yang_acl.py
@@ -0,0 +1,104 @@
+# 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()
-- 
GitLab


From ea3a17d4ea360a513979c90eb41859cc0a442244 Mon Sep 17 00:00:00 2001
From: jimenezquesa <manuel.jimenez@eviden.com>
Date: Thu, 19 Dec 2024 11:57:22 +0100
Subject: [PATCH 5/8] Second Draft

---
 proto/ztp_server.proto                        | 24 +++++++++++++--
 src/ztp_server/client/ZtpClient.py            |  4 +--
 src/ztp_server/service/ZtpServerService.py    |  2 +-
 .../service/ZtpServerServiceServicerImpl.py   | 29 ++++++++++++++-----
 src/ztp_server/service/__main__.py            |  1 +
 5 files changed, 46 insertions(+), 14 deletions(-)

diff --git a/proto/ztp_server.proto b/proto/ztp_server.proto
index 37ccc71d3..6c575df11 100755
--- a/proto/ztp_server.proto
+++ b/proto/ztp_server.proto
@@ -15,9 +15,27 @@
 syntax = "proto3";
 package ztpServer;
 
-import "context.proto";
+//import "context.proto";
 
 service ZtpServerService {
-  rpc GetProvisioningScript     (context.ProvisioningScriptName         ) returns (context.ProvisioningScript       ) {}
-  rpc GetZtpProvisioning        (context.ZtpFileName                    ) returns (context.ZtpFile       ) {}
+  rpc GetProvisioningScript     (ProvisioningScriptName         ) returns (ProvisioningScript       ) {}
+  rpc GetZtpProvisioning        (ZtpFileName                    ) returns (ZtpFile       ) {}
+}
+
+
+// Define the request message for both methods
+message ProvisioningScriptName {
+  string input = 1;
+}
+
+message ZtpFileName {
+  string input = 1;
+}
+
+message ProvisioningScript {
+  string script = 1;
+}
+
+message ZtpFile {
+  string json = 1;
 }
diff --git a/src/ztp_server/client/ZtpClient.py b/src/ztp_server/client/ZtpClient.py
index a790b76e2..5e5737857 100755
--- a/src/ztp_server/client/ZtpClient.py
+++ b/src/ztp_server/client/ZtpClient.py
@@ -15,7 +15,7 @@
 import grpc, logging
 from common.Constants import ServiceNameEnum
 from common.Settings import get_service_host, get_service_port_grpc
-from common.proto.ztpServer_pb2_grpc import ztpServerServiceStub    #TODO
+from common.proto.ztp_server_pb2_grpc import ztpServerServiceStub
 from common.proto.context_pb2 import (
     ZtpFileName, ZtpFile, ProvisioningScriptName, ProvisioningScript)
 from common.tools.client.RetryDecorator import retry, delay_exponential
@@ -39,7 +39,7 @@ class ZtpClient:
 
     def connect(self):
         self.channel = grpc.insecure_channel(self.endpoint)
-        self.stub = ztpServerServiceStub(self.channel) #TODO
+        self.stub = ztpServerServiceStub(self.channel)
 
     def close(self):
         if self.channel is not None: self.channel.close()
diff --git a/src/ztp_server/service/ZtpServerService.py b/src/ztp_server/service/ZtpServerService.py
index 2b4da4f93..aba4aee94 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.ztpServer_pb2_grpc import add_Ztp_ServerServiceServicer_to_server 
+from common.proto.ztp_server_pb2_grpc import add_Ztp_ServerServiceServicer_to_server 
 from common.tools.service.GenericGrpcService import GenericGrpcService
 from ztp_server.service.ZtpServerServiceServicerImpl import ZtpServerServiceServicerImpl
 
diff --git a/src/ztp_server/service/ZtpServerServiceServicerImpl.py b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
index 009cda922..015f958f4 100755
--- a/src/ztp_server/service/ZtpServerServiceServicerImpl.py
+++ b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
@@ -12,11 +12,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import grpc, logging
+import grpc, logging, json
 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.ztpServer_pb2_grpc import ztpServerServiceServicer
+from common.proto.ztp_server_pb2_grpc import ztpServerServiceServicer
 
 LOGGER = logging.getLogger(__name__)
 
@@ -29,12 +29,25 @@ class ZtpServerServiceServicerImpl(ztpServerServiceServicer):
 
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
     def GetZtpProvisioning(self, request : ProvisioningScriptName, context : grpc.ServicerContext) -> ProvisioningScript:
-        LOGGER.warning('NOT IMPLEMENTED')
-        return ProvisioningScript()
+        try:
+            filePath = '../data/' + ProvisioningScriptName
+            with open(filePath, 'r') as provisioning_file:
+                provisioning_content = provisioning_file.read()
+            return ztpServerServiceServicer.ProvisioningScript(script=provisioning_content)
+        except FileNotFoundError:
+            context.set_code(grpc.StatusCode.NOT_FOUND)
+            context.set_details('File not found')
+            return ztpServerServiceServicer.ProvisioningScript()
+
     
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
     def GetZtpProvisioning(self, request : ZtpFileName, context : grpc.ServicerContext) -> ZtpFile:
-        LOGGER.warning('NOT IMPLEMENTED')
-        return ZtpFile()
-    
-
+        try:
+            filePath = '../data/' + ZtpFileName
+            with open(filePath, 'r') as json_file:
+                json_content = json_file.read()
+            return ztpServerServiceServicer.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
diff --git a/src/ztp_server/service/__main__.py b/src/ztp_server/service/__main__.py
index 25e8605d3..55bd5f187 100755
--- a/src/ztp_server/service/__main__.py
+++ b/src/ztp_server/service/__main__.py
@@ -21,6 +21,7 @@ from common.Settings import (
 )
 from .ZtpServerService import ZtpServerService
 from .rest_server.RestServer import RestServer
+from .rest_server.ztpServer_plugins.tfs_api import register_tfs_api
 
 from .context_subscription import register_context_subscription
 
-- 
GitLab


From 8c50376811f2af1ac76697b7c87e648be1f881eb Mon Sep 17 00:00:00 2001
From: jimenezquesa <manuel.jimenez@eviden.com>
Date: Mon, 27 Jan 2025 14:57:40 +0000
Subject: [PATCH 6/8] Add HTTP Server and gRPC Server Add manifest.yaml Add
 DockerFile

Solve some typo on .proto file
---
 manifests/ztp_server.yaml                     |   78 +
 proto/ztp_server.proto                        |    4 +-
 src/common/Constants.py                       |    5 +-
 src/ztp_server/Dockerfile                     |   43 +-
 src/ztp_server/README.md                      |   35 -
 src/ztp_server/client/ZtpClient.py            |    7 +-
 src/ztp_server/data/nso_client.proto          |   60 -
 src/ztp_server/requirements.in                |    3 -
 src/ztp_server/service/ZtpServerService.py    |    4 +-
 .../service/ZtpServerServiceServicerImpl.py   |   26 +-
 .../service/context_subscription/__init__.py  |   64 -
 .../ztpServer_plugins/tfs_api/Resources.py    |   22 +-
 .../ztpServer_plugins/tfs_api/Tools.py        |   30 +-
 .../ztpServer_plugins/tools/Validator.py      |   35 -
 src/ztp_server/tests/Constants.py             |   85 -
 .../tests/MockService_Dependencies.py         |   58 -
 src/ztp_server/tests/PrepareTestScenario.py   |  169 -
 src/ztp_server/tests/__init__.py              |   14 -
 src/ztp_server/tests/data/ietf_acl.json       |   56 -
 .../tests/data/ietf_l3vpn_req_svc1.json       |  231 --
 .../tests/data/ietf_l3vpn_req_svc2.json       |  231 --
 .../tests/data/test-ietf-network.json         | 1962 -----------
 src/ztp_server/tests/data/tfs_api_dummy.json  |  442 ---
 .../data/topology-7router-emu-dummy.json      |  157 -
 .../tests/data/topology-7router-emu.json      |  156 -
 src/ztp_server/tests/data/topology-dummy.json | 3134 -----------------
 src/ztp_server/tests/data/topology-real.json  |  259 --
 src/ztp_server/tests/ietf_acl_client.py       |   89 -
 src/ztp_server/tests/test_etsi_bwm.py         |  240 --
 src/ztp_server/tests/test_ietf_l2vpn.py       |   75 -
 src/ztp_server/tests/test_ietf_l3vpn.py       |  113 -
 src/ztp_server/tests/test_ietf_network.py     |  105 -
 src/ztp_server/tests/test_slice.py            |  125 -
 src/ztp_server/tests/test_tfs_api.py          |  217 --
 src/ztp_server/tests/test_yang_acl.py         |  104 -
 35 files changed, 123 insertions(+), 8315 deletions(-)
 create mode 100644 manifests/ztp_server.yaml
 delete mode 100755 src/ztp_server/README.md
 delete mode 100644 src/ztp_server/data/nso_client.proto
 delete mode 100755 src/ztp_server/service/context_subscription/__init__.py
 delete mode 100755 src/ztp_server/service/rest_server/ztpServer_plugins/tools/Validator.py
 delete mode 100755 src/ztp_server/tests/Constants.py
 delete mode 100755 src/ztp_server/tests/MockService_Dependencies.py
 delete mode 100755 src/ztp_server/tests/PrepareTestScenario.py
 delete mode 100755 src/ztp_server/tests/__init__.py
 delete mode 100755 src/ztp_server/tests/data/ietf_acl.json
 delete mode 100755 src/ztp_server/tests/data/ietf_l3vpn_req_svc1.json
 delete mode 100755 src/ztp_server/tests/data/ietf_l3vpn_req_svc2.json
 delete mode 100755 src/ztp_server/tests/data/test-ietf-network.json
 delete mode 100755 src/ztp_server/tests/data/tfs_api_dummy.json
 delete mode 100755 src/ztp_server/tests/data/topology-7router-emu-dummy.json
 delete mode 100755 src/ztp_server/tests/data/topology-7router-emu.json
 delete mode 100755 src/ztp_server/tests/data/topology-dummy.json
 delete mode 100755 src/ztp_server/tests/data/topology-real.json
 delete mode 100755 src/ztp_server/tests/ietf_acl_client.py
 delete mode 100755 src/ztp_server/tests/test_etsi_bwm.py
 delete mode 100755 src/ztp_server/tests/test_ietf_l2vpn.py
 delete mode 100755 src/ztp_server/tests/test_ietf_l3vpn.py
 delete mode 100755 src/ztp_server/tests/test_ietf_network.py
 delete mode 100755 src/ztp_server/tests/test_slice.py
 delete mode 100755 src/ztp_server/tests/test_tfs_api.py
 delete mode 100755 src/ztp_server/tests/test_yang_acl.py

diff --git a/manifests/ztp_server.yaml b/manifests/ztp_server.yaml
new file mode 100644
index 000000000..6ed469174
--- /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 6c575df11..807751084 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 660e99f04..50b792c65 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 a9be06d37..bbcc282bd 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 32902a0b3..000000000
--- 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 5e5737857..9e14bd694 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 d5983c62c..000000000
--- 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 0d7804836..ba715494d 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 aba4aee94..c099cf7f6 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 015f958f4..410db6cb3 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 758f3d82c..000000000
--- 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 c1b8c3733..43b7b79b6 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 6665dd4ce..7d05816ee 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 66b607c8b..000000000
--- 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 886ddcafa..000000000
--- 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 322441367..000000000
--- 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 a574f086b..000000000
--- 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 53d5157f7..000000000
--- 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 072df6d01..000000000
--- 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 bfeb93fb7..000000000
--- 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 2cc512e59..000000000
--- 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 7643ef53a..000000000
--- 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 d8f513757..000000000
--- 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 3bb622626..000000000
--- 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 4174f4fb4..000000000
--- 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 f066051ee..000000000
--- 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 bb158d920..000000000
--- 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 20887f1a8..000000000
--- 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 9400de00f..000000000
--- 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 7bed8ff5d..000000000
--- 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 0f214661f..000000000
--- 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 68337d0a8..000000000
--- 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 fe112e6fc..000000000
--- 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 eab2f8d9b..000000000
--- 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 2f45c50bc..000000000
--- 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()
-- 
GitLab


From 755ec559558ce3f4aa7e993670a2eb17e1bbe648 Mon Sep 17 00:00:00 2001
From: jimenezquesa <manuel.jimenez@eviden.com>
Date: Tue, 18 Mar 2025 12:27:26 +0000
Subject: [PATCH 7/8] Solve some minor Typo Delete unused files

---
 manifests/ztp_server.yaml                     |   3 +-
 proto/ztp_server.proto                        |   2 +-
 src/common/Constants.py                       |   2 +-
 src/ztp_server/.gitlab-ci.yml                 | 120 ------------------
 .../data/provisioning_script_sonic.sh         |  15 +++
 src/ztp_server/data/ztp.json                  |   1 -
 src/ztp_server/requirements.in                |  25 ----
 .../service/ZtpServerServiceServicerImpl.py   |  13 --
 src/ztp_server/service/__main__.py            |   6 +-
 .../tools/HttpStatusCodes.py                  |   2 +-
 .../Resources.py                              |   4 +-
 .../Tools.py                                  |   4 +-
 .../__init__.py                               |   6 +-
 13 files changed, 28 insertions(+), 175 deletions(-)
 delete mode 100755 src/ztp_server/.gitlab-ci.yml
 delete mode 100755 src/ztp_server/requirements.in
 rename src/ztp_server/service/rest_server/ztpServer_plugins/{tfs_api => ztp_provisioning_api}/Resources.py (94%)
 rename src/ztp_server/service/rest_server/ztpServer_plugins/{tfs_api => ztp_provisioning_api}/Tools.py (94%)
 rename src/ztp_server/service/rest_server/ztpServer_plugins/{tfs_api => ztp_provisioning_api}/__init__.py (89%)

diff --git a/manifests/ztp_server.yaml b/manifests/ztp_server.yaml
index 6ed469174..398aaa71e 100644
--- a/manifests/ztp_server.yaml
+++ b/manifests/ztp_server.yaml
@@ -74,5 +74,4 @@ spec:
     - name: metrics
       protocol: TCP
       port: 9192
-      targetPort: 
----
+      targetPort: 9192
diff --git a/proto/ztp_server.proto b/proto/ztp_server.proto
index 807751084..31e568d3a 100755
--- a/proto/ztp_server.proto
+++ b/proto/ztp_server.proto
@@ -19,7 +19,7 @@ package ztpServer;
 
 service ZtpServerService {
   rpc GetProvisioningScript     (ProvisioningScriptName         ) returns (ProvisioningScript       ) {}
-  rpc GetZtpProvisioning        (ZtpFileName                    ) returns (ZtpFile       ) {}
+  rpc GetZtpProvisioning        (ZtpFileName                    ) returns (ZtpFile                  ) {}
 }
 
 
diff --git a/src/common/Constants.py b/src/common/Constants.py
index 50b792c65..b95b6d01b 100644
--- a/src/common/Constants.py
+++ b/src/common/Constants.py
@@ -42,7 +42,7 @@ class ServiceNameEnum(Enum):
     SERVICE                = 'service'
     SLICE                  = 'slice'
     ZTP                    = 'ztp'
-    ZTP_SERVER             = 'ztp_server'
+    ZTP_SERVER             = 'ztp-server'
     POLICY                 = 'policy'
     MONITORING             = 'monitoring'
     DLT                    = 'dlt'
diff --git a/src/ztp_server/.gitlab-ci.yml b/src/ztp_server/.gitlab-ci.yml
deleted file mode 100755
index 71bf223ba..000000000
--- a/src/ztp_server/.gitlab-ci.yml
+++ /dev/null
@@ -1,120 +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.
-
-# Build, tag, and push the Docker image to the GitLab Docker registry
-build nbi:
-  variables:
-    IMAGE_NAME: 'nbi' # name of the microservice
-    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
-  stage: build
-  before_script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-  script:
-    - docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile .
-    - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
-    - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
-  after_script:
-    - docker images --filter="dangling=true" --quiet | xargs -r docker rmi
-  rules:
-    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
-    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
-    - changes:
-      - src/common/**/*.py
-      - proto/*.proto
-      - src/$IMAGE_NAME/**/*.{py,in,yml}
-      - src/$IMAGE_NAME/Dockerfile
-      - src/$IMAGE_NAME/tests/*.py
-      - manifests/${IMAGE_NAME}service.yaml
-      - .gitlab-ci.yml
-
-# Apply unit test to the component
-unit_test nbi:
-  variables:
-    IMAGE_NAME: 'nbi' # name of the microservice
-    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
-  stage: unit_test
-  needs:
-    - build nbi
-  before_script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-    - >
-      if docker network list | grep teraflowbridge; then
-        echo "teraflowbridge is already created";
-      else
-        docker network create -d bridge teraflowbridge;
-      fi
-    - >
-      if docker container ls | grep $IMAGE_NAME; then
-        docker rm -f $IMAGE_NAME;
-      else
-        echo "$IMAGE_NAME image is not in the system";
-      fi
-  script:
-    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
-    - docker run --name $IMAGE_NAME -d -p 9090:9090 -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
-    - sleep 5
-    - docker ps -a
-    - docker logs $IMAGE_NAME
-    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_tfs_api.py --junitxml=/opt/results/${IMAGE_NAME}_report_tfs_api.xml"
-    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l2vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l2vpn.xml"
-    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_network.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_network.xml"
-    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_ietf_l3vpn.py --junitxml=/opt/results/${IMAGE_NAME}_report_ietf_l3vpn.xml"
-    - docker exec -i $IMAGE_NAME bash -c "coverage run --append -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_etsi_bwm.py --junitxml=/opt/results/${IMAGE_NAME}_report_etsi_bwm.xml"
-    - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
-  coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
-  after_script:
-    - docker rm -f $IMAGE_NAME
-    - docker network rm teraflowbridge
-  rules:
-    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
-    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
-    - changes:
-      - src/common/**/*.py
-      - proto/*.proto
-      - src/$IMAGE_NAME/**/*.{py,in,yml}
-      - src/$IMAGE_NAME/Dockerfile
-      - src/$IMAGE_NAME/tests/*.py
-      - src/$IMAGE_NAME/tests/Dockerfile
-      - manifests/${IMAGE_NAME}service.yaml
-      - .gitlab-ci.yml
-  artifacts:
-      when: always
-      reports:
-        junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report_*.xml
-
-## Deployment of the service in Kubernetes Cluster
-#deploy nbi:
-#  variables:
-#    IMAGE_NAME: 'nbi' # name of the microservice
-#    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
-#  stage: deploy
-#  needs:
-#    - unit test nbi
-#    # - integ_test execute
-#  script:
-#    - 'sed -i "s/$IMAGE_NAME:.*/$IMAGE_NAME:$IMAGE_TAG/" manifests/${IMAGE_NAME}service.yaml'
-#    - kubectl version
-#    - kubectl get all
-#    - kubectl apply -f "manifests/${IMAGE_NAME}service.yaml"
-#    - kubectl get all
-#  # environment:
-#  #   name: test
-#  #   url: https://example.com
-#  #   kubernetes:
-#  #     namespace: test
-#  rules:
-#    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
-#      when: manual    
-#    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
-#      when: manual
diff --git a/src/ztp_server/data/provisioning_script_sonic.sh b/src/ztp_server/data/provisioning_script_sonic.sh
index c4dd20438..24b1eb8a6 100644
--- a/src/ztp_server/data/provisioning_script_sonic.sh
+++ b/src/ztp_server/data/provisioning_script_sonic.sh
@@ -1,5 +1,20 @@
 #!/bin/bash
 
+# 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
+
+
 PRODUCT_NAME=$(show version | grep 'Platform' | awk '{print $2}')
 SERIAL_NUMBER=$(show version | grep 'Serial Number' | awk '{print $3}')
 BASE_MAC_ADDRESS=$(show platform syseeprom | grep 'Base MAC Address' | awk '{print $6}')
diff --git a/src/ztp_server/data/ztp.json b/src/ztp_server/data/ztp.json
index 6e606a5e8..4a4cdc3cf 100644
--- a/src/ztp_server/data/ztp.json
+++ b/src/ztp_server/data/ztp.json
@@ -8,4 +8,3 @@
       }
     }
   }
-  
\ No newline at end of file
diff --git a/src/ztp_server/requirements.in b/src/ztp_server/requirements.in
deleted file mode 100755
index ba715494d..000000000
--- a/src/ztp_server/requirements.in
+++ /dev/null
@@ -1,25 +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.
-
-deepdiff==6.7.*
-deepmerge==1.1.*
-Flask==2.1.3
-Flask-HTTPAuth==4.5.0
-Flask-RESTful==0.3.9
-jsonschema==4.4.0
-netaddr==0.9.0
-pydantic==2.6.3
-requests==2.27.1
-werkzeug==2.3.7
-websockets==12.0
diff --git a/src/ztp_server/service/ZtpServerServiceServicerImpl.py b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
index 410db6cb3..62ddb856f 100755
--- a/src/ztp_server/service/ZtpServerServiceServicerImpl.py
+++ b/src/ztp_server/service/ZtpServerServiceServicerImpl.py
@@ -38,16 +38,3 @@ class ZtpServerServiceServicerImpl(ZtpServerServiceServicer):
             context.set_code(grpc.StatusCode.NOT_FOUND)
             context.set_details('File not found')
             return ProvisioningScript()
-
-    
-    @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
-    def GetZtpProvisioning(self, request : ZtpFileName, context : grpc.ServicerContext) -> ZtpFile:
-        try:
-            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 ZtpFile(json=json_content)
-        except FileNotFoundError:
-            context.set_code(grpc.StatusCode.NOT_FOUND)
-            context.set_details('File not found')
-            return ZtpFile()
\ No newline at end of file
diff --git a/src/ztp_server/service/__main__.py b/src/ztp_server/service/__main__.py
index 55bd5f187..ae8a95d21 100755
--- a/src/ztp_server/service/__main__.py
+++ b/src/ztp_server/service/__main__.py
@@ -21,9 +21,7 @@ from common.Settings import (
 )
 from .ZtpServerService import ZtpServerService
 from .rest_server.RestServer import RestServer
-from .rest_server.ztpServer_plugins.tfs_api import register_tfs_api
-
-from .context_subscription import register_context_subscription
+from .rest_server.ztpServer_plugins.ztp_provisioning_api import register_ztp_provisioning
 
 terminate = threading.Event()
 LOGGER = None
@@ -53,7 +51,7 @@ def main():
     grpc_service.start()
 
     rest_server = RestServer()
-    register_tfs_api(rest_server)
+    register_ztp_provisioning(rest_server)
     rest_server.start()
 
     LOGGER.debug('Configured Resources:')
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
index 56ea475c7..f9d749613 100755
--- a/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/tools/HttpStatusCodes.py
@@ -17,4 +17,4 @@ HTTP_CREATED        = 201
 HTTP_NOCONTENT      = 204
 HTTP_BADREQUEST     = 400
 HTTP_SERVERERROR    = 500
-HTTP_GATEWAYTIMEOUT = 504
\ No newline at end of file
+HTTP_GATEWAYTIMEOUT = 504
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py b/src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/Resources.py
similarity index 94%
rename from src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
rename to src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/Resources.py
index 43b7b79b6..f4169742a 100755
--- a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Resources.py
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/Resources.py
@@ -32,6 +32,6 @@ class _Resource(Resource):
 class config(_Resource):
     @HTTP_AUTH.login_required
     def get(self, config_db : str):
-        #if returnConfigFile(config_db)
+        content = returnConfigFile(config_db)
 
-        return 
+        return content
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py b/src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/Tools.py
similarity index 94%
rename from src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py
rename to src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/Tools.py
index 7d05816ee..92573fd2e 100755
--- a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/Tools.py
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/Tools.py
@@ -20,6 +20,6 @@ def returnConfigFile(config_db):
         with open(configFilePath, 'r', encoding='utf-8') as configFile:
             content = configFile.read()
     except FileNotFoundError:
-            return "File not Found"
+        return None
 
-    return content
\ No newline at end of file
+    return content
diff --git a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py b/src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/__init__.py
similarity index 89%
rename from src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
rename to src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/__init__.py
index 7062772b4..ab06fd7bd 100755
--- a/src/ztp_server/service/rest_server/ztpServer_plugins/tfs_api/__init__.py
+++ b/src/ztp_server/service/rest_server/ztpServer_plugins/ztp_provisioning_api/__init__.py
@@ -14,7 +14,7 @@
 
 from ztp_server.service.rest_server.RestServer import RestServer
 from .Resources import (
-    config
+    Config
 )
 
 URL_PREFIX = '/provisioning'
@@ -22,9 +22,9 @@ URL_PREFIX = '/provisioning'
 # Use 'path' type since some identifiers might contain char '/' and Flask is unable to recognize them in 'string' type.
 RESOURCES = [
     # (endpoint_name, resource_class, resource_url)
-    ('api.config',    config,    '/config/<path:config_db>'),
+    ('api.config',    Config,    '/config/<path:config_db>'),
 ]
 
-def register_tfs_api(rest_server : RestServer):
+def register_ztp_provisioning(rest_server : RestServer):
     for endpoint_name, resource_class, resource_url in RESOURCES:
         rest_server.add_resource(resource_class, URL_PREFIX + resource_url, endpoint=endpoint_name)
-- 
GitLab


From ac2f59755ee0550c5377c5e993df71bc187d3b99 Mon Sep 17 00:00:00 2001
From: jimenezquesa <manuel.jimenez@eviden.com>
Date: Thu, 10 Apr 2025 16:34:36 +0200
Subject: [PATCH 8/8] Add requirements.in

---
 src/ztp_server/requirements.in | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 src/ztp_server/requirements.in

diff --git a/src/ztp_server/requirements.in b/src/ztp_server/requirements.in
new file mode 100644
index 000000000..d56ee821b
--- /dev/null
+++ b/src/ztp_server/requirements.in
@@ -0,0 +1,28 @@
+# 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.
+
+deepdiff==6.7.*
+deepmerge==1.1.*
+Flask==2.1.3
+Flask-HTTPAuth==4.5.0
+Flask-RESTful==0.3.9
+jsonschema==4.4.0
+libyang==2.8.4
+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
+websockets==12.0
-- 
GitLab