aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn2
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkBB.bpmn95
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteNetworkBB.bpmn52
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/NetworkAdapterRestV1.bpmn198
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java34
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java18
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1.java123
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClient.java8
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClientImpl.java28
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapper.java22
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/NetworkAdapterResources.java27
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java14
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java26
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1Test.java19
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapperTest.java56
-rw-r--r--common/src/main/java/org/onap/so/exceptions/ValidationException.java10
-rw-r--r--common/src/test/java/org/onap/so/exceptions/ValidationExceptionTest.java4
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/MsoRequest.java2
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java73
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/MsoRequestTest.java10
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java109
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/AssignCloudConfigVnf.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/Network.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkCloudConfig.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelCustomizationId.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelVersionId.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/ProductFamilyId.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsModelVersionId.json6
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatform.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatformName.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsVnfModelInfo.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelCustomizationId.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelVersionId.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModules.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModulesModelInfo.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelCustomizationId.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelVersionId.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/SuccessfulValidation/ServiceAssign.json8
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/ServiceAssign.json7
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/MacroRequest.json135
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelCustomizationId.json137
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelInfoNoModelType.json134
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelInvariantId.json135
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelName.json135
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelType.json135
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelVersion.json135
-rw-r--r--mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelVersionId.json135
47 files changed, 1961 insertions, 191 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn
index 0032b0e0b7..0ef6c84494 100644
--- a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn
+++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn
@@ -20,7 +20,7 @@ ExceptionUtil exceptionUtil = new ExceptionUtil()
exceptionUtil.buildWorkflowException(execution, 7000, "Could not communicate with the SDNC Adapter" )]]></bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:sequenceFlow id="Exception" name="Exception" sourceRef="setBadResponse" targetRef="badResponseEndFlow" />
- <bpmn2:serviceTask id="invokeSDNCAdapter" name="Invoke SDNC Adapter" camunda:asyncAfter="true" camunda:class="">
+ <bpmn2:serviceTask id="invokeSDNCAdapter" name="Invoke SDNC Adapter" camunda:class="">
<bpmn2:extensionElements>
<camunda:connector>
<camunda:inputOutput>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkBB.bpmn
index 21f2fbeeb9..52b9249468 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkBB.bpmn
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
<bpmn2:process id="CreateNetworkBB" name="CreateNetworkBB" isExecutable="true">
<bpmn2:startEvent id="createNetwork_startEvent">
<bpmn2:outgoing>SequenceFlow_1maepy7</bpmn2:outgoing>
@@ -13,7 +13,7 @@
</bpmn2:serviceTask>
<bpmn2:serviceTask id="Create_Network_ServiceTask" name="&#10;AIC&#10;Create&#10;(network)&#10;" camunda:expression="${NetworkAdapterCreateTasks.createNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
<bpmn2:incoming>SequenceFlow_1eqfh23</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_0innva6</bpmn2:outgoing>
+ <bpmn2:outgoing>SequenceFlow_1fm99t6</bpmn2:outgoing>
</bpmn2:serviceTask>
<bpmn2:serviceTask id="QueryNetworkPolicy_ServiceTask" name="&#10;AAI&#10;Query&#10;(net policy)&#10;" camunda:expression="${AAIQueryTasks.queryNetworkPolicy(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
<bpmn2:incoming>SequenceFlow_0n42zi5</bpmn2:incoming>
@@ -24,12 +24,11 @@
<bpmn2:outgoing>SequenceFlow_1h9kkhb</bpmn2:outgoing>
</bpmn2:serviceTask>
<bpmn2:serviceTask id="Update_Network_AAI_ServiceTask" name="&#10;AAI&#10;Update (network)&#10;" camunda:expression="${AAIUpdateTasks.updateNetworkCreated(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
- <bpmn2:incoming>SequenceFlow_0innva6</bpmn2:incoming>
+ <bpmn2:incoming>SequenceFlow_16152be</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_0sissul</bpmn2:outgoing>
</bpmn2:serviceTask>
<bpmn2:sequenceFlow id="SequenceFlow_0n42zi5" sourceRef="QueryVpnBinding_ServiceTask" targetRef="QueryNetworkPolicy_ServiceTask" />
<bpmn2:sequenceFlow id="SequenceFlow_1yy4aik" sourceRef="QueryNetworkPolicy_ServiceTask" targetRef="QueryNetworkTableRef_ServiceTask" />
- <bpmn2:sequenceFlow id="SequenceFlow_0innva6" sourceRef="Create_Network_ServiceTask" targetRef="Update_Network_AAI_ServiceTask" />
<bpmn2:sequenceFlow id="SequenceFlow_0sissul" sourceRef="Update_Network_AAI_ServiceTask" targetRef="createNetwork_EndEvent" />
<bpmn2:sequenceFlow id="SequenceFlow_1maepy7" sourceRef="createNetwork_startEvent" targetRef="ServiceTask_get_cloud_region" />
<bpmn2:intermediateThrowEvent id="ThrowEvent_ToCollectAAIData" name="ThrowEvent_ToCollectAAIData">
@@ -45,7 +44,7 @@
<bpmn2:linkEventDefinition name="CatchEvent_Create_Network" />
</bpmn2:intermediateCatchEvent>
<bpmn2:intermediateThrowEvent id="ThrowEvent_ToCreateNetwork" name="ThrowEvent_ToCreateNetwork">
- <bpmn2:incoming>SequenceFlow_04w6hdq</bpmn2:incoming>
+ <bpmn2:incoming>SequenceFlow_0y0w60u</bpmn2:incoming>
<bpmn2:linkEventDefinition name="CatchEvent_Create_Network" />
</bpmn2:intermediateThrowEvent>
<bpmn2:sequenceFlow id="SequenceFlow_1h9kkhb" sourceRef="QueryNetworkTableRef_ServiceTask" targetRef="QueryNetworkSubnet_ServiceTask" />
@@ -56,11 +55,27 @@
<bpmn2:outgoing>SequenceFlow_03ebe6c</bpmn2:outgoing>
</bpmn2:serviceTask>
<bpmn2:sequenceFlow id="SequenceFlow_03ebe6c" sourceRef="ServiceTask_get_cloud_region" targetRef="ThrowEvent_ToCollectAAIData" />
+ <bpmn2:callActivity id="CallActivity_0aj19il" name="Call NetworkAdapterRestV1" calledElement="NetworkAdapterRestV1">
+ <bpmn2:extensionElements>
+ <camunda:in source="networkAdapterRequest" target="networkAdapterRequest" />
+ <camunda:out source="WorkflowException" target="WorkflowException" />
+ <camunda:out source="createNetworkResponse" target="createNetworkResponse" />
+ </bpmn2:extensionElements>
+ <bpmn2:incoming>SequenceFlow_1fm99t6</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_0qpu80i</bpmn2:outgoing>
+ </bpmn2:callActivity>
+ <bpmn2:serviceTask id="ServiceTask_1k8gsz5" name="Process Response From Openstack" camunda:expression="${NetworkAdapterCreateTasks.processResponseFromOpenstack(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn2:incoming>SequenceFlow_0qpu80i</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_16152be</bpmn2:outgoing>
+ </bpmn2:serviceTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_0qpu80i" sourceRef="CallActivity_0aj19il" targetRef="ServiceTask_1k8gsz5" />
+ <bpmn2:sequenceFlow id="SequenceFlow_16152be" sourceRef="ServiceTask_1k8gsz5" targetRef="Update_Network_AAI_ServiceTask" />
+ <bpmn2:sequenceFlow id="SequenceFlow_1fm99t6" sourceRef="Create_Network_ServiceTask" targetRef="CallActivity_0aj19il" />
<bpmn2:serviceTask id="QueryNetworkSubnet_ServiceTask" name="&#10;AAI&#10;Query&#10;(subnet)&#10;" camunda:expression="${AAIQueryTasks.querySubnet(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
<bpmn2:incoming>SequenceFlow_1h9kkhb</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_04w6hdq</bpmn2:outgoing>
+ <bpmn2:outgoing>SequenceFlow_0y0w60u</bpmn2:outgoing>
</bpmn2:serviceTask>
- <bpmn2:sequenceFlow id="SequenceFlow_04w6hdq" sourceRef="QueryNetworkSubnet_ServiceTask" targetRef="ThrowEvent_ToCreateNetwork" />
+ <bpmn2:sequenceFlow id="SequenceFlow_0y0w60u" sourceRef="QueryNetworkSubnet_ServiceTask" targetRef="ThrowEvent_ToCreateNetwork" />
</bpmn2:process>
<bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
<bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
@@ -73,9 +88,9 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_10l9a3s_di" bpmnElement="createNetwork_EndEvent">
- <dc:Bounds x="656" y="326" width="36" height="36" />
+ <dc:Bounds x="997" y="326" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="652" y="362" width="46" height="12" />
+ <dc:Bounds x="971" y="362" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ServiceTask_1k7d8ih_di" bpmnElement="QueryVpnBinding_ServiceTask">
@@ -91,7 +106,7 @@
<dc:Bounds x="663" y="91" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ServiceTask_0q51h0f_di" bpmnElement="Update_Network_AAI_ServiceTask">
- <dc:Bounds x="499" y="304" width="100" height="80" />
+ <dc:Bounds x="836" y="304" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0n42zi5_di" bpmnElement="SequenceFlow_0n42zi5">
<di:waypoint xsi:type="dc:Point" x="440" y="131" />
@@ -107,18 +122,11 @@
<dc:Bounds x="633" y="106" width="0" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0innva6_di" bpmnElement="SequenceFlow_0innva6">
- <di:waypoint xsi:type="dc:Point" x="446" y="344" />
- <di:waypoint xsi:type="dc:Point" x="499" y="344" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="473" y="319" width="0" height="0" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0sissul_di" bpmnElement="SequenceFlow_0sissul">
- <di:waypoint xsi:type="dc:Point" x="599" y="344" />
- <di:waypoint xsi:type="dc:Point" x="656" y="344" />
+ <di:waypoint xsi:type="dc:Point" x="936" y="344" />
+ <di:waypoint xsi:type="dc:Point" x="997" y="344" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="628" y="319" width="0" height="0" />
+ <dc:Bounds x="921.5" y="329" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1maepy7_di" bpmnElement="SequenceFlow_1maepy7">
@@ -147,16 +155,16 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="IntermediateThrowEvent_04qwhex_di" bpmnElement="ThrowEvent_ToCreateNetwork">
- <dc:Bounds x="972" y="113" width="36" height="36" />
+ <dc:Bounds x="962" y="113" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1015" y="125" width="86" height="24" />
+ <dc:Bounds x="1005" y="125" width="86" height="24" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1h9kkhb_di" bpmnElement="SequenceFlow_1h9kkhb">
<di:waypoint xsi:type="dc:Point" x="763" y="131" />
- <di:waypoint xsi:type="dc:Point" x="818" y="131" />
+ <di:waypoint xsi:type="dc:Point" x="817" y="131" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="745.5" y="116" width="90" height="0" />
+ <dc:Bounds x="745" y="116" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1oc7wcr_di" bpmnElement="SequenceFlow_1oc7wcr">
@@ -183,14 +191,41 @@
<dc:Bounds x="551" y="-52" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ServiceTask_0j3odqk_di" bpmnElement="QueryNetworkSubnet_ServiceTask">
- <dc:Bounds x="818" y="91" width="100" height="80" />
+ <bpmndi:BPMNShape id="CallActivity_0aj19il_di" bpmnElement="CallActivity_0aj19il">
+ <dc:Bounds x="503" y="304" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_1k8gsz5_di" bpmnElement="ServiceTask_1k8gsz5">
+ <dc:Bounds x="663" y="304" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0qpu80i_di" bpmnElement="SequenceFlow_0qpu80i">
+ <di:waypoint xsi:type="dc:Point" x="603" y="344" />
+ <di:waypoint xsi:type="dc:Point" x="663" y="344" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="633" y="323" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_16152be_di" bpmnElement="SequenceFlow_16152be">
+ <di:waypoint xsi:type="dc:Point" x="763" y="344" />
+ <di:waypoint xsi:type="dc:Point" x="836" y="344" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="799.5" y="323" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1fm99t6_di" bpmnElement="SequenceFlow_1fm99t6">
+ <di:waypoint xsi:type="dc:Point" x="446" y="344" />
+ <di:waypoint xsi:type="dc:Point" x="503" y="344" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="474.5" y="323" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0u4ie2q_di" bpmnElement="QueryNetworkSubnet_ServiceTask">
+ <dc:Bounds x="817" y="91" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_04w6hdq_di" bpmnElement="SequenceFlow_04w6hdq">
- <di:waypoint xsi:type="dc:Point" x="918" y="131" />
- <di:waypoint xsi:type="dc:Point" x="972" y="131" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0y0w60u_di" bpmnElement="SequenceFlow_0y0w60u">
+ <di:waypoint xsi:type="dc:Point" x="917" y="131" />
+ <di:waypoint xsi:type="dc:Point" x="962" y="131" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="945" y="110" width="0" height="12" />
+ <dc:Bounds x="939.5" y="110" width="0" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteNetworkBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteNetworkBB.bpmn
index 95e481db4f..74b78ef735 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteNetworkBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteNetworkBB.bpmn
@@ -5,19 +5,29 @@
<bpmn:outgoing>SequenceFlow_1mc3d3f</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:serviceTask id="updateNetworkAAI" name="&#10;AAI &#10;Update&#10;(network)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
- <bpmn:incoming>SequenceFlow_1c906im</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_0gnafn2</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0nhd7b7</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:sequenceFlow id="SequenceFlow_1mc3d3f" sourceRef="deleteNetwork_startEvent" targetRef="deleteNetworkAIC" />
- <bpmn:sequenceFlow id="SequenceFlow_1c906im" sourceRef="deleteNetworkAIC" targetRef="updateNetworkAAI" />
<bpmn:serviceTask id="deleteNetworkAIC" name="&#10;AIC&#10;Delete&#10;(network)&#10;" camunda:expression="${NetworkAdapterDeleteTasks.deleteNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
<bpmn:incoming>SequenceFlow_1mc3d3f</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1c906im</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_16ti327</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:endEvent id="deleteNetwork_endEvent">
<bpmn:incoming>SequenceFlow_0nhd7b7</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_0nhd7b7" sourceRef="updateNetworkAAI" targetRef="deleteNetwork_endEvent" />
+ <bpmn:callActivity id="CallActivity_1a77pxk" name="Call NetworkAdapterRestV1" calledElement="NetworkAdapterRestV1">
+ <bpmn:extensionElements>
+ <camunda:in source="networkAdapterRequest" target="networkAdapterRequest" />
+ <camunda:out source="WorkflowException" target="WorkflowException" />
+ <camunda:out source="deleteNetworkResponse" target="deleteNetworkResponse" />
+ </bpmn:extensionElements>
+ <bpmn:incoming>SequenceFlow_16ti327</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0gnafn2</bpmn:outgoing>
+ </bpmn:callActivity>
+ <bpmn:sequenceFlow id="SequenceFlow_16ti327" sourceRef="deleteNetworkAIC" targetRef="CallActivity_1a77pxk" />
+ <bpmn:sequenceFlow id="SequenceFlow_0gnafn2" sourceRef="CallActivity_1a77pxk" targetRef="updateNetworkAAI" />
</bpmn:process>
<bpmn:error id="Error_1l8dsnn" name="Error_31mlvpb" />
<bpmn:error id="Error_0wyyz4k" name="Error_0v8f773" />
@@ -38,24 +48,17 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ServiceTask_0zd65z2_di" bpmnElement="updateNetworkAAI">
- <dc:Bounds x="530" y="80" width="100" height="80" />
+ <dc:Bounds x="644" y="80" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1mc3d3f_di" bpmnElement="SequenceFlow_1mc3d3f">
<di:waypoint xsi:type="dc:Point" x="209" y="120" />
- <di:waypoint xsi:type="dc:Point" x="370" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="317" y="120" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="244.5" y="99" width="90" height="12" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1c906im_di" bpmnElement="SequenceFlow_1c906im">
- <di:waypoint xsi:type="dc:Point" x="470" y="120" />
- <di:waypoint xsi:type="dc:Point" x="530" y="120" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="455" y="99" width="90" height="12" />
+ <dc:Bounds x="218" y="99" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ServiceTask_1gcfuzf_di" bpmnElement="deleteNetworkAIC">
- <dc:Bounds x="370" y="80" width="100" height="80" />
+ <dc:Bounds x="317" y="80" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_02vxchc_di" bpmnElement="deleteNetwork_endEvent">
<dc:Bounds x="806" y="102" width="36" height="36" />
@@ -64,10 +67,27 @@
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0nhd7b7_di" bpmnElement="SequenceFlow_0nhd7b7">
- <di:waypoint xsi:type="dc:Point" x="630" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="744" y="120" />
<di:waypoint xsi:type="dc:Point" x="806" y="120" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="673" y="99" width="90" height="12" />
+ <dc:Bounds x="730" y="99" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="CallActivity_1a77pxk_di" bpmnElement="CallActivity_1a77pxk">
+ <dc:Bounds x="481" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_16ti327_di" bpmnElement="SequenceFlow_16ti327">
+ <di:waypoint xsi:type="dc:Point" x="417" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="481" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="449" y="99" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0gnafn2_di" bpmnElement="SequenceFlow_0gnafn2">
+ <di:waypoint xsi:type="dc:Point" x="581" y="120" />
+ <di:waypoint xsi:type="dc:Point" x="644" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="612.5" y="99" width="0" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/NetworkAdapterRestV1.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/NetworkAdapterRestV1.bpmn
new file mode 100644
index 0000000000..583ec9444e
--- /dev/null
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/NetworkAdapterRestV1.bpmn
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_GraPIIyxEeWmdMDkx6Uftw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+ <bpmn2:process id="NetworkAdapterRestV1" name="NetworkAdapterRestV1" isExecutable="true">
+ <bpmn2:boundaryEvent id="BoundaryEvent_1" name="Timeout" attachedToRef="waitForAsyncMessage">
+ <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing>
+ <bpmn2:timerEventDefinition id="TimerEventDefinition_1">
+ <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression"><![CDATA[${UrnPropertiesReader.getVariable("mso.po.timeout", execution)}]]></bpmn2:timeDuration>
+ </bpmn2:timerEventDefinition>
+ </bpmn2:boundaryEvent>
+ <bpmn2:subProcess id="waitForAsyncMessage" name="Wait for Callback">
+ <bpmn2:incoming>SequenceFlow_1286mqm</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing>
+ <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" name="Catch Event">
+ <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_26</bpmn2:outgoing>
+ <bpmn2:messageEventDefinition id="MessageEventDefinition_1" messageRef="Message_1" />
+ </bpmn2:intermediateCatchEvent>
+ <bpmn2:sequenceFlow id="SequenceFlow_26" name="" sourceRef="IntermediateCatchEvent_1" targetRef="EndEvent_2" />
+ <bpmn2:startEvent id="StartEvent_3">
+ <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing>
+ </bpmn2:startEvent>
+ <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="StartEvent_3" targetRef="IntermediateCatchEvent_1" />
+ <bpmn2:endEvent id="EndEvent_2">
+ <bpmn2:incoming>SequenceFlow_26</bpmn2:incoming>
+ </bpmn2:endEvent>
+ </bpmn2:subProcess>
+ <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="BoundaryEvent_1" targetRef="ScriptTask_5" />
+ <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="waitForAsyncMessage" targetRef="ServiceTask_6" />
+ <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="ScriptTask_5" targetRef="EndEvent_8" />
+ <bpmn2:endEvent id="EndEvent_8">
+ <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming>
+ <bpmn2:errorEventDefinition id="_ErrorEventDefinition_21" errorRef="Error_1" />
+ </bpmn2:endEvent>
+ <bpmn2:endEvent id="EndEvent_6" name="End Flow">
+ <bpmn2:incoming>SequenceFlow_06donih</bpmn2:incoming>
+ </bpmn2:endEvent>
+ <bpmn2:startEvent id="StartEvent_1" name="Start">
+ <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+ </bpmn2:startEvent>
+ <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="StartEvent_1" targetRef="Call_NetworkAdapter" />
+ <bpmn2:serviceTask id="Call_NetworkAdapter" name="Call Network Adapter" camunda:expression="${NetworkAdapterRestV1.callNetworkAdapter(execution)}">
+ <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_1286mqm</bpmn2:outgoing>
+ </bpmn2:serviceTask>
+ <bpmn2:serviceTask id="ServiceTask_4" name="Workflow Exception (bad response)" camunda:expression="${NetworkAdapterRestV1.handleSyncError(execution)}">
+ <bpmn2:incoming>SequenceFlow_1qckanf</bpmn2:incoming>
+ </bpmn2:serviceTask>
+ <bpmn2:serviceTask id="ScriptTask_5" name="Workflow Exception (timeout)" camunda:expression="${NetworkAdapterRestV1.handleTimeOutException(execution)}">
+ <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
+ </bpmn2:serviceTask>
+ <bpmn2:serviceTask id="ServiceTask_6" name="Process Callback" camunda:expression="${NetworkAdapterRestV1.processCallback(execution)}">
+ <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_06donih</bpmn2:outgoing>
+ </bpmn2:serviceTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_06donih" sourceRef="ServiceTask_6" targetRef="EndEvent_6" />
+ <bpmn2:boundaryEvent id="BoundaryEvent_1edt16j" attachedToRef="Call_NetworkAdapter">
+ <bpmn2:outgoing>SequenceFlow_1qckanf</bpmn2:outgoing>
+ <bpmn2:errorEventDefinition />
+ </bpmn2:boundaryEvent>
+ <bpmn2:sequenceFlow id="SequenceFlow_1qckanf" sourceRef="BoundaryEvent_1edt16j" targetRef="ServiceTask_4" />
+ <bpmn2:sequenceFlow id="SequenceFlow_1286mqm" sourceRef="Call_NetworkAdapter" targetRef="waitForAsyncMessage" />
+ </bpmn2:process>
+ <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+ <bpmn2:message id="Message_1" name="WorkflowMessage" />
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="NetworkAdapterRestV1">
+ <bpmndi:BPMNShape id="_BPMNShape_SubProcess_14" bpmnElement="waitForAsyncMessage" isExpanded="true">
+ <dc:Bounds x="685" y="110" width="265" height="154" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_24" bpmnElement="BoundaryEvent_1">
+ <dc:Bounds x="800" y="246" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="841" y="276" width="41" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_20" bpmnElement="IntermediateCatchEvent_1">
+ <dc:Bounds x="804" y="165" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="792" y="206" width="61" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_54" bpmnElement="StartEvent_1">
+ <dc:Bounds x="340" y="169" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="346" y="210" width="24" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_StartEvent_54" targetElement="ServiceTask_1tl2aox_di">
+ <di:waypoint xsi:type="dc:Point" x="376" y="187" />
+ <di:waypoint xsi:type="dc:Point" x="453" y="187" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="369.5" y="169" width="90" height="6" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_55" bpmnElement="StartEvent_3">
+ <dc:Bounds x="709" y="165" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="682" y="206" width="90" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_StartEvent_55" targetElement="_BPMNShape_IntermediateCatchEvent_20">
+ <di:waypoint xsi:type="dc:Point" x="745" y="183" />
+ <di:waypoint xsi:type="dc:Point" x="804" y="183" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="732" y="183" width="90" height="6" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_EndEvent_156" bpmnElement="EndEvent_2">
+ <dc:Bounds x="889" y="165" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="862" y="206" width="90" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_26" sourceElement="_BPMNShape_IntermediateCatchEvent_20" targetElement="_BPMNShape_EndEvent_156">
+ <di:waypoint xsi:type="dc:Point" x="840" y="183" />
+ <di:waypoint xsi:type="dc:Point" x="870" y="183" />
+ <di:waypoint xsi:type="dc:Point" x="870" y="182" />
+ <di:waypoint xsi:type="dc:Point" x="889" y="183" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="825" y="183" width="90" height="6" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_BoundaryEvent_24" targetElement="ServiceTask_1y9aa0r_di">
+ <di:waypoint xsi:type="dc:Point" x="818" y="282" />
+ <di:waypoint xsi:type="dc:Point" x="818" y="327" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="788" y="302" width="90" height="6" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_SubProcess_14" targetElement="ServiceTask_1s8txq3_di">
+ <di:waypoint xsi:type="dc:Point" x="950" y="186" />
+ <di:waypoint xsi:type="dc:Point" x="992" y="186" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="926" y="168" width="90" height="6" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_EndEvent_158" bpmnElement="EndEvent_6">
+ <dc:Bounds x="1131" y="168" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1126" y="209" width="46" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="_BPMNShape_EndEvent_160" bpmnElement="EndEvent_8">
+ <dc:Bounds x="915" y="349" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="888" y="390" width="90" height="0" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="SequenceFlow_34" sourceElement="ServiceTask_1y9aa0r_di" targetElement="_BPMNShape_EndEvent_160">
+ <di:waypoint xsi:type="dc:Point" x="868" y="367" />
+ <di:waypoint xsi:type="dc:Point" x="915" y="367" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="847" y="349" width="90" height="6" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1tl2aox_di" bpmnElement="Call_NetworkAdapter">
+ <dc:Bounds x="453" y="147" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0rll4jo_di" bpmnElement="ServiceTask_4">
+ <dc:Bounds x="503" y="327" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_1y9aa0r_di" bpmnElement="ScriptTask_5">
+ <dc:Bounds x="768" y="327" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_1s8txq3_di" bpmnElement="ServiceTask_6">
+ <dc:Bounds x="992" y="146" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_06donih_di" bpmnElement="SequenceFlow_06donih">
+ <di:waypoint xsi:type="dc:Point" x="1092" y="186" />
+ <di:waypoint xsi:type="dc:Point" x="1131" y="186" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1111.5" y="165" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="BoundaryEvent_0ubdwuw_di" bpmnElement="BoundaryEvent_1edt16j">
+ <dc:Bounds x="535" y="209" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="553" y="249" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1qckanf_di" bpmnElement="SequenceFlow_1qckanf">
+ <di:waypoint xsi:type="dc:Point" x="553" y="245" />
+ <di:waypoint xsi:type="dc:Point" x="553" y="327" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="568" y="280" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1286mqm_di" bpmnElement="SequenceFlow_1286mqm">
+ <di:waypoint xsi:type="dc:Point" x="553" y="187" />
+ <di:waypoint xsi:type="dc:Point" x="685" y="187" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="619" y="166" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java
index bc3845d760..4c531d46f9 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasks.java
@@ -21,8 +21,8 @@
package org.onap.so.bpmn.infrastructure.adapter.network.tasks;
import java.util.Map;
-import java.util.Optional;
+import org.onap.so.adapters.nwrest.CreateNetworkRequest;
import org.onap.so.adapters.nwrest.CreateNetworkResponse;
import org.onap.so.bpmn.common.BuildingBlockExecution;
import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
@@ -30,24 +30,23 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+import org.onap.so.client.adapter.network.mapper.NetworkAdapterObjectMapper;
import org.onap.so.client.exception.ExceptionBuilder;
import org.onap.so.client.orchestration.NetworkAdapterResources;
-import org.onap.so.logger.MsoLogger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class NetworkAdapterCreateTasks {
- private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, NetworkAdapterCreateTasks.class);
@Autowired
private ExtractPojosForBB extractPojosForBB;
@Autowired
- private NetworkAdapterResources networkAdapterResources;
- @Autowired
private ExceptionBuilder exceptionUtil;
-
-
+ @Autowired
+ private NetworkAdapterObjectMapper networkAdapterObjectMapper;
+ @Autowired
+ private NetworkAdapterResources networkAdapterResources;
public void createNetwork(BuildingBlockExecution execution) {
execution.setVariable("networkAdapterCreateRollback", false);
@@ -59,18 +58,29 @@ public class NetworkAdapterCreateTasks {
Map<String, String> userInput = gBBInput.getUserInput();
String cloudRegionPo = execution.getVariable("cloudRegionPo");
- Optional<CreateNetworkResponse> oCreateNetworkResponse = networkAdapterResources.createNetwork(gBBInput.getRequestContext(), gBBInput.getCloudRegion(), gBBInput.getOrchContext(), serviceInstance, l3Network, userInput, cloudRegionPo, gBBInput.getCustomer());
- if (oCreateNetworkResponse.isPresent()){
- CreateNetworkResponse createNetworkResponse = oCreateNetworkResponse.get();
+ CreateNetworkRequest createNetworkRequest = networkAdapterObjectMapper.createNetworkRequestMapper(gBBInput.getRequestContext(), gBBInput.getCloudRegion(), gBBInput.getOrchContext(), serviceInstance, l3Network, userInput, cloudRegionPo, gBBInput.getCustomer());
+
+ execution.setVariable("networkAdapterRequest", createNetworkRequest);
+ } catch (Exception ex) {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+ }
+ }
+
+ public void processResponseFromOpenstack(BuildingBlockExecution execution) {
+ try {
+ L3Network l3Network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
+
+ CreateNetworkResponse createNetworkResponse = execution.getVariable("createNetworkResponse");
+ if(createNetworkResponse != null) {
l3Network.setHeatStackId(createNetworkResponse.getNetworkStackId());
if (createNetworkResponse.getNetworkCreated()){
//setting rollback TRUE only if network was actually created (not a silent success OP)
- execution.setVariable("createNetworkResponse", createNetworkResponse);
execution.setVariable("networkAdapterCreateRollback", true);
}
+ } else {
+ throw new Exception("No response was sent back from NetworkAdapterRestV1 subflow.");
}
-
} catch (Exception ex) {
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java
index 1baa3f5dc9..41dabf9302 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasks.java
@@ -20,18 +20,15 @@
package org.onap.so.bpmn.infrastructure.adapter.network.tasks;
-import java.util.Optional;
-
-import org.onap.so.adapters.nwrest.DeleteNetworkResponse;
+import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
import org.onap.so.bpmn.common.BuildingBlockExecution;
-import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
+import org.onap.so.client.adapter.network.mapper.NetworkAdapterObjectMapper;
import org.onap.so.client.exception.ExceptionBuilder;
-import org.onap.so.client.orchestration.NetworkAdapterResources;
import org.onap.so.logger.MsoLogger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -42,7 +39,7 @@ public class NetworkAdapterDeleteTasks {
@Autowired
private ExtractPojosForBB extractPojosForBB;
@Autowired
- private NetworkAdapterResources networkAdapterResources;
+ private NetworkAdapterObjectMapper networkAdapterObjectMapper;
@Autowired
private ExceptionBuilder exceptionUtil;
@@ -53,14 +50,9 @@ public class NetworkAdapterDeleteTasks {
L3Network l3Network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
- Optional<DeleteNetworkResponse> oDeleteNetworkResponse = networkAdapterResources.deleteNetwork(gBBInput.getRequestContext(), gBBInput.getCloudRegion(), serviceInstance, l3Network);
+ DeleteNetworkRequest deleteNetworkRequest = networkAdapterObjectMapper.deleteNetworkRequestMapper(gBBInput.getRequestContext(), gBBInput.getCloudRegion(), serviceInstance, l3Network);
- if (oDeleteNetworkResponse.isPresent()){
- DeleteNetworkResponse deleteNetworkResponse = oDeleteNetworkResponse.get();
- if (deleteNetworkResponse.getNetworkDeleted()) {
- execution.setVariable("deleteNetworkResponse", deleteNetworkResponse);
- }
- }
+ execution.setVariable("networkAdapterRequest", deleteNetworkRequest);
} catch (Exception ex) {
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1.java
new file mode 100644
index 0000000000..d821223507
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1.java
@@ -0,0 +1,123 @@
+package org.onap.so.bpmn.infrastructure.adapter.network.tasks;
+
+import java.io.StringReader;
+import java.util.Optional;
+
+import javax.ws.rs.core.Response;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.so.adapters.nwrest.CreateNetworkError;
+import org.onap.so.adapters.nwrest.CreateNetworkRequest;
+import org.onap.so.adapters.nwrest.CreateNetworkResponse;
+import org.onap.so.adapters.nwrest.DeleteNetworkError;
+import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
+import org.onap.so.adapters.nwrest.DeleteNetworkResponse;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.client.orchestration.NetworkAdapterResources;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class NetworkAdapterRestV1 {
+
+ private static final Logger logger = LoggerFactory.getLogger(NetworkAdapterRestV1.class);
+
+ private static final String NETWORK_REQUEST = "networkAdapterRequest";
+ private static final String NETWORK_MESSAGE = "NetworkAResponse_MESSAGE";
+ private static final String NETWORK_SYNC_CODE = "NETWORKREST_networkAdapterStatusCode";
+ private static final String NETWORK_SYNC_RESPONSE = "NETWORKREST_networkAdapterResponse";
+ private static final String NETWORK_CORRELATOR = "NetworkAResponse_CORRELATOR";
+
+ @Autowired
+ private ExceptionBuilder exceptionBuilder;
+
+ @Autowired
+ private NetworkAdapterResources networkAdapterResources;
+
+ public void callNetworkAdapter (DelegateExecution execution) {
+ try {
+ Object networkAdapterRequest = execution.getVariable(NETWORK_REQUEST);
+ if (networkAdapterRequest != null) {
+ Optional<Response> response = Optional.empty();
+ if (networkAdapterRequest instanceof CreateNetworkRequest) {
+ CreateNetworkRequest createNetworkRequest = (CreateNetworkRequest) networkAdapterRequest;
+ execution.setVariable(NETWORK_CORRELATOR, createNetworkRequest.getMessageId());
+ response = networkAdapterResources.createNetworkAsync(createNetworkRequest);
+ } else if (networkAdapterRequest instanceof DeleteNetworkRequest) {
+ DeleteNetworkRequest deleteNetworkRequest = (DeleteNetworkRequest) networkAdapterRequest;
+ execution.setVariable(NETWORK_CORRELATOR, deleteNetworkRequest.getMessageId());
+ response = networkAdapterResources.deleteNetworkAsync(deleteNetworkRequest);
+ }
+ if(response.isPresent()) {
+ String statusCode = Integer.toString(response.get().getStatus());
+ String responseString = "";
+ if(response.get().getEntity() != null) {
+ responseString = (String) response.get().getEntity();
+ }
+ execution.setVariable(NETWORK_SYNC_CODE, statusCode);
+ execution.setVariable(NETWORK_SYNC_RESPONSE, responseString);
+ } else {
+ throw new Exception("No Ack response from Openstack Adapter");
+ }
+ } else {
+ throw new Exception("No Network Request was created. networkAdapterRequest was null.");
+ }
+ } catch (Exception ex) {
+ exceptionBuilder.buildAndThrowWorkflowException(execution, 7000, ex.getStackTrace().toString());
+ }
+ }
+
+ public void processCallback (DelegateExecution execution) {
+ try {
+ Object networkAdapterRequest = execution.getVariable(NETWORK_REQUEST);
+ String callback = (String) execution.getVariable(NETWORK_MESSAGE);
+ String logCallbackMessage = "Callback from OpenstackAdapter: " + callback;
+ logger.debug(logCallbackMessage);
+ if (networkAdapterRequest != null) {
+ if (networkAdapterRequest instanceof CreateNetworkRequest) {
+ if(callback.contains("createNetworkError")) {
+ CreateNetworkError createNetworkError = (CreateNetworkError) unmarshalXml(callback, CreateNetworkError.class);
+ throw new Exception(createNetworkError.getMessage());
+ } else {
+ CreateNetworkResponse createNetworkResponse = (CreateNetworkResponse) unmarshalXml(callback, CreateNetworkResponse.class);
+ execution.setVariable("createNetworkResponse", createNetworkResponse);
+ }
+ } else if (networkAdapterRequest instanceof DeleteNetworkRequest) {
+ if(callback.contains("deleteNetworkError")) {
+ DeleteNetworkError deleteNetworkError = (DeleteNetworkError) unmarshalXml(callback, DeleteNetworkError.class);
+ throw new Exception(deleteNetworkError.getMessage());
+ } else {
+ DeleteNetworkResponse deleteNetworkResponse = (DeleteNetworkResponse) unmarshalXml(callback, DeleteNetworkResponse.class);
+ execution.setVariable("deleteNetworkResponse", deleteNetworkResponse);
+ }
+ }
+ }
+ } catch (Exception e) {
+ logger.error("Error in Openstack Adapter callback", e);
+ exceptionBuilder.buildAndThrowWorkflowException(execution, 7000, e.getMessage());
+ }
+ }
+
+ protected <T> Object unmarshalXml(String xmlString, Class<T> resultClass) throws JAXBException {
+ StringReader reader = new StringReader(xmlString);
+ JAXBContext context = JAXBContext.newInstance(resultClass);
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+ return unmarshaller.unmarshal(reader);
+ }
+
+ public void handleTimeOutException (DelegateExecution execution) {
+ exceptionBuilder.buildAndThrowWorkflowException(execution, 7000, "Error timed out waiting on Openstack Async-Response");
+ }
+
+ public void handleSyncError (DelegateExecution execution) {
+ String statusCode = (String) execution.getVariable(NETWORK_SYNC_CODE);
+ String responseString = (String) execution.getVariable(NETWORK_SYNC_RESPONSE);
+ String errorMessage = "Error with Openstack Adapter Sync Request: StatusCode = " + statusCode + " Response = " + responseString;
+ exceptionBuilder.buildAndThrowWorkflowException(execution, 7000, errorMessage);
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClient.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClient.java
index 45f28df756..cdb24401b3 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClient.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClient.java
@@ -20,6 +20,8 @@
package org.onap.so.client.adapter.network;
+import javax.ws.rs.core.Response;
+
import org.onap.so.adapters.nwrest.CreateNetworkRequest;
import org.onap.so.adapters.nwrest.CreateNetworkResponse;
import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
@@ -44,4 +46,10 @@ public interface NetworkAdapterClient {
UpdateNetworkResponse updateNetwork(String aaiNetworkId, UpdateNetworkRequest req)
throws NetworkAdapterClientException;
+
+ Response createNetworkAsync(CreateNetworkRequest req) throws NetworkAdapterClientException;
+
+ Response deleteNetworkAsync(String aaiNetworkId, DeleteNetworkRequest req) throws NetworkAdapterClientException;
+
+ Response rollbackNetworkAsync(String aaiNetworkId, RollbackNetworkRequest req) throws NetworkAdapterClientException;
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClientImpl.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClientImpl.java
index 9b052b4484..7092fe04c6 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClientImpl.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClientImpl.java
@@ -22,6 +22,7 @@ package org.onap.so.client.adapter.network;
import javax.ws.rs.InternalServerErrorException;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import org.onap.so.adapters.nwrest.CreateNetworkRequest;
@@ -54,6 +55,15 @@ public class NetworkAdapterClientImpl implements NetworkAdapterClient {
throw new NetworkAdapterClientException(e.getMessage());
}
}
+
+ @Override
+ public Response createNetworkAsync(CreateNetworkRequest req) throws NetworkAdapterClientException{
+ try {
+ return new AdapterRestClient(this.props, this.getUri("").build()).post(req);
+ } catch (InternalServerErrorException e) {
+ throw new NetworkAdapterClientException(e.getMessage());
+ }
+ }
@Override
public DeleteNetworkResponse deleteNetwork(String aaiNetworkId, DeleteNetworkRequest req) throws NetworkAdapterClientException {
@@ -64,6 +74,15 @@ public class NetworkAdapterClientImpl implements NetworkAdapterClient {
throw new NetworkAdapterClientException(e.getMessage());
}
}
+
+ @Override
+ public Response deleteNetworkAsync(String aaiNetworkId, DeleteNetworkRequest req) throws NetworkAdapterClientException {
+ try {
+ return new AdapterRestClient(this.props, this.getUri("/" + aaiNetworkId).build()).delete(req);
+ } catch (InternalServerErrorException e) {
+ throw new NetworkAdapterClientException(e.getMessage());
+ }
+ }
@Override
public RollbackNetworkResponse rollbackNetwork(String aaiNetworkId, RollbackNetworkRequest req) throws NetworkAdapterClientException {
@@ -74,6 +93,15 @@ public class NetworkAdapterClientImpl implements NetworkAdapterClient {
throw new NetworkAdapterClientException(e.getMessage());
}
}
+
+ @Override
+ public Response rollbackNetworkAsync(String aaiNetworkId, RollbackNetworkRequest req) throws NetworkAdapterClientException {
+ try {
+ return new AdapterRestClient(this.props, this.getUri("/" + aaiNetworkId).build()).delete(req);
+ } catch (InternalServerErrorException e) {
+ throw new NetworkAdapterClientException(e.getMessage());
+ }
+ }
@Override
public QueryNetworkResponse queryNetwork(String aaiNetworkId, String cloudSiteId, String tenantId,
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapper.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapper.java
index 3081ab86d8..794314bf8c 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapper.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapper.java
@@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.UUID;
+import org.apache.commons.lang3.StringUtils;
import org.modelmapper.ModelMapper;
import org.modelmapper.PropertyMap;
import org.onap.so.adapters.nwrest.ContrailNetwork;
@@ -106,8 +107,7 @@ public class NetworkAdapterObjectMapper {
String messageId = getRandomUuid();
createNetworkRequest.setMessageId(messageId);
- //TODO clarify callback URL build process
- //createNetworkRequest.setNotificationUrl(createCallbackUrl("NetworkAResponse", messageId));
+ createNetworkRequest.setNotificationUrl(createCallbackUrl("NetworkAResponse", messageId));
return createNetworkRequest;
}
@@ -137,11 +137,18 @@ public class NetworkAdapterObjectMapper {
deleteNetworkRequest.setMsoRequest(createMsoRequest(requestContext, serviceInstance));
deleteNetworkRequest.setNetworkId(l3Network.getNetworkId());
- deleteNetworkRequest.setNetworkStackId(l3Network.getHeatStackId());
+ if (!StringUtils.isEmpty(l3Network.getHeatStackId())){
+ deleteNetworkRequest.setNetworkStackId(l3Network.getHeatStackId());
+ }
+ else {
+ deleteNetworkRequest.setNetworkStackId(l3Network.getNetworkName());
+ }
deleteNetworkRequest.setNetworkType(l3Network.getNetworkType());
deleteNetworkRequest.setSkipAAI(true);
deleteNetworkRequest.setTenantId(cloudRegion.getTenantId());
+ deleteNetworkRequest.setNotificationUrl(createCallbackUrl("NetworkAResponse", messageId));
+
return deleteNetworkRequest;
}
@@ -187,11 +194,10 @@ public class NetworkAdapterObjectMapper {
return updateNetworkRequest;
}
- private RollbackNetworkRequest setCommonRollbackRequestFields(RollbackNetworkRequest request,RequestContext requestContext){
- //TODO confirm flag value
+ private RollbackNetworkRequest setCommonRollbackRequestFields(RollbackNetworkRequest request,RequestContext requestContext) throws UnsupportedEncodingException{
request.setSkipAAI(true);
- request.setMessageId(requestContext.getMsoRequestId());
- //TODO clarify callback URL build process. This will also set SYNC flag
+ String messageId = requestContext.getMsoRequestId();
+ request.setMessageId(messageId);
//request.setNotificationUrl(createCallbackUrl("NetworkAResponse", messageId));
return request;
}
@@ -365,4 +371,4 @@ public class NetworkAdapterObjectMapper {
updateNetworkRequest.setBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
//NetworkTechnology(NetworkTechnology.NEUTRON); NOOP - default
}
-}
+} \ No newline at end of file
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/NetworkAdapterResources.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/NetworkAdapterResources.java
index 64a86fc731..feb6ed4013 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/NetworkAdapterResources.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/NetworkAdapterResources.java
@@ -24,6 +24,8 @@ import java.io.UnsupportedEncodingException;
import java.util.Map;
import java.util.Optional;
+import javax.ws.rs.core.Response;
+
import org.onap.so.adapters.nwrest.CreateNetworkRequest;
import org.onap.so.adapters.nwrest.CreateNetworkResponse;
import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
@@ -79,4 +81,29 @@ public class NetworkAdapterResources {
DeleteNetworkRequest deleteNetworkRequest = networkAdapterObjectMapper.deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
return Optional.of(networkAdapterClient.deleteNetwork(l3Network.getNetworkId(), deleteNetworkRequest));
}
+
+ public Optional<Response> createNetworkAsync(CreateNetworkRequest createNetworkRequest) throws UnsupportedEncodingException, NetworkAdapterClientException {
+
+ return Optional.of(networkAdapterClient.createNetworkAsync(createNetworkRequest));
+ }
+
+ public Optional<Response> deleteNetworkAsync(DeleteNetworkRequest deleteNetworkRequest) throws UnsupportedEncodingException, NetworkAdapterClientException {
+
+ return Optional.of(networkAdapterClient.deleteNetworkAsync(deleteNetworkRequest.getNetworkId(), deleteNetworkRequest));
+ }
+
+ public Optional<RollbackNetworkResponse> rollbackCreateNetwork(String networkId, RollbackNetworkRequest rollbackNetworkRequest) throws UnsupportedEncodingException, NetworkAdapterClientException {
+
+ return Optional.of(networkAdapterClient.rollbackNetwork(networkId, rollbackNetworkRequest));
+ }
+
+ public Optional<UpdateNetworkResponse> updateNetwork(UpdateNetworkRequest updateNetworkRequest) throws UnsupportedEncodingException, NetworkAdapterClientException {
+
+ return Optional.of(networkAdapterClient.updateNetwork(updateNetworkRequest.getNetworkId(), updateNetworkRequest));
+ }
+
+ public Optional<DeleteNetworkResponse> deleteNetwork(DeleteNetworkRequest deleteNetworkRequest) throws UnsupportedEncodingException, NetworkAdapterClientException {
+
+ return Optional.of(networkAdapterClient.deleteNetwork(deleteNetworkRequest.getNetworkId(), deleteNetworkRequest));
+ }
}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java
index 3dc03b2988..3034f0bd67 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterCreateTasksTest.java
@@ -20,7 +20,9 @@
package org.onap.so.bpmn.infrastructure.adapter.network.tasks;
+import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -33,6 +35,7 @@ import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentMatchers;
import org.mockito.InjectMocks;
+import org.onap.so.adapters.nwrest.CreateNetworkRequest;
import org.onap.so.adapters.nwrest.CreateNetworkResponse;
import org.onap.so.bpmn.BaseTaskTest;
import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
@@ -76,17 +79,14 @@ public class NetworkAdapterCreateTasksTest extends BaseTaskTest{
@Test
public void createNetworkTest() throws Exception {
- CreateNetworkResponse createNetworkResponse = new CreateNetworkResponse();
- createNetworkResponse.setNetworkStackId("networkStackId");
- createNetworkResponse.setNetworkCreated(true);
- Optional<CreateNetworkResponse> oCreateNetworkResponse = Optional.of(createNetworkResponse);
-
String cloudRegionPo = "cloudRegionPo";
+ CreateNetworkRequest createNetworkRequest = new CreateNetworkRequest();
execution.setVariable("cloudRegionPo", cloudRegionPo);
- doReturn(oCreateNetworkResponse).when(networkAdapterResources).createNetwork(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo,customer);
+ doReturn(createNetworkRequest).when(networkAdapterObjectMapper).createNetworkRequestMapper(isA(RequestContext.class), isA(CloudRegion.class), isA(OrchestrationContext.class), isA(ServiceInstance.class), isA(L3Network.class), isA(Map.class), isA(String.class), isA(Customer.class));
networkAdapterCreateTasks.createNetwork(execution);
- verify(networkAdapterResources, times(1)).createNetwork(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo,customer);
+ verify(networkAdapterObjectMapper, times(1)).createNetworkRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, customer);
+ assertEquals(createNetworkRequest, execution.getVariable("networkAdapterRequest"));
}
@Test
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java
index 33a2e6a7a8..5b534e00e7 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterDeleteTasksTest.java
@@ -20,10 +20,8 @@
package org.onap.so.bpmn.infrastructure.adapter.network.tasks;
-import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.times;
@@ -31,7 +29,6 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.UnsupportedEncodingException;
-import java.util.Optional;
import org.camunda.bpm.engine.delegate.BpmnError;
import org.junit.Before;
@@ -39,17 +36,16 @@ import org.junit.Test;
import org.mockito.ArgumentMatchers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
-import org.onap.so.adapters.nwrest.DeleteNetworkResponse;
+import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
import org.onap.so.bpmn.BaseTaskTest;
import org.onap.so.bpmn.common.BuildingBlockExecution;
import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
-import org.onap.so.client.adapter.network.NetworkAdapterClientException;
-import org.onap.so.client.exception.BBObjectNotFoundException;
-import org.onap.so.client.orchestration.NetworkAdapterResources;
import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
+import org.onap.so.client.adapter.network.NetworkAdapterClientException;
+import org.onap.so.client.exception.BBObjectNotFoundException;
public class NetworkAdapterDeleteTasksTest extends BaseTaskTest{
@@ -77,25 +73,19 @@ public class NetworkAdapterDeleteTasksTest extends BaseTaskTest{
@Test
public void test_deleteNetwork() throws UnsupportedEncodingException, NetworkAdapterClientException {
- DeleteNetworkResponse deleteNetworkResponse = new DeleteNetworkResponse();
- deleteNetworkResponse.setNetworkDeleted(true);
- deleteNetworkResponse.setNetworkId(l3Network.getNetworkId());
- Optional<DeleteNetworkResponse> oDeleteNetworkResponse = Optional.of(deleteNetworkResponse);
-
- when(networkAdapterResources.deleteNetwork(any(RequestContext.class), any(CloudRegion.class), eq(serviceInstance), eq(l3Network))).thenReturn(oDeleteNetworkResponse);
+ DeleteNetworkRequest deleteNetworkRequest = new DeleteNetworkRequest();
+ doReturn(deleteNetworkRequest).when(networkAdapterObjectMapper).deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
networkAdapterDeleteTasks.deleteNetwork(execution);
-
- verify(networkAdapterResources, times(1)).deleteNetwork(requestContext, cloudRegion, serviceInstance, l3Network);
- assertEquals(deleteNetworkResponse, execution.getVariable("deleteNetworkResponse"));
+ verify(networkAdapterObjectMapper, times(1)).deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
}
@Test
public void test_deleteNetwork_exception() throws UnsupportedEncodingException, NetworkAdapterClientException {
expectedException.expect(BpmnError.class);
- doThrow(NetworkAdapterClientException.class).when(networkAdapterResources).
- deleteNetwork(any(RequestContext.class), any(CloudRegion.class), any(ServiceInstance.class), eq(l3Network));
+ doThrow(RuntimeException.class).when(networkAdapterObjectMapper).
+ deleteNetworkRequestMapper(any(RequestContext.class), any(CloudRegion.class), any(ServiceInstance.class), eq(l3Network));
networkAdapterDeleteTasks.deleteNetwork(execution);
}
}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1Test.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1Test.java
new file mode 100644
index 0000000000..2ba8cb4b57
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1Test.java
@@ -0,0 +1,19 @@
+package org.onap.so.bpmn.infrastructure.adapter.network.tasks;
+
+import java.io.IOException;
+
+import javax.xml.bind.JAXBException;
+
+import org.junit.Test;
+import org.onap.so.adapters.nwrest.CreateNetworkResponse;
+
+public class NetworkAdapterRestV1Test {
+
+ @Test
+ public void testUnmarshalXml() throws IOException, JAXBException {
+ String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><createNetworkResponse><messageId>ec37c121-e3ec-4697-8adf-2d7dca7044fc</messageId><networkCreated>true</networkCreated><networkFqdn>someNetworkFqdn</networkFqdn><networkId>991ec7bf-c9c4-4ac1-bb9c-4b61645bddb3</networkId><networkStackId>someStackId</networkStackId><neutronNetworkId>9c47521a-2916-4018-b2bc-71ab767497e3</neutronNetworkId><rollback><cloudId>someCloudId</cloudId><modelCustomizationUuid>b7171cdd-8b05-459b-80ef-2093150e8983</modelCustomizationUuid><msoRequest><requestId>90b32315-176e-4dab-bcf1-80eb97a1c4f4</requestId><serviceInstanceId>71e7db22-7907-4d78-8fcc-8d89d28e90be</serviceInstanceId></msoRequest><networkCreated>true</networkCreated><networkStackId>someStackId</networkStackId><networkType>SomeNetworkType</networkType><neutronNetworkId>9c47521a-2916-4018-b2bc-71ab767497e3</neutronNetworkId><tenantId>b60da4f71c1d4b35b8113d4eca6deaa1</tenantId></rollback><subnetMap><entry><key>6b381fa9-48ce-4e16-9978-d75309565bb6</key><value>bc1d5537-860b-4894-8eba-6faff41e648c</value></entry></subnetMap></createNetworkResponse>";
+ CreateNetworkResponse response = (CreateNetworkResponse) new NetworkAdapterRestV1().unmarshalXml(xml, CreateNetworkResponse.class);
+ String returnedXml = response.toXmlString();
+ System.out.println(returnedXml);
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapperTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapperTest.java
index 6f353fa622..1a86d713a2 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapperTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapperTest.java
@@ -22,6 +22,7 @@ package org.onap.so.client.adapter.network.mapper;
import static com.shazam.shazamcrest.MatcherAssert.assertThat;
import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
import static org.junit.Assert.*;
+import static org.mockito.Matchers.isA;
import static org.mockito.Mockito.doReturn;
import java.io.UnsupportedEncodingException;
@@ -135,6 +136,8 @@ public class NetworkAdapterObjectMapperTest extends TestDataSetup{
expectedCreateNetworkRequest.setMsoRequest(msoRequest);
expectedCreateNetworkRequest.setSkipAAI(true);
+ expectedCreateNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
+
Subnet openstackSubnet = new Subnet();
HostRoute hostRoute = new HostRoute();
hostRoute.setHostRouteId("hostRouteId");
@@ -146,6 +149,9 @@ public class NetworkAdapterObjectMapperTest extends TestDataSetup{
l3Network.getSubnets().add(openstackSubnet);
l3Network.setNetworkTechnology("Contrail");
+ doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
+ doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
+
CreateNetworkRequest createNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, customer);
assertThat(createNetworkRequest, sameBeanAs(expectedCreateNetworkRequest).ignoring("contrailRequest").ignoring("contrailNetwork").ignoring("providerVlanNetwork").ignoring("subnets").ignoring("networkParams").ignoring("messageId"));
@@ -295,6 +301,51 @@ public class NetworkAdapterObjectMapperTest extends TestDataSetup{
expectedDeleteNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
+ expectedDeleteNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
+
+ doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
+ doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
+
+ DeleteNetworkRequest deleteNetworkRequest = SPY_networkAdapterObjectMapper.deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
+
+ assertThat(expectedDeleteNetworkRequest, sameBeanAs(deleteNetworkRequest));
+ }
+
+ @Test
+ public void deleteNetworkRequestNoHeatIdMapperTest() throws Exception {
+ DeleteNetworkRequest expectedDeleteNetworkRequest = new DeleteNetworkRequest();
+
+ String messageId = "messageId";
+ expectedDeleteNetworkRequest.setMessageId(messageId);
+ doReturn(messageId).when(SPY_networkAdapterObjectMapper).getRandomUuid();
+
+ ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
+ l3Network.setModelInfoNetwork(modelInfoNetwork);
+ modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
+ expectedDeleteNetworkRequest.setModelCustomizationUuid(modelInfoNetwork.getModelCustomizationUUID());
+
+ MsoRequest msoRequest = new MsoRequest();
+ msoRequest.setRequestId(requestContext.getMsoRequestId());
+ msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
+ expectedDeleteNetworkRequest.setMsoRequest(msoRequest);
+
+ expectedDeleteNetworkRequest.setNetworkId(l3Network.getNetworkId());
+
+ l3Network.setNetworkName("heatStackId");
+ expectedDeleteNetworkRequest.setNetworkStackId("heatStackId");
+
+ expectedDeleteNetworkRequest.setNetworkType(l3Network.getNetworkType());
+
+ expectedDeleteNetworkRequest.setSkipAAI(true);
+
+ expectedDeleteNetworkRequest.setTenantId(cloudRegion.getTenantId());
+
+ expectedDeleteNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
+
+ expectedDeleteNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
+
+ doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
+ doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
DeleteNetworkRequest deleteNetworkRequest = SPY_networkAdapterObjectMapper.deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
assertThat(expectedDeleteNetworkRequest, sameBeanAs(deleteNetworkRequest));
@@ -316,6 +367,11 @@ public class NetworkAdapterObjectMapperTest extends TestDataSetup{
org.onap.so.adapters.nwrest.CreateNetworkRequest.class);
String cloudRegionPo = "cloudRegionPo";
+
+ expectedCreateNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
+
+ doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
+ doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
CreateNetworkRequest createNetworkRequest = SPY_networkAdapterObjectMapper.createNetworkRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, myNetwork, userInput, cloudRegionPo, customer);
//ignoring dynamic fields and networkParams that throws parsing exception on json file load
assertThat(createNetworkRequest, sameBeanAs(expectedCreateNetworkRequest).ignoring("messageId").ignoring("msoRequest.requestId").ignoring("networkParams"));
diff --git a/common/src/main/java/org/onap/so/exceptions/ValidationException.java b/common/src/main/java/org/onap/so/exceptions/ValidationException.java
index 713fac70f3..b91c30c598 100644
--- a/common/src/main/java/org/onap/so/exceptions/ValidationException.java
+++ b/common/src/main/java/org/onap/so/exceptions/ValidationException.java
@@ -32,9 +32,9 @@ public class ValidationException extends Exception {
private static final long serialVersionUID = 1L;
private static final String VALIDATION_FAIL = "No valid $ELEMENT is specified";
- private static final String INVALID_ELEMENT = "$ELEMENT is not valid in the $VERSION version";
+ private static final String UNMATCHED_ELEMENTS = "$ELEMENT does not match $SECOND_ELEMENT";
private static final String REPLACE_ELEMENT_KEY = "\\$ELEMENT";
- private static final String REPLACE_VERSION_KEY = "\\$VERSION";
+ private static final String REPLACE_SECOND_ELEMENT_KEY = "\\$SECOND_ELEMENT";
@Deprecated
public ValidationException (String msg) {
@@ -48,7 +48,7 @@ public class ValidationException extends Exception {
public ValidationException (String msg, Exception cause) {
super (VALIDATION_FAIL.replaceAll (REPLACE_ELEMENT_KEY, msg), cause);
}
- public ValidationException(String msg, String version) {
- super(INVALID_ELEMENT.replaceAll(REPLACE_ELEMENT_KEY, msg).replaceAll(REPLACE_VERSION_KEY, version));
+ public ValidationException(String firstElement, String secondElement) {
+ super(UNMATCHED_ELEMENTS.replaceAll(REPLACE_ELEMENT_KEY, firstElement).replaceAll(REPLACE_SECOND_ELEMENT_KEY, secondElement));
}
-}
+} \ No newline at end of file
diff --git a/common/src/test/java/org/onap/so/exceptions/ValidationExceptionTest.java b/common/src/test/java/org/onap/so/exceptions/ValidationExceptionTest.java
index b3ae7ba9f5..27fb584b3b 100644
--- a/common/src/test/java/org/onap/so/exceptions/ValidationExceptionTest.java
+++ b/common/src/test/java/org/onap/so/exceptions/ValidationExceptionTest.java
@@ -47,7 +47,7 @@ public class ValidationExceptionTest {
@Test
public void validationExceptionVersion(){
- ValidationException e = new ValidationException("testMessage", "1.0");
- Assert.assertEquals("testMessage is not valid in the 1.0 version", e.getMessage());
+ ValidationException e = new ValidationException("testMessage", "secondTestMessage");
+ Assert.assertEquals("testMessage does not match secondTestMessage", e.getMessage());
}
}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/MsoRequest.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/MsoRequest.java
index 440a9ea3ee..7f602323e1 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/MsoRequest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/MsoRequest.java
@@ -162,7 +162,7 @@ public class MsoRequest {
public void parse (ServiceInstancesRequest sir, HashMap<String,String> instanceIdMap, Actions action, String version,
String originalRequestJSON, int reqVersion, Boolean aLaCarteFlag) throws ValidationException, IOException {
- msoLogger.debug ("Validating the Service Instance request");
+ msoLogger.debug ("Validating the Service Instance request");
List<ValidationRule> rules = new ArrayList<>();
msoLogger.debug ("Incoming version is: " + version + " coverting to int: " + reqVersion);
RequestParameters requestParameters = sir.getRequestDetails().getRequestParameters();
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java
index da1f1f6e90..894e488e92 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/UserParamsValidation.java
@@ -27,56 +27,60 @@ import java.util.List;
import org.onap.so.apihandlerinfra.Action;
import org.onap.so.apihandlerinfra.Actions;
import org.onap.so.exceptions.ValidationException;
+import org.onap.so.serviceinstancebeans.ModelInfo;
import org.onap.so.serviceinstancebeans.Networks;
import org.onap.so.serviceinstancebeans.Service;
import org.onap.so.serviceinstancebeans.VfModules;
import org.onap.so.serviceinstancebeans.Vnfs;
public class UserParamsValidation implements ValidationRule{
- private static boolean empty(String s) {
- return (s == null || s.trim().isEmpty());
- }
@Override
public ValidationInformation validate(ValidationInformation info) throws ValidationException{
Service validate = info.getUserParams();
Actions action = info.getAction();
if(validate.getModelInfo() == null){
- throw new ValidationException ("model-info in userParams");
+ throw new ValidationException ("modelInfo in userParams", true);
+ }else if(validate.getModelInfo().getModelType() == null){
+ throw new ValidationException("modelType in userParams service modelInfo", true);
}else if(validate.getModelInfo().getModelVersionId() == null){
- throw new ValidationException("modelVersionId in userParams");
+ throw new ValidationException("modelVersionId in userParams service modelInfo", true);
+ }
+ modelInfoValidation(info.getSir().getRequestDetails().getModelInfo(), validate.getModelInfo());
+ if(validate.getInstanceName() != null && info.getRequestInfo().getInstanceName() != null){
+ instanceNameValidation(info, validate);
}
for(Vnfs vnf : validate.getResources().getVnfs()){
if(vnf.getModelInfo() == null){
- throw new ValidationException ("model-info in userParams vnf resources");
+ throw new ValidationException ("modelInfo in userParams vnf resources", true);
}else if(vnf.getModelInfo().getModelCustomizationId() == null){
- throw new ValidationException ("modelCustomizationId in userParams vnf resources");
+ throw new ValidationException ("modelCustomizationId in userParams vnf resources", true);
}else if(vnf.getModelInfo().getModelVersionId() == null){
- throw new ValidationException("modelVersionId in userParams vnf resources");
+ throw new ValidationException("modelVersionId in userParams vnf resources", true);
}
if(vnf.getCloudConfiguration() == null){
- throw new ValidationException ("cloudConfiguration in userParams vnf resources");
+ throw new ValidationException ("cloudConfiguration in userParams vnf resources", true);
}
if(action == Action.createInstance || action == Action.assignInstance){
if(vnf.getPlatform() == null){
- throw new ValidationException ("platform in userParams vnf resources");
+ throw new ValidationException ("platform in userParams vnf resources", true);
}if(vnf.getProductFamilyId() == null){
- throw new ValidationException ("productFamilyId in userParams vnf resources");
+ throw new ValidationException ("productFamilyId in userParams vnf resources", true);
}
}
if (vnf.getPlatform() != null && vnf.getPlatform().getPlatformName() == null){
- throw new ValidationException ("platformName in userParams vnf resources");
+ throw new ValidationException ("platformName in userParams vnf resources", true);
}
if(vnf.getVfModules().isEmpty()){
- throw new ValidationException ("vfModules in userParams vnf resources");
+ throw new ValidationException ("vfModules in userParams vnf resources", true);
}
for(VfModules vfModules : vnf.getVfModules()){
if(vfModules.getModelInfo() == null){
- throw new ValidationException ("model-info in userParams vfModules resources");
+ throw new ValidationException ("modelInfo in userParams vfModules resources", true);
}else if(vfModules.getModelInfo().getModelCustomizationId() == null){
- throw new ValidationException ("modelCustomizationId in userParams vfModule resources");
+ throw new ValidationException ("modelCustomizationId in userParams vfModule resources", true);
}else if(vfModules.getModelInfo().getModelVersionId() == null){
- throw new ValidationException("modelVersionId in userParams vfModule resources");
+ throw new ValidationException("modelVersionId in userParams vfModule resources", true);
}
}
}
@@ -86,17 +90,46 @@ public class UserParamsValidation implements ValidationRule{
if(validateNetworks != null){
for(Networks networks : validateNetworks){
if(networks.getModelInfo() == null){
- throw new ValidationException ("model-info in userParams network resources");
+ throw new ValidationException ("modelInfo in userParams network resources", true);
}else if(networks.getModelInfo().getModelCustomizationId() == null){
- throw new ValidationException ("modelCustomizationId in userParams network resources");
+ throw new ValidationException ("modelCustomizationId in userParams network resources", true);
}else if(networks.getModelInfo().getModelVersionId() == null){
- throw new ValidationException("modelVersionId in userParams network resources");
+ throw new ValidationException("modelVersionId in userParams network resources", true);
}
if(networks.getCloudConfiguration() == null){
- throw new ValidationException ("cloudConfiguration in userParams network resources");
+ throw new ValidationException ("cloudConfiguration in userParams network resources", true);
}
}
}
return info;
}
+ public void instanceNameValidation(ValidationInformation info, Service validate) throws ValidationException{
+ if(!info.getRequestInfo().getInstanceName().equals(validate.getInstanceName())){
+ throw new ValidationException("instanceName in requestInfo", "instanceName in userParams service");
+ }
+ }
+ public void modelInfoValidation(ModelInfo info, ModelInfo userParamInfo) throws ValidationException{
+ if(!info.getModelType().equals(userParamInfo.getModelType())){
+ throw new ValidationException("modelType in modelInfo", "modelType in userParams service");
+ }
+ if((info.getModelInvariantId() != null && userParamInfo.getModelInvariantId() != null) &&
+ (!info.getModelInvariantId().equals(userParamInfo.getModelInvariantId()))){
+ throw new ValidationException("modelInvariantId in modelInfo", "modelInvariantId in userParams service");
+ }
+ if(!info.getModelVersionId().equals(userParamInfo.getModelVersionId())){
+ throw new ValidationException("modelVersionId in modelInfo", "modelVersionId in userParams service");
+ }
+ if((info.getModelName() != null && userParamInfo.getModelName() != null) &&
+ (!info.getModelName().equals(userParamInfo.getModelName()))){
+ throw new ValidationException("modelName in modelInfo", "modelName in userParams service");
+ }
+ if((info.getModelVersion() != null && userParamInfo.getModelVersion() != null) &&
+ (!info.getModelVersion().equals(userParamInfo.getModelVersion()))){
+ throw new ValidationException("modelVersion in modelInfo", "modelVersion in userParams service");
+ }
+ if((info.getModelCustomizationId() != null && userParamInfo.getModelCustomizationId() != null) &&
+ (!info.getModelCustomizationId().equals(userParamInfo.getModelCustomizationId()))){
+ throw new ValidationException("modelCustomizationId in modelInfo", "modelCustomizationId in userParams service");
+ }
+ }
} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/MsoRequestTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/MsoRequestTest.java
index aa51704724..145213fc6c 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/MsoRequestTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/MsoRequestTest.java
@@ -317,9 +317,9 @@ public class MsoRequestTest extends BaseTest {
//Validation for UserParams
{"No valid cloudConfiguration in userParams vnf resources is specified", mapper.readValue(inputStream("/RequestParameters/AssignCloudConfigVnf.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid cloudConfiguration in userParams network resources is specified", mapper.readValue(inputStream("/RequestParameters/NetworkCloudConfig.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
- {"No valid model-info in userParams is specified", mapper.readValue(inputStream("/RequestParameters/UserParamsModelInfo.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
- {"No valid model-info in userParams vnf resources is specified", mapper.readValue(inputStream("/RequestParameters/UserParamsVnfModelInfo.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
- {"No valid modelVersionId in userParams is specified", mapper.readValue(inputStream("/RequestParameters/UserParamsModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
+ {"No valid modelInfo in userParams is specified", mapper.readValue(inputStream("/RequestParameters/UserParamsModelInfo.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
+ {"No valid modelInfo in userParams vnf resources is specified", mapper.readValue(inputStream("/RequestParameters/UserParamsVnfModelInfo.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
+ {"No valid modelVersionId in userParams service modelInfo is specified", mapper.readValue(inputStream("/RequestParameters/UserParamsModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid modelVersionId in userParams vnf resources is specified", mapper.readValue(inputStream("/RequestParameters/VnfModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid modelVersionId in userParams vfModule resources is specified", mapper.readValue(inputStream("/RequestParameters/VfModuleModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid modelVersionId in userParams network resources is specified", mapper.readValue(inputStream("/RequestParameters/NetworkModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
@@ -327,8 +327,8 @@ public class MsoRequestTest extends BaseTest {
{"No valid platformName in userParams vnf resources is specified", mapper.readValue(inputStream("/RequestParameters/UserParamsPlatformName.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid productFamilyId in userParams vnf resources is specified", mapper.readValue(inputStream("/RequestParameters/ProductFamilyId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid vfModules in userParams vnf resources is specified", mapper.readValue(inputStream("/RequestParameters/VfModules.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
- {"No valid model-info in userParams vfModules resources is specified", mapper.readValue(inputStream("/RequestParameters/VfModulesModelInfo.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
- {"No valid model-info in userParams network resources is specified", mapper.readValue(inputStream("/RequestParameters/Network.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
+ {"No valid modelInfo in userParams vfModules resources is specified", mapper.readValue(inputStream("/RequestParameters/VfModulesModelInfo.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
+ {"No valid modelInfo in userParams network resources is specified", mapper.readValue(inputStream("/RequestParameters/Network.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid modelCustomizationId in userParams vfModule resources is specified", mapper.readValue(inputStream("/RequestParameters/VfModuleModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid modelCustomizationId in userParams vnf resources is specified", mapper.readValue(inputStream("/RequestParameters/VnfModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
{"No valid modelCustomizationId in userParams network resources is specified", mapper.readValue(inputStream("/RequestParameters/NetworkModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.assignInstance, 7},
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java
new file mode 100644
index 0000000000..c1c4915672
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/UserParamsValidationTest.java
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.so.apihandlerinfra.validation;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Map;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.onap.so.apihandlerinfra.Action;
+import org.onap.so.exceptions.ValidationException;
+import org.onap.so.serviceinstancebeans.Service;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class UserParamsValidationTest{
+
+ UserParamsValidation validation = new UserParamsValidation();
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ public ValidationInformation setupValidationInformation(String path) throws IOException{
+ String jsonInput = new String(Files.readAllBytes(Paths.get(path)));
+ ObjectMapper mapper = new ObjectMapper();
+ ServiceInstancesRequest sir = mapper.readValue(jsonInput, ServiceInstancesRequest.class);
+ ValidationInformation info = new ValidationInformation(sir, null, Action.createInstance, 7, false, sir.getRequestDetails().getRequestParameters());
+ for(Map<String, Object> params : sir.getRequestDetails().getRequestParameters().getUserParams()){
+ ObjectMapper obj = new ObjectMapper();
+ String input = obj.writeValueAsString(params.get("service"));
+ Service validate = obj.readValue(input, Service.class);
+ info.setUserParams(validate);
+ break;
+ }
+ info.setRequestInfo(sir.getRequestDetails().getRequestInfo());
+ return info;
+ }
+
+ @Test
+ public void validateModelTypeExceptionTest() throws IOException, ValidationException{
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("No valid modelType in userParams service modelInfo is specified");
+ validation.validate(setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelInfoNoModelType.json"));
+ }
+ @Test
+ public void validateInstanceNameExceptionTest() throws IOException, ValidationException{
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("instanceName in requestInfo does not match instanceName in userParams service");
+ validation.validate(setupValidationInformation("src/test/resources/Validation/UserParamsValidation/MacroRequest.json"));
+ }
+ @Test
+ public void validateModelTypeTest() throws ValidationException, IOException{
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("modelType in modelInfo does not match modelType in userParams service");
+ validation.validate(setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelType.json"));
+ }
+ @Test
+ public void validateModelInvariantIdTest() throws ValidationException, IOException{
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("modelInvariantId in modelInfo does not match modelInvariantId in userParams service");
+ validation.validate(setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelInvariantId.json"));
+ }
+ @Test
+ public void validateModelVersionIdTest() throws ValidationException, IOException{
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("modelVersionId in modelInfo does not match modelVersionId in userParams service");
+ validation.validate(setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelVersionId.json"));
+ }
+ @Test
+ public void validateModelNameTest() throws ValidationException, IOException{
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("modelName in modelInfo does not match modelName in userParams service");
+ validation.validate(setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelName.json"));
+ }
+ @Test
+ public void validateModelVersionTest() throws ValidationException, IOException{
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("modelVersion in modelInfo does not match modelVersion in userParams service");
+ validation.validate(setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelVersion.json"));
+ }
+ @Test
+ public void validateModelCustomizationIdTest() throws ValidationException, IOException{
+ thrown.expect(ValidationException.class);
+ thrown.expectMessage("modelCustomizationId in modelInfo does not match modelCustomizationId in userParams service");
+ validation.validate(setupValidationInformation("src/test/resources/Validation/UserParamsValidation/ModelCustomizationId.json"));
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/AssignCloudConfigVnf.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/AssignCloudConfigVnf.json
index 9e571e6e37..9d575695c5 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/AssignCloudConfigVnf.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/AssignCloudConfigVnf.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "testModelName",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "testModelName",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/Network.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/Network.json
index 26bb2172f8..a7d930f756 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/Network.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/Network.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkCloudConfig.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkCloudConfig.json
index 6b32f3ebe3..75e8fb5cd1 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkCloudConfig.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkCloudConfig.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelCustomizationId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelCustomizationId.json
index 1aa6094513..baf620b668 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelCustomizationId.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelCustomizationId.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelVersionId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelVersionId.json
index 1fddf7970b..6c152855ee 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelVersionId.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/NetworkModelVersionId.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/ProductFamilyId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/ProductFamilyId.json
index f9a5ea9a01..3f93139587 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/ProductFamilyId.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/ProductFamilyId.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsModelVersionId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsModelVersionId.json
index 8d3ed69863..f3592c2e05 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsModelVersionId.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsModelVersionId.json
@@ -34,8 +34,10 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatform.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatform.json
index f05fdb06ba..0fbe1dadcc 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatform.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatform.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatformName.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatformName.json
index 4436baffe4..e94c5aad13 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatformName.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsPlatformName.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsVnfModelInfo.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsVnfModelInfo.json
index e31523f99d..c19784f2fe 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsVnfModelInfo.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/UserParamsVnfModelInfo.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelCustomizationId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelCustomizationId.json
index 0cf4928581..f315ff89a6 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelCustomizationId.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelCustomizationId.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelVersionId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelVersionId.json
index 5362b439dc..91e71839a2 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelVersionId.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModuleModelVersionId.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModules.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModules.json
index ad1c02e37b..fedaad42df 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModules.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModules.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModulesModelInfo.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModulesModelInfo.json
index 81904fe66a..612586c84f 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModulesModelInfo.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VfModulesModelInfo.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelCustomizationId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelCustomizationId.json
index 5b4097793c..8709619fb9 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelCustomizationId.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelCustomizationId.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelVersionId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelVersionId.json
index b52be1f4c2..9c650ad439 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelVersionId.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/RequestParameters/VnfModelVersionId.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/SuccessfulValidation/ServiceAssign.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/SuccessfulValidation/ServiceAssign.json
index 2d7ab4ae7c..bc6f8fc610 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/SuccessfulValidation/ServiceAssign.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/SuccessfulValidation/ServiceAssign.json
@@ -34,9 +34,11 @@
{
"service": {
"modelInfo": {
- "modelName": "MOW vMX BV 1 Service",
- "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0b"
+ "modelType": "service",
+ "modelInvariantId": "5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId": "3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName": "MOW vMX BV 1 Service",
+ "modelVersion": "10"
},
"instanceParams": [],
"resources": {
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/ServiceAssign.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/ServiceAssign.json
index 7625bf7589..fd8b7c4e69 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/ServiceAssign.json
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/ServiceAssign.json
@@ -35,9 +35,10 @@
"service":{
"modelInfo":{
"modelType":"service",
- "modelName":"MOW",
- "modelVersionId":"3c40d244-808e-42ca-b09a-256d83d19d0a",
- "modelCustomizationId": "3c40d244-808e-42ca-b09a-256d83d19d0a"
+ "modelInvariantId":"5d48acb5-097d-4982-aeb2-f4a3bd87d31b",
+ "modelVersionId":"3c40d244-808e-42ca-b09a-256d83d19d0a",
+ "modelName":"MOW vMX BV 1 Service",
+ "modelVersion":"10.0"
},
"instanceParams":[
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/MacroRequest.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/MacroRequest.json
new file mode 100644
index 0000000000..c3ee53b3b4
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/MacroRequest.json
@@ -0,0 +1,135 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "requestInfo": {
+ "productFamilyId": "testaaS",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "ss616y",
+ "instanceName": "instanceName"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "21014aa2-526b-11e6-beb8-9e71128cae77"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "test",
+ "userParams": [
+ {
+ "service": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "instanceName" : "test",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_bandwidth": "10",
+ "mow_adig_test_bv_ist0_ASN": "2685",
+ "mow_adig_test_bv_ist0_availability_zone_0": "mdt25b-kvm-az01",
+ "mow_adig_test_bv_ist0_AIC_CLLI": "MTSNJA4LCP1",
+ "mow_adig_test_bv_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth_units": "Gbps"
+ }
+ ],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MOW_ADIG_test_BV_IST 0",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbac",
+ "modelInvariantId": "33fb95d0-5f18-4dfb-8e7d-0c8ac8d743c5",
+ "modelVersionId": "bdf50902-4b07-4dcf-a2e2-ec6cfe568798",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelType": "service",
+ "modelVersion": "2.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt25b",
+ "tenantId": "aefb697db6524ddebfe4915591b0a347"
+ },
+ "platform": {
+ "platformName": "AIC"
+ },
+ "lineOfBusiness": {},
+ "productFamilyId": "testaaS",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_vnf_config_template": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth": "Gbps"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelCustomizationId": "34c57c2d-cf19-4926-9296-acde6a967f70",
+ "modelInvariantId": "f3093158-a609-41d5-a2fb-07dbc0ca8096",
+ "modelVersionId": "2507f79d-6e1b-413b-b2a8-c434113ff862",
+ "modelName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": [
+ {
+ "mow_adig_test_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_ist0_bandwidth_units": "Gbps"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelCustomizationId": "f4a414c4-b71a-43ed-82be-51478d7e154f",
+ "modelInvariantId": "af867fdc-3808-4b62-ae76-bdb1b9ae7ee8",
+ "modelVersionId": "3fcf6cb6-2ef2-4154-99a6-06ce889c79f1",
+ "modelName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": []
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelCustomizationId": "583c2280-23d9-4338-a607-69c238d4899d",
+ "modelInvariantId": "90c2be4f-cb6f-4e75-9c65-04fdc5c30cef",
+ "modelVersionId": "7c8a69e0-6612-4b7b-8e9c-fb8b9f31cb4f",
+ "modelName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelType": "service",
+ "modelVersion": "1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "GigaPower"
+ },
+ "owningEntity": {
+ "owningEntityId": "2811e2fb-005e-40de-990b-c0794f362399",
+ "owningEntityName": "PACKET-CORE"
+ }
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelCustomizationId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelCustomizationId.json
new file mode 100644
index 0000000000..f5209ac774
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelCustomizationId.json
@@ -0,0 +1,137 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbad"
+ },
+ "requestInfo": {
+ "productFamilyId": "testaaS",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "ss616y",
+ "instanceName": "instanceName"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "21014aa2-526b-11e6-beb8-9e71128cae77"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "test",
+ "userParams": [
+ {
+ "service": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbae"
+ },
+ "instanceName" : "test",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_bandwidth": "10",
+ "mow_adig_test_bv_ist0_ASN": "2685",
+ "mow_adig_test_bv_ist0_availability_zone_0": "mdt25b-kvm-az01",
+ "mow_adig_test_bv_ist0_AIC_CLLI": "MTSNJA4LCP1",
+ "mow_adig_test_bv_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth_units": "Gbps"
+ }
+ ],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MOW_ADIG_test_BV_IST 0",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbac",
+ "modelInvariantId": "33fb95d0-5f18-4dfb-8e7d-0c8ac8d743c5",
+ "modelVersionId": "bdf50902-4b07-4dcf-a2e2-ec6cfe568798",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelType": "service",
+ "modelVersion": "2.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt25b",
+ "tenantId": "aefb697db6524ddebfe4915591b0a347"
+ },
+ "platform": {
+ "platformName": "AIC"
+ },
+ "lineOfBusiness": {},
+ "productFamilyId": "testaaS",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_vnf_config_template": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth": "Gbps"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelCustomizationId": "34c57c2d-cf19-4926-9296-acde6a967f70",
+ "modelInvariantId": "f3093158-a609-41d5-a2fb-07dbc0ca8096",
+ "modelVersionId": "2507f79d-6e1b-413b-b2a8-c434113ff862",
+ "modelName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": [
+ {
+ "mow_adig_test_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_ist0_bandwidth_units": "Gbps"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelCustomizationId": "f4a414c4-b71a-43ed-82be-51478d7e154f",
+ "modelInvariantId": "af867fdc-3808-4b62-ae76-bdb1b9ae7ee8",
+ "modelVersionId": "3fcf6cb6-2ef2-4154-99a6-06ce889c79f1",
+ "modelName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": []
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelCustomizationId": "583c2280-23d9-4338-a607-69c238d4899d",
+ "modelInvariantId": "90c2be4f-cb6f-4e75-9c65-04fdc5c30cef",
+ "modelVersionId": "7c8a69e0-6612-4b7b-8e9c-fb8b9f31cb4f",
+ "modelName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelType": "service",
+ "modelVersion": "1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "GigaPower"
+ },
+ "owningEntity": {
+ "owningEntityId": "2811e2fb-005e-40de-990b-c0794f362399",
+ "owningEntityName": "PACKET-CORE"
+ }
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelInfoNoModelType.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelInfoNoModelType.json
new file mode 100644
index 0000000000..ffcb48daf3
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelInfoNoModelType.json
@@ -0,0 +1,134 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "requestInfo": {
+ "productFamilyId": "testaaS",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "ss616y",
+ "instanceName": "instanceName"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "21014aa2-526b-11e6-beb8-9e71128cae77"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "test",
+ "userParams": [
+ {
+ "service": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "instanceName" : "test",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_bandwidth": "10",
+ "mow_adig_test_bv_ist0_ASN": "2685",
+ "mow_adig_test_bv_ist0_availability_zone_0": "mdt25b-kvm-az01",
+ "mow_adig_test_bv_ist0_AIC_CLLI": "MTSNJA4LCP1",
+ "mow_adig_test_bv_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth_units": "Gbps"
+ }
+ ],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MOW_ADIG_test_BV_IST 0",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbac",
+ "modelInvariantId": "33fb95d0-5f18-4dfb-8e7d-0c8ac8d743c5",
+ "modelVersionId": "bdf50902-4b07-4dcf-a2e2-ec6cfe568798",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelType": "service",
+ "modelVersion": "2.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt25b",
+ "tenantId": "aefb697db6524ddebfe4915591b0a347"
+ },
+ "platform": {
+ "platformName": "AIC"
+ },
+ "lineOfBusiness": {},
+ "productFamilyId": "testaaS",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_vnf_config_template": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth": "Gbps"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelCustomizationId": "34c57c2d-cf19-4926-9296-acde6a967f70",
+ "modelInvariantId": "f3093158-a609-41d5-a2fb-07dbc0ca8096",
+ "modelVersionId": "2507f79d-6e1b-413b-b2a8-c434113ff862",
+ "modelName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": [
+ {
+ "mow_adig_test_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_ist0_bandwidth_units": "Gbps"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelCustomizationId": "f4a414c4-b71a-43ed-82be-51478d7e154f",
+ "modelInvariantId": "af867fdc-3808-4b62-ae76-bdb1b9ae7ee8",
+ "modelVersionId": "3fcf6cb6-2ef2-4154-99a6-06ce889c79f1",
+ "modelName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": []
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelCustomizationId": "583c2280-23d9-4338-a607-69c238d4899d",
+ "modelInvariantId": "90c2be4f-cb6f-4e75-9c65-04fdc5c30cef",
+ "modelVersionId": "7c8a69e0-6612-4b7b-8e9c-fb8b9f31cb4f",
+ "modelName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelType": "service",
+ "modelVersion": "1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "GigaPower"
+ },
+ "owningEntity": {
+ "owningEntityId": "2811e2fb-005e-40de-990b-c0794f362399",
+ "owningEntityName": "PACKET-CORE"
+ }
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelInvariantId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelInvariantId.json
new file mode 100644
index 0000000000..13796ed3f9
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelInvariantId.json
@@ -0,0 +1,135 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "requestInfo": {
+ "productFamilyId": "testaaS",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "ss616y",
+ "instanceName": "instanceName"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "21014aa2-526b-11e6-beb8-9e71128cae77"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "test",
+ "userParams": [
+ {
+ "service": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531e",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "instanceName" : "test",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_bandwidth": "10",
+ "mow_adig_test_bv_ist0_ASN": "2685",
+ "mow_adig_test_bv_ist0_availability_zone_0": "mdt25b-kvm-az01",
+ "mow_adig_test_bv_ist0_AIC_CLLI": "MTSNJA4LCP1",
+ "mow_adig_test_bv_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth_units": "Gbps"
+ }
+ ],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MOW_ADIG_test_BV_IST 0",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbac",
+ "modelInvariantId": "33fb95d0-5f18-4dfb-8e7d-0c8ac8d743c5",
+ "modelVersionId": "bdf50902-4b07-4dcf-a2e2-ec6cfe568798",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelType": "service",
+ "modelVersion": "2.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt25b",
+ "tenantId": "aefb697db6524ddebfe4915591b0a347"
+ },
+ "platform": {
+ "platformName": "AIC"
+ },
+ "lineOfBusiness": {},
+ "productFamilyId": "testaaS",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_vnf_config_template": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth": "Gbps"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelCustomizationId": "34c57c2d-cf19-4926-9296-acde6a967f70",
+ "modelInvariantId": "f3093158-a609-41d5-a2fb-07dbc0ca8096",
+ "modelVersionId": "2507f79d-6e1b-413b-b2a8-c434113ff862",
+ "modelName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": [
+ {
+ "mow_adig_test_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_ist0_bandwidth_units": "Gbps"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelCustomizationId": "f4a414c4-b71a-43ed-82be-51478d7e154f",
+ "modelInvariantId": "af867fdc-3808-4b62-ae76-bdb1b9ae7ee8",
+ "modelVersionId": "3fcf6cb6-2ef2-4154-99a6-06ce889c79f1",
+ "modelName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": []
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelCustomizationId": "583c2280-23d9-4338-a607-69c238d4899d",
+ "modelInvariantId": "90c2be4f-cb6f-4e75-9c65-04fdc5c30cef",
+ "modelVersionId": "7c8a69e0-6612-4b7b-8e9c-fb8b9f31cb4f",
+ "modelName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelType": "service",
+ "modelVersion": "1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "GigaPower"
+ },
+ "owningEntity": {
+ "owningEntityId": "2811e2fb-005e-40de-990b-c0794f362399",
+ "owningEntityName": "PACKET-CORE"
+ }
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelName.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelName.json
new file mode 100644
index 0000000000..0410b9c50d
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelName.json
@@ -0,0 +1,135 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "requestInfo": {
+ "productFamilyId": "testaaS",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "ss616y",
+ "instanceName": "instanceName"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "21014aa2-526b-11e6-beb8-9e71128cae77"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "test",
+ "userParams": [
+ {
+ "service": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST2",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "instanceName" : "test",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_bandwidth": "10",
+ "mow_adig_test_bv_ist0_ASN": "2685",
+ "mow_adig_test_bv_ist0_availability_zone_0": "mdt25b-kvm-az01",
+ "mow_adig_test_bv_ist0_AIC_CLLI": "MTSNJA4LCP1",
+ "mow_adig_test_bv_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth_units": "Gbps"
+ }
+ ],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MOW_ADIG_test_BV_IST 0",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbac",
+ "modelInvariantId": "33fb95d0-5f18-4dfb-8e7d-0c8ac8d743c5",
+ "modelVersionId": "bdf50902-4b07-4dcf-a2e2-ec6cfe568798",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelType": "service",
+ "modelVersion": "2.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt25b",
+ "tenantId": "aefb697db6524ddebfe4915591b0a347"
+ },
+ "platform": {
+ "platformName": "AIC"
+ },
+ "lineOfBusiness": {},
+ "productFamilyId": "testaaS",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_vnf_config_template": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth": "Gbps"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelCustomizationId": "34c57c2d-cf19-4926-9296-acde6a967f70",
+ "modelInvariantId": "f3093158-a609-41d5-a2fb-07dbc0ca8096",
+ "modelVersionId": "2507f79d-6e1b-413b-b2a8-c434113ff862",
+ "modelName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": [
+ {
+ "mow_adig_test_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_ist0_bandwidth_units": "Gbps"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelCustomizationId": "f4a414c4-b71a-43ed-82be-51478d7e154f",
+ "modelInvariantId": "af867fdc-3808-4b62-ae76-bdb1b9ae7ee8",
+ "modelVersionId": "3fcf6cb6-2ef2-4154-99a6-06ce889c79f1",
+ "modelName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": []
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelCustomizationId": "583c2280-23d9-4338-a607-69c238d4899d",
+ "modelInvariantId": "90c2be4f-cb6f-4e75-9c65-04fdc5c30cef",
+ "modelVersionId": "7c8a69e0-6612-4b7b-8e9c-fb8b9f31cb4f",
+ "modelName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelType": "service",
+ "modelVersion": "1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "GigaPower"
+ },
+ "owningEntity": {
+ "owningEntityId": "2811e2fb-005e-40de-990b-c0794f362399",
+ "owningEntityName": "PACKET-CORE"
+ }
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelType.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelType.json
new file mode 100644
index 0000000000..f287864a93
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelType.json
@@ -0,0 +1,135 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "requestInfo": {
+ "productFamilyId": "testaaS",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "ss616y",
+ "instanceName": "instanceName"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "21014aa2-526b-11e6-beb8-9e71128cae77"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "test",
+ "userParams": [
+ {
+ "service": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "vnf",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "instanceName" : "test",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_bandwidth": "10",
+ "mow_adig_test_bv_ist0_ASN": "2685",
+ "mow_adig_test_bv_ist0_availability_zone_0": "mdt25b-kvm-az01",
+ "mow_adig_test_bv_ist0_AIC_CLLI": "MTSNJA4LCP1",
+ "mow_adig_test_bv_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth_units": "Gbps"
+ }
+ ],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MOW_ADIG_test_BV_IST 0",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbac",
+ "modelInvariantId": "33fb95d0-5f18-4dfb-8e7d-0c8ac8d743c5",
+ "modelVersionId": "bdf50902-4b07-4dcf-a2e2-ec6cfe568798",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelType": "service",
+ "modelVersion": "2.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt25b",
+ "tenantId": "aefb697db6524ddebfe4915591b0a347"
+ },
+ "platform": {
+ "platformName": "AIC"
+ },
+ "lineOfBusiness": {},
+ "productFamilyId": "testaaS",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_vnf_config_template": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth": "Gbps"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelCustomizationId": "34c57c2d-cf19-4926-9296-acde6a967f70",
+ "modelInvariantId": "f3093158-a609-41d5-a2fb-07dbc0ca8096",
+ "modelVersionId": "2507f79d-6e1b-413b-b2a8-c434113ff862",
+ "modelName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": [
+ {
+ "mow_adig_test_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_ist0_bandwidth_units": "Gbps"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelCustomizationId": "f4a414c4-b71a-43ed-82be-51478d7e154f",
+ "modelInvariantId": "af867fdc-3808-4b62-ae76-bdb1b9ae7ee8",
+ "modelVersionId": "3fcf6cb6-2ef2-4154-99a6-06ce889c79f1",
+ "modelName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": []
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelCustomizationId": "583c2280-23d9-4338-a607-69c238d4899d",
+ "modelInvariantId": "90c2be4f-cb6f-4e75-9c65-04fdc5c30cef",
+ "modelVersionId": "7c8a69e0-6612-4b7b-8e9c-fb8b9f31cb4f",
+ "modelName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelType": "service",
+ "modelVersion": "1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "GigaPower"
+ },
+ "owningEntity": {
+ "owningEntityId": "2811e2fb-005e-40de-990b-c0794f362399",
+ "owningEntityName": "PACKET-CORE"
+ }
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelVersion.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelVersion.json
new file mode 100644
index 0000000000..ed2dffeb41
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelVersion.json
@@ -0,0 +1,135 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "requestInfo": {
+ "productFamilyId": "testaaS",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "ss616y",
+ "instanceName": "instanceName"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "21014aa2-526b-11e6-beb8-9e71128cae77"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "test",
+ "userParams": [
+ {
+ "service": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "2.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "instanceName" : "test",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_bandwidth": "10",
+ "mow_adig_test_bv_ist0_ASN": "2685",
+ "mow_adig_test_bv_ist0_availability_zone_0": "mdt25b-kvm-az01",
+ "mow_adig_test_bv_ist0_AIC_CLLI": "MTSNJA4LCP1",
+ "mow_adig_test_bv_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth_units": "Gbps"
+ }
+ ],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MOW_ADIG_test_BV_IST 0",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbac",
+ "modelInvariantId": "33fb95d0-5f18-4dfb-8e7d-0c8ac8d743c5",
+ "modelVersionId": "bdf50902-4b07-4dcf-a2e2-ec6cfe568798",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelType": "service",
+ "modelVersion": "2.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt25b",
+ "tenantId": "aefb697db6524ddebfe4915591b0a347"
+ },
+ "platform": {
+ "platformName": "AIC"
+ },
+ "lineOfBusiness": {},
+ "productFamilyId": "testaaS",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_vnf_config_template": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth": "Gbps"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelCustomizationId": "34c57c2d-cf19-4926-9296-acde6a967f70",
+ "modelInvariantId": "f3093158-a609-41d5-a2fb-07dbc0ca8096",
+ "modelVersionId": "2507f79d-6e1b-413b-b2a8-c434113ff862",
+ "modelName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": [
+ {
+ "mow_adig_test_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_ist0_bandwidth_units": "Gbps"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelCustomizationId": "f4a414c4-b71a-43ed-82be-51478d7e154f",
+ "modelInvariantId": "af867fdc-3808-4b62-ae76-bdb1b9ae7ee8",
+ "modelVersionId": "3fcf6cb6-2ef2-4154-99a6-06ce889c79f1",
+ "modelName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": []
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelCustomizationId": "583c2280-23d9-4338-a607-69c238d4899d",
+ "modelInvariantId": "90c2be4f-cb6f-4e75-9c65-04fdc5c30cef",
+ "modelVersionId": "7c8a69e0-6612-4b7b-8e9c-fb8b9f31cb4f",
+ "modelName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelType": "service",
+ "modelVersion": "1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "GigaPower"
+ },
+ "owningEntity": {
+ "owningEntityId": "2811e2fb-005e-40de-990b-c0794f362399",
+ "owningEntityName": "PACKET-CORE"
+ }
+ }
+} \ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelVersionId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelVersionId.json
new file mode 100644
index 0000000000..feb08a3b6d
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/Validation/UserParamsValidation/ModelVersionId.json
@@ -0,0 +1,135 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "requestInfo": {
+ "productFamilyId": "testaaS",
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "ss616y",
+ "instanceName": "instanceName"
+ },
+ "subscriberInfo": {
+ "globalSubscriberId": "21014aa2-526b-11e6-beb8-9e71128cae77"
+ },
+ "requestParameters": {
+ "subscriptionServiceType": "test",
+ "userParams": [
+ {
+ "service": {
+ "modelInfo": {
+ "modelInvariantId": "282bdcd2-34ed-4665-9ab2-63455814531d",
+ "modelType": "service",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelVersion": "1.0",
+ "modelVersionId": "109a153e-325f-4df5-8161-edd91314daed",
+ "modelUuid": "109a153e-325f-4df5-8161-edd91314daee",
+ "modelInvariantUuid": "282bdcd2-34ed-4665-9ab2-63455814531d"
+ },
+ "instanceName" : "test",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_bandwidth": "10",
+ "mow_adig_test_bv_ist0_ASN": "2685",
+ "mow_adig_test_bv_ist0_availability_zone_0": "mdt25b-kvm-az01",
+ "mow_adig_test_bv_ist0_AIC_CLLI": "MTSNJA4LCP1",
+ "mow_adig_test_bv_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth_units": "Gbps"
+ }
+ ],
+ "resources": {
+ "vnfs": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MOW_ADIG_test_BV_IST 0",
+ "modelCustomizationId": "31d41ef2-0a3e-43bf-a4f0-0b1f31b1cbac",
+ "modelInvariantId": "33fb95d0-5f18-4dfb-8e7d-0c8ac8d743c5",
+ "modelVersionId": "bdf50902-4b07-4dcf-a2e2-ec6cfe568798",
+ "modelName": "MOW_ADIG_test_BV_IST",
+ "modelType": "service",
+ "modelVersion": "2.0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt25b",
+ "tenantId": "aefb697db6524ddebfe4915591b0a347"
+ },
+ "platform": {
+ "platformName": "AIC"
+ },
+ "lineOfBusiness": {},
+ "productFamilyId": "testaaS",
+ "instanceParams": [
+ {
+ "mow_adig_test_bv_ist0_vnf_config_template": "17.2",
+ "mow_adig_test_bv_ist0_vnf_instance": "wswdc403me6",
+ "mow_adig_test_bv_ist0_bandwidth": "Gbps"
+ }
+ ],
+ "vfModules": [
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelCustomizationId": "34c57c2d-cf19-4926-9296-acde6a967f70",
+ "modelInvariantId": "f3093158-a609-41d5-a2fb-07dbc0ca8096",
+ "modelVersionId": "2507f79d-6e1b-413b-b2a8-c434113ff862",
+ "modelName": "MowAdigtestBvIst..ADIG_vRE_BV_v2..module-1",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": [
+ {
+ "mow_adig_test_ist0_vnf_config_template_version": "17.2",
+ "mow_adig_test_ist0_vnf_instance_name": "wswdc403me6",
+ "mow_adig_test_ist0_bandwidth_units": "Gbps"
+ }
+ ]
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelCustomizationId": "f4a414c4-b71a-43ed-82be-51478d7e154f",
+ "modelInvariantId": "af867fdc-3808-4b62-ae76-bdb1b9ae7ee8",
+ "modelVersionId": "3fcf6cb6-2ef2-4154-99a6-06ce889c79f1",
+ "modelName": "MowAdigtestBvIst..ADIG_base_test_BV_v2..module-0",
+ "modelType": "service",
+ "modelVersion": "1"
+ },
+ "instanceParams": []
+ },
+ {
+ "modelInfo": {
+ "modelCustomizationName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelCustomizationId": "583c2280-23d9-4338-a607-69c238d4899d",
+ "modelInvariantId": "90c2be4f-cb6f-4e75-9c65-04fdc5c30cef",
+ "modelVersionId": "7c8a69e0-6612-4b7b-8e9c-fb8b9f31cb4f",
+ "modelName": "MowAdigtestBvIst..ADIG_vPFE_BV_v2..module-2",
+ "modelType": "service",
+ "modelVersion": "1"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "aLaCarte": false
+ },
+ "project": {
+ "projectName": "GigaPower"
+ },
+ "owningEntity": {
+ "owningEntityId": "2811e2fb-005e-40de-990b-c0794f362399",
+ "owningEntityName": "PACKET-CORE"
+ }
+ }
+} \ No newline at end of file