diff options
Diffstat (limited to 'tapisimulator')
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" + } + ] + } + ] +} |