Align 1.2.1 tests sims/tpce management to 2.2.1
[transportpce.git] / tests / transportpce_tests / 1.2.1 / test_olm.py
index 8a37b4a3581382e6b57a306afcaaf12b6c752b2b..7d4a7698a9e4d1058f4db0978b761ed7e0ac5950 100644 (file)
@@ -19,123 +19,39 @@ import os
 import psutil
 import shutil
 from unittest.result import failfast
+from common import test_utils
 
 
 class TransportOlmTesting(unittest.TestCase):
 
-    honeynode_process1 = None
-    honeynode_process2 = None
-    honeynode_process3 = None
-    honeynode_process4 = None
-    odl_process = None
+    processes = None
     restconf_baseurl = "http://localhost:8181/restconf"
 
-#START_IGNORE_XTESTING
-
-    @classmethod
-    def __start_honeynode1(cls):
-        executable = ("./honeynode/2.1/honeynode-distribution/target/honeynode-distribution-1.18.01-hc"
-                      "/honeynode-distribution-1.18.01/honeycomb-tpce")
-        if os.path.isfile(executable):
-            with open('honeynode1.log', 'w') as outfile:
-                cls.honeynode_process1 = subprocess.Popen(
-                    [executable, "17830", "sample_configs/openroadm/2.1/oper-XPDRA.xml"],
-                    stdout=outfile)
-
-    @classmethod
-    def __start_honeynode2(cls):
-        executable = ("./honeynode/2.1/honeynode-distribution/target/honeynode-distribution-1.18.01-hc"
-                      "/honeynode-distribution-1.18.01/honeycomb-tpce")
-        if os.path.isfile(executable):
-            with open('honeynode2.log', 'w') as outfile:
-                cls.honeynode_process2 = subprocess.Popen(
-                    [executable, "17831", "sample_configs/openroadm/2.1/oper-ROADMA-full.xml"],
-                    stdout=outfile)
-
-    @classmethod
-    def __start_honeynode3(cls):
-        executable = ("./honeynode/2.1/honeynode-distribution/target/honeynode-distribution-1.18.01-hc"
-                      "/honeynode-distribution-1.18.01/honeycomb-tpce")
-        if os.path.isfile(executable):
-            with open('honeynode3.log', 'w') as outfile:
-                cls.honeynode_process3 = subprocess.Popen(
-                    [executable, "17833", "sample_configs/openroadm/2.1/oper-ROADMC-full.xml"],
-                    stdout=outfile)
-    @classmethod
-    def __start_honeynode4(cls):
-        executable = ("./honeynode/2.1/honeynode-distribution/target/honeynode-distribution-1.18.01-hc"
-                      "/honeynode-distribution-1.18.01/honeycomb-tpce")
-        if os.path.isfile(executable):
-            with open('honeynode4.log', 'w') as outfile:
-                cls.honeynode_process4 = subprocess.Popen(
-                    [executable, "17834", "sample_configs/openroadm/2.1/oper-XPDRC.xml"],
-                    stdout=outfile)
-
-    @classmethod
-    def __start_odl(cls):
-        executable = "../karaf/target/assembly/bin/karaf"
-        with open('odl.log', 'w') as outfile:
-            cls.odl_process = subprocess.Popen(
-                ["bash", executable, "server"], stdout=outfile,
-                stdin=open(os.devnull))
-
     @classmethod
     def setUpClass(cls):
-        cls.__start_honeynode1()
-        time.sleep(30)
-        cls.__start_honeynode2()
-        time.sleep(30)
-        cls.__start_honeynode3()
-        time.sleep(30)
-        cls.__start_honeynode4()
-        time.sleep(30)
-        cls.__start_odl()
-        time.sleep(60)
+        cls.processes = test_utils.start_tpce()
+        cls.processes = test_utils.start_sims(['xpdra', 'roadma-full', 'roadmc-full', 'xpdrc'])
 
     @classmethod
     def tearDownClass(cls):
-        for child in psutil.Process(cls.odl_process.pid).children():
-            child.send_signal(signal.SIGINT)
-            child.wait()
-        cls.odl_process.send_signal(signal.SIGINT)
-        cls.odl_process.wait()
-        for child in psutil.Process(cls.honeynode_process1.pid).children():
-            child.send_signal(signal.SIGINT)
-            child.wait()
-        cls.honeynode_process1.send_signal(signal.SIGINT)
-        cls.honeynode_process1.wait()
-        for child in psutil.Process(cls.honeynode_process2.pid).children():
-            child.send_signal(signal.SIGINT)
-            child.wait()
-        cls.honeynode_process2.send_signal(signal.SIGINT)
-        cls.honeynode_process2.wait()
-        for child in psutil.Process(cls.honeynode_process3.pid).children():
-            child.send_signal(signal.SIGINT)
-            child.wait()
-        cls.honeynode_process3.send_signal(signal.SIGINT)
-        cls.honeynode_process3.wait()
-        for child in psutil.Process(cls.honeynode_process4.pid).children():
-            child.send_signal(signal.SIGINT)
-            child.wait()
-        cls.honeynode_process4.send_signal(signal.SIGINT)
-        cls.honeynode_process4.wait()
+        for process in cls.processes:
+            test_utils.shutdown_process(process)
+        print("all processes killed")
 
     def setUp(self):
-        print ("execution of {}".format(self.id().split(".")[-1]))
+        print("execution of {}".format(self.id().split(".")[-1]))
         time.sleep(1)
 
-#END_IGNORE_XTESTING
-
     def test_01_xpdrA_device_connected(self):
         url = ("{}/config/network-topology:"
-               "network-topology/topology/topology-netconf/node/XPDRA"
-              .format(self.restconf_baseurl))
+               "network-topology/topology/topology-netconf/node/XPDRA01"
+               .format(self.restconf_baseurl))
         data = {"node": [{
-            "node-id": "XPDRA",
+            "node-id": "XPDRA01",
             "netconf-node-topology:username": "admin",
             "netconf-node-topology:password": "admin",
             "netconf-node-topology:host": "127.0.0.1",
-            "netconf-node-topology:port": "17830",
+            "netconf-node-topology:port": test_utils.sims['xpdra']['port'],
             "netconf-node-topology:tcp-only": "false",
             "netconf-node-topology:pass-through": {}}]}
         headers = {'content-type': 'application/json'}
@@ -147,14 +63,14 @@ class TransportOlmTesting(unittest.TestCase):
 
     def test_02_xpdrC_device_connected(self):
         url = ("{}/config/network-topology:"
-               "network-topology/topology/topology-netconf/node/XPDRC"
-              .format(self.restconf_baseurl))
+               "network-topology/topology/topology-netconf/node/XPDRC01"
+               .format(self.restconf_baseurl))
         data = {"node": [{
-            "node-id": "XPDRC",
+            "node-id": "XPDRC01",
             "netconf-node-topology:username": "admin",
             "netconf-node-topology:password": "admin",
             "netconf-node-topology:host": "127.0.0.1",
-            "netconf-node-topology:port": "17834",
+            "netconf-node-topology:port": test_utils.sims['xpdrc']['port'],
             "netconf-node-topology:tcp-only": "false",
             "netconf-node-topology:pass-through": {}}]}
         headers = {'content-type': 'application/json'}
@@ -166,39 +82,39 @@ class TransportOlmTesting(unittest.TestCase):
 
     def test_03_rdmA_device_connected(self):
         url = ("{}/config/network-topology:"
-               "network-topology/topology/topology-netconf/node/ROADMA"
+               "network-topology/topology/topology-netconf/node/ROADMA01"
                .format(self.restconf_baseurl))
         data = {"node": [{
-             "node-id": "ROADMA",
-             "netconf-node-topology:username": "admin",
-             "netconf-node-topology:password": "admin",
-             "netconf-node-topology:host": "127.0.0.1",
-             "netconf-node-topology:port": "17831",
-             "netconf-node-topology:tcp-only": "false",
-             "netconf-node-topology:pass-through": {}}]}
+            "node-id": "ROADMA01",
+            "netconf-node-topology:username": "admin",
+            "netconf-node-topology:password": "admin",
+            "netconf-node-topology:host": "127.0.0.1",
+            "netconf-node-topology:port": test_utils.sims['roadma-full']['port'],
+            "netconf-node-topology:tcp-only": "false",
+            "netconf-node-topology:pass-through": {}}]}
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "PUT", url, data=json.dumps(data), headers=headers,
-              auth=('admin', 'admin'))
+            "PUT", url, data=json.dumps(data), headers=headers,
+            auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.created)
         time.sleep(20)
 
     def test_04_rdmC_device_connected(self):
         url = ("{}/config/network-topology:"
-               "network-topology/topology/topology-netconf/node/ROADMC"
+               "network-topology/topology/topology-netconf/node/ROADMC01"
                .format(self.restconf_baseurl))
         data = {"node": [{
-             "node-id": "ROADMC",
-             "netconf-node-topology:username": "admin",
-             "netconf-node-topology:password": "admin",
-             "netconf-node-topology:host": "127.0.0.1",
-             "netconf-node-topology:port": "17833",
-             "netconf-node-topology:tcp-only": "false",
-             "netconf-node-topology:pass-through": {}}]}
+            "node-id": "ROADMC01",
+            "netconf-node-topology:username": "admin",
+            "netconf-node-topology:password": "admin",
+            "netconf-node-topology:host": "127.0.0.1",
+            "netconf-node-topology:port": test_utils.sims['roadmc-full']['port'],
+            "netconf-node-topology:tcp-only": "false",
+            "netconf-node-topology:pass-through": {}}]}
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "PUT", url, data=json.dumps(data), headers=headers,
-              auth=('admin', 'admin'))
+            "PUT", url, data=json.dumps(data), headers=headers,
+            auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.created)
         time.sleep(20)
 
@@ -207,10 +123,10 @@ class TransportOlmTesting(unittest.TestCase):
         data = {
             "networkutils:input": {
                 "networkutils:links-input": {
-                    "networkutils:xpdr-node": "XPDRA",
+                    "networkutils:xpdr-node": "XPDRA01",
                     "networkutils:xpdr-num": "1",
                     "networkutils:network-num": "1",
-                    "networkutils:rdm-node": "ROADMA",
+                    "networkutils:rdm-node": "ROADMA01",
                     "networkutils:srg-num": "1",
                     "networkutils:termination-point-num": "SRG1-PP1-TXRX"
                 }
@@ -218,8 +134,8 @@ class TransportOlmTesting(unittest.TestCase):
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
@@ -229,10 +145,10 @@ class TransportOlmTesting(unittest.TestCase):
         data = {
             "networkutils:input": {
                 "networkutils:links-input": {
-                    "networkutils:xpdr-node": "XPDRA",
+                    "networkutils:xpdr-node": "XPDRA01",
                     "networkutils:xpdr-num": "1",
                     "networkutils:network-num": "1",
-                    "networkutils:rdm-node": "ROADMA",
+                    "networkutils:rdm-node": "ROADMA01",
                     "networkutils:srg-num": "1",
                     "networkutils:termination-point-num": "SRG1-PP1-TXRX"
                 }
@@ -240,8 +156,8 @@ class TransportOlmTesting(unittest.TestCase):
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
@@ -251,10 +167,10 @@ class TransportOlmTesting(unittest.TestCase):
         data = {
             "networkutils:input": {
                 "networkutils:links-input": {
-                    "networkutils:xpdr-node": "XPDRC",
+                    "networkutils:xpdr-node": "XPDRC01",
                     "networkutils:xpdr-num": "1",
                     "networkutils:network-num": "1",
-                    "networkutils:rdm-node": "ROADMC",
+                    "networkutils:rdm-node": "ROADMC01",
                     "networkutils:srg-num": "1",
                     "networkutils:termination-point-num": "SRG1-PP1-TXRX"
                 }
@@ -262,8 +178,8 @@ class TransportOlmTesting(unittest.TestCase):
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
@@ -273,10 +189,10 @@ class TransportOlmTesting(unittest.TestCase):
         data = {
             "networkutils:input": {
                 "networkutils:links-input": {
-                    "networkutils:xpdr-node": "XPDRC",
+                    "networkutils:xpdr-node": "XPDRC01",
                     "networkutils:xpdr-num": "1",
                     "networkutils:network-num": "1",
-                    "networkutils:rdm-node": "ROADMC",
+                    "networkutils:rdm-node": "ROADMC01",
                     "networkutils:srg-num": "1",
                     "networkutils:termination-point-num": "SRG1-PP1-TXRX"
                 }
@@ -284,8 +200,8 @@ class TransportOlmTesting(unittest.TestCase):
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
@@ -293,119 +209,119 @@ class TransportOlmTesting(unittest.TestCase):
     def test_09_create_OTS_ROADMA(self):
         url = "{}/operations/transportpce-device-renderer:create-ots-oms".format(self.restconf_baseurl)
         data = {
-            "input" : {
-                "node-id" : "ROADMA",
-                "logical-connection-point" : "DEG1-TTP-TXRX"
+            "input": {
+                "node-id": "ROADMA01",
+                "logical-connection-point": "DEG1-TTP-TXRX"
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADMA',
+        self.assertIn('Interfaces OTS-DEG1-TTP-TXRX - OMS-DEG1-TTP-TXRX successfully created on node ROADMA01',
                       res["output"]["result"])
 
     def test_10_create_OTS_ROADMC(self):
         url = "{}/operations/transportpce-device-renderer:create-ots-oms".format(self.restconf_baseurl)
         data = {
-            "input" : {
-                "node-id" : "ROADMC",
-                "logical-connection-point" : "DEG2-TTP-TXRX"
+            "input": {
+                "node-id": "ROADMC01",
+                "logical-connection-point": "DEG2-TTP-TXRX"
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADMC',
+        self.assertIn('Interfaces OTS-DEG2-TTP-TXRX - OMS-DEG2-TTP-TXRX successfully created on node ROADMC01',
                       res["output"]["result"])
 
     def test_11_get_PM_ROADMA(self):
         url = "{}/operations/transportpce-olm:get-pm".format(self.restconf_baseurl)
         data = {
             "input": {
-                "node-id": "ROADMA",
+                "node-id": "ROADMA01",
                 "resource-type": "interface",
                 "granularity": "15min",
                 "resource-identifier": {
-                    "resource-name" : "OTS-DEG1-TTP-TXRX"
+                    "resource-name": "OTS-DEG1-TTP-TXRX"
                 }
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn({
-                "pmparameter-name": "OpticalPowerOutput",
-                "pmparameter-value": "2.5"
-            }, res["output"]["measurements"])
+            "pmparameter-name": "OpticalPowerOutput",
+            "pmparameter-value": "2.5"
+        }, res["output"]["measurements"])
         self.assertIn({
-                "pmparameter-name": "OpticalReturnLoss",
-                "pmparameter-value": "49.9"
-            }, res["output"]["measurements"])
+            "pmparameter-name": "OpticalReturnLoss",
+            "pmparameter-value": "49.9"
+        }, res["output"]["measurements"])
         self.assertIn({
-                "pmparameter-name": "OpticalPowerInput",
-                "pmparameter-value": "3"
-            }, res["output"]["measurements"])
+            "pmparameter-name": "OpticalPowerInput",
+            "pmparameter-value": "3"
+        }, res["output"]["measurements"])
 
     def test_12_get_PM_ROADMC(self):
         url = "{}/operations/transportpce-olm:get-pm".format(self.restconf_baseurl)
         data = {
             "input": {
-                "node-id": "ROADMC",
+                "node-id": "ROADMC01",
                 "resource-type": "interface",
                 "granularity": "15min",
                 "resource-identifier": {
-                    "resource-name" : "OTS-DEG2-TTP-TXRX"
+                    "resource-name": "OTS-DEG2-TTP-TXRX"
                 }
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn({
-                "pmparameter-name": "OpticalPowerOutput",
-                "pmparameter-value": "18.1"
-            }, res["output"]["measurements"])
+            "pmparameter-name": "OpticalPowerOutput",
+            "pmparameter-value": "18.1"
+        }, res["output"]["measurements"])
         self.assertIn({
-                "pmparameter-name": "OpticalReturnLoss",
-                "pmparameter-value": "48.8"
-            }, res["output"]["measurements"])
+            "pmparameter-name": "OpticalReturnLoss",
+            "pmparameter-value": "48.8"
+        }, res["output"]["measurements"])
         self.assertIn({
-                "pmparameter-name": "OpticalPowerInput",
-                "pmparameter-value": "-3.2"
-            }, res["output"]["measurements"])
+            "pmparameter-name": "OpticalPowerInput",
+            "pmparameter-value": "-3.2"
+        }, res["output"]["measurements"])
 
     def test_13_calculate_span_loss_base_ROADMA_ROADMC(self):
         url = "{}/operations/transportpce-olm:calculate-spanloss-base".format(self.restconf_baseurl)
         data = {
             "input": {
                 "src-type": "link",
-                "link-id": "ROADMA-DEG1-DEG1-TTP-TXRXtoROADMC-DEG2-DEG2-TTP-TXRX"
+                "link-id": "ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX"
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Success',
                       res["output"]["result"])
         self.assertIn({
-            "spanloss": "6",
-                "link-id": "ROADMA-DEG1-DEG1-TTP-TXRXtoROADMC-DEG2-DEG2-TTP-TXRX"
-            }, res["output"]["spans"])
+            "spanloss": "5.7",
+            "link-id": "ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX"
+        }, res["output"]["spans"])
         time.sleep(5)
 
     def test_14_calculate_span_loss_base_all(self):
@@ -417,45 +333,45 @@ class TransportOlmTesting(unittest.TestCase):
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Success',
                       res["output"]["result"])
         self.assertIn({
-                "spanloss": "15",
-                "link-id": "ROADMC-DEG2-DEG2-TTP-TXRXtoROADMA-DEG1-DEG1-TTP-TXRX"
-            }, res["output"]["spans"])
+            "spanloss": "15.1",
+            "link-id": "ROADMC01-DEG2-DEG2-TTP-TXRXtoROADMA01-DEG1-DEG1-TTP-TXRX"
+        }, res["output"]["spans"])
         self.assertIn({
-                "spanloss": "6",
-                "link-id": "ROADMA-DEG1-DEG1-TTP-TXRXtoROADMC-DEG2-DEG2-TTP-TXRX"
-            }, res["output"]["spans"])
+            "spanloss": "5.7",
+            "link-id": "ROADMA01-DEG1-DEG1-TTP-TXRXtoROADMC01-DEG2-DEG2-TTP-TXRX"
+        }, res["output"]["spans"])
         time.sleep(5)
 
     def test_15_get_OTS_DEG1_TTP_TXRX_ROADMA(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
-               "node/ROADMA/yang-ext:mount/org-openroadm-device:org-openroadm-device/interface/OTS-DEG1-TTP-TXRX/"
+               "node/ROADMA01/yang-ext:mount/org-openroadm-device:org-openroadm-device/interface/OTS-DEG1-TTP-TXRX/"
                "org-openroadm-optical-transport-interfaces:ots".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
             "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertEqual(6, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
-        self.assertEqual(15, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
+        self.assertEqual(5.7, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
+        self.assertEqual(15.1, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
 
     def test_16_get_OTS_DEG2_TTP_TXRX_ROADMC(self):
         url = ("{}/config/network-topology:network-topology/topology/topology-netconf/"
-               "node/ROADMC/yang-ext:mount/org-openroadm-device:org-openroadm-device/interface/OTS-DEG2-TTP-TXRX/"
+               "node/ROADMC01/yang-ext:mount/org-openroadm-device:org-openroadm-device/interface/OTS-DEG2-TTP-TXRX/"
                "org-openroadm-optical-transport-interfaces:ots".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
             "GET", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
-        self.assertEqual(15, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
-        self.assertEqual(6, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
+        self.assertEqual(15.1, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-transmit'])
+        self.assertEqual(5.7, res['org-openroadm-optical-transport-interfaces:ots']['span-loss-receive'])
 
     def test_17_servicePath_create_AToZ(self):
         url = "{}/operations/transportpce-device-renderer:service-path".format(self.restconf_baseurl)
@@ -469,34 +385,34 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK1",
                         "src-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     },
                     {
                         "dest-tp": "DEG1-TTP-TXRX",
                         "src-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     },
                     {
                         "dest-tp": "SRG1-PP1-TXRX",
                         "src-tp": "DEG2-TTP-TXRX",
-                        "node-id": "ROADMC"
+                        "node-id": "ROADMC01"
                     },
                     {
                         "dest-tp": "XPDR1-CLIENT1",
                         "src-tp": "XPDR1-NETWORK1",
-                        "node-id": "XPDRC"
+                        "node-id": "XPDRC01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
-        #time.sleep(40)
+        # time.sleep(40)
         time.sleep(10)
 
     def test_18_servicePath_create_ZToA(self):
@@ -511,34 +427,34 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK1",
                         "src-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRC"
+                        "node-id": "XPDRC01"
                     },
                     {
                         "dest-tp": "DEG2-TTP-TXRX",
                         "src-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMC"
+                        "node-id": "ROADMC01"
                     },
                     {
                         "src-tp": "DEG1-TTP-TXRX",
                         "dest-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     },
                     {
                         "src-tp": "XPDR1-NETWORK1",
                         "dest-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
-        #time.sleep(40)
+        # time.sleep(40)
         time.sleep(10)
 
     def test_19_service_power_setup_XPDRA_XPDRC(self):
@@ -551,36 +467,36 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK1",
                         "src-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     },
                     {
                         "dest-tp": "DEG1-TTP-TXRX",
                         "src-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     },
                     {
                         "dest-tp": "SRG1-PP1-TXRX",
                         "src-tp": "DEG2-TTP-TXRX",
-                        "node-id": "ROADMC"
+                        "node-id": "ROADMC01"
                     },
                     {
                         "dest-tp": "XPDR1-CLIENT1",
                         "src-tp": "XPDR1-NETWORK1",
-                        "node-id": "XPDRC"
+                        "node-id": "XPDRC01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Success', res["output"]["result"])
 
     def test_20_get_interface_XPDRA_XPDR1_NETWORK1(self):
-        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/XPDRA/yang-ext:mount/"
+        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/XPDRA01/yang-ext:mount/"
                "org-openroadm-device:org-openroadm-device/interface/XPDR1-NETWORK1-1/"
                "org-openroadm-optical-channel-interfaces:och".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
@@ -592,7 +508,7 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertEqual(1, res['org-openroadm-optical-channel-interfaces:och']['wavelength-number'])
 
     def test_21_get_roadmconnection_ROADMA(self):
-        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMA/yang-ext:mount/"
+        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMA01/yang-ext:mount/"
                "org-openroadm-device:org-openroadm-device/roadm-connections/"
                "SRG1-PP1-TXRX-DEG1-TTP-TXRX-1".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
@@ -601,10 +517,10 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertEqual("gainLoss", res['roadm-connections'][0]['opticalControlMode'])
-        self.assertEqual(-3, res['roadm-connections'][0]['target-output-power'])
+        self.assertEqual(-3.3, res['roadm-connections'][0]['target-output-power'])
 
     def test_22_get_roadmconnection_ROADMC(self):
-        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMC/yang-ext:mount/"
+        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMC01/yang-ext:mount/"
                "org-openroadm-device:org-openroadm-device/roadm-connections/"
                "DEG2-TTP-TXRX-SRG1-PP1-TXRX-1".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
@@ -624,36 +540,36 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK1",
                         "src-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRC"
+                        "node-id": "XPDRC01"
                     },
                     {
                         "dest-tp": "DEG2-TTP-TXRX",
                         "src-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMC"
+                        "node-id": "ROADMC01"
                     },
                     {
                         "src-tp": "DEG1-TTP-TXRX",
                         "dest-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     },
                     {
                         "src-tp": "XPDR1-NETWORK1",
                         "dest-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Success', res["output"]["result"])
 
     def test_24_get_interface_XPDRC_XPDR1_NETWORK1(self):
-        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/XPDRC/yang-ext:mount/"
+        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/XPDRC01/yang-ext:mount/"
                "org-openroadm-device:org-openroadm-device/interface/XPDR1-NETWORK1-1/"
                "org-openroadm-optical-channel-interfaces:och".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
@@ -665,7 +581,7 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertEqual(1, res['org-openroadm-optical-channel-interfaces:och']['wavelength-number'])
 
     def test_25_get_roadmconnection_ROADMC(self):
-        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMC/yang-ext:mount/"
+        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMC01/yang-ext:mount/"
                "org-openroadm-device:org-openroadm-device/roadm-connections/"
                "SRG1-PP1-TXRX-DEG2-TTP-TXRX-1".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
@@ -686,36 +602,36 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK1",
                         "src-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     },
                     {
                         "dest-tp": "DEG1-TTP-TXRX",
                         "src-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     },
                     {
                         "dest-tp": "SRG1-PP1-TXRX",
                         "src-tp": "DEG2-TTP-TXRX",
-                        "node-id": "ROADMC"
+                        "node-id": "ROADMC01"
                     },
                     {
                         "dest-tp": "XPDR1-CLIENT1",
                         "src-tp": "XPDR1-NETWORK1",
-                        "node-id": "XPDRC"
+                        "node-id": "XPDRC01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Success', res["output"]["result"])
 
     def test_27_get_roadmconnection_ROADMA(self):
-        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMA/yang-ext:mount/"
+        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMA01/yang-ext:mount/"
                "org-openroadm-device:org-openroadm-device/roadm-connections/"
                "SRG1-PP1-TXRX-DEG1-TTP-TXRX-1".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
@@ -727,7 +643,7 @@ class TransportOlmTesting(unittest.TestCase):
         self.assertEqual(-60, res['roadm-connections'][0]['target-output-power'])
 
     def test_28_get_roadmconnection_ROADMC(self):
-        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMC/yang-ext:mount/"
+        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/ROADMC01/yang-ext:mount/"
                "org-openroadm-device:org-openroadm-device/roadm-connections/"
                "DEG2-TTP-TXRX-SRG1-PP1-TXRX-1".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
@@ -749,30 +665,30 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK1",
                         "src-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     },
                     {
                         "dest-tp": "DEG1-TTP-TXRX",
                         "src-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     },
                     {
                         "dest-tp": "SRG1-PP1-TXRX",
                         "src-tp": "DEG2-TTP-TXRX",
-                        "node-id": "ROADMC"
+                        "node-id": "ROADMC01"
                     },
                     {
                         "dest-tp": "XPDR1-CLIENT1",
                         "src-tp": "XPDR1-NETWORK1",
-                        "node-id": "XPDRC"
+                        "node-id": "XPDRC01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
@@ -790,30 +706,30 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK1",
                         "src-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRC"
+                        "node-id": "XPDRC01"
                     },
                     {
                         "dest-tp": "DEG2-TTP-TXRX",
                         "src-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMC"
+                        "node-id": "ROADMC01"
                     },
                     {
                         "src-tp": "DEG1-TTP-TXRX",
                         "dest-tp": "SRG1-PP1-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     },
                     {
                         "src-tp": "XPDR1-NETWORK1",
                         "dest-tp": "XPDR1-CLIENT1",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
@@ -826,10 +742,10 @@ class TransportOlmTesting(unittest.TestCase):
         data = {
             "networkutils:input": {
                 "networkutils:links-input": {
-                    "networkutils:xpdr-node": "XPDRA",
+                    "networkutils:xpdr-node": "XPDRA01",
                     "networkutils:xpdr-num": "1",
                     "networkutils:network-num": "2",
-                    "networkutils:rdm-node": "ROADMA",
+                    "networkutils:rdm-node": "ROADMA01",
                     "networkutils:srg-num": "1",
                     "networkutils:termination-point-num": "SRG1-PP2-TXRX"
                 }
@@ -837,8 +753,8 @@ class TransportOlmTesting(unittest.TestCase):
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Xponder Roadm Link created successfully', res["output"]["result"])
@@ -848,10 +764,10 @@ class TransportOlmTesting(unittest.TestCase):
         data = {
             "networkutils:input": {
                 "networkutils:links-input": {
-                    "networkutils:xpdr-node": "XPDRA",
+                    "networkutils:xpdr-node": "XPDRA01",
                     "networkutils:xpdr-num": "1",
                     "networkutils:network-num": "2",
-                    "networkutils:rdm-node": "ROADMA",
+                    "networkutils:rdm-node": "ROADMA01",
                     "networkutils:srg-num": "1",
                     "networkutils:termination-point-num": "SRG1-PP2-TXRX"
                 }
@@ -859,8 +775,8 @@ class TransportOlmTesting(unittest.TestCase):
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm Xponder links created successfully', res["output"]["result"])
@@ -877,28 +793,28 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK2",
                         "src-tp": "XPDR1-CLIENT2",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     },
                     {
                         "dest-tp": "DEG1-TTP-TXRX",
                         "src-tp": "SRG1-PP2-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Roadm-connection successfully created for nodes', res["output"]["result"])
-        #time.sleep(40)
+        # time.sleep(40)
         time.sleep(10)
 
     def test_34_get_interface_XPDRA_XPDR1_NETWORK2(self):
-        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/XPDRA/yang-ext:mount/"
+        url = ("{}/config/network-topology:network-topology/topology/topology-netconf/node/XPDRA01/yang-ext:mount/"
                "org-openroadm-device:org-openroadm-device/interface/XPDR1-NETWORK2-2/"
                "org-openroadm-optical-channel-interfaces:och".format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
@@ -921,20 +837,20 @@ class TransportOlmTesting(unittest.TestCase):
                     {
                         "dest-tp": "XPDR1-NETWORK2",
                         "src-tp": "XPDR1-CLIENT2",
-                        "node-id": "XPDRA"
+                        "node-id": "XPDRA01"
                     },
                     {
                         "dest-tp": "DEG1-TTP-TXRX",
                         "src-tp": "SRG1-PP2-TXRX",
-                        "node-id": "ROADMA"
+                        "node-id": "ROADMA01"
                     }
                 ]
             }
         }
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, data=json.dumps(data),
-             headers=headers, auth=('admin', 'admin'))
+            "POST", url, data=json.dumps(data),
+            headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Request processed', res["output"]["result"])
@@ -942,23 +858,23 @@ class TransportOlmTesting(unittest.TestCase):
 
     def test_36_xpdrA_device_disconnected(self):
         url = ("{}/config/network-topology:"
-                "network-topology/topology/topology-netconf/node/XPDRA"
+               "network-topology/topology/topology-netconf/node/XPDRA01"
                .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "DELETE", url, headers=headers,
-             auth=('admin', 'admin'))
+            "DELETE", url, headers=headers,
+            auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         time.sleep(10)
 
     def test_37_xpdrC_device_disconnected(self):
         url = ("{}/config/network-topology:"
-                "network-topology/topology/topology-netconf/node/XPDRC"
+               "network-topology/topology/topology-netconf/node/XPDRC01"
                .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "DELETE", url, headers=headers,
-             auth=('admin', 'admin'))
+            "DELETE", url, headers=headers,
+            auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         time.sleep(10)
 
@@ -966,7 +882,7 @@ class TransportOlmTesting(unittest.TestCase):
         url = "{}/operations/transportpce-olm:calculate-spanloss-current".format(self.restconf_baseurl)
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "POST", url, headers=headers, auth=('admin', 'admin'))
+            "POST", url, headers=headers, auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         res = response.json()
         self.assertIn('Success',
@@ -975,25 +891,26 @@ class TransportOlmTesting(unittest.TestCase):
 
     def test_39_rdmA_device_disconnected(self):
         url = ("{}/config/network-topology:"
-                "network-topology/topology/topology-netconf/node/ROADMA"
+               "network-topology/topology/topology-netconf/node/ROADMA01"
                .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "DELETE", url, headers=headers,
-             auth=('admin', 'admin'))
+            "DELETE", url, headers=headers,
+            auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         time.sleep(10)
 
     def test_40_rdmC_device_disconnected(self):
         url = ("{}/config/network-topology:"
-                "network-topology/topology/topology-netconf/node/ROADMC"
+               "network-topology/topology/topology-netconf/node/ROADMC01"
                .format(self.restconf_baseurl))
         headers = {'content-type': 'application/json'}
         response = requests.request(
-             "DELETE", url, headers=headers,
-             auth=('admin', 'admin'))
+            "DELETE", url, headers=headers,
+            auth=('admin', 'admin'))
         self.assertEqual(response.status_code, requests.codes.ok)
         time.sleep(10)
 
+
 if __name__ == "__main__":
     unittest.main(verbosity=2)