[ONOS-7876] Initial STC implementation for ODTN
Change-Id: I51a22348cc73c576c5d10551e84ca8ac2f2a2040
diff --git a/tools/test/scenarios/bin/tapiHelper.py b/tools/test/scenarios/bin/tapiHelper.py
new file mode 100755
index 0000000..74714d0
--- /dev/null
+++ b/tools/test/scenarios/bin/tapiHelper.py
@@ -0,0 +1,115 @@
+#!/usr/bin/python3
+
+import requests
+import json
+import itertools
+
+#
+# Creates connectivity json
+#
+def tapi_input(sip_uuids):
+ create_input = {
+ "tapi-connectivity:input": {
+ "end-point" : [
+ {
+ "local-id": sip_uuids[0],
+ "service-interface-point": {
+ "service-interface-point-uuid" : sip_uuids[0]
+ }
+ }
+ ,
+ {
+ "local-id": sip_uuids[1],
+ "service-interface-point": {
+ "service-interface-point-uuid" : sip_uuids[1]
+ }
+ }
+ ]
+ }
+ }
+ return create_input
+
+#
+# Obtains TAPI context through restconf
+#
+def get_context(url_context):
+ resp = requests.get(url_context, auth=('onos', 'rocks'))
+ if resp.status_code != 200:
+ raise Exception('GET {}'.format(resp.status_code))
+ return resp.json()
+
+#
+# Requests a connectivity service
+#
+def request_connection(url_connectivity, context):
+ # All Context SIPs
+ sips = context["tapi-common:context"]["service-interface-point"]
+
+ # Sorted Photonic Media SIPs. filter is an iterable
+ esips = list(filter(is_dsr_media, sorted(sips, key=lambda sip: sip["name"][0]["value"])))
+ endpoints = [esips[0], esips[-1]]
+ sip_uuids = []
+ for sip in endpoints:
+ sip_uuids.append(sip["uuid"])
+ for uuid in sip_uuids:
+ print(uuid)
+
+ create_input_json = json.dumps(tapi_input(sip_uuids))
+ print (create_input_json)
+ headers = {'Content-type': 'application/json'}
+ resp = requests.post(url_connectivity, data=create_input_json, headers=headers, auth=('onos', 'rocks'))
+ if resp.status_code != 200:
+ raise Exception('POST {}'.format(resp.status_code))
+ return resp
+
+#
+# Filter method used to keep only SIPs that are photonic_media
+#
+def is_photonic_media(sip):
+ return sip["layer-protocol-name"]=="PHOTONIC_MEDIA"
+
+#
+# Filter method used to keep only SIPs that are DSR
+#
+def is_dsr_media(sip):
+ return sip["layer-protocol-name"]=="DSR"
+
+#
+# Processes the topology to verify the correctness
+#
+def process_topology():
+ # TODO use method to parse topology
+ # Getting the Topology
+ # topology = context["tapi-common:context"]["tapi-topology:topology-context"]["topology"][0]
+ # nodes = topology["node"];
+ # links = topology["link"];
+ noop
+
+#
+# Creates a connection first getting the context, parsing for SIPS and then issuing the request.
+#
+def create_connection(url_context, url_connectivity):
+ context = get_context(url_context)
+ return request_connection(url_connectivity, context)
+
+#
+# Obtains existing connectivity services
+#
+def get_connection(url_connectivity, uuid):
+ if(uuid == ""):
+ json = '{}'
+ else:
+ #TODO use uuid to retrieve given topo
+ print "Not Yet implemented"
+ json = '{}'
+ headers = {'Content-type': 'application/json'}
+ resp = requests.post(url_connectivity, data=json, headers=headers, auth=('onos', 'rocks'))
+ if resp.status_code != 200:
+ raise Exception('POST {}'.format(resp.status_code))
+ return resp
+
+
+
+
+
+