Bump upstream dependencies to Ca
[transportpce.git] / tests / transportpce_tests / common / test_utils.py
index 888a8e91fc228751b85ecd386c41bd49cd2f4537..90f237172783a0cc599c738c0ba30bc3d540f27a 100644 (file)
@@ -28,6 +28,7 @@ from dict2xml import dict2xml
 from netconf_client.connect import connect_ssh
 from netconf_client.ncclient import Manager
 
+
 # pylint: disable=import-error
 import simulators
 
@@ -53,6 +54,9 @@ CODE_SHOULD_BE_201 = 'Http status code should be 201'
 T100GE = 'Transponder 100GE'
 T0_MULTILAYER_TOPO = 'T0 - Multi-layer topology'
 T0_FULL_MULTILAYER_TOPO = 'T0 - Full Multi-layer topology'
+T100GE_UUID = 'cf51c729-3699-308a-a7d0-594c6a62ebbb'
+T0_MULTILAYER_TOPO_UUID = '747c670e-7a07-3dab-b379-5b1cd17402a3'
+T0_FULL_MULTILAYER_TOPO_UUID = '393f09a4-0a0b-3d82-a4f6-1fbbc14ca1a7'
 
 SIM_LOG_DIRECTORY = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'log')
 
@@ -324,13 +328,19 @@ def mount_device(node: str, sim: str):
     url = {'rfc8040': '{}/data/network-topology:network-topology/topology=topology-netconf/node={}',
            'draft-bierman02': '{}/config/network-topology:network-topology/topology/topology-netconf/node/{}'}
     body = {'node': [{
-        'node-id': node,
-        'netconf-node-topology:username': NODES_LOGIN,
-        'netconf-node-topology:password': NODES_PWD,
-        'netconf-node-topology:host': '127.0.0.1',
-        'netconf-node-topology:port': SIMS[sim]['port'],
-        'netconf-node-topology:tcp-only': 'false',
-        'netconf-node-topology:pass-through': {}}]}
+            "node-id": node,
+            "netconf-node-topology:host": "127.0.0.1",
+            "netconf-node-topology:port": SIMS[sim]['port'],
+            "netconf-node-topology:login-password-unencrypted": {
+                "netconf-node-topology:username": NODES_LOGIN,
+                "netconf-node-topology:password": NODES_PWD
+            },
+            "netconf-node-topology:tcp-only": "false",
+            "netconf-node-topology:reconnect-on-changed-schema": "false",
+            "netconf-node-topology:connection-timeout-millis": "20000",
+            "netconf-node-topology:default-request-timeout-millis": "60000",
+            "netconf-node-topology:max-connection-attempts": "0",
+            "netconf-node-topology:keepalive-delay": "120"}]}
     response = put_request(url[RESTCONF_VERSION].format('{}', node), body)
     if wait_until_log_contains(TPCE_LOG, 'Triggering notification stream NETCONF for node ' + node, 180):
         print('Node ' + node + ' correctly added to tpce topology', end='... ', flush=True)
@@ -728,3 +738,42 @@ def sims_update_cp_port_ntcf(sim: tuple, circuitpack: str, payload: dict):
     if "None" in str(reply):
         return True
     return False
+
+
+def sims_update_pm_interact(sim: tuple, payload: dict):
+    if SIMS_TYPE == 'lightynode':
+        return sims_update_pm_interact_ntcf(sim, payload)
+    if SIMS_TYPE == 'honeynode':
+        return sims_update_pm_interact_rest(sim, payload)
+    return False
+
+
+def sims_update_pm_interact_rest(sim: tuple, payload: dict):
+    # pylint: disable=consider-using-f-string
+    url = "{}/operations/pm-handling:pm-interact".format(SIMS[sim]['restconf_baseurl'])
+    body = {"input": payload}
+    response = requests.request("POST",
+                                url,
+                                data=json.dumps(body),
+                                headers=TYPE_APPLICATION_JSON,
+                                auth=(ODL_LOGIN, ODL_PWD),
+                                timeout=REQUEST_TIMEOUT)
+    return response.status_code == requests.codes.ok
+
+
+def sims_update_pm_interact_ntcf(sim: tuple, payload: dict):
+    # pylint: disable=line-too-long
+    xml_body = '<pm-interact xmlns="http://honeynode-simulator/pm-handling">'
+    xml_body += dict2xml(payload, indent="  ")
+    xml_body += '</pm-interact>'
+    new_xml = xml_body.replace("<pm-resource-instance>/org-openroadm-device:org-openroadm-device/org-openroadm-device:interface[org-openroadm-device:name='OTS-DEG2-TTP-TXRX']</pm-resource-instance>",
+                               "<pm-resource-instance xmlns:a=\"http://org/openroadm/device\">/a:org-openroadm-device/a:interface[a:name='OTS-DEG2-TTP-TXRX']</pm-resource-instance>")
+    with connect_ssh(host='127.0.0.1',
+                     port=int(SIMS[sim]['port']),
+                     username=NODES_LOGIN,
+                     password=NODES_PWD) as session:
+        mgr = Manager(session, timeout=120)
+        reply = mgr.dispatch(new_xml)
+    if "netconf_client.ncclient.RPCReply" in str(reply):
+        return True
+    return False