aboutsummaryrefslogtreecommitdiffstats
path: root/tapisimulator
diff options
context:
space:
mode:
Diffstat (limited to 'tapisimulator')
-rw-r--r--tapisimulator/.classpath36
-rw-r--r--tapisimulator/.gitignore1
-rw-r--r--tapisimulator/.project23
-rw-r--r--tapisimulator/.settings/org.eclipse.core.resources.prefs6
-rw-r--r--tapisimulator/.settings/org.eclipse.jdt.core.prefs5
-rw-r--r--tapisimulator/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--tapisimulator/Dockerfile9
-rw-r--r--tapisimulator/README.md87
-rw-r--r--tapisimulator/entrypoint.sh3
-rw-r--r--tapisimulator/json-files/tapi1-siplist.json244
-rw-r--r--tapisimulator/json-files/tapi1-topology.json506
-rw-r--r--tapisimulator/json-files/tapi2-siplist.json244
-rw-r--r--tapisimulator/json-files/tapi2-topology.json506
-rw-r--r--tapisimulator/pom.xml315
-rw-r--r--tapisimulator/src/main/java/org/onap/tapisimulator/Application.java33
-rw-r--r--tapisimulator/src/main/java/org/onap/tapisimulator/controller/TapiController.java73
-rw-r--r--tapisimulator/src/main/java/org/onap/tapisimulator/model/Name.java39
-rw-r--r--tapisimulator/src/main/java/org/onap/tapisimulator/model/Sip.java49
-rw-r--r--tapisimulator/src/main/java/org/onap/tapisimulator/model/SipList.java36
-rw-r--r--tapisimulator/src/main/java/org/onap/tapisimulator/service/TapiService.java156
-rw-r--r--tapisimulator/src/main/java/org/onap/tapisimulator/utils/Utils.java64
-rw-r--r--tapisimulator/src/main/resources/application.properties0
-rw-r--r--tapisimulator/src/main/resources/logback.xml28
-rw-r--r--tapisimulator/src/test/java/org/onap/tapisimulator/Config.java44
-rw-r--r--tapisimulator/src/test/java/org/onap/tapisimulator/TestUtils.java47
-rw-r--r--tapisimulator/src/test/java/org/onap/tapisimulator/controller/TestTapiController.java103
-rw-r--r--tapisimulator/src/test/resources/service-create-tapi.json54
-rw-r--r--tapisimulator/src/test/resources/siplist.json52
-rw-r--r--tapisimulator/src/test/resources/tapi-topology.json135
29 files changed, 2902 insertions, 0 deletions
diff --git a/tapisimulator/.classpath b/tapisimulator/.classpath
new file mode 100644
index 0000000..ede0663
--- /dev/null
+++ b/tapisimulator/.classpath
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/tapisimulator/.gitignore b/tapisimulator/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/tapisimulator/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/tapisimulator/.project b/tapisimulator/.project
new file mode 100644
index 0000000..85317af
--- /dev/null
+++ b/tapisimulator/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>tapisimulator</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/tapisimulator/.settings/org.eclipse.core.resources.prefs b/tapisimulator/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..04cfa2c
--- /dev/null
+++ b/tapisimulator/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/<project>=UTF-8
diff --git a/tapisimulator/.settings/org.eclipse.jdt.core.prefs b/tapisimulator/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..d59e09c
--- /dev/null
+++ b/tapisimulator/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/tapisimulator/.settings/org.eclipse.m2e.core.prefs b/tapisimulator/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..14b697b
--- /dev/null
+++ b/tapisimulator/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/tapisimulator/Dockerfile b/tapisimulator/Dockerfile
new file mode 100644
index 0000000..d6246f2
--- /dev/null
+++ b/tapisimulator/Dockerfile
@@ -0,0 +1,9 @@
+FROM java:openjdk-8
+ARG VERSION=${version}
+ARG JAR_FILE=target/tapisimulator-${VERSION}.jar
+COPY ${JAR_FILE} app.jar
+COPY json-files/* /opt/onap/tapisimulator/templates/
+ADD entrypoint.sh .
+RUN chmod +x entrypoint.sh
+EXPOSE 8080
+ENTRYPOINT ["./entrypoint.sh"]
diff --git a/tapisimulator/README.md b/tapisimulator/README.md
new file mode 100644
index 0000000..85735a2
--- /dev/null
+++ b/tapisimulator/README.md
@@ -0,0 +1,87 @@
+TAPI Controller Simulator Project.
+
+The simulator is a simple spring boot application which acts as the TAPI controller for the MDONS use case
+
+The API'S are as follows:
+
+TAPI
+1.Service interface points GET: /cxf/tapi/v2/connectivities/service-interface-points/{connection-point}
+2.Create Service POST: /cxf/tapi/v2/connectivities/create-service/{service-name}
+3.Delete Service: DELETE /cxf/tapi/v2/connectivities/delete-service/{service-name}
+4.Get Service: GET /cxf/tapi/v2/connectivities/get-service/{service-name}
+5.Get Topology : GET /cxf/tapi/v2/connectivities/topology
+
+##Sample create request
+
+{
+ "create-connectivity-service-input-list":[
+ {
+ "end-point":[
+ {
+ "local-id": "/OTN/FW950074SDN-12/ODU0:1-2-2",
+
+ "layer-protocol-name":"ODU",
+ "connection-end-point":[
+ {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f",
+ "node-edge-point-uuid": "5d90ffed-8240-337b-82cf-3a550c2e12da",
+ "node-uuid": "492c08a7-6664-382b-8153-e8eed147b5b3",
+ "connection-end-point-uuid": "a8855567-8699-3703-8d54-b4ec2da694b9"
+ }
+ ],
+ "service-interface-point":{
+ "service-interface-point-uuid":"a8855567-8699-3703-8d54-b4ec2da694b9"
+ },
+ "protection-role":"WORK"
+ },
+ { "local-id": "/OTN/FW950074SDN-15/ODU2:2-3-14-1",
+ "layer-protocol-name":"ODU",
+ "connection-end-point":[
+ {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f",
+ "node-edge-point-uuid": "c4b07e05-871a-3811-881d-13983e3e28e0",
+ "node-uuid": "9373a6b7-8d29-35bb-a5c9-dd823da138ae",
+ "connection-end-point-uuid": "139c16e7-c13b-3f86-853e-1655afc2f167"
+ }
+ ],
+ "service-interface-point":{
+ "service-interface-point-uuid":"139c16e7-c13b-3f86-853e-1655afc2f167"
+ },
+ "protection-role":"WORK"
+ }
+ ],
+ "layer-protocol-name":"ODU",
+ "connectivity-constraint":{
+ "service-type":"POINT_TO_POINT_CONNECTIVITY"
+ },
+ "routing-constraint":{
+ "route-objective-function":"MIN_WORK_ROUTE_COST"
+ },
+ "topology-constraint":[
+
+ ],
+ "name":[
+ {
+ "value-name":"service-name",
+ "value":"demo-nni"
+ }
+ ]
+ }
+ ]
+}
+
+##To bring up locally along with the other instances go to the main directory dc-simluator
+Execute docker-compose up
+
+
+##To compile and build
+mvn clean install
+
+
+##To build docker image
+mvn package -P docker
+
+
+
+
+
diff --git a/tapisimulator/entrypoint.sh b/tapisimulator/entrypoint.sh
new file mode 100644
index 0000000..655ff42
--- /dev/null
+++ b/tapisimulator/entrypoint.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+java -jar app.jar
diff --git a/tapisimulator/json-files/tapi1-siplist.json b/tapisimulator/json-files/tapi1-siplist.json
new file mode 100644
index 0000000..0521489
--- /dev/null
+++ b/tapisimulator/json-files/tapi1-siplist.json
@@ -0,0 +1,244 @@
+{
+ "sip": [
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "68d7ae41-9303-3d70-b9d0-a2d72d8cd9bb",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "faeda58e-839b-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-2"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "b33552e2-839f-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-3"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "da92a2ac-83a1-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-4"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "ea9d25c8-83a1-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-5"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "f0dc392e-83a1-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-6"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "fbebc622-83a1-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-7"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "0def1734-83a2-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-8"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "16a77ace-83a2-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-2-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "1f6fd6ce-83a2-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-2-2"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+}
diff --git a/tapisimulator/json-files/tapi1-topology.json b/tapisimulator/json-files/tapi1-topology.json
new file mode 100644
index 0000000..8ecba8c
--- /dev/null
+++ b/tapisimulator/json-files/tapi1-topology.json
@@ -0,0 +1,506 @@
+{
+ "topology": [
+ {
+ "uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f",
+ "link": [
+ {
+ "uuid": "f93f61ae-b021-3e51-bcf0-226059ccc265",
+ "cost-characteristic": [
+ {
+ "cost-name": "measured-latency",
+ "cost-value": "0"
+ },
+ {
+ "cost-name": "cost",
+ "cost-value": "200"
+ }
+ ],
+ "node-edge-point": [
+ {
+ "node-edge-point-uuid": "1ba61734-83a2-11ea-bc55-0242ac130fea9",
+ "node-uuid": "4df3b55a-bb8b-334d-9f82-284d1f728da2",
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ },
+ {
+ "node-edge-point-uuid": "78d7ae41-9303-3d70-b9d0-a2d72d8cd9aa",
+ "node-uuid": "5ec3b55a-bb8b-334d-9f82-284d1f728bc6",
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ }
+ ],
+ "direction": "UNIDIRECTIONAL",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "operational-state": "ENABLED",
+ "layer-protocol-name": [
+ "ODU"
+ ]
+ }
+ ],
+ "layer-protocol-name": [
+ "ODU"
+ ],
+ "node": [
+ {
+ "encap-topology": {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ },
+ "uuid": "5ec3b55a-bb8b-334d-9f82-284d1f728bc6",
+ "node-edge-point": [
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "68d7ae41-9303-3d70-b9d0-a2d72d8cd9bb",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "78d7ae41-9303-3d70-b9d0-a2d72d8cd9aa",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "b33552e2-839f-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-3"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "c43552e2-839f-11ea-bc55-0242ac130065",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-3"
+ },
+ {
+ "value-name": "rate",
+ "value": "OC192"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "ea9d25c8-83a1-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-5"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "129d25c8-83a1-11ea-bc55-0242ac130896",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-5"
+ },
+ {
+ "value-name": "rate",
+ "value": "OTU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "fbebc622-83a1-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-7"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "536abc622-83a1-2596-bc55-0242ac139625",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-7"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "16a77ace-83a2-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-2-1"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "366abc622-83a1-2596-bc55-0242ac139adc8",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-2-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "OTU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ],
+ "layer-protocol-name": [
+ "ODU"
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "Node1"
+ }
+ ]
+ },
+ {
+ "encap-topology": {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ },
+ "uuid": "4df3b55a-bb8b-334d-9f82-284d1f728da2",
+ "node-edge-point": [
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "faeda58e-839b-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "bfcda58e-839b-11ea-bc55-0242ac130569",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-2"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "da92a2ac-83a1-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-4"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "ca42a2ac-83a1-11ea-bc55-0242ac130003",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-4"
+ },
+ {
+ "value-name": "rate",
+ "value": "OC192"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "f0dc392e-83a1-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-6"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "12dc392e-83a1-11ea-bc55-0242ac1300cba",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-6"
+ },
+ {
+ "value-name": "rate",
+ "value": "OTU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "0def1734-83a2-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-8"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "1ba61734-83a2-11ea-bc55-0242ac130fea9",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-8"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "1f6fd6ce-83a2-11ea-bc55-0242ac130003",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-2-2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "9f6fd6ce-83a2-11ea-bc55-0242ac1300896",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-2-2"
+ },
+ {
+ "value-name": "rate",
+ "value": "OTU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ],
+ "layer-protocol-name": [
+ "ODU"
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "Node2"
+ }
+ ]
+ }
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "OTN"
+ }
+ ]
+ }
+ ]
+}
diff --git a/tapisimulator/json-files/tapi2-siplist.json b/tapisimulator/json-files/tapi2-siplist.json
new file mode 100644
index 0000000..31ff2b6
--- /dev/null
+++ b/tapisimulator/json-files/tapi2-siplist.json
@@ -0,0 +1,244 @@
+{
+ "sip": [
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "c2814cd7-ea49-4ae1-af19-d4beb3629d1d",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "82392841-141f-4951-933d-acd3d62c8883",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-2"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "d0d6f882-6bd6-4ef2-bf28-7748e21a7126",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-3"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "a6cc8687-ccb4-4a6f-82bb-404674e824c0",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-4"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "d5c91b35-f3b4-4fca-8713-ce843309a4e8",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-5"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "9b443fea-22c2-4b6a-9679-ebc5685b19cc",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-6"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "2a824296-ad21-4ee4-acb5-8ed9ffabbb22",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-7"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "5e399f6c-32cb-4b31-ad91-ec91a8935378",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-8"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "4ff1ac3f-77fa-423a-acb7-b908c682be52",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-2-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "cbb7716c-864c-4db8-9dce-31ae0ce13cdc",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-2-2"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+}
diff --git a/tapisimulator/json-files/tapi2-topology.json b/tapisimulator/json-files/tapi2-topology.json
new file mode 100644
index 0000000..53466c0
--- /dev/null
+++ b/tapisimulator/json-files/tapi2-topology.json
@@ -0,0 +1,506 @@
+{
+ "topology": [
+ {
+ "uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f",
+ "link": [
+ {
+ "uuid": "b3ed13ec-ce2c-4195-b521-a92ce730e851",
+ "cost-characteristic": [
+ {
+ "cost-name": "measured-latency",
+ "cost-value": "0"
+ },
+ {
+ "cost-name": "cost",
+ "cost-value": "200"
+ }
+ ],
+ "node-edge-point": [
+ {
+ "node-edge-point-uuid": "dd13ea51-eb2d-4a42-af3d-d3d17336a820",
+ "node-uuid": "3a39735a-e5f0-4c74-a29d-cc278c02d4d3",
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ },
+ {
+ "node-edge-point-uuid": "4ef204af-3c54-418e-b9e6-aa01e567135a",
+ "node-uuid": "2539bad0-5add-4406-8ca6-5ae38b50869a",
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ }
+ ],
+ "direction": "UNIDIRECTIONAL",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "operational-state": "ENABLED",
+ "layer-protocol-name": [
+ "ODU"
+ ]
+ }
+ ],
+ "layer-protocol-name": [
+ "ODU"
+ ],
+ "node": [
+ {
+ "encap-topology": {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ },
+ "uuid": "2539bad0-5add-4406-8ca6-5ae38b50869a",
+ "node-edge-point": [
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "c2814cd7-ea49-4ae1-af19-d4beb3629d1d",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "4ef204af-3c54-418e-b9e6-aa01e567135a",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "82392841-141f-4951-933d-acd3d62c8883",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "1ca8b70d-0a0b-481a-b3e0-0bcac0903d44",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-2"
+ },
+ {
+ "value-name": "rate",
+ "value": "OC192"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "d0d6f882-6bd6-4ef2-bf28-7748e21a7126",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-3"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "8b183457-c9be-4e8b-89ac-fd916c7ea9d9",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-3"
+ },
+ {
+ "value-name": "rate",
+ "value": "OTU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "a6cc8687-ccb4-4a6f-82bb-404674e824c0",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-4"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "81aca7b6-2073-4bf5-ace9-48bcc911f5df",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-4"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "d5c91b35-f3b4-4fca-8713-ce843309a4e8",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-5"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "ee5a8f50-c54e-42a2-bbe9-09ab93cfb1d1",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node3"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-5"
+ },
+ {
+ "value-name": "rate",
+ "value": "OTU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ],
+ "layer-protocol-name": [
+ "ODU"
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "Node3"
+ }
+ ]
+ },
+ {
+ "encap-topology": {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ },
+ "uuid": "3a39735a-e5f0-4c74-a29d-cc278c02d4d3",
+ "node-edge-point": [
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "9b443fea-22c2-4b6a-9679-ebc5685b19cc",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-6"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "d8be03a2-bcb1-4f67-a5b6-e55338d2ef0e",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-6"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "2a824296-ad21-4ee4-acb5-8ed9ffabbb22",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-7"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "23be8019-a2c5-45c1-8a6d-547987354a95",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-7"
+ },
+ {
+ "value-name": "rate",
+ "value": "OC192"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "5e399f6c-32cb-4b31-ad91-ec91a8935378",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-8"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "dd13ea51-eb2d-4a42-af3d-d3d17336a820",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-8"
+ },
+ {
+ "value-name": "rate",
+ "value": "OTU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "4ff1ac3f-77fa-423a-acb7-b908c682be52",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-2-1"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "1bd434f4-6f9e-4c69-b865-c76cbafdf791",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-2-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "cbb7716c-864c-4db8-9dce-31ae0ce13cdc",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-2-2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "e45c5a34-59a5-4e7d-9aca-fc8d09e60ec0",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node4"
+ },
+ {
+ "value-name": "name",
+ "value": "1-2-2"
+ },
+ {
+ "value-name": "rate",
+ "value": "OTU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ],
+ "layer-protocol-name": [
+ "ODU"
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "Node4"
+ }
+ ]
+ }
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "OTN"
+ }
+ ]
+ }
+ ]
+}
diff --git a/tapisimulator/pom.xml b/tapisimulator/pom.xml
new file mode 100644
index 0000000..a8825a0
--- /dev/null
+++ b/tapisimulator/pom.xml
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============LICENSE_START=======================================================
+ tapi-Simulator ================================================================================
+ Copyright (C) 2020 Fujitsu Limited. All rights reserved. ================================================================================
+ 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. ============LICENSE_END========================================================= -->
+
+
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.integration.simulators.dc-simulator</groupId>
+ <artifactId>integration-dc-simulator</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+ <!--parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>
+ <version>2.1.5.RELEASE</version> </parent -->
+
+
+ <artifactId>tapisimulator</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+
+ <name>tapisimulator</name>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format>
+
+ <simulator.main.class>org.onap.tapisimulator.Application</simulator.main.class>
+ <docker.image.tag>latest</docker.image.tag>
+ <junit.jupiter.version>5.1.0</junit.jupiter.version>
+ <junit.vintage.version>5.1.0</junit.vintage.version>
+ <spring.boot.version>2.1.5.RELEASE</spring.boot.version>
+ <docker.image.name>onap/${project.artifactId}</docker.image.name>
+
+ <dependency.directory.name>libs</dependency.directory.name>
+ <dependency.directory.location>${project.build.directory}/${dependency.directory.name}
+ </dependency.directory.location>
+
+ <onap.nexus.dockerregistry.daily>nexus3.onap.org:10003</onap.nexus.dockerregistry.daily>
+ <onap.nexus.url>http://nexus3.onap.org</onap.nexus.url>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>${spring.boot.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-data-mongodb</artifactId>
+ <version>${spring.boot.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-actuator</artifactId>
+ <version>${spring.boot.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.cloud</groupId>
+ <artifactId>spring-cloud-config-client</artifactId>
+ <version>2.1.4.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ <version>1.2.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.7.25</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ <version>20180130</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <version>3.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>1.18.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jdk8</artifactId>
+ <version>2.9.7</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jsr310</artifactId>
+ <version>2.9.7</version>
+ </dependency>
+ <dependency>
+ <groupId>io.vavr</groupId>
+ <artifactId>vavr-match</artifactId>
+ <version>0.9.2</version>
+ </dependency>
+ <dependency>
+ <groupId>io.vavr</groupId>
+ <artifactId>vavr</artifactId>
+ <version>0.9.2</version>
+ </dependency>
+
+
+ <!--dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId>
+ <version>${junit.jupiter.version}</version> <scope>test</scope> </dependency>
+ <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-migrationsupport</artifactId>
+ <version>${junit.jupiter.version}</version> <scope>test</scope> </dependency -->
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <version>3.9.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>2.23.4</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!--dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId>
+ <version>1.6.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId>
+ <artifactId>powermock-module-junit4</artifactId> <version>1.6.4</version>
+ <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId> <version>5.0.4.RELEASE</version> <scope>test</scope>
+ </dependency -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <version>${spring.boot.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.quartz-scheduler</groupId>
+ <artifactId>quartz</artifactId>
+ <version>2.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.quartz-scheduler</groupId>
+ <artifactId>quartz-jobs</artifactId>
+ <version>2.2.1</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>2.1.5.RELEASE</version>
+ <configuration>
+ <mainClass>org.onap.tapisimulator.Application</mainClass>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <!-- Build an executable JAR -->
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>3.1.0</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>org.onap.tapisimulator.Application</mainClass>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <environmentVariables>
+ <Controller>TAPI1</Controller>
+ </environmentVariables>
+ </configuration>
+ </plugin>
+
+
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ <os.detected.name>linux</os.detected.name>
+ <os.detected.arch>x86_64</os.detected.arch>
+ <os.detected.classifier>${os.detected.name}-${os.detected.arch}</os.detected.classifier>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>${docker-maven-plugin.version}</version>
+ <executions>
+ <execution>
+ <id>docker-build-image</id>
+ <phase>package</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>docker-push-image</id>
+ <phase>deploy</phase>
+ <goals>
+ <goal>push</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <skipPush>${skipDockerPush}</skipPush>
+ <verbose>true</verbose>
+ <imagePullPolicy>IfNotPresent</imagePullPolicy>
+ <images>
+ <image>
+ <alias>${project.artifactId}</alias>
+ <name>${onap.nexus.dockerregistry.daily}/${docker.image.name}</name>
+ <registry>${onap.nexus.dockerregistry.daily}</registry>
+ <build>
+ <dockerFileDir>${project.basedir}</dockerFileDir>
+ <tags>
+ <tag>${project.version}-STAGE-${maven.build.timestamp}Z</tag>
+ </tags>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+
+ <distributionManagement>
+ <repository>
+ <id>ecomp-releases</id>
+ <name>Integration simulators Release Repository</name>
+ <url>${nexusproxy}${releaseNexusPath}</url>
+ </repository>
+ <snapshotRepository>
+ <id>ecomp-snapshots</id>
+ <name>Integration simulators Snapshot Repository</name>
+ <url>${nexusproxy}${snapshotNexusPath}</url>
+ </snapshotRepository>
+ <site>
+ <id>ecomp-site</id>
+ <url>dav:${nexusproxy}${sitePath}</url>
+ </site>
+ </distributionManagement>
+
+</project>
diff --git a/tapisimulator/src/main/java/org/onap/tapisimulator/Application.java b/tapisimulator/src/main/java/org/onap/tapisimulator/Application.java
new file mode 100644
index 0000000..fede151
--- /dev/null
+++ b/tapisimulator/src/main/java/org/onap/tapisimulator/Application.java
@@ -0,0 +1,33 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+}
diff --git a/tapisimulator/src/main/java/org/onap/tapisimulator/controller/TapiController.java b/tapisimulator/src/main/java/org/onap/tapisimulator/controller/TapiController.java
new file mode 100644
index 0000000..4b246ef
--- /dev/null
+++ b/tapisimulator/src/main/java/org/onap/tapisimulator/controller/TapiController.java
@@ -0,0 +1,73 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator.controller;
+
+import org.onap.tapisimulator.model.SipList;
+import org.onap.tapisimulator.service.TapiService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class TapiController {
+
+ @Autowired
+ TapiService tapiService;
+
+ @GetMapping("/cxf/tapi/v2/connectivities/service-interface-points/{connection-point}")
+ public SipList getTapiServiceInterfacePoint(@PathVariable("connection-point") String cep) {
+
+ return tapiService.getServiceInterfacePoints(cep);
+
+ }
+
+ @PostMapping("/cxf/tapi/v2/connectivities/create-service/{service-name}")
+ public String createTapiService(@PathVariable("service-name") String name, @RequestBody String requestbody) {
+ tapiService.processService(requestbody);
+ return "Service created Successfully";
+ }
+
+ @GetMapping("/cxf/tapi/v2/connectivities/get-service/{service-name}")
+ public String getTapiService(@PathVariable("service-name") String name) {
+
+ return tapiService.returnService(name);
+
+ }
+
+ @DeleteMapping("/cxf/tapi/v2/connectivities/delete-service/{service-name}")
+ public String deleteTapiService(@PathVariable("service-name") String name) {
+ tapiService.processDeleteService(name);
+ return "Service deleted successfully";
+
+ }
+
+ @GetMapping("/cxf/tapi/v2/connectivities/topology")
+ public String getTapiTopology() {
+
+ return tapiService.getTopology();
+
+ }
+
+}
diff --git a/tapisimulator/src/main/java/org/onap/tapisimulator/model/Name.java b/tapisimulator/src/main/java/org/onap/tapisimulator/model/Name.java
new file mode 100644
index 0000000..e5a6441
--- /dev/null
+++ b/tapisimulator/src/main/java/org/onap/tapisimulator/model/Name.java
@@ -0,0 +1,39 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Name {
+
+ @JsonProperty(value = "value-name")
+ private String valueName;
+
+ private String value;
+
+}
diff --git a/tapisimulator/src/main/java/org/onap/tapisimulator/model/Sip.java b/tapisimulator/src/main/java/org/onap/tapisimulator/model/Sip.java
new file mode 100644
index 0000000..fb39855
--- /dev/null
+++ b/tapisimulator/src/main/java/org/onap/tapisimulator/model/Sip.java
@@ -0,0 +1,49 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Sip {
+
+ @JsonProperty(value = "administrative-state")
+ private String administrativeState;
+
+ @JsonProperty(value = "lifecycle-state")
+ private String lifecycleState;
+
+ @JsonProperty(value = "layer-protocol-name")
+ private String layerProtocolName;
+
+ private List<Name> name;
+
+ private String uuid;
+
+}
diff --git a/tapisimulator/src/main/java/org/onap/tapisimulator/model/SipList.java b/tapisimulator/src/main/java/org/onap/tapisimulator/model/SipList.java
new file mode 100644
index 0000000..3a75be9
--- /dev/null
+++ b/tapisimulator/src/main/java/org/onap/tapisimulator/model/SipList.java
@@ -0,0 +1,36 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator.model;
+
+import java.util.List;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SipList {
+
+ private List<Sip> sip;
+
+}
diff --git a/tapisimulator/src/main/java/org/onap/tapisimulator/service/TapiService.java b/tapisimulator/src/main/java/org/onap/tapisimulator/service/TapiService.java
new file mode 100644
index 0000000..49b5689
--- /dev/null
+++ b/tapisimulator/src/main/java/org/onap/tapisimulator/service/TapiService.java
@@ -0,0 +1,156 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator.service;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+import javax.annotation.PostConstruct;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.onap.tapisimulator.model.Sip;
+import org.onap.tapisimulator.model.SipList;
+import org.onap.tapisimulator.utils.Utils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TapiService {
+
+ private static Logger log = LoggerFactory.getLogger(TapiService.class);
+
+ private volatile Map<String, String> serviceMap = new HashMap<>();
+
+ @Autowired
+ ObjectMapper mapper;
+
+ @Autowired
+ Utils utils;
+
+ private SipList siplist = null;
+
+ private List<Sip> sip = null;
+
+ private String topology;
+
+ @PostConstruct
+ public void init() throws IOException {
+ String domainController = System.getenv("Controller");
+ String servicePoints = "";
+ if (domainController.equals("TAPI1")) {
+ servicePoints = utils.readFromFile("/opt/onap/tapisimulator/templates/tapi1-siplist.json");
+ topology = utils.readFromFile("/opt/onap/tapisimulator/templates/tapi1-topology.json");
+ siplist = mapper.readValue(servicePoints, SipList.class);
+ sip = siplist.getSip();
+ log.debug("Inside init method of TapiService class");
+ } else if (domainController.equals("TAPI2")) {
+ servicePoints = utils.readFromFile("/opt/onap/tapisimulator/templates/tapi2-siplist.json");
+ topology = utils.readFromFile("/opt/onap/tapisimulator/templates/tapi2-topology.json");
+ siplist = mapper.readValue(servicePoints, SipList.class);
+ sip = siplist.getSip();
+ log.debug("Inside init method of TapiService class");
+ }
+
+ }
+
+ public SipList getServiceInterfacePoints(String connectionPoint) {
+
+ List<Sip> curSip = sip.stream().filter(c -> c.getUuid().equals(connectionPoint)).collect(Collectors.toList());
+
+ SipList newSip = new SipList();
+ newSip.setSip(curSip);
+ return newSip;
+ }
+
+ public Map<String, String> getServiceMap() {
+ return serviceMap;
+ }
+
+ public void setServiceMap(String key, String value) {
+ serviceMap.put(key, value);
+ }
+
+ public void processService(String request) {
+ JSONObject json = new JSONObject(request);
+ JSONArray conectivityList = json.getJSONArray("create-connectivity-service-input-list");
+ JSONObject connec = conectivityList.getJSONObject(0);
+ JSONArray eplist = connec.getJSONArray("end-point");
+ JSONArray name = connec.getJSONArray("name");
+ String serviceName = name.getJSONObject(0).getString("value");
+
+ createSErviceMap(eplist, serviceName, name);
+
+ }
+
+ public String returnService(String name) {
+
+ return serviceMap.get(name);
+
+ }
+
+ public String processDeleteService(String name) {
+
+ return serviceMap.remove(name);
+
+ }
+
+ public String getTopology() {
+
+ return topology;
+
+ }
+
+ private void createSErviceMap(JSONArray eplist, String serviceName, JSONArray name) {
+ JSONObject serviceEntry = new JSONObject();
+ serviceEntry.put("end-point", eplist);
+ serviceEntry.put("topology-constraint", new JSONArray());
+ serviceEntry.put("routing-constraint", new JSONObject());
+ serviceEntry.put("connectivity-constraint", new JSONObject());
+ serviceEntry.put("uuid", UUID.randomUUID().toString());
+ serviceEntry.put("layer-protocol-name", "ODU");
+ serviceEntry.put("direction", "BIDIRECTIONAL");
+ serviceEntry.put("administrative-state", "UNLOCKED");
+ serviceEntry.put("operational-state", "ENABLED");
+ JSONArray connection = new JSONArray();
+ JSONObject connectionObject = new JSONObject();
+ connectionObject.put("connection-uuid", UUID.randomUUID().toString());
+ connection.put(0, connectionObject);
+ serviceEntry.put("connection", connection);
+ serviceEntry.put("name", name);
+
+ JSONObject service = new JSONObject();
+ JSONArray serviceList = new JSONArray();
+ serviceList.put(0, serviceEntry);
+ service.put("service", serviceList);
+
+ serviceMap.put(serviceName, service.toString());
+ }
+
+}
diff --git a/tapisimulator/src/main/java/org/onap/tapisimulator/utils/Utils.java b/tapisimulator/src/main/java/org/onap/tapisimulator/utils/Utils.java
new file mode 100644
index 0000000..8d2ac4d
--- /dev/null
+++ b/tapisimulator/src/main/java/org/onap/tapisimulator/utils/Utils.java
@@ -0,0 +1,64 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator.utils;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.nio.file.Files;
+
+import org.springframework.stereotype.Component;
+import org.springframework.util.ResourceUtils;
+
+@Component
+public class Utils {
+
+ public void readFileclasspath() throws IOException {
+ File file = ResourceUtils.getFile("classpath:config/sample.txt");
+
+ // File is found
+ System.out.println("File Found : " + file.exists());
+
+ // Read File Content
+ String content = new String(Files.readAllBytes(file.toPath()));
+ System.out.println(content);
+ }
+
+ public String readFromFile(String file) {
+ String content = "";
+ try {
+
+ BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
+ content = bufferedReader.readLine();
+ String temp;
+ while ((temp = bufferedReader.readLine()) != null) {
+ content = content.concat(temp);
+ }
+ content = content.trim();
+ bufferedReader.close();
+ } catch (Exception e) {
+ content = null;
+ }
+ return content;
+ }
+
+}
diff --git a/tapisimulator/src/main/resources/application.properties b/tapisimulator/src/main/resources/application.properties
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tapisimulator/src/main/resources/application.properties
diff --git a/tapisimulator/src/main/resources/logback.xml b/tapisimulator/src/main/resources/logback.xml
new file mode 100644
index 0000000..10f7ccf
--- /dev/null
+++ b/tapisimulator/src/main/resources/logback.xml
@@ -0,0 +1,28 @@
+<configuration>
+ <appender name="FILE-THREAD" class="ch.qos.logback.classic.sift.SiftingAppender">
+ <discriminator>
+ <key>logFileName</key>
+ <defaultValue>dcasim</defaultValue>
+ </discriminator>
+
+ <sift>
+ <appender name="file-${logFileName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>/var/log/onap/dcasimulator/${logFileName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <fileNamePattern>${logFileName}.%i.log.zip</fileNamePattern>
+ <minIndex>1</minIndex>
+ <maxIndex>5</maxIndex>
+ </rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <maxFileSize>5MB</maxFileSize>
+ </triggeringPolicy>
+ <encoder>
+ <pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n</pattern>
+ </encoder>
+ </appender>
+ </sift>
+ </appender>
+ <root level="debug">
+ <appender-ref ref="FILE-THREAD" />
+ </root>
+</configuration>
diff --git a/tapisimulator/src/test/java/org/onap/tapisimulator/Config.java b/tapisimulator/src/test/java/org/onap/tapisimulator/Config.java
new file mode 100644
index 0000000..3ea4d5e
--- /dev/null
+++ b/tapisimulator/src/test/java/org/onap/tapisimulator/Config.java
@@ -0,0 +1,44 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator;
+
+import static org.mockito.Mockito.when;
+
+import org.mockito.Mockito;
+import org.onap.tapisimulator.utils.Utils;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class Config {
+
+ @Bean
+ public Utils utils() {
+ Utils utils = Mockito.mock(Utils.class);
+ String topology = TestUtils.readFileclasspath("tapi-topology.json");
+ String sipList = TestUtils.readFileclasspath("siplist.json");
+ when(utils.readFromFile("/opt/onap/tapisimulator/templates/tapi1-topology.json")).thenReturn(topology);
+ when(utils.readFromFile("/opt/onap/tapisimulator/templates/tapi1-siplist.json")).thenReturn(sipList);
+
+ return utils;
+ }
+
+}
diff --git a/tapisimulator/src/test/java/org/onap/tapisimulator/TestUtils.java b/tapisimulator/src/test/java/org/onap/tapisimulator/TestUtils.java
new file mode 100644
index 0000000..102d2b3
--- /dev/null
+++ b/tapisimulator/src/test/java/org/onap/tapisimulator/TestUtils.java
@@ -0,0 +1,47 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.util.FileCopyUtils;
+
+public class TestUtils {
+
+ public static String readFileclasspath(String filename) {
+ String data = "";
+ Resource resource = new ClassPathResource(filename);
+ InputStream inputStream;
+ try {
+ inputStream = resource.getInputStream();
+ byte[] bdata = FileCopyUtils.copyToByteArray(inputStream);
+ data = new String(bdata, StandardCharsets.UTF_8);
+ return data;
+ } catch (IOException e) {
+ return data;
+ }
+ }
+
+}
diff --git a/tapisimulator/src/test/java/org/onap/tapisimulator/controller/TestTapiController.java b/tapisimulator/src/test/java/org/onap/tapisimulator/controller/TestTapiController.java
new file mode 100644
index 0000000..9b4c2f3
--- /dev/null
+++ b/tapisimulator/src/test/java/org/onap/tapisimulator/controller/TestTapiController.java
@@ -0,0 +1,103 @@
+/*
+ * ============LICENSE_START=======================================================
+ * TAPI-SIMULATOR
+ * ================================================================================
+ * Copyright (C) 2020 Fujitsu Limited. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.tapisimulator.controller;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.onap.tapisimulator.Application;
+import org.onap.tapisimulator.Config;
+import org.onap.tapisimulator.TestUtils;
+import org.onap.tapisimulator.service.TapiService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(
+ properties = "spring.main.allow-bean-definition-overriding=true",
+ classes = {Application.class, Config.class},
+ webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class TestTapiController {
+ @LocalServerPort
+ private int port;
+
+ @Autowired
+ TapiService tapiService;
+
+ @Autowired
+ TestRestTemplate restTemplate;
+
+ @Before
+ public void beforeEach() {
+
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void testTopology() throws Exception {
+ String topology = TestUtils.readFileclasspath("tapi-topology.json");
+ String uri = "http://localhost:" + port + "/cxf/tapi/v2/connectivities/topology";
+ ResponseEntity<String> response = this.restTemplate.getForEntity(uri, String.class);
+
+ HttpStatus status = response.getStatusCode();
+ assertEquals(status, HttpStatus.OK);
+ String content = response.getBody();
+ assertEquals(content, topology);
+ }
+
+ @Test
+ public void testServiceCreateTapi() throws Exception {
+ String serviceCreaterequest = TestUtils.readFileclasspath("service-create-tapi.json");
+ String expectedResponse = "Service created Successfully";
+ String name = "test";
+ String uri = "http://localhost:" + port + "/cxf/tapi/v2/connectivities/create-service/" + name;
+ ResponseEntity<String> response = this.restTemplate.postForEntity(uri, serviceCreaterequest, String.class);
+ HttpStatus status = response.getStatusCode();
+ assertEquals(HttpStatus.OK, status);
+ String content = response.getBody();
+ assertEquals(content, expectedResponse);
+ }
+
+ @Test
+ public void deleteTapiServiceTest() {
+ String expectedResponse = "Service deleted successfully";
+ String name = "test";
+ String uri = "http://localhost:" + port + "/cxf/tapi/v2/connectivities/delete-service/" + name;
+ HttpEntity<String> entity = new HttpEntity<>("");
+ ResponseEntity<String> response = this.restTemplate.exchange(uri, HttpMethod.DELETE, entity, String.class);
+ HttpStatus status = response.getStatusCode();
+ assertEquals(HttpStatus.OK, status);
+ String content = response.getBody();
+ assertEquals(content, expectedResponse);
+
+ }
+
+}
diff --git a/tapisimulator/src/test/resources/service-create-tapi.json b/tapisimulator/src/test/resources/service-create-tapi.json
new file mode 100644
index 0000000..ec03cef
--- /dev/null
+++ b/tapisimulator/src/test/resources/service-create-tapi.json
@@ -0,0 +1,54 @@
+{
+ "create-connectivity-service-input-list": [
+ {
+ "end-point": [
+ {
+ "local-id": "/OTN/Node2-456/ODU2:1-1-1",
+ "layer-protocol-name": "ODU",
+ "connection-end-point": [
+ {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f",
+ "node-edge-point-uuid": "456789",
+ "node-uuid": "Node2-456",
+ "connection-end-point-uuid": "efghi"
+ }
+ ],
+ "service-interface-point": {
+ "service-interface-point-uuid": "efghi"
+ },
+ "protection-role": "WORK"
+ },
+ {
+ "local-id": "/OTN/Node1-123/ODU2:1-1-1",
+ "layer-protocol-name": "ODU",
+ "connection-end-point": [
+ {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f",
+ "node-edge-point-uuid": "123456",
+ "node-uuid": "Node1-123",
+ "connection-end-point-uuid": "abcde"
+ }
+ ],
+ "service-interface-point": {
+ "service-interface-point-uuid": "abcde"
+ },
+ "protection-role": "WORK"
+ }
+ ],
+ "layer-protocol-name": "ODU",
+ "connectivity-constraint": {
+ "service-type": "POINT_TO_POINT_CONNECTIVITY"
+ },
+ "routing-constraint": {
+ "route-objective-function": "MIN_WORK_ROUTE_COST"
+ },
+ "topology-constraint": [],
+ "name": [
+ {
+ "value-name": "service-name",
+ "value": "test"
+ }
+ ]
+ }
+ ]
+}
diff --git a/tapisimulator/src/test/resources/siplist.json b/tapisimulator/src/test/resources/siplist.json
new file mode 100644
index 0000000..dc5d673
--- /dev/null
+++ b/tapisimulator/src/test/resources/siplist.json
@@ -0,0 +1,52 @@
+{
+ "sip": [
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "abcde",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ },
+ {
+ "layer-protocol-name": "ODU",
+ "uuid": "efghi",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "ODU2"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+}
diff --git a/tapisimulator/src/test/resources/tapi-topology.json b/tapisimulator/src/test/resources/tapi-topology.json
new file mode 100644
index 0000000..f4278dc
--- /dev/null
+++ b/tapisimulator/src/test/resources/tapi-topology.json
@@ -0,0 +1,135 @@
+{
+ "topology": [
+ {
+ "uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f",
+ "link": [],
+ "layer-protocol-name": [],
+ "node": [
+ {
+ "encap-topology": {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ },
+ "uuid": "Node1-123",
+ "node-edge-point": [
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "abcde",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "123456",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node1"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ],
+ "layer-protocol-name": [
+ "ODU"
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "Node1"
+ }
+ ]
+ },
+ {
+ "encap-topology": {
+ "topology-uuid": "754a91dc-dcd1-3530-8e95-a4880c298a1f"
+ },
+ "uuid": "Node2-456",
+ "node-edge-point": [
+ {
+ "tapi-connectivity:cep-list": {
+ "connection-end-point": [
+ {
+ "uuid": "efghi",
+ "name": [
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ]
+ },
+ "link-port-direction": "BIDIRECTIONAL",
+ "layer-protocol-name": "ODU",
+ "uuid": "456789",
+ "administrative-state": "UNLOCKED",
+ "lifecycle-state": "INSTALLED",
+ "name": [
+ {
+ "value-name": "tid",
+ "value": "Node2"
+ },
+ {
+ "value-name": "name",
+ "value": "1-1-1"
+ },
+ {
+ "value-name": "rate",
+ "value": "10GE"
+ },
+ {
+ "value-name": "direction",
+ "value": "BI"
+ }
+ ]
+ }
+ ],
+ "layer-protocol-name": [
+ "ODU"
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "Node2"
+ }
+ ]
+ }
+ ],
+ "name": [
+ {
+ "value-name": "name",
+ "value": "OTN"
+ }
+ ]
+ }
+ ]
+}