PNF WF post instantiation configuration 05/84105/4
authoreeginux <henry.xie@est.tech>
Wed, 3 Apr 2019 14:28:09 +0000 (14:28 +0000)
committereeginux <henry.xie@est.tech>
Thu, 4 Apr 2019 10:41:31 +0000 (11:41 +0100)
Add PNF ipv4/v6 address for config Deploy
Add Integration test for CreateVcpeResCustService_simplified.bpmn
Modify the PnfEventReadyDmaapClient to avoid one more running thread
Refactor the so-bpmn-infrastructure-flows test resources
Modify the CreateVcpeResCustService_simplified.bpmn
Add ConfigurePnfResource.bpmn
Add Delegates

Issue-ID: SO-1506
Change-Id: Iffb69d1441ef0b485ee8cd3fb5da5f1a35279a95
Signed-off-by: eeginux <henry.xie@est.tech>
48 files changed:
adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java
asdc-controller/src/main/resources/application.yaml
asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerITTest.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForPnf.java
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/client/cds/beans/ConfigDeployPropertiesForPnfTest.java
bpmn/pom.xml
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/ConfigCheckerDelegate.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/ExecutionVariableNames.java
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareCdsCallDelegate.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigAssignDelegate.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigDeployDelegate.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/dmaap/PnfEventReadyDmaapClient.java
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/ConfigCheckerDelegateTest.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigAssignDelegateTest.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigDeployDelegateTest.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/dmaap/PnfEventReadyDmaapClientTest.java
bpmn/so-bpmn-infrastructure-flows/pom.xml
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ConfigurePnfResource.bpmn [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustService_simplified.bpmn
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/AllBPMNTestSuites.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/BaseBPMNTest.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/EmbeddedMariaDbConfig.java [moved from bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/InfraEmbeddedMariaDbConfig.java with 50% similarity]
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/GrpcNettyServer.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/TestApplication.java
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/ValidBPMNTest.java [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/CreateVcpeResCustServiceSimplifiedTest.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceBRG.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceBRGRollback.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceTXC.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateServiceInstanceRollback.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateVnfAndModules.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateVnfAndModulesRollback.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoDeleteVnfAndModules.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/Homing.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml
bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yml [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/logback-test.xml
bpmn/so-bpmn-infrastructure-flows/src/test/resources/request/CreateVcpeResCustServiceSimplifiedTest.json [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/response/CreateVcpeResCustServiceSimplifiedTest.json [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/response/CreateVcpeResCustServiceSimplifiedTest_catalogdb.json [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/test/resources/stubprocess/GenericStub.bpmn [deleted file]
bpmn/so-bpmn-tasks/pom.xml
mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/PnfCustomizationRepository.java
mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/PnfCustomizationRepositoryTest.java
mso-catalog-db/src/test/resources/application-test.yaml
packages/docker/pom.xml

index 599c99b..4480777 100644 (file)
@@ -658,4 +658,31 @@ public class CatalogDbClientTest extends CatalogDbAdapterBaseTest {
         Assert.assertNull(pnfResourceCustomization);
     }
 
+    @Test
+    public void getPnfResourceCustomizationFromJoinTable_validServiceUuid_expectedOutput() {
+        List<PnfResourceCustomization> pnfResourceCustomizationList = client
+            .getPnfResourceCustomizationByModelUuid("5df8b6de-2083-11e7-93ae-92361f002676");
+        assertEquals(1, pnfResourceCustomizationList.size());
+
+        PnfResourceCustomization pnfResourceCustomization= pnfResourceCustomizationList.get(0);
+        assertEquals("modelInstanceName", "PNF routing", pnfResourceCustomization.getModelInstanceName());
+        assertEquals("blueprintName", "test_configuration_restconf", pnfResourceCustomization.getBlueprintName());
+        assertEquals("blueprintVersion", "1.0.0", pnfResourceCustomization.getBlueprintVersion());
+        PnfResource pnfResource = pnfResourceCustomization.getPnfResources();
+        assertNotNull(pnfResource);
+
+        assertEquals("PNFResource modelUUID", "ff2ae348-214a-11e7-93ae-92361f002680", pnfResource.getModelUUID());
+        assertEquals("PNFResource modelInvariantUUID", "2fff5b20-214b-11e7-93ae-92361f002680",
+            pnfResource.getModelInvariantUUID());
+        assertEquals("PNFResource modelVersion", "1.0", pnfResource.getModelVersion());
+        assertEquals("PNFResource orchestration mode", "", pnfResource.getOrchestrationMode());
+    }
+
+    @Test
+    public void getPnfResourceCustomizationFromJoinTable_invalidServiceUuid_nullOutput() {
+        List<PnfResourceCustomization> pnfResourceCustomizationList = client
+            .getPnfResourceCustomizationByModelUuid(UUID.randomUUID().toString());
+        assertEquals(0, pnfResourceCustomizationList.size());
+    }
+
 }
index e95e85a..2d0a2ac 100644 (file)
@@ -40,5 +40,7 @@ management:
       prometheus:
         enabled: true # Whether exporting of metrics to Prometheus is enabled.
         step: 1m # Step size (i.e. reporting frequency) to use.
-
+mso:
+  config:
+    defaultpath: /app
 
index 301ef14..51559c2 100644 (file)
@@ -23,6 +23,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.ok;
 import static com.github.tomakehurst.wiremock.client.WireMock.post;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
 
@@ -58,6 +59,8 @@ import org.onap.so.db.catalog.data.repository.ServiceRepository;
 import org.onap.so.db.catalog.data.repository.ToscaCsarRepository;
 import org.onap.so.db.catalog.data.repository.VnfCustomizationRepository;
 import org.onap.so.db.catalog.data.repository.VnfResourceRepository;
+import org.onap.so.db.request.beans.WatchdogComponentDistributionStatus;
+import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatusRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -107,6 +110,9 @@ public class ASDCControllerITTest extends BaseTest {
     @Autowired
     private ServiceRepository serviceRepository;
 
+    @Autowired
+    protected WatchdogComponentDistributionStatusRepository watchdogCDStatusRepository;
+
     private DistributionClientEmulator distributionClient;
 
     @Before
@@ -263,6 +269,18 @@ public class ASDCControllerITTest extends BaseTest {
             assertEquals("PNF resource customization entity", 1, pnfCustList.size());
             assertEquals(pnfCustomizationKey, pnfCustList.get(0).getModelCustomizationUUID());
 
+            /**
+             * Check the watchdog for component distribution status
+             */
+            List<WatchdogComponentDistributionStatus> distributionList = watchdogCDStatusRepository
+                .findByDistributionId(this.distributionId);
+            assertNotNull(distributionList);
+            assertEquals(1, distributionList.size());
+            WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
+            assertEquals("COMPONENT_DONE_OK", distributionStatus.getComponentDistributionStatus());
+            assertEquals("SO", distributionStatus.getComponentName());
+
+
         } catch (Exception e) {
             logger.info(e.getMessage(), e);
             fail(e.getMessage());
@@ -411,6 +429,17 @@ public class ASDCControllerITTest extends BaseTest {
             List<VnfResourceCustomization> vnfCustList = service.getVnfCustomizations();
             assertEquals("VNF resource customization entity", 1, vnfCustList.size());
             assertEquals(vnfCustomizationKey, vnfCustList.get(0).getModelCustomizationUUID());
+
+            /**
+             * Check the watchdog for component distribution status
+             */
+            List<WatchdogComponentDistributionStatus> distributionList = watchdogCDStatusRepository
+                .findByDistributionId(this.distributionId);
+            assertNotNull(distributionList);
+            assertEquals(1, distributionList.size());
+            WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
+            assertEquals("COMPONENT_DONE_OK", distributionStatus.getComponentDistributionStatus());
+            assertEquals("SO", distributionStatus.getComponentName());
         } catch (Exception e) {
             logger.info(e.getMessage(), e);
             fail(e.getMessage());
index 0b2ef92..7a967d3 100644 (file)
@@ -128,9 +128,9 @@ public class AbstractCDSProcessingBBUtils implements CDSProcessingListener {
             ExecutionServiceInput executionServiceInput = (ExecutionServiceInput) execution
                     .getVariable("executionServiceInput");
 
-            CDSProcessingListener cdsProcessingListener = new AbstractCDSProcessingBBUtils();
+            //CDSProcessingListener cdsProcessingListener = new AbstractCDSProcessingBBUtils();
 
-            CDSProcessingClient cdsClient = new CDSProcessingClient(cdsProcessingListener);
+            CDSProcessingClient cdsClient = new CDSProcessingClient(this);
             CountDownLatch countDownLatch = cdsClient.sendRequest(executionServiceInput);
 
             try {
index b8fb5b9..6fadc7b 100644 (file)
@@ -9,6 +9,8 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 "service-instance-id",
 "pnf-id",
 "pnf-name",
+"pnf-ipv4-address",
+"pnf-ipv6-address",
 "service-model-uuid",
 "pnf-customization-uuid"
 })
@@ -24,6 +26,15 @@ public class ConfigDeployPropertiesForPnf {
        @JsonProperty("pnf-name")
        private String pnfName;
 
+       /**
+        * Config Deploy require IP address of PNF.
+        */
+       @JsonProperty("pnf-ipv4-address")
+       private String pnfIpV4Address;
+
+       @JsonProperty("pnf-ipv6-address")
+       private String pnfIpV6Address;
+
        @JsonProperty("service-model-uuid")
        private String serviceModelUuid;
 
@@ -70,6 +81,23 @@ public class ConfigDeployPropertiesForPnf {
                this.pnfCustomizationUuid = pnfCustomizationUuid;
        }
 
+       public String getPnfIpV4Address() {
+               return pnfIpV4Address;
+       }
+
+       public void setPnfIpV4Address(String pnfIpV4Address) {
+               this.pnfIpV4Address = pnfIpV4Address;
+       }
+
+       public String getPnfIpV6Address() {
+               return pnfIpV6Address;
+       }
+
+       public void setPnfIpV6Address(String pnfIpV6Address) {
+               this.pnfIpV6Address = pnfIpV6Address;
+       }
+
+
        @Override
        public String toString() {
 
@@ -77,6 +105,8 @@ public class ConfigDeployPropertiesForPnf {
                sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
                sb.append(", \"pnf-id\":").append("\"").append(pnfId).append("\"");
                sb.append(", \"pnf-name\":").append("\"").append(pnfName).append("\"");
+               sb.append(", \"pnf-ipv4-address\":").append("\"").append(pnfIpV4Address).append("\"");
+               sb.append(", \"pnf-ipv6-address\":").append("\"").append(pnfIpV6Address).append("\"");
                sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
                sb.append(", \"pnf-customization-uuid\":").append("\"").append(pnfCustomizationUuid).append("\"");
 
index 1d771c8..8e16ce6 100644 (file)
@@ -3,45 +3,59 @@ package org.onap.so.client.cds.beans;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
+import org.junit.Before;
 import org.junit.Test;
 
 public class ConfigDeployPropertiesForPnfTest {
+
     ConfigDeployPropertiesForPnf configDeployPropertiesForPnf = new ConfigDeployPropertiesForPnf();
-    private String serviceInstanceId;
-    private String pnfId;
-    private String pnfName;
-    private String serviceModelUuid;
-    private String pnfCustomizationUuid;
+    private static final String TEST_SERVICE_MODEL_UUID = "service-model-uuid";
+    private static final String TEST_PNF_CUSTOMIZATION_UUID = "pnf-customization-uuid";
+    private static final String TEST_PNF_ID = "pnf-id";
+    private static final String TEST_PNF_NAME = "pnf-name";
+    private static final String TEST_PNF_IP_V4_ADDRESS = "1.1.1.1";
+    private static final String TEST_PNF_IP_V6_ADDRESS = "::/128";
+    private static final String TEST_SERVICE_INSTANCE_ID = "service-instance-id";
+
+    @Before
+    public void setUp(){
+        configDeployPropertiesForPnf.setServiceInstanceId(TEST_SERVICE_INSTANCE_ID);
+        configDeployPropertiesForPnf.setServiceModelUuid(TEST_SERVICE_MODEL_UUID);
+        configDeployPropertiesForPnf.setPnfCustomizationUuid(TEST_PNF_CUSTOMIZATION_UUID);
+        configDeployPropertiesForPnf.setPnfId(TEST_PNF_ID);
+        configDeployPropertiesForPnf.setPnfName(TEST_PNF_NAME);
+        configDeployPropertiesForPnf.setPnfIpV4Address(TEST_PNF_IP_V4_ADDRESS);
+        configDeployPropertiesForPnf.setPnfIpV6Address(TEST_PNF_IP_V6_ADDRESS);
+    }
 
     @Test
     public final void testConfigDeployPropertiesForPnfTest() {
-        configDeployPropertiesForPnf.setServiceInstanceId("service-instance-id");
-        configDeployPropertiesForPnf.setServiceModelUuid("service-model-uuid");
-        configDeployPropertiesForPnf.setPnfCustomizationUuid("pnf-customization-uuid");
-        configDeployPropertiesForPnf.setPnfId("pnf-id");
-        configDeployPropertiesForPnf.setPnfName("pnf-name");
         assertNotNull(configDeployPropertiesForPnf.getServiceInstanceId());
         assertNotNull(configDeployPropertiesForPnf.getServiceModelUuid());
         assertNotNull(configDeployPropertiesForPnf.getPnfCustomizationUuid());
         assertNotNull(configDeployPropertiesForPnf.getPnfId());
         assertNotNull(configDeployPropertiesForPnf.getPnfName());
 
-        assertEquals("service-instance-id", configDeployPropertiesForPnf.getServiceInstanceId());
-        assertEquals("service-model-uuid", configDeployPropertiesForPnf.getServiceModelUuid());
-        assertEquals("pnf-customization-uuid", configDeployPropertiesForPnf.getPnfCustomizationUuid());
-        assertEquals("pnf-id", configDeployPropertiesForPnf.getPnfId());
-        assertEquals("pnf-name", configDeployPropertiesForPnf.getPnfName());
+        assertEquals(TEST_SERVICE_INSTANCE_ID, configDeployPropertiesForPnf.getServiceInstanceId());
+        assertEquals(TEST_SERVICE_MODEL_UUID, configDeployPropertiesForPnf.getServiceModelUuid());
+        assertEquals(TEST_PNF_CUSTOMIZATION_UUID, configDeployPropertiesForPnf.getPnfCustomizationUuid());
+        assertEquals(TEST_PNF_ID, configDeployPropertiesForPnf.getPnfId());
+        assertEquals(TEST_PNF_NAME, configDeployPropertiesForPnf.getPnfName());
+        assertEquals(TEST_PNF_IP_V4_ADDRESS, configDeployPropertiesForPnf.getPnfIpV4Address());
+        assertEquals(TEST_PNF_IP_V6_ADDRESS, configDeployPropertiesForPnf.getPnfIpV6Address());
 
     }
 
     @Test
     public void testtoString() {
         final StringBuilder sb = new StringBuilder("{");
-        sb.append("\"service-instance-id\":").append("\"").append(serviceInstanceId).append("\"");
-        sb.append(", \"pnf-id\":").append("\"").append(pnfId).append("\"");
-        sb.append(", \"pnf-name\":").append("\"").append(pnfName).append("\"");
-        sb.append(", \"service-model-uuid\":").append("\"").append(serviceModelUuid).append("\"");
-        sb.append(", \"pnf-customization-uuid\":").append("\"").append(pnfCustomizationUuid).append("\"");
+        sb.append("\"service-instance-id\":").append("\"").append(TEST_SERVICE_INSTANCE_ID).append("\"");
+        sb.append(", \"pnf-id\":").append("\"").append(TEST_PNF_ID).append("\"");
+        sb.append(", \"pnf-name\":").append("\"").append(TEST_PNF_NAME).append("\"");
+        sb.append(", \"pnf-ipv4-address\":").append("\"").append(TEST_PNF_IP_V4_ADDRESS).append("\"");
+        sb.append(", \"pnf-ipv6-address\":").append("\"").append(TEST_PNF_IP_V6_ADDRESS).append("\"");
+        sb.append(", \"service-model-uuid\":").append("\"").append(TEST_SERVICE_MODEL_UUID).append("\"");
+        sb.append(", \"pnf-customization-uuid\":").append("\"").append(TEST_PNF_CUSTOMIZATION_UUID).append("\"");
         sb.append('}');
         String Expexted = sb.toString();
         assertEquals(Expexted, configDeployPropertiesForPnf.toString());
index df68017..dc30925 100644 (file)
@@ -24,6 +24,7 @@
                <xmlunit.version>2.4.0</xmlunit.version>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+               <sdnc.northbound.version>1.5.1-SNAPSHOT</sdnc.northbound.version>
        </properties>
 
        <modules>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/ConfigCheckerDelegate.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/ConfigCheckerDelegate.java
new file mode 100644 (file)
index 0000000..9b60a05
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MODEL_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_VERSION;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_CUSTOMIZATION_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_INSTANCE_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.SERVICE_MODEL_INFO;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.SKIP_POST_INSTANTIATION_CONFIGURATION;
+
+import java.util.List;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.onap.so.bpmn.core.json.JsonUtils;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.db.catalog.beans.PnfResourceCustomization;
+import org.onap.so.db.catalog.client.CatalogDbClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * This implementation of {@link JavaDelegate} is used to check the SO catalogdb for PNF config flag.
+ *
+ * It queries the PNF resource customization table for the skip_post_instantiation_configuration for required PNF model
+ * UUID.
+ */
+@Component
+public class ConfigCheckerDelegate implements JavaDelegate {
+
+    private Logger logger = LoggerFactory.getLogger(ConfigCheckerDelegate.class);
+
+    //ERROR CODE for variable not found in the delegation Context
+    private static int ERROR_CODE = 601;
+
+    @Autowired
+    protected ExceptionBuilder exceptionUtil;
+
+    @Autowired
+    protected CatalogDbClient catalogDbClient;
+
+    @Override
+    public void execute(DelegateExecution delegateExecution) throws Exception {
+
+        logger.debug("Running execute block for activity id:{}, name:{}", delegateExecution.getCurrentActivityId(),
+            delegateExecution.getCurrentActivityName());
+
+        if (delegateExecution.hasVariable(SERVICE_MODEL_INFO)) {
+            String serviceModelInfo = (String) delegateExecution.getVariable(SERVICE_MODEL_INFO);
+            String serviceModelUuid = JsonUtils.getJsonValue(serviceModelInfo, MODEL_UUID);
+            delegateExecution.setVariable(MODEL_UUID, serviceModelUuid);
+            List<PnfResourceCustomization> pnfCustomizations = catalogDbClient
+                .getPnfResourceCustomizationByModelUuid(serviceModelUuid);
+            if (pnfCustomizations != null && pnfCustomizations.size() >= 1) {
+                PnfResourceCustomization pnfResourceCustomization = pnfCustomizations.get(0);
+                boolean skipPostInstantiationConfiguration = pnfResourceCustomization.isSkipPostInstConf();
+                delegateExecution
+                    .setVariable(SKIP_POST_INSTANTIATION_CONFIGURATION, skipPostInstantiationConfiguration);
+                delegateExecution.setVariable(PRC_BLUEPRINT_NAME, pnfResourceCustomization.getBlueprintName());
+                delegateExecution.setVariable(PRC_BLUEPRINT_VERSION, pnfResourceCustomization.getBlueprintVersion());
+                delegateExecution
+                    .setVariable(PRC_CUSTOMIZATION_UUID, pnfResourceCustomization.getModelCustomizationUUID());
+                delegateExecution.setVariable(PRC_INSTANCE_NAME, pnfResourceCustomization.getModelInstanceName());
+            } else {
+                logger
+                    .warn("Unable to find the PNF resource customizations of model service UUID: {}", serviceModelUuid);
+                exceptionUtil.buildAndThrowWorkflowException(delegateExecution, ERROR_CODE,
+                    "Unable to find the PNF resource customizations of model service UUID:  " + serviceModelUuid);
+            }
+        } else {
+            logger.warn("Unable to find the parameter: {} in the execution context", SERVICE_MODEL_INFO);
+            exceptionUtil
+                .buildAndThrowWorkflowException(delegateExecution, ERROR_CODE,
+                    "Unable to find parameter " + SERVICE_MODEL_INFO);
+        }
+    }
+}
index 7d449e7..c16175b 100644 (file)
@@ -34,4 +34,26 @@ public class ExecutionVariableNames {
     public final static String TIMEOUT_FOR_NOTIFICATION = "timeoutForPnfEntryNotification";
     public final static String PNF_UUID = "pnfUuid";
     public final static String SERVICE_INSTANCE_ID = "serviceInstanceId";
+    public final static String MSO_REQUEST_ID = "msoRequestId";
+    public final static String MODEL_UUID = "modelUuid";
+
+    public final static String SERVICE_MODEL_INFO = "serviceModelInfo";
+
+    /**
+     * Variable used to contain the {@link org.onap.so.client.cds.beans.AbstractCDSPropertiesBean} json value.
+     */
+    public static final String EXECUTION_OBJECT = "executionObject";
+
+    /**
+     * Variables used to contain the {@link org.onap.so.db.catalog.beans.PnfResourceCustomization} fields.
+     */
+    public static final String PRC_BLUEPRINT_NAME = "PRC_blueprintName";
+    public static final String PRC_BLUEPRINT_VERSION = "PRC_blueprintVersion";
+    public static final String PRC_CUSTOMIZATION_UUID = "PRC_customizationUuid";
+    public static final String PRC_INSTANCE_NAME = "PRC_instanceName";
+
+    /**
+     * Variable used to contain skipPostInstantiationConfiguration flag.
+     */
+    public static final String SKIP_POST_INSTANTIATION_CONFIGURATION = "SkipPostInstantiationConfiguration";
 }
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareCdsCallDelegate.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareCdsCallDelegate.java
new file mode 100644 (file)
index 0000000..49887af
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.EXECUTION_OBJECT;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MSO_REQUEST_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_VERSION;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Abstract class for preparing CDS call.
+ */
+public abstract class PrepareCdsCallDelegate implements JavaDelegate {
+
+    protected Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    protected static final String ORIGINATOR_ID = "SO";
+    protected static final int ERROR_CODE = 7010;
+
+    protected String actionName;
+    protected String mode;
+
+    @Autowired
+    protected ExceptionBuilder exceptionUtil;
+
+    @Override
+    public void execute(DelegateExecution delegateExecution){
+
+        logger.debug("Running execute block for activity:{}", delegateExecution.getCurrentActivityId());
+        AbstractCDSPropertiesBean cdsPropertiesBean = new AbstractCDSPropertiesBean();
+        cdsPropertiesBean.setBlueprintName((String) delegateExecution.getVariable(PRC_BLUEPRINT_NAME));
+        cdsPropertiesBean.setBlueprintVersion((String) delegateExecution.getVariable(PRC_BLUEPRINT_VERSION));
+        cdsPropertiesBean.setOriginatorId(ORIGINATOR_ID);
+        cdsPropertiesBean.setActionName(getActionName());
+        cdsPropertiesBean.setMode(getMode());
+        cdsPropertiesBean.setRequestId((String) delegateExecution.getVariable(MSO_REQUEST_ID));
+        cdsPropertiesBean.setSubRequestId((String) delegateExecution.getVariable(PNF_UUID));
+        cdsPropertiesBean.setRequestObject(getRequestObject(delegateExecution));
+        delegateExecution.setVariable(EXECUTION_OBJECT, cdsPropertiesBean);
+    }
+
+    /**
+     * Return the request object sent to CDS call.
+     *
+     * @param delegateExecution BPMN delegateExecution context
+     * @return string value of the request object
+     */
+    protected abstract String getRequestObject(final DelegateExecution delegateExecution);
+
+    public String getActionName() {
+        return actionName;
+    }
+
+    public String getMode() {
+        return mode;
+    }
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigAssignDelegate.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigAssignDelegate.java
new file mode 100644 (file)
index 0000000..5bf167e
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MODEL_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_CUSTOMIZATION_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_INSTANCE_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.SERVICE_INSTANCE_ID;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+import org.onap.so.client.cds.beans.ConfigAssignPropertiesForPnf;
+import org.onap.so.client.cds.beans.ConfigAssignRequestPnf;
+import org.springframework.stereotype.Component;
+
+/**
+ * This implementation of {@link JavaDelegate} is used to prepare for config Assign.
+ *
+ * It queries the PNF resource customization table and construct the {@link AbstractCDSPropertiesBean} as
+ * executionObject.
+ */
+@Component
+public class PrepareConfigAssignDelegate extends PrepareCdsCallDelegate {
+
+    public PrepareConfigAssignDelegate() {
+        this.actionName = "config-assign";
+        this.mode = "sync";
+    }
+
+    @Override
+    protected String getRequestObject(final DelegateExecution delegateExecution){
+
+        ConfigAssignPropertiesForPnf configAssignProperties = new ConfigAssignPropertiesForPnf();
+        configAssignProperties.setServiceInstanceId((String) delegateExecution.getVariable(SERVICE_INSTANCE_ID));
+
+        /**
+         * PNF Name matches the name in AAI, i.e., correlationID as in customized workflow.
+         */
+        configAssignProperties.setPnfName((String) delegateExecution.getVariable(PNF_CORRELATION_ID));
+
+        /**
+         * PNF id match AAI entry, i.e, PNF UUID.
+         */
+        configAssignProperties.setPnfId((String) delegateExecution.getVariable(PNF_UUID));
+        configAssignProperties.setPnfCustomizationUuid((String) delegateExecution.getVariable(PRC_CUSTOMIZATION_UUID));
+        configAssignProperties.setServiceModelUuid((String) delegateExecution.getVariable(MODEL_UUID));
+
+        ConfigAssignRequestPnf configAssignRequest = new ConfigAssignRequestPnf();
+        configAssignRequest.setConfigAssignPropertiesForPnf(configAssignProperties);
+
+        /**
+         * resolution key is the same as PNF name.
+         */
+        configAssignRequest.setResolutionKey((String) delegateExecution.getVariable(PNF_CORRELATION_ID));
+
+        return configAssignRequest.toString();
+    }
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigDeployDelegate.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigDeployDelegate.java
new file mode 100644 (file)
index 0000000..9b13be8
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MODEL_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_CUSTOMIZATION_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.SERVICE_INSTANCE_ID;
+
+import java.io.IOException;
+import java.util.Optional;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.onap.aai.domain.yang.Pnf;
+import org.onap.so.bpmn.infrastructure.pnf.management.PnfManagement;
+import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+import org.onap.so.client.cds.beans.ConfigDeployPropertiesForPnf;
+import org.onap.so.client.cds.beans.ConfigDeployRequestPnf;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * This implementation of {@link JavaDelegate} is used to prepare for config Deploy.
+ *
+ * It queries the PNF resource customization table and construct the {@link AbstractCDSPropertiesBean} as
+ * executionObject.
+ */
+@Component
+public class PrepareConfigDeployDelegate extends PrepareCdsCallDelegate {
+
+    @Autowired
+    private PnfManagement pnfManagement;
+
+    public PrepareConfigDeployDelegate() {
+        this.actionName = "config-deploy";
+        this.mode = "async";
+    }
+
+    @Override
+    protected String getRequestObject(DelegateExecution delegateExecution){
+
+        ConfigDeployPropertiesForPnf configDeployProperties = new ConfigDeployPropertiesForPnf();
+
+        configDeployProperties.setServiceInstanceId((String) delegateExecution.getVariable(SERVICE_INSTANCE_ID));
+
+        /**
+         * PNF Name matches the name in AAI, i.e., correlationID as in customized workflow.
+         */
+        configDeployProperties.setPnfName((String) delegateExecution.getVariable(PNF_CORRELATION_ID));
+
+        /**
+         * PNF id match AAI entry, i.e, PNF UUID.
+         */
+        configDeployProperties.setPnfId((String) delegateExecution.getVariable(PNF_UUID));
+        configDeployProperties.setPnfCustomizationUuid((String) delegateExecution.getVariable(PRC_CUSTOMIZATION_UUID));
+        configDeployProperties.setServiceModelUuid((String) delegateExecution.getVariable(MODEL_UUID));
+        setIpAddress(configDeployProperties, delegateExecution);
+
+        ConfigDeployRequestPnf configDeployRequest = new ConfigDeployRequestPnf();
+        configDeployRequest.setConfigDeployPropertiesForPnf(configDeployProperties);
+
+        /**
+         * Resolution key is the same as PNF name.
+         */
+        configDeployRequest.setResolutionKey((String) delegateExecution.getVariable(PNF_CORRELATION_ID));
+
+        return configDeployRequest.toString();
+    }
+
+    private void setIpAddress(ConfigDeployPropertiesForPnf configDeployProperties, DelegateExecution delegateExecution) {
+
+        /**
+         * Retrieve PNF entry from AAI.
+         */
+        try {
+            String pnfName = (String) delegateExecution.getVariable(PNF_CORRELATION_ID);
+            Optional<Pnf> pnfOptional = pnfManagement.getEntryFor(pnfName);
+            if ( pnfOptional.isPresent()){
+                Pnf pnf = pnfOptional.get();
+                configDeployProperties.setPnfIpV4Address(pnf.getPnfIpv4Address());
+                configDeployProperties.setPnfIpV6Address(pnf.getPnfIpv6Address());
+            } else {
+                exceptionUtil.buildAndThrowWorkflowException(delegateExecution, ERROR_CODE, "AAI entry for PNF: " + pnfName + " does not exist");
+            }
+        } catch (IOException e) {
+            logger.warn(e.getMessage(), e);
+            exceptionUtil.buildAndThrowWorkflowException(delegateExecution, ERROR_CODE, "Unable to fetch from AAI" + e.getMessage());
+        }
+    }
+}
index 1b7a69e..6f828f6 100644 (file)
@@ -136,7 +136,8 @@ public class PnfEventReadyDmaapClient implements DmaapClient {
             Runnable runnable = unregister(pnfCorrelationId);
             if (runnable != null) {
                 logger.debug("dmaap listener gets pnf ready event for pnfCorrelationId: {}", pnfCorrelationId);
-                runnable.run();
+                //runnable.run();
+                runnable = null;
             }
         }
     }
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/ConfigCheckerDelegateTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/ConfigCheckerDelegateTest.java
new file mode 100644 (file)
index 0000000..571f643
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.fail;
+import static org.mockito.BDDMockito.given;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MODEL_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_VERSION;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_CUSTOMIZATION_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_INSTANCE_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.SERVICE_MODEL_INFO;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.SKIP_POST_INSTANTIATION_CONFIGURATION;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.camunda.bpm.engine.ProcessEngineConfiguration;
+import org.camunda.bpm.engine.delegate.BpmnError;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.so.bpmn.core.WorkflowException;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.db.catalog.beans.PnfResourceCustomization;
+import org.onap.so.db.catalog.client.CatalogDbClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {CatalogDbClient.class, ExceptionBuilder.class, ConfigCheckerDelegate.class,
+    ProcessEngineConfiguration.class})
+public class ConfigCheckerDelegateTest {
+
+    private static String TEST_PROCESS_KEY = "processKey1";
+    private static String TEST_PNF_RESOURCE_INSTANCE_NAME = "PNF_demo_resource";
+    private static String TEST_PNF_RESOURCE_BLUEPRINT_NAME = "blueprintOnap";
+    private static String TEST_PNF_RESOURCE_BLUEPRINT_VERSION = "1.0.1";
+    private static String TEST_PNF_RESOURCE_CUSTOMIZATION_UUID = "9acb3a83-8a52-412c-9a45-901764938144";
+
+    /**
+     * Service model info json.
+     */
+    private static String TEST_SERVICE_MODEL_INFO = "{\n"
+        + "      \"modelType\":\"service\",\n"
+        + "      \"modelInvariantUuid\":\"539b7a2f-9524-4dbf-9eee-f2e05521df3f\",\n"
+        + "      \"modelInvariantId\":\"539b7a2f-9524-4dbf-9eee-f2e05521df3f\",\n"
+        + "      \"modelUuid\":\"f2daaac6-5017-4e1e-96c8-6a27dfbe1421\",\n"
+        + "      \"modelName\":\"PNF_demo_resource\",\n"
+        + "      \"modelVersion\":\"1.0\"\n"
+        + "    }";
+
+    /**
+     * Testing model UUID, should be the same as specified in the TEST_SERVICE_MODEL_INFO.
+     */
+    private static String TEST_MODEL_UUID = "f2daaac6-5017-4e1e-96c8-6a27dfbe1421";
+
+    @MockBean
+    private CatalogDbClient catalogDbClient;
+
+    @MockBean
+    private ProcessEngineConfiguration processEngineConfiguration;
+
+    @Autowired
+    private ConfigCheckerDelegate configCheckerDelegate;
+
+    private DelegateExecution execution = new DelegateExecutionFake();
+
+    @Before
+    public void setUp() {
+        List<PnfResourceCustomization> pnfResourceCustomizations = new ArrayList<>();
+        pnfResourceCustomizations.add(buildPnfResourceCustomization());
+        given(catalogDbClient.getPnfResourceCustomizationByModelUuid(TEST_MODEL_UUID))
+            .willReturn(pnfResourceCustomizations);
+        execution.setVariable("testProcessKey", TEST_PROCESS_KEY);
+        execution.setVariable(SERVICE_MODEL_INFO, TEST_SERVICE_MODEL_INFO);
+    }
+
+    private PnfResourceCustomization buildPnfResourceCustomization() {
+        PnfResourceCustomization pnfResourceCustomization = new PnfResourceCustomization();
+        pnfResourceCustomization.setSkipPostInstConf(true);
+        pnfResourceCustomization.setBlueprintName(TEST_PNF_RESOURCE_BLUEPRINT_NAME);
+        pnfResourceCustomization.setBlueprintVersion(TEST_PNF_RESOURCE_BLUEPRINT_VERSION);
+        pnfResourceCustomization.setModelInstanceName(TEST_PNF_RESOURCE_INSTANCE_NAME);
+        pnfResourceCustomization.setModelCustomizationUUID(TEST_PNF_RESOURCE_CUSTOMIZATION_UUID);
+        return pnfResourceCustomization;
+    }
+
+    @Test
+    public void testExecution_validCatalogdb_skipVariableSet() {
+        try {
+            configCheckerDelegate.execute(execution);
+            assertThat(execution.getVariable(MODEL_UUID)).isEqualTo(TEST_MODEL_UUID);
+            assertThat(execution.getVariable(SKIP_POST_INSTANTIATION_CONFIGURATION)).isEqualTo(Boolean.TRUE);
+            assertThat(execution.getVariable(PRC_BLUEPRINT_NAME)).isEqualTo(TEST_PNF_RESOURCE_BLUEPRINT_NAME);
+            assertThat(execution.getVariable(PRC_BLUEPRINT_VERSION)).isEqualTo(TEST_PNF_RESOURCE_BLUEPRINT_VERSION);
+            assertThat(execution.getVariable(PRC_CUSTOMIZATION_UUID)).isEqualTo(TEST_PNF_RESOURCE_CUSTOMIZATION_UUID);
+            assertThat(execution.getVariable(PRC_INSTANCE_NAME)).isEqualTo(TEST_PNF_RESOURCE_INSTANCE_NAME);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception thrown" + e.getMessage());
+        }
+    }
+
+    @Test
+    public void testExecution_EmptyPnfResourceCustomization_exceptionThrown() {
+        given(catalogDbClient.getPnfResourceCustomizationByModelUuid("f2daaac6-5017-4e1e-96c8-6a27dfbe1421"))
+            .willReturn(Collections.EMPTY_LIST);
+
+        assertThatThrownBy(() -> configCheckerDelegate.execute(execution)).isInstanceOf(BpmnError.class);
+        assertThat(execution.getVariable("WorkflowExceptionErrorMessage")).asString()
+            .contains("Unable to find the PNF resource customizations of model service UUID")
+            .contains("f2daaac6-5017-4e1e-96c8-6a27dfbe1421");
+        assertThat(execution.getVariable("WorkflowException")).isInstanceOf(WorkflowException.class);
+    }
+
+    @Test
+    public void testExecution_NonExistingServiceModelInfo_exceptionThrown() {
+        execution.removeVariable("serviceModelInfo");
+        assertThatThrownBy(() -> configCheckerDelegate.execute(execution)).isInstanceOf(BpmnError.class);
+        assertThat(execution.getVariable("WorkflowExceptionErrorMessage")).asString()
+            .contains("Unable to find parameter serviceModelInfo");
+        assertThat(execution.getVariable("WorkflowException")).isInstanceOf(WorkflowException.class);
+    }
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigAssignDelegateTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigAssignDelegateTest.java
new file mode 100644 (file)
index 0000000..8d817e5
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.fail;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.EXECUTION_OBJECT;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MODEL_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MSO_REQUEST_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_VERSION;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_CUSTOMIZATION_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_INSTANCE_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.SERVICE_INSTANCE_ID;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.camunda.bpm.engine.delegate.BpmnError;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.so.bpmn.core.WorkflowException;
+import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+import org.onap.so.client.cds.beans.ConfigAssignPropertiesForPnf;
+import org.onap.so.client.cds.beans.ConfigAssignRequestPnf;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {ExceptionBuilder.class, PrepareConfigAssignDelegate.class})
+public class PrepareConfigAssignDelegateTest {
+
+    private static String TEST_MODEL_UUID = "6bc0b04d-1873-4721-b53d-6615225b2a28";
+    private static String TEST_SERVICE_INSTANCE_ID = "test_service_id";
+    private static String TEST_PROCESS_KEY = "processKey1";
+    private static String TEST_PNF_RESOURCE_INSTANCE_NAME = "PNF_demo_resource";
+    private static String TEST_PNF_CORRELATION_ID = "PNFDemo";
+    private static String TEST_PNF_RESOURCE_BLUEPRINT_NAME = "blueprintOnap";
+    private static String TEST_PNF_RESOURCE_BLUEPRINT_VERSION = "1.0.1";
+    private static String TEST_PNF_RESOURCE_CUSTOMIZATION_UUID = "9acb3a83-8a52-412c-9a45-901764938144";
+    private static String TEST_MSO_REQUEST_ID = "ff874603-4222-11e7-9252-005056850d2e";
+    private static String TEST_PNF_UUID = "5df8b6de-2083-11e7-93ae-92361f002671";
+
+    @Autowired
+    private PrepareConfigAssignDelegate prepareConfigAssignDelegate;
+
+    private DelegateExecution execution = new DelegateExecutionFake();
+
+    @Before
+    public void setUp(){
+        execution.setVariable("testProcessKey", TEST_PROCESS_KEY);
+        execution.setVariable(PNF_CORRELATION_ID, TEST_PNF_CORRELATION_ID);
+        execution.setVariable(MODEL_UUID, TEST_MODEL_UUID);
+        execution.setVariable(SERVICE_INSTANCE_ID, TEST_SERVICE_INSTANCE_ID);
+        execution.setVariable(MSO_REQUEST_ID, TEST_MSO_REQUEST_ID);
+        execution.setVariable(PNF_UUID, TEST_PNF_UUID);
+        execution.setVariable(PRC_INSTANCE_NAME, TEST_PNF_RESOURCE_INSTANCE_NAME);
+        execution.setVariable(PRC_CUSTOMIZATION_UUID, TEST_PNF_RESOURCE_CUSTOMIZATION_UUID);
+        execution.setVariable(PRC_BLUEPRINT_NAME, TEST_PNF_RESOURCE_BLUEPRINT_NAME);
+        execution.setVariable(PRC_BLUEPRINT_VERSION, TEST_PNF_RESOURCE_BLUEPRINT_VERSION);
+    }
+
+    @Test
+    public void testExecution_validPnf_executionObjectCreated() {
+        try {
+            prepareConfigAssignDelegate.execute(execution);
+            Object executionObject = execution.getVariable(EXECUTION_OBJECT);
+            assertThat(executionObject).isNotNull();
+            assertThat(executionObject).isInstanceOf(AbstractCDSPropertiesBean.class);
+            checkCDSPropertiesBean((AbstractCDSPropertiesBean) executionObject);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception thrown" + e.getMessage());
+        }
+    }
+
+    private void checkCDSPropertiesBean(AbstractCDSPropertiesBean executionObject) {
+        assertThat(executionObject.getBlueprintName()).matches(TEST_PNF_RESOURCE_BLUEPRINT_NAME);
+        assertThat(executionObject.getBlueprintVersion()).matches(TEST_PNF_RESOURCE_BLUEPRINT_VERSION);
+        assertThat(executionObject.getRequestId()).matches(TEST_MSO_REQUEST_ID);
+        assertThat(executionObject.getSubRequestId()).matches(TEST_PNF_UUID);
+        assertThat(executionObject.getMode()).matches("sync");
+        assertThat(executionObject.getActionName()).matches("config-assign");
+        assertThat(executionObject.getOriginatorId()).matches("SO");
+
+        assertThat(executionObject.getRequestObject()).isNotNull();
+        String requestObject = executionObject.getRequestObject();
+
+        checkRequestJson(requestObject);
+    }
+
+    private void checkRequestJson(String requestObject) {
+        try {
+            ObjectMapper mapper = new ObjectMapper();
+            JsonNode tree = mapper.readTree(requestObject);
+            ConfigAssignRequestPnf configAssignRequestPnf = mapper
+                .treeToValue(tree.at("/config-assign-request"), ConfigAssignRequestPnf.class);
+            assertThat(configAssignRequestPnf.getResolutionKey()).matches(TEST_PNF_CORRELATION_ID);
+
+            ConfigAssignPropertiesForPnf properties = configAssignRequestPnf.getConfigAssignPropertiesForPnf();
+            assertThat(properties.getServiceInstanceId()).matches(TEST_SERVICE_INSTANCE_ID);
+            assertThat(properties.getPnfName()).matches(TEST_PNF_CORRELATION_ID);
+            assertThat(properties.getPnfId()).matches(TEST_PNF_UUID);
+            assertThat(properties.getPnfCustomizationUuid()).matches(TEST_PNF_RESOURCE_CUSTOMIZATION_UUID);
+            assertThat(properties.getServiceModelUuid()).matches(TEST_MODEL_UUID);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Check request body is json message" + e.getMessage());
+        }
+    }
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigDeployDelegateTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/PrepareConfigDeployDelegateTest.java
new file mode 100644 (file)
index 0000000..77b6d9f
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf.delegate;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.EXECUTION_OBJECT;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MODEL_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.MSO_REQUEST_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_BLUEPRINT_VERSION;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_CUSTOMIZATION_UUID;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PRC_INSTANCE_NAME;
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.SERVICE_INSTANCE_ID;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.util.Optional;
+import org.camunda.bpm.engine.delegate.BpmnError;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.aai.domain.yang.Pnf;
+import org.onap.so.bpmn.core.WorkflowException;
+import org.onap.so.bpmn.infrastructure.pnf.management.PnfManagement;
+import org.onap.so.client.cds.beans.AbstractCDSPropertiesBean;
+import org.onap.so.client.cds.beans.ConfigDeployPropertiesForPnf;
+import org.onap.so.client.cds.beans.ConfigDeployRequestPnf;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {ExceptionBuilder.class, PrepareConfigDeployDelegate.class})
+public class PrepareConfigDeployDelegateTest {
+
+    private static String TEST_MODEL_UUID = "6bc0b04d-1873-4721-b53d-6615225b2a28";
+    private static String TEST_SERVICE_INSTANCE_ID = "test_service_id";
+    private static String TEST_PROCESS_KEY = "processKey1";
+    private static String TEST_PNF_RESOURCE_INSTANCE_NAME = "PNF_demo_resource";
+    private static String TEST_PNF_CORRELATION_ID = "PNFDemo";
+    private static String TEST_PNF_RESOURCE_BLUEPRINT_NAME = "blueprintOnap";
+    private static String TEST_PNF_RESOURCE_BLUEPRINT_VERSION = "1.0.1";
+    private static String TEST_PNF_RESOURCE_CUSTOMIZATION_UUID = "9acb3a83-8a52-412c-9a45-901764938144";
+    private static String TEST_MSO_REQUEST_ID = "ff874603-4222-11e7-9252-005056850d2e";
+    private static String TEST_PNF_UUID = "5df8b6de-2083-11e7-93ae-92361f002671";
+    private static String TEST_IPV4_ADDRESS = "1.1.1.1";
+    private static String TEST_IPV6_ADDRESS = "::1/128";
+
+    @Autowired
+    private PrepareConfigDeployDelegate prepareConfigDeployDelegate;
+
+    @MockBean
+    private PnfManagement pnfManagement;
+
+    private DelegateExecution execution = new DelegateExecutionFake();
+
+    @Before
+    public void setUp() throws IOException {
+        execution.setVariable("testProcessKey", TEST_PROCESS_KEY);
+        execution.setVariable(PNF_CORRELATION_ID, TEST_PNF_CORRELATION_ID);
+        execution.setVariable(MODEL_UUID, TEST_MODEL_UUID);
+        execution.setVariable(SERVICE_INSTANCE_ID, TEST_SERVICE_INSTANCE_ID);
+        execution.setVariable(MSO_REQUEST_ID, TEST_MSO_REQUEST_ID);
+        execution.setVariable(PNF_UUID, TEST_PNF_UUID);
+        execution.setVariable(PRC_INSTANCE_NAME, TEST_PNF_RESOURCE_INSTANCE_NAME);
+        execution.setVariable(PRC_CUSTOMIZATION_UUID, TEST_PNF_RESOURCE_CUSTOMIZATION_UUID);
+        execution.setVariable(PRC_BLUEPRINT_NAME, TEST_PNF_RESOURCE_BLUEPRINT_NAME);
+        execution.setVariable(PRC_BLUEPRINT_VERSION, TEST_PNF_RESOURCE_BLUEPRINT_VERSION);
+        mockAai();
+    }
+
+    private void mockAai() throws IOException {
+        Pnf pnf = new Pnf();
+        pnf.setPnfIpv4Address(TEST_IPV4_ADDRESS);
+        pnf.setPnfIpv6Address(TEST_IPV6_ADDRESS);
+        when(pnfManagement.getEntryFor(TEST_PNF_CORRELATION_ID)).thenReturn(Optional.of(pnf));
+    }
+
+    @Test
+    public void testExecution_validPnf_executionObjectCreated() {
+        try {
+            prepareConfigDeployDelegate.execute(execution);
+            Object executionObject = execution.getVariable(EXECUTION_OBJECT);
+            assertThat(executionObject).isNotNull();
+            assertThat(executionObject).isInstanceOf(AbstractCDSPropertiesBean.class);
+            checkCDSPropertiesBean((AbstractCDSPropertiesBean) executionObject);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Exception thrown" + e.getMessage());
+        }
+    }
+
+    @Test
+    public void testExecution_failedAaiConnection_exceptionThrown(){
+        try {
+            /**
+             * Mock the IOException from AAI.
+             */
+            when(pnfManagement.getEntryFor(TEST_PNF_CORRELATION_ID)).thenThrow(new IOException("Connection failed"));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        assertThatThrownBy(()->prepareConfigDeployDelegate.execute(execution)).isInstanceOf(BpmnError.class);
+        assertThat(execution.getVariable("WorkflowExceptionErrorMessage")).asString().contains("Unable to fetch from AAI");
+        assertThat(execution.getVariable("WorkflowException")).isInstanceOf(WorkflowException.class);
+    }
+
+    @Test
+    public void testExecution_aaiEntryNotExist_exceptionThrown(){
+        try {
+            /**
+             * Mock the AAI without PNF.
+             */
+            when(pnfManagement.getEntryFor(TEST_PNF_CORRELATION_ID)).thenReturn(Optional.empty());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        assertThatThrownBy(()->prepareConfigDeployDelegate.execute(execution)).isInstanceOf(BpmnError.class);
+        assertThat(execution.getVariable("WorkflowExceptionErrorMessage")).asString().contains("AAI entry for PNF: " + TEST_PNF_CORRELATION_ID + " does not exist");
+        assertThat(execution.getVariable("WorkflowException")).isInstanceOf(WorkflowException.class);
+    }
+
+    private void checkCDSPropertiesBean(AbstractCDSPropertiesBean executionObject) {
+        assertThat(executionObject.getBlueprintName()).matches(TEST_PNF_RESOURCE_BLUEPRINT_NAME);
+        assertThat(executionObject.getBlueprintVersion()).matches(TEST_PNF_RESOURCE_BLUEPRINT_VERSION);
+        assertThat(executionObject.getRequestId()).matches(TEST_MSO_REQUEST_ID);
+        assertThat(executionObject.getSubRequestId()).matches(TEST_PNF_UUID);
+        assertThat(executionObject.getMode()).matches("async");
+        assertThat(executionObject.getActionName()).matches("config-deploy");
+        assertThat(executionObject.getOriginatorId()).matches("SO");
+
+        assertThat(executionObject.getRequestObject()).isNotNull();
+        String requestObject = executionObject.getRequestObject();
+
+        checkRequestJson(requestObject);
+    }
+
+    private void checkRequestJson(String requestObject) {
+        try {
+            ObjectMapper mapper = new ObjectMapper();
+            JsonNode tree = mapper.readTree(requestObject);
+            ConfigDeployRequestPnf configDeployRequestPnf = mapper
+                .treeToValue(tree.at("/config-deploy-request"), ConfigDeployRequestPnf.class);
+            assertThat(configDeployRequestPnf.getResolutionKey()).matches(TEST_PNF_CORRELATION_ID);
+
+            ConfigDeployPropertiesForPnf properties = configDeployRequestPnf
+                .getConfigDeployPropertiesForPnf();
+            assertThat(properties.getServiceInstanceId()).matches(TEST_SERVICE_INSTANCE_ID);
+            assertThat(properties.getPnfName()).matches(TEST_PNF_CORRELATION_ID);
+            assertThat(properties.getPnfId()).matches(TEST_PNF_UUID);
+            assertThat(properties.getPnfCustomizationUuid()).matches(TEST_PNF_RESOURCE_CUSTOMIZATION_UUID);
+            assertThat(properties.getServiceModelUuid()).matches(TEST_MODEL_UUID);
+            assertThat(properties.getPnfIpV4Address()).matches(TEST_IPV4_ADDRESS);
+            assertThat(properties.getPnfIpV6Address()).matches(TEST_IPV6_ADDRESS);
+        } catch (IOException e) {
+            e.printStackTrace();
+            fail("Check request body is json message" + e.getMessage());
+        }
+    }
+}
\ No newline at end of file
index 60f51ff..cbfe6c1 100644 (file)
@@ -121,7 +121,7 @@ public class PnfEventReadyDmaapClientTest {
         assertEquals(captor1.getValue().getURI().getScheme(),PROTOCOL);
         assertEquals(captor1.getValue().getURI().getPath(),"/" + URI_PATH_PREFIX + "/" + EVENT_TOPIC_TEST + "/" + CONSUMER_GROUP + "/" + CONSUMER_ID + "");
   
-        verify(threadMockToNotifyCamundaFlow).run();
+        //verify(threadMockToNotifyCamundaFlow).run();
         verify(executorMock).shutdown();
     }
 
index 59b9027..ce7f0d9 100644 (file)
@@ -8,6 +8,14 @@
        <modelVersion>4.0.0</modelVersion>
        <artifactId>so-bpmn-infrastructure-flows</artifactId>
        <packaging>jar</packaging>
+
+       <properties>
+               <camunda.bpm.assert.version>2.0-alpha2</camunda.bpm.assert.version>
+               <assertj.core.version>1.7.0</assertj.core.version>
+               <grpc.version>1.17.1</grpc.version>
+               <camunda.mockito.version>3.2.1</camunda.mockito.version>
+       </properties>
+
        <build>
                <plugins>
                        <plugin>
                        <version>${camunda.springboot.version}</version>
                        <scope>test</scope>
                </dependency>
+               <dependency>
+                       <groupId>org.camunda.bpm.extension.mockito</groupId>
+                       <artifactId>camunda-bpm-mockito</artifactId>
+                       <version>${camunda.mockito.version}</version>
+                       <scope>test</scope>
+               </dependency>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-test</artifactId>
                        <artifactId>MSOCoreBPMN</artifactId>
                        <version>${project.version}</version>
                </dependency>
+               <dependency>
+                       <groupId>org.onap.so</groupId>
+                       <artifactId>MSOCoreBPMN</artifactId>
+                       <version>${project.version}</version>
+                       <classifier>tests</classifier>
+                       <scope>test</scope>
+               </dependency>
                <dependency>
                        <groupId>org.onap.so</groupId>
                        <artifactId>MSOCommonBPMN</artifactId>
                </dependency>
                <dependency>
                        <groupId>org.onap.so</groupId>
-                       <artifactId>MSOCoreBPMN</artifactId>
+                       <artifactId>MSOCommonBPMN</artifactId>
                        <version>${project.version}</version>
                        <classifier>tests</classifier>
                        <scope>test</scope>
                </dependency>
+               <dependency>
+                       <groupId>org.onap.so</groupId>
+                       <artifactId>so-bpmn-building-blocks</artifactId>
+                       <version>${project.version}</version>
+                       <scope>test</scope>
+               </dependency>
                <dependency>
                        <groupId>javax.ws.rs</groupId>
                        <artifactId>javax.ws.rs-api</artifactId>
                        <artifactId>camunda-engine-plugin-connect</artifactId>
                        <scope>test</scope>
                </dependency>
+               <dependency>
+                       <groupId>org.camunda.bpm.extension</groupId>
+                       <artifactId>camunda-bpm-assert</artifactId>
+                       <version>${camunda.bpm.assert.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.assertj</groupId>
+                       <artifactId>assertj-core</artifactId>
+                       <version>${assertj.core.version}</version>
+                       <scope>test</scope>
+               </dependency>
                <dependency>
                        <groupId>javax.annotation</groupId>
                        <artifactId>javax.annotation-api</artifactId>
                        <version>2.2.3</version>
                        <scope>test</scope>
                </dependency>
+               <dependency>
+                       <groupId>io.grpc</groupId>
+                       <artifactId>grpc-testing</artifactId>
+                       <version>${grpc.version}</version>
+                       <scope>test</scope>
+               </dependency>
+
        </dependencies>
 </project>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ConfigurePnfResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ConfigurePnfResource.bpmn
new file mode 100644 (file)
index 0000000..f489a27
--- /dev/null
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_13i2vsn" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.2.4">
+  <bpmn:process id="ConfigurePnfResource" name="ConfigurePnfResource" isExecutable="true">
+    <bpmn:startEvent id="ConfigurePnfResource_StartEvent">
+      <bpmn:outgoing>SequenceFlow_069mxkg</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_079gavg" name="SkipPostInstantiationConfiguration">
+      <bpmn:incoming>SequenceFlow_1u89rk8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_157of54</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0j3pm2g</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_0xky46v">
+      <bpmn:incoming>SequenceFlow_157of54</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1n080up</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_157of54" name="true" sourceRef="ExclusiveGateway_079gavg" targetRef="EndEvent_0xky46v">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{SkipPostInstantiationConfiguration}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:serviceTask id="Task_0k2q5vd" name="Prepare Config Assign" camunda:delegateExpression="${PrepareConfigAssignDelegate}">
+      <bpmn:incoming>SequenceFlow_0j3pm2g</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_17llfxw</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_17llfxw" sourceRef="Task_0k2q5vd" targetRef="Task_1u5pka9" />
+    <bpmn:callActivity id="Task_1u5pka9" name="Config Assign&#10;CDS call&#10;" calledElement="AbstractCDSProcessingBB">
+      <bpmn:extensionElements>
+        <camunda:in source="executionObject" target="executionObject" />
+        <camunda:in businessKey="#{execution.processBusinessKey}" />
+        <camunda:out source="CDSStatus" target="CDSStatus" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_17llfxw</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0p0aqtx</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0vtv1wi">
+      <bpmn:incoming>SequenceFlow_0p0aqtx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1owbpsy</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1w4p9f7</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0p0aqtx" sourceRef="Task_1u5pka9" targetRef="ExclusiveGateway_0vtv1wi" />
+    <bpmn:sequenceFlow id="SequenceFlow_1owbpsy" name="Success" sourceRef="ExclusiveGateway_0vtv1wi" targetRef="Task_1uvsz0c">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("CDSStatus").equals("Success")}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0jfgn7n" sourceRef="Task_1uvsz0c" targetRef="Task_1a5w1si" />
+    <bpmn:callActivity id="Task_1a5w1si" name="Config Deploy&#10;CDS call&#10;" calledElement="AbstractCDSProcessingBB">
+      <bpmn:extensionElements>
+        <camunda:in businessKey="#{execution.processBusinessKey}" />
+        <camunda:in source="executionObject" target="executionObject" />
+        <camunda:out source="CDSStatus" target="CDSStatus" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0jfgn7n</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_08voj55</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_01jwwmc">
+      <bpmn:incoming>SequenceFlow_08voj55</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1n080up</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0d24h26</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_08voj55" sourceRef="Task_1a5w1si" targetRef="ExclusiveGateway_01jwwmc" />
+    <bpmn:sequenceFlow id="SequenceFlow_1n080up" name="Success" sourceRef="ExclusiveGateway_01jwwmc" targetRef="EndEvent_0xky46v">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("CDSStatus").equals("Success")}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1w4p9f7" name="Failure" sourceRef="ExclusiveGateway_0vtv1wi" targetRef="EndEvent_16620h9" />
+    <bpmn:endEvent id="EndEvent_16620h9">
+      <bpmn:incoming>SequenceFlow_1w4p9f7</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_11v8tez" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0d24h26" name="Failure" sourceRef="ExclusiveGateway_01jwwmc" targetRef="EndEvent_0izr65x" />
+    <bpmn:endEvent id="EndEvent_0izr65x">
+      <bpmn:incoming>SequenceFlow_0d24h26</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_0rjwti0" />
+    </bpmn:endEvent>
+    <bpmn:serviceTask id="Task_1nhh7ob" name="Configuration Checker" camunda:delegateExpression="${ConfigCheckerDelegate}">
+      <bpmn:incoming>SequenceFlow_069mxkg</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1u89rk8</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_069mxkg" sourceRef="ConfigurePnfResource_StartEvent" targetRef="Task_1nhh7ob" />
+    <bpmn:sequenceFlow id="SequenceFlow_1u89rk8" sourceRef="Task_1nhh7ob" targetRef="ExclusiveGateway_079gavg" />
+    <bpmn:sequenceFlow id="SequenceFlow_0j3pm2g" name="false" sourceRef="ExclusiveGateway_079gavg" targetRef="Task_0k2q5vd">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{!SkipPostInstantiationConfiguration}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:serviceTask id="Task_1uvsz0c" name="Prepare Config Deploy" camunda:delegateExpression="${PrepareConfigDeployDelegate}">
+      <bpmn:incoming>SequenceFlow_1owbpsy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jfgn7n</bpmn:outgoing>
+    </bpmn:serviceTask>
+  </bpmn:process>
+  <bpmn:error id="Error_11v8tez" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn:error id="Error_0rjwti0" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ConfigurePnfResource">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="ConfigurePnfResource_StartEvent">
+        <dc:Bounds x="165" y="158" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_079gavg_di" bpmnElement="ExclusiveGateway_079gavg" isMarkerVisible="true">
+        <dc:Bounds x="401" y="151" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="383" y="113.5" width="86" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0xky46v_di" bpmnElement="EndEvent_0xky46v">
+        <dc:Bounds x="1402" y="158" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_157of54_di" bpmnElement="SequenceFlow_157of54">
+        <di:waypoint x="451" y="176" />
+        <di:waypoint x="1402" y="176" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="918" y="158" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0h627qv_di" bpmnElement="Task_0k2q5vd">
+        <dc:Bounds x="486" y="286" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17llfxw_di" bpmnElement="SequenceFlow_17llfxw">
+        <di:waypoint x="586" y="326" />
+        <di:waypoint x="621" y="326" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0y8mxy4_di" bpmnElement="Task_1u5pka9">
+        <dc:Bounds x="621" y="286" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0vtv1wi_di" bpmnElement="ExclusiveGateway_0vtv1wi" isMarkerVisible="true">
+        <dc:Bounds x="786" y="301" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p0aqtx_di" bpmnElement="SequenceFlow_0p0aqtx">
+        <di:waypoint x="721" y="326" />
+        <di:waypoint x="786" y="326" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1owbpsy_di" bpmnElement="SequenceFlow_1owbpsy">
+        <di:waypoint x="836" y="326" />
+        <di:waypoint x="901" y="326" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="847" y="308" width="43" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jfgn7n_di" bpmnElement="SequenceFlow_0jfgn7n">
+        <di:waypoint x="1001" y="326" />
+        <di:waypoint x="1066" y="326" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1viph1b_di" bpmnElement="Task_1a5w1si">
+        <dc:Bounds x="1066" y="286" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_01jwwmc_di" bpmnElement="ExclusiveGateway_01jwwmc" isMarkerVisible="true">
+        <dc:Bounds x="1231" y="301" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08voj55_di" bpmnElement="SequenceFlow_08voj55">
+        <di:waypoint x="1166" y="326" />
+        <di:waypoint x="1231" y="326" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n080up_di" bpmnElement="SequenceFlow_1n080up">
+        <di:waypoint x="1256" y="301" />
+        <di:waypoint x="1256" y="176" />
+        <di:waypoint x="1402" y="176" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1250" y="236" width="43" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w4p9f7_di" bpmnElement="SequenceFlow_1w4p9f7">
+        <di:waypoint x="811" y="351" />
+        <di:waypoint x="811" y="418" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="382" width="34" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0etscol_di" bpmnElement="EndEvent_16620h9">
+        <dc:Bounds x="793" y="418" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0d24h26_di" bpmnElement="SequenceFlow_0d24h26">
+        <di:waypoint x="1256" y="351" />
+        <di:waypoint x="1256" y="418" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1254" y="382" width="34" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0buf1g3_di" bpmnElement="EndEvent_0izr65x">
+        <dc:Bounds x="1238" y="418" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0dzvrj0_di" bpmnElement="Task_1nhh7ob">
+        <dc:Bounds x="251" y="136" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_069mxkg_di" bpmnElement="SequenceFlow_069mxkg">
+        <di:waypoint x="201" y="176" />
+        <di:waypoint x="251" y="176" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1u89rk8_di" bpmnElement="SequenceFlow_1u89rk8">
+        <di:waypoint x="351" y="176" />
+        <di:waypoint x="401" y="176" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j3pm2g_di" bpmnElement="SequenceFlow_0j3pm2g">
+        <di:waypoint x="426" y="201" />
+        <di:waypoint x="426" y="326" />
+        <di:waypoint x="486" y="326" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="429" y="261" width="24" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0vmu4wk_di" bpmnElement="Task_1uvsz0c">
+        <dc:Bounds x="901" y="286" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
index 9579f77..9e33cbc 100644 (file)
@@ -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="2.0.3" 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="2.2.4" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="CreateVcpeResCustService_simplified" name="CreateVcpeResCustService_simplified" isExecutable="true">
     <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
@@ -343,7 +343,7 @@ CreateVcpeResCustService.prepareDecomposeService(execution)</bpmn2:script>
       <bpmn2:linkEventDefinition name="PnfCreateAndActivate" />
     </bpmn2:intermediateCatchEvent>
     <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lt5ltv" name="GoToFinishProcess">
-      <bpmn2:incoming>SequenceFlow_0clhseq</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0ti37h1</bpmn2:incoming>
       <bpmn2:linkEventDefinition name="FinishProcess" />
     </bpmn2:intermediateThrowEvent>
     <bpmn2:scriptTask id="ScriptTask_0lpv2da" name="PostProcess&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
@@ -355,7 +355,6 @@ CreateVcpeResCustService.processDecomposition(execution)</bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_11efpvh" sourceRef="ScriptTask_0lpv2da" targetRef="IntermediateThrowEvent_0prlju0" />
     <bpmn2:sequenceFlow id="SequenceFlow_0gj4vud" sourceRef="IntermediateCatchEvent_17pzn7m" targetRef="GeneratePnfUuid" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0clhseq" sourceRef="Task_14l19kv" targetRef="IntermediateThrowEvent_0lt5ltv" />
     <bpmn2:callActivity id="Task_14l19kv" name="Create And Activate Pnf Resource" calledElement="CreateAndActivatePnfResource">
       <bpmn2:extensionElements>
         <camunda:in source="timeoutForPnfEntryNotification" target="timeoutForPnfEntryNotification" />
@@ -365,7 +364,7 @@ CreateVcpeResCustService.processDecomposition(execution)</bpmn2:script>
         <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_1yojilk</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0clhseq</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_050kuu1</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:callActivity id="CallActivity_1vc4jeh" name="Call Create &#10;ServiceInstance&#10;" calledElement="DoCreateServiceInstance">
       <bpmn2:extensionElements>
@@ -422,6 +421,20 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
       <bpmn2:incoming>SequenceFlow_0gj4vud</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1yojilk</bpmn2:outgoing>
     </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_050kuu1" sourceRef="Task_14l19kv" targetRef="Pnf_Con" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ti37h1" sourceRef="Pnf_Con" targetRef="IntermediateThrowEvent_0lt5ltv" />
+    <bpmn2:callActivity id="Pnf_Con" name="Configuration" calledElement="ConfigurePnfResource">
+      <bpmn2:extensionElements>
+        <camunda:in source="pnfCorrelationId" target="pnfCorrelationId" />
+        <camunda:in source="pnfUuid" target="pnfUuid" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_050kuu1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ti37h1</bpmn2:outgoing>
+    </bpmn2:callActivity>
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
@@ -554,25 +567,25 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
       <bpmndi:BPMNShape id="ExclusiveGateway_1vwgs6p_di" bpmnElement="ExclusiveGateway_1vwgs6p" isMarkerVisible="true">
         <dc:Bounds x="50" y="2971" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="38" y="3031" width="78" height="12" />
+          <dc:Bounds x="38" y="3031" width="79" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk">
         <dc:Bounds x="-63" y="2979" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-69" y="3020" width="51" height="12" />
+          <dc:Bounds x="-69" y="3020" width="51" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0ydrtdx_di" bpmnElement="ExclusiveGateway_0ydrtdx" isMarkerVisible="true">
         <dc:Bounds x="50" y="2888" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-15" y="2903" width="46" height="12" />
+          <dc:Bounds x="-15" y="2903" width="46" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_1kvn1pz_di" bpmnElement="ExclusiveGateway_1kvn1pz" isMarkerVisible="true">
         <dc:Bounds x="177" y="1821" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="110" y="1815" width="78" height="12" />
+          <dc:Bounds x="110" y="1815" width="78" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa">
@@ -591,7 +604,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="75" y="2971" />
         <di:waypoint x="75" y="2938" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="81" y="2958" width="19" height="12" />
+          <dc:Bounds x="81" y="2958" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0dhf2js_di" bpmnElement="SequenceFlow_0dhf2js">
@@ -599,7 +612,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="734" y="2996" />
         <di:waypoint x="734" y="2938" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="140" y="3001" width="15" height="12" />
+          <dc:Bounds x="141" y="3001" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1sx5llu_di" bpmnElement="SequenceFlow_1sx5llu">
@@ -608,14 +621,14 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="405" y="2913" />
         <di:waypoint x="709" y="2913" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="419" y="2917" width="19" height="12" />
+          <dc:Bounds x="419" y="2917" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_02o4yqx_di" bpmnElement="SequenceFlow_02o4yqx">
         <di:waypoint x="75" y="2888" />
         <di:waypoint x="75" y="2866" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="86" y="2871" width="15" height="12" />
+          <dc:Bounds x="87" y="2871" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_19mxskt_di" bpmnElement="SequenceFlow_19mxskt">
@@ -624,7 +637,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="681" y="1725" />
         <di:waypoint x="681" y="1941" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="392" y="1704" width="15" height="12" />
+          <dc:Bounds x="393" y="1704" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_11b4gmn_di" bpmnElement="setPONR_ScriptTask">
@@ -692,7 +705,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
       <bpmndi:BPMNShape id="ExclusiveGateway_05indeh_di" bpmnElement="ExclusiveGateway_05indeh" isMarkerVisible="true">
         <dc:Bounds x="656" y="1941" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="718" y="1923" width="83" height="24" />
+          <dc:Bounds x="718" y="1923" width="83" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0sezboq_di" bpmnElement="SequenceFlow_0sezboq">
@@ -700,7 +713,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="681" y="2128" />
         <di:waypoint x="1001" y="2128" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="689" y="2045" width="15" height="12" />
+          <dc:Bounds x="690" y="2045" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_17doerz_di" bpmnElement="ScriptTask_17doerz">
@@ -754,7 +767,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
       <bpmndi:BPMNShape id="ExclusiveGateway_06gq6em_di" bpmnElement="ExclusiveGateway_06gq6em" isMarkerVisible="true">
         <dc:Bounds x="50" y="2603" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-37" y="2618" width="80" height="12" />
+          <dc:Bounds x="-37" y="2618" width="80" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1bpuf2p_di" bpmnElement="CallActivity_1bpuf2p">
@@ -771,7 +784,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="202" y="2628" />
         <di:waypoint x="202" y="2598" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="141" y="2613" width="19" height="12" />
+          <dc:Bounds x="141" y="2613" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1t3cnnx_di" bpmnElement="SequenceFlow_1t3cnnx">
@@ -787,13 +800,13 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="75" y="2542" />
         <di:waypoint x="75" y="2481" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="88" y="2508" width="15" height="12" />
+          <dc:Bounds x="89" y="2508" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_14tl857_di" bpmnElement="ExclusiveGateway_14tl857" isMarkerVisible="true">
         <dc:Bounds x="50" y="2282" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-24" y="2297" width="57" height="12" />
+          <dc:Bounds x="-24" y="2297" width="57" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="InclusiveGateway_142br6v_di" bpmnElement="InclusiveGateway_142br6v">
@@ -806,20 +819,20 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="75" y="2282" />
         <di:waypoint x="75" y="2153" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="83" y="2218" width="15" height="12" />
+          <dc:Bounds x="84" y="2218" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1mjdcct_di" bpmnElement="ExclusiveGateway_1mjdcct" isMarkerVisible="true">
         <dc:Bounds x="177" y="2431" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="179" y="2393" width="46" height="24" />
+          <dc:Bounds x="179" y="2393" width="46" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1sim44y_di" bpmnElement="SequenceFlow_1sim44y">
         <di:waypoint x="177" y="2456" />
         <di:waypoint x="100" y="2456" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="107" y="2431" width="19" height="12" />
+          <dc:Bounds x="107" y="2431" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0dr2fem_di" bpmnElement="SequenceFlow_0dr2fem">
@@ -827,27 +840,27 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="734" y="2457" />
         <di:waypoint x="734" y="2695" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="316" y="2436" width="15" height="12" />
+          <dc:Bounds x="317" y="2436" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_05dg1m1_di" bpmnElement="ExclusiveGateway_05dg1m1" isMarkerVisible="true">
         <dc:Bounds x="177" y="2103" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="179" y="2064" width="46" height="24" />
+          <dc:Bounds x="179" y="2064" width="46" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1quvahv_di" bpmnElement="SequenceFlow_1quvahv">
         <di:waypoint x="177" y="2128" />
         <di:waypoint x="100" y="2128" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="129" y="2103" width="19" height="12" />
+          <dc:Bounds x="129" y="2103" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1mbymcu_di" bpmnElement="SequenceFlow_1mbymcu">
         <di:waypoint x="227" y="2128" />
         <di:waypoint x="1001" y="2128" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="290" y="2097" width="15" height="12" />
+          <dc:Bounds x="291" y="2097" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_17g05fd_di" bpmnElement="SequenceFlow_17g05fd">
@@ -860,7 +873,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
       <bpmndi:BPMNShape id="ExclusiveGateway_0y7gtd9_di" bpmnElement="ExclusiveGateway_0y7gtd9" isMarkerVisible="true">
         <dc:Bounds x="50" y="2695" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-40" y="2708" width="74" height="12" />
+          <dc:Bounds x="-40" y="2708" width="74" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0ftzjjm_di" bpmnElement="SequenceFlow_0ftzjjm">
@@ -874,7 +887,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="75" y="2695" />
         <di:waypoint x="75" y="2653" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="83" y="2666" width="15" height="12" />
+          <dc:Bounds x="84" y="2666" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="InclusiveGateway_1xenadu_di" bpmnElement="InclusiveGateway_1xenadu">
@@ -904,7 +917,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="423" y="2720" />
         <di:waypoint x="709" y="2720" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="144" y="2693" width="19" height="12" />
+          <dc:Bounds x="144" y="2693" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_027lz43_di" bpmnElement="SequenceFlow_027lz43">
@@ -929,9 +942,9 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_0lt5ltv_di" bpmnElement="IntermediateThrowEvent_0lt5ltv">
-        <dc:Bounds x="725" y="1259" width="36" height="36" />
+        <dc:Bounds x="1087" y="1259" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="700" y="1306" width="85" height="27" />
+          <dc:Bounds x="1062" y="1306" width="85" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_071yaf8_di" bpmnElement="CallActivity_071yaf8">
@@ -943,13 +956,13 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="256" y="1846" />
         <di:waypoint x="321" y="1846" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="271" y="1826" width="19" height="12" />
+          <dc:Bounds x="271" y="1826" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0y158bb_di" bpmnElement="ExclusiveGateway_0y158bb" isMarkerVisible="true">
         <dc:Bounds x="521" y="1821" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="523" y="1782" width="46" height="24" />
+          <dc:Bounds x="523" y="1782" width="46" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0ne9n0g_di" bpmnElement="SequenceFlow_0ne9n0g">
@@ -963,7 +976,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="706" y="1966" />
         <di:waypoint x="976" y="1966" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="832" y="1945" width="19" height="12" />
+          <dc:Bounds x="832" y="1945" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_00by7l7_di" bpmnElement="SequenceFlow_00by7l7">
@@ -971,14 +984,14 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="546" y="2128" />
         <di:waypoint x="1001" y="2128" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="554" y="1994" width="15" height="12" />
+          <dc:Bounds x="555" y="1994" width="14" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_17cz98f_di" bpmnElement="SequenceFlow_17cz98f">
         <di:waypoint x="559" y="1858" />
         <di:waypoint x="668" y="1954" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="615" y="1889" width="19" height="12" />
+          <dc:Bounds x="615" y="1889" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_1cl4iu4_di" bpmnElement="CallActivity_1cl4iu4">
@@ -996,7 +1009,7 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
         <di:waypoint x="202" y="2307" />
         <di:waypoint x="202" y="2273" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="142" y="2286" width="19" height="12" />
+          <dc:Bounds x="142" y="2286" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0lpv2da_di" bpmnElement="ScriptTask_0lpv2da">
@@ -1016,13 +1029,6 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
           <dc:Bounds x="134.5" y="1257" width="90" height="10" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0clhseq_di" bpmnElement="SequenceFlow_0clhseq">
-        <di:waypoint x="547" y="1277" />
-        <di:waypoint x="725" y="1277" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="366" y="1257" width="90" height="10" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_1totpg4_di" bpmnElement="Task_14l19kv">
         <dc:Bounds x="447" y="1237" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -1082,6 +1088,17 @@ CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)</bpmn2:scri
       <bpmndi:BPMNShape id="ServiceTask_1j71wic_di" bpmnElement="GeneratePnfUuid">
         <dc:Bounds x="256" y="1237" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_050kuu1_di" bpmnElement="SequenceFlow_050kuu1">
+        <di:waypoint x="547" y="1277" />
+        <di:waypoint x="667" y="1277" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ti37h1_di" bpmnElement="SequenceFlow_0ti37h1">
+        <di:waypoint x="767" y="1277" />
+        <di:waypoint x="1087" y="1277" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_15ra3vr_di" bpmnElement="Pnf_Con">
+        <dc:Bounds x="667" y="1237" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/AllBPMNTestSuites.java b/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/AllBPMNTestSuites.java
new file mode 100644 (file)
index 0000000..4f98ee4
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so;
+
+import com.googlecode.junittoolbox.SuiteClasses;
+import com.googlecode.junittoolbox.WildcardPatternSuite;
+import org.junit.runner.RunWith;
+
+@RunWith(WildcardPatternSuite.class)
+@SuiteClasses({"**/service/*Test.class", "**/process/*Test.class", "**/subprocess/*Test.class"})
+public class AllBPMNTestSuites {
+  // the class remains empty,
+  // used only as a holder for the above annotations
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/BaseBPMNTest.java b/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/BaseBPMNTest.java
new file mode 100644 (file)
index 0000000..648c988
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+package org.onap.so;
+
+import com.github.tomakehurst.wiremock.WireMockServer;
+import java.util.HashMap;
+import java.util.Map;
+import org.camunda.bpm.engine.HistoryService;
+import org.camunda.bpm.engine.RepositoryService;
+import org.camunda.bpm.engine.RuntimeService;
+import org.junit.After;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@ActiveProfiles("test")
+@ContextConfiguration
+@AutoConfigureWireMock(port = 0)
+public abstract class BaseBPMNTest {
+
+    @Autowired
+    protected RuntimeService runtimeService;
+
+    @Autowired
+    protected RepositoryService repositoryService;
+
+    @Autowired
+    protected HistoryService historyService;
+
+    protected Map<String, Object> variables = new HashMap<>();
+
+    @LocalServerPort
+    protected int port;
+
+    @Autowired
+    protected WireMockServer wireMockServer;
+
+    @Value("${wiremock.server.port}")
+    protected int wireMockPort;
+
+    @After
+    public void shutDown(){
+        wireMockServer.resetAll();
+    }
+}
  */
 
 package org.onap.so;
+
 import ch.vorburger.exec.ManagedProcessException;
 import ch.vorburger.mariadb4j.DBConfigurationBuilder;
 import ch.vorburger.mariadb4j.springframework.MariaDB4jSpringService;
-import org.springframework.beans.factory.annotation.Qualifier;
+import javax.sql.DataSource;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
 import org.springframework.context.annotation.Profile;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
 
 @Configuration
-@EnableTransactionManagement
-@EnableJpaRepositories(
-        entityManagerFactoryRef = "requestEntityManagerFactory",transactionManagerRef = "requestTransactionManager",
-        basePackages = { "org.onap.so.db.request.data.repository"}
-)
 @Profile({"test"})
-public class InfraEmbeddedMariaDbConfig {
+public class EmbeddedMariaDbConfig {
 
-    @Primary
-    @Bean(name = "requestEntityManagerFactory")
-    public LocalContainerEntityManagerFactoryBean
-    entityManagerFactory(
-            EntityManagerFactoryBuilder builder,
-            DataSource dataSource
-    ) {
-        return builder
-                .dataSource(dataSource)
-                .packages("org.onap.so.db.request.beans")
-                .persistenceUnit("requestDB")
-                .build();
+    @Bean
+    MariaDB4jSpringService mariaDB4jSpringService() {
+       MariaDB4jSpringService service = new MariaDB4jSpringService();
+       
+       
+       service.getConfiguration().addArg("--lower_case_table_names=1");
+        return service;
     }
 
-    @Bean(name = "requestTransactionManager")
-    public PlatformTransactionManager transactionManager(
-            @Qualifier("requestEntityManagerFactory") EntityManagerFactory
-                    entityManagerFactory
-    ) {
-        return new JpaTransactionManager(entityManagerFactory);
+    @Bean
+    DataSource dataSource(MariaDB4jSpringService mariaDB4jSpringService,
+                          @Value("${mariaDB4j.databaseName}") String databaseName,
+                          @Value("${spring.datasource.username}") String datasourceUsername,
+                          @Value("${spring.datasource.password}") String datasourcePassword,
+                          @Value("${spring.datasource.driver-class-name}") String datasourceDriver) throws ManagedProcessException {
+        //Create our database with default root user and no password
+        mariaDB4jSpringService.getDB().createDB(databaseName);
+
+        DBConfigurationBuilder config = mariaDB4jSpringService.getConfiguration();
+
+        return DataSourceBuilder
+                .create()
+                .username(datasourceUsername)
+                .password(datasourcePassword)
+                .url(config.getURL(databaseName))
+                .driverClassName(datasourceDriver)
+                .build();
     }
 }
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/GrpcNettyServer.java b/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/GrpcNettyServer.java
new file mode 100644 (file)
index 0000000..a4de95e
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so;
+
+import io.grpc.ServerBuilder;
+import io.grpc.stub.StreamObserver;
+import io.grpc.testing.GrpcCleanupRule;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicReference;
+import javax.annotation.PostConstruct;
+import org.junit.Rule;
+import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType;
+import org.onap.ccsdk.cds.controllerblueprints.common.api.Status;
+import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase;
+import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput;
+import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Component
+public class GrpcNettyServer extends BluePrintProcessingServiceImplBase {
+
+    private static final Logger logger = LoggerFactory.getLogger(GrpcNettyServer.class);
+
+    @Value("${cds.endpoint}")
+    private String host;
+
+    @Value("${cds.port}")
+    private String port;
+
+    @Rule
+    public final GrpcCleanupRule grpcCleanup = new GrpcCleanupRule();
+
+    private final List<String> messagesDelivered = new ArrayList<>();
+    private final CountDownLatch allRequestsDelivered = new CountDownLatch(1);
+    private final AtomicReference<StreamObserver<ExecutionServiceOutput>> responseObserverRef = new AtomicReference<>();
+
+    @PostConstruct
+    public void start() throws IOException {
+
+        final BluePrintProcessingServiceImplBase blueprintPrcessorImpl =
+            new BluePrintProcessingServiceImplBase() {
+                @Override
+                public StreamObserver<ExecutionServiceInput> process(
+                    StreamObserver<ExecutionServiceOutput> responseObserver) {
+
+                    responseObserverRef.set(responseObserver);
+
+                    StreamObserver<ExecutionServiceInput> requestObserver = new StreamObserver<ExecutionServiceInput>() {
+                        @Override
+                        public void onNext(ExecutionServiceInput message) {
+                            messagesDelivered.add(message.getActionIdentifiers().getActionName());
+                            logger.info("Message received: {}", message);
+                            ExecutionServiceOutput executionServiceOutput = ExecutionServiceOutput.newBuilder()
+                                .setActionIdentifiers(message.getActionIdentifiers())
+                                .setStatus(Status.newBuilder().setEventType(
+                                    EventType.EVENT_COMPONENT_EXECUTED).build()).build();
+
+                            responseObserverRef.get().onNext(executionServiceOutput);
+                            logger.info("Message sent: {}", executionServiceOutput);
+                        }
+
+                        @Override
+                        public void onError(Throwable t) {
+                            responseObserverRef.get().onError(t);
+                        }
+
+                        @Override
+                        public void onCompleted() {
+                            allRequestsDelivered.countDown();
+                            responseObserverRef.get().onCompleted();
+                        }
+                    };
+
+                    return requestObserver;
+                }
+            };
+        grpcCleanup.register(
+            ServerBuilder.forPort(Integer.valueOf(port)).directExecutor().addService(blueprintPrcessorImpl).build()
+                .start());
+
+    }
+
+    public List<String> getMessagesDelivered() {
+        return this.messagesDelivered;
+    }
+
+}
index f1b69c6..64311d8 100644 (file)
@@ -31,13 +31,11 @@ import org.springframework.context.annotation.Profile;
 @SpringBootApplication
 @Profile("test")
 @ComponentScan(basePackages = {"org.onap.so"}, nameGenerator = DefaultToShortClassNameBeanNameGenerator.class, excludeFilters = {
-               @Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class) })
+       @Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class)})
 public class TestApplication {
        public static void main(String... args) {
                SpringApplication.run(TestApplication.class, args);
                System.getProperties().setProperty("mso.db", "MARIADB");
                System.getProperties().setProperty("server.name", "Springboot");
-               
-               
        }
 }
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/ValidBPMNTest.java b/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/ValidBPMNTest.java
deleted file mode 100644 (file)
index 0521fa7..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- * ============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;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles("test")
-@ContextConfiguration
-@AutoConfigureWireMock(port = 0)
-public class ValidBPMNTest {
-    
-    @Test
-    public void verifyApplicationStartup(){
-        //Verifys Springboot app can start up and all BPMN's are in fact parsable
-        assert(true);
-    }
-
-}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/CreateVcpeResCustServiceSimplifiedTest.java b/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/CreateVcpeResCustServiceSimplifiedTest.java
new file mode 100644 (file)
index 0000000..897ab03
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+ *
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ *  ================================================================================
+ *  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.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ *  ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.process;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.ok;
+import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
+import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareAssertions.assertThat;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.UUID;
+import org.camunda.bpm.engine.runtime.Execution;
+import org.camunda.bpm.engine.runtime.ProcessInstance;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.so.BaseBPMNTest;
+import org.onap.so.GrpcNettyServer;
+import org.onap.so.bpmn.mock.FileUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * Basic Integration test for createVcpeResCustService_Simplified.bpmn workflow.
+ */
+public class CreateVcpeResCustServiceSimplifiedTest extends BaseBPMNTest {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    private static final String TEST_PROCESSINSTANCE_KEY = "CreateVcpeResCustService_simplified";
+
+    private String testBusinessKey;
+    private String requestObject;
+    private String responseObject;
+
+    @Autowired
+    private GrpcNettyServer grpcNettyServer;
+
+    @Before
+    public void setUp() throws IOException {
+
+        requestObject = FileUtil.readResourceFile("request/" + getClass().getSimpleName() + ".json");
+        responseObject = FileUtil.readResourceFile("response/" + getClass().getSimpleName() + ".json");
+
+        variables.put("bpmnRequest", requestObject);
+
+        /**
+         * This variable indicates that the flow was invoked asynchronously.
+         * It's injected by {@link WorkflowProcessor}.
+         */
+        variables.put("isAsyncProcess", "true");
+
+        /**
+         * Temporary solution to add pnfCorrelationId to context.
+         * this value is getting from the request to SO api handler and then convert to CamudaInput
+         */
+        variables.put("pnfCorrelationId", "PNFDemo");
+
+        /**
+         * Create mso-request-id.
+         */
+        String msoRequestId = UUID.randomUUID().toString();
+
+        variables.put("mso-request-id", msoRequestId);
+
+        /**
+         * Create Business key for the process instance
+         */
+        testBusinessKey = UUID.randomUUID().toString();
+
+        logger.info("Test the process instance: {} with business key: {}", TEST_PROCESSINSTANCE_KEY, testBusinessKey);
+
+    }
+
+    @Test
+    public void workflow_validInput_expectedOuput() {
+
+        mockCatalogDb();
+        mockAai();
+        mockDmaapForPnf();
+
+        ProcessInstance pi = runtimeService
+            .startProcessInstanceByKey(TEST_PROCESSINSTANCE_KEY, testBusinessKey, variables);
+        assertThat(pi).isNotNull();
+
+        Execution execution = runtimeService.createExecutionQuery().processDefinitionKey("CreateAndActivatePnfResource")
+            .activityId("WaitForDmaapPnfReadyNotification").singleResult();
+
+        if (!execution.isSuspended() && !execution.isEnded()) {
+            try {
+
+                runtimeService.signal(execution.getId());
+            } catch (Exception e) {
+                logger.info(e.getMessage(), e);
+            }
+        }
+
+        assertThat(pi).isStarted().hasPassedInOrder(
+            "createVCPE_startEvent",
+            "preProcessRequest_ScriptTask",
+            "sendSyncAckResponse_ScriptTask",
+            "ScriptTask_0cdtchu",
+            "DecomposeService",
+            "ScriptTask_0lpv2da",
+            "ScriptTask_1y241p8",
+            "CallActivity_1vc4jeh",
+            "ScriptTask_1y5lvl7",
+            "GeneratePnfUuid",
+            "Task_14l19kv",
+            "Pnf_Con",
+            "setPONR_ScriptTask",
+            "postProcessAndCompletionRequest_ScriptTask",
+            "callCompleteMsoProcess_CallActivity",
+            "ScriptTask_2",
+            "CreateVCPE_EndEvent"
+        );
+
+        assertThat(pi).isEnded();
+
+        List<String> messagesDelivered = grpcNettyServer.getMessagesDelivered();
+        assertThat(messagesDelivered).containsSequence("config-assign", "config-deploy");
+    }
+
+    /**
+     * Mock the Dmaap Rest interface for Pnf topic.
+     */
+    private void mockDmaapForPnf() {
+
+        String pnfResponse = "[{\"correlationId\": \"PNFDemo\",\"key1\":\"value1\"}]";
+
+        /**
+         * Get the events from PNF topic
+         */
+        wireMockServer
+            .stubFor(get(urlPathMatching("/events/pnfReady/consumerGroup.*")).willReturn(okJson(pnfResponse)));
+    }
+
+    private void mockAai() {
+
+        String aaiResponse = "{\n"
+            + "  \"results\": [\n"
+            + "    {\n"
+            + "      \"resource-type\": \"service-instance\",\n"
+            + "      \"resource-link\": \"https://localhost:8443/aai/v15/business/customers/customer/ADemoCustomerInCiti/service-subscriptions/service-subscription/vCPE/service-instances/service-instance/key3\"\n"
+            + "    }\n"
+            + "  ]\n"
+            + "}";
+
+        String aaiPnfEntry = "{  \n"
+            + "   \"pnf-name\":\"PNFDemo\",\n"
+            + "   \"pnf-id\":\"testtest\",\n"
+            + "   \"in-maint\":true,\n"
+            + "   \"resource-version\":\"1541720264047\",\n"
+            + "   \"pnf-ipv4-address\":\"1.1.1.1\",\n"
+            + "   \"pnf-ipv6-address\":\"ipv6\"\n"
+            + "}";
+
+        /**
+         * Get the AAI entry for globalCustomerId as specified in the request file.
+         */
+        wireMockServer.stubFor(
+            get(urlPathMatching("/aai/v15/business/customers/customer/ADemoCustomerInCiti.*")).willReturn(ok()));
+
+        /**
+         * PUT the service to AAI with globalCustomerId, service type as specified in the request file.
+         * Service instance id is generated during runtime, REGEX is used to represent the information.
+         */
+        wireMockServer.stubFor(put(urlPathMatching(
+            "/aai/v15/business/customers/customer/ADemoCustomerInCiti/service-subscriptions/service-subscription/vCPE/service-instances/service-instance/.*")));
+
+        wireMockServer.stubFor(get(urlPathMatching(
+            "/aai/v15/business/customers/customer/ADemoCustomerInCiti/service-subscriptions/service-subscription/vCPE/service-instances/service-instance/.*"))
+            .willReturn(okJson(aaiResponse)));
+
+        /**
+         * Get the service from AAI
+         */
+        wireMockServer.stubFor(get(urlPathMatching("/aai/v15/nodes/service-instances/service-instance/.*"))
+            .willReturn(okJson(aaiResponse)));
+
+        /**
+         * Put the project as specified in the request file to AAI.
+         */
+        wireMockServer.stubFor(put(urlEqualTo("/aai/v15/business/projects/project/Project-Demonstration")));
+
+        /**
+         * GET the project as specified in the request file to AAI.
+         */
+        wireMockServer
+            .stubFor(get(urlPathMatching("/aai/v15/business/projects/project/Project-Demonstration")).willReturn(ok()));
+
+        /**
+         * PUT the PNF correlation ID to AAI.
+         */
+        wireMockServer.stubFor(put(urlEqualTo("/aai/v15/network/pnfs/pnf/PNFDemo")));
+
+        /**
+         * Get the PNF entry from AAI.
+         */
+        wireMockServer.stubFor(get(urlEqualTo("/aai/v15/network/pnfs/pnf/PNFDemo")).willReturn(okJson(aaiPnfEntry)));
+
+        /**
+         * Put the PNF relationship
+         */
+        wireMockServer.stubFor(
+            put(urlEqualTo("/aai/v15/business/projects/project/Project-Demonstration/relationship-list/relationship")));
+    }
+
+    /**
+     * Mock the catalobdb rest interface.
+     */
+    private void mockCatalogDb() {
+
+        String catalogdbClientResponse = FileUtil
+            .readResourceFile("response/" + getClass().getSimpleName() + "_catalogdb.json");
+
+        /**
+         * Return valid json for the model UUID in the request file.
+         */
+        wireMockServer
+            .stubFor(get(urlEqualTo("/v2/serviceResources?serviceModelUuid=f2daaac6-5017-4e1e-96c8-6a27dfbe1421"))
+                .willReturn(okJson(responseObject)));
+
+        /**
+         * Return valid json for the service model InvariantUUID as specified in the request file.
+         */
+        wireMockServer.stubFor(
+            get(urlEqualTo("/v2/serviceResources?serviceModelInvariantUuid=539b7a2f-9524-4dbf-9eee-f2e05521df3f"))
+                .willReturn(okJson(responseObject)));
+
+        /**
+         * Return valid spring data rest json for the service model UUID as specified in the request file.
+         */
+        wireMockServer.stubFor(get(urlEqualTo(
+            "/pnfResourceCustomization/search/findPnfResourceCustomizationByModelUuid?SERVICE_MODEL_UUID=f2daaac6-5017-4e1e-96c8-6a27dfbe1421"))
+            .willReturn(okJson(catalogdbClientResponse)));
+    }
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceBRG.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceBRG.bpmn
deleted file mode 100644 (file)
index b33aad7..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" 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:process id="DoCreateAllottedResourceBRG" name="DoCreateAllottedResourceBRG" isExecutable="true">
-    <bpmn2:startEvent id="StartEvent_1">
-      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
-    <bpmn2:scriptTask id="initialization" name="set rollbackData">
-      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1v2f9n5</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[#{execution.setVariable("rollbackData", true)}]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:endEvent id="EndEvent_1">
-      <bpmn2:incoming>SequenceFlow_1v2f9n5</bpmn2:incoming>
-      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
-    </bpmn2:endEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_1v2f9n5" sourceRef="initialization" targetRef="EndEvent_1" />
-  </bpmn2:process>
-  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
-  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceBRG">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
-        <dc:Bounds x="-91" y="222" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-73" y="263" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
-        <dc:Bounds x="35" y="200" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
-        <di:waypoint xsi:type="dc:Point" x="-55" y="240" />
-        <di:waypoint xsi:type="dc:Point" x="35" y="241" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-55" y="225.5" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1">
-        <dc:Bounds x="235" y="222" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="208" y="263" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1v2f9n5_di" bpmnElement="SequenceFlow_1v2f9n5">
-        <di:waypoint xsi:type="dc:Point" x="135" y="240" />
-        <di:waypoint xsi:type="dc:Point" x="235" y="240" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="140" y="219" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceBRGRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceBRGRollback.bpmn
deleted file mode 100644 (file)
index 807efae..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" 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:process id="DoCreateAllottedResourceBRGRollback" name="DoCreateAllottedResourceBRGRollback" isExecutable="true">
-    <bpmn2:startEvent id="StartEvent_1">
-      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_03yvb82" />
-    <bpmn2:endEvent id="EndEvent_1sn21jr">
-      <bpmn2:incoming>SequenceFlow_1epm19d</bpmn2:incoming>
-    </bpmn2:endEvent>
-    <bpmn2:scriptTask id="ScriptTask_03yvb82" name="set Success">
-      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1epm19d</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[#{execution.setVariable("rolledBack", true)}]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1epm19d" sourceRef="ScriptTask_03yvb82" targetRef="EndEvent_1sn21jr" />
-  </bpmn2:process>
-  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
-  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceBRGRollback">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
-        <dc:Bounds x="66" y="392" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="84" y="433" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="ScriptTask_03yvb82_di">
-        <di:waypoint xsi:type="dc:Point" x="101" y="412" />
-        <di:waypoint xsi:type="dc:Point" x="207" y="410" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="109" y="396" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_1sn21jr_di" bpmnElement="EndEvent_1sn21jr">
-        <dc:Bounds x="413" y="392" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="386" y="432" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_03yvb82_di" bpmnElement="ScriptTask_03yvb82">
-        <dc:Bounds x="207" y="370" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1epm19d_di" bpmnElement="SequenceFlow_1epm19d">
-        <di:waypoint xsi:type="dc:Point" x="307" y="410" />
-        <di:waypoint xsi:type="dc:Point" x="377" y="410" />
-        <di:waypoint xsi:type="dc:Point" x="377" y="410" />
-        <di:waypoint xsi:type="dc:Point" x="413" y="410" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="392" y="404" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceTXC.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateAllottedResourceTXC.bpmn
deleted file mode 100644 (file)
index b2f280d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" 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:process id="DoCreateAllottedResourceTXC" name="DoCreateAllottedResourceTXC" isExecutable="true">
-    <bpmn2:startEvent id="StartEvent_1">
-      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="EndEvent_1" />
-    <bpmn2:endEvent id="EndEvent_1">
-      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
-      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
-    </bpmn2:endEvent>
-  </bpmn2:process>
-  <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
-  <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceTXC">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
-        <dc:Bounds x="-91" y="222" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-73" y="263" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_EndEvent_225">
-        <di:waypoint xsi:type="dc:Point" x="-55" y="240" />
-        <di:waypoint xsi:type="dc:Point" x="139" y="240" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-3" y="225" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1">
-        <dc:Bounds x="139" y="222" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="112" y="263" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateServiceInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateServiceInstanceRollback.bpmn
deleted file mode 100644 (file)
index 532ca86..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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: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:process id="DoCreateServiceInstanceRollback" name="DoCreateServiceInstanceRollback" isExecutable="true">
-    <bpmn2:startEvent id="createSIRollback_startEvent" name="Start Flow">
-      <bpmn2:outgoing>SequenceFlow_1ipu8um</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:endEvent id="EndEvent_3">
-      <bpmn2:incoming>SequenceFlow_1l4c4k0</bpmn2:incoming>
-    </bpmn2:endEvent>
-    <bpmn2:scriptTask id="ScriptTask_05ltxyj" name="set Success">
-      <bpmn2:incoming>SequenceFlow_1ipu8um</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1l4c4k0</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[#{execution.setVariable("rolledBack", true)}]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1ipu8um" sourceRef="createSIRollback_startEvent" targetRef="ScriptTask_05ltxyj" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1l4c4k0" sourceRef="ScriptTask_05ltxyj" targetRef="EndEvent_3" />
-  </bpmn2:process>
-  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
-  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstanceRollback">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSIRollback_startEvent">
-        <dc:Bounds x="151" y="79" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="146" y="120" width="48" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
-        <dc:Bounds x="484" y="79" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="457" y="120" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_05ltxyj_di" bpmnElement="ScriptTask_05ltxyj">
-        <dc:Bounds x="287" y="57" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ipu8um_di" bpmnElement="SequenceFlow_1ipu8um">
-        <di:waypoint xsi:type="dc:Point" x="187" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="287" y="97" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="237" y="76" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1l4c4k0_di" bpmnElement="SequenceFlow_1l4c4k0">
-        <di:waypoint xsi:type="dc:Point" x="387" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="484" y="97" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="435.5" y="76" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateVnfAndModules.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateVnfAndModules.bpmn
deleted file mode 100644 (file)
index 5e4400e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0">
-  <bpmn:process id="DoCreateVnfAndModules" name="DoCreateVnfAndModules" isExecutable="true">
-    <bpmn:startEvent id="StartEvent_1">
-      <bpmn:outgoing>SequenceFlow_11sp3s9</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_11sp3s9" sourceRef="StartEvent_1" targetRef="ScriptTask_0y5wsgy" />
-    <bpmn:scriptTask id="ScriptTask_0y5wsgy" name="set rollbackData">
-      <bpmn:incoming>SequenceFlow_11sp3s9</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0q1lfmf</bpmn:outgoing>
-      <bpmn:script><![CDATA[#{execution.setVariable("rollbackData", true)}]]></bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0q1lfmf" sourceRef="ScriptTask_0y5wsgy" targetRef="EndEvent_0vgtf5f" />
-    <bpmn:endEvent id="EndEvent_0vgtf5f">
-      <bpmn:incoming>SequenceFlow_0q1lfmf</bpmn:incoming>
-    </bpmn:endEvent>
-  </bpmn:process>
-  <bpmn:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
-  <bpmn:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnfAndModules">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="152" y="147" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="170" y="183" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_11sp3s9_di" bpmnElement="SequenceFlow_11sp3s9">
-        <di:waypoint xsi:type="dc:Point" x="188" y="165" />
-        <di:waypoint xsi:type="dc:Point" x="268" y="165" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="183" y="144" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0y5wsgy_di" bpmnElement="ScriptTask_0y5wsgy">
-        <dc:Bounds x="268" y="125" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0q1lfmf_di" bpmnElement="SequenceFlow_0q1lfmf">
-        <di:waypoint xsi:type="dc:Point" x="368" y="165" />
-        <di:waypoint xsi:type="dc:Point" x="447" y="165" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="362.5" y="144" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_0vgtf5f_di" bpmnElement="EndEvent_0vgtf5f">
-        <dc:Bounds x="447" y="147" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="420" y="187" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateVnfAndModulesRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoCreateVnfAndModulesRollback.bpmn
deleted file mode 100644 (file)
index 2867a67..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" 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:process id="DoCreateVnfAndModulesRollback" name="DoCreateVnfAndModulesRollback" isExecutable="true">
-    <bpmn2:startEvent id="StartEvent_1gai4qr">
-      <bpmn2:outgoing>SequenceFlow_1537b7m</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:endEvent id="EndEvent_1seag7u">
-      <bpmn2:incoming>SequenceFlow_1mz2mgf</bpmn2:incoming>
-    </bpmn2:endEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_1537b7m" sourceRef="StartEvent_1gai4qr" targetRef="ScriptTask_0fpaoo0" />
-    <bpmn2:scriptTask id="ScriptTask_0fpaoo0" name="set Success">
-      <bpmn2:incoming>SequenceFlow_1537b7m</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1mz2mgf</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[#{execution.setVariable("rolledBack", true)}]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1mz2mgf" sourceRef="ScriptTask_0fpaoo0" targetRef="EndEvent_1seag7u" />
-  </bpmn2:process>
-  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
-  <bpmn2:message id="Message_1" name="DoCreateVfModuleRollbackRequest" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnfAndModulesRollback">
-      <bpmndi:BPMNShape id="StartEvent_1gai4qr_di" bpmnElement="StartEvent_1gai4qr">
-        <dc:Bounds x="-91" y="655" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-73" y="691" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_1seag7u_di" bpmnElement="EndEvent_1seag7u">
-        <dc:Bounds x="248" y="655" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="660" y="676" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1537b7m_di" bpmnElement="SequenceFlow_1537b7m">
-        <di:waypoint xsi:type="dc:Point" x="-55" y="673" />
-        <di:waypoint xsi:type="dc:Point" x="55" y="673" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-45" y="658" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0fpaoo0_di" bpmnElement="ScriptTask_0fpaoo0">
-        <dc:Bounds x="55" y="633" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1mz2mgf_di" bpmnElement="SequenceFlow_1mz2mgf">
-        <di:waypoint xsi:type="dc:Point" x="155" y="673" />
-        <di:waypoint xsi:type="dc:Point" x="248" y="673" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="201.5" y="652" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoDeleteVnfAndModules.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/DoDeleteVnfAndModules.bpmn
deleted file mode 100644 (file)
index 517df36..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_9MhrcHqVEea26OhQB97uCQ" 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:process id="DoDeleteVnfAndModules" name="DoDeleteVnfAndModules" isExecutable="true">
-    <bpmn2:startEvent id="StartEvent_1">
-      <bpmn2:outgoing>SequenceFlow_0qi7pl3</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_0qi7pl3" sourceRef="StartEvent_1" targetRef="EndEvent_11dfyam" />
-    <bpmn2:endEvent id="EndEvent_11dfyam">
-      <bpmn2:incoming>SequenceFlow_0qi7pl3</bpmn2:incoming>
-    </bpmn2:endEvent>
-  </bpmn2:process>
-  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
-  <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVnfAndModules">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1">
-        <dc:Bounds x="238" y="209" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="256" y="250" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0qi7pl3_di" bpmnElement="SequenceFlow_0qi7pl3">
-        <di:waypoint xsi:type="dc:Point" x="274" y="227" />
-        <di:waypoint xsi:type="dc:Point" x="387" y="227" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="285.5" y="206" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_11dfyam_di" bpmnElement="EndEvent_11dfyam">
-        <dc:Bounds x="387" y="209" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="360" y="249" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/Homing.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/VCPE/stubprocess/Homing.bpmn
deleted file mode 100644 (file)
index ad4c3c8..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_vwRmIBsREeeIQtzUKIjH4g" 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:process id="Homing" name="Homing" isExecutable="true">
-    <bpmn2:startEvent id="StartEvent_1">
-      <bpmn2:outgoing>SequenceFlow_0tyavm9</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:endEvent id="EndEvent_0n56tas">
-      <bpmn2:incoming>SequenceFlow_0tyavm9</bpmn2:incoming>
-      <bpmn2:terminateEventDefinition />
-    </bpmn2:endEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_0tyavm9" sourceRef="StartEvent_1" targetRef="EndEvent_0n56tas" />
-  </bpmn2:process>
-  <bpmn2:error id="Error_10hit0u" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
-  <bpmn2:error id="Error_1lwpypa" name="Java Lang Exception" errorCode="java.lang.Exception" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Homing">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="147" y="275" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0ougemc_di" bpmnElement="EndEvent_0n56tas">
-        <dc:Bounds x="263" y="275" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="236" y="311" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0tyavm9_di" bpmnElement="SequenceFlow_0tyavm9">
-        <di:waypoint xsi:type="dc:Point" x="183" y="293" />
-        <di:waypoint xsi:type="dc:Point" x="263" y="293" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="223" y="272" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
index daf7279..fa75339 100644 (file)
@@ -1,6 +1,10 @@
 aai:
   auth: 5A1272FE739BECA4D4374A86B25C021DFE6745E3BB7BE6836BF64A6059B8220E586C21FD7567AF41DB42571EB7
   endpoint: http://localhost:${wiremock.server.port}
+  #PnfCheckInputs
+  pnfEntryNotificationTimeout: P14D
+  #CreateVcpeResCustService:preProcessRequest
+  workflowAaiDistributionDelay: P14D
 appc:
   client:
     key: iaEMAfjsVsZnraBP
@@ -55,6 +59,11 @@ mso:
     workflow:
       message:
         endpoint: http://localhost:${wiremock.server.port}/workflows/messages/message
+    #${mso.adapters.requestDb.endpoint}:BBInputSetupUtils,RequestsDBClient
+    requestDb:
+      #${mso.adapters.requestDb.auth}: BBInputSetup
+      auth: Basic YnBlbDptc28tZGItMTUwNyE=
+      endpoint: http://localhost:${wiremock.server.port}
         
   async:
       core-pool-size: 50
@@ -67,7 +76,8 @@ mso:
   callbackRetryAttempts: '5'
   catalog:
     db:
-      endpoint: http://localhost:${wiremock.server.port}/
+      #CatalogDbUtils.groovy:getResponseFromCatalogDb
+      endpoint: http://localhost:${wiremock.server.port}
       spring:
         endpoint: http://localhost:${wiremock.server.port}  
   correlation:
@@ -90,6 +100,10 @@ mso:
   request:
     db:
       endpoint: http://localhost:${wiremock.server.port}/
+  #request DB endpoint
+  requestDb:
+    auth: Basic YnBlbDptc28tZGItMTUwNyE=
+    endpoint: http://localhost:${wiremock.server.port}
   rollback: 'true'
   sdnc:    
     password: 3141634BF7E070AA289CF2892C986C0B      
@@ -111,6 +125,7 @@ mso:
     notification:
       name: GenericNotificationService
     sdncadapter:
+      #DoCreateServiceInstance.groovy: preProcessRequest
       callback: http://localhost:${wiremock.server.port}/mso/SDNCAdapterCallbackService
     vnfadapter:
       create:
@@ -173,7 +188,6 @@ spring:
     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
   security:
     usercredentials:
-    -  
       username: test
       password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu'
       role: BPEL-Client
@@ -192,3 +206,21 @@ camunda:
       deploy-changed-only: true
     job-execution:
       deployment-aware: true
+# PnfEventReadyDmaapClient
+pnf:
+  dmaap:
+    host: localhost
+    port: ${wiremock.server.port}
+    protocol: http
+    uriPathPrefix: events
+    topicName: pnfReady
+    consumerGroup: consumerGroup
+    consumerId: consumerId
+    topicListenerDelayInSeconds: 5
+# CDSProcessingClient
+cds:
+  endpoint: localhost
+  port: 11011
+  auth: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==
+  timeout: 60
+
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yml b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yml
deleted file mode 100644 (file)
index b1a8c4b..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-aai:
-  auth: 5E12ACACBD552A415E081E29F2C4772F9835792A51C766CCFDD7433DB5220B59969CB2798C
-  dme2:
-    timeout: '30000'
-  endpoint: https://localhost:8443
-camunda:
-  bpm:
-    admin-user:
-      id: admin
-      password: admin
-    database:
-      type: h2
-    history-level: FULL
-    metrics:
-      enabled: false
-      db-reporter-activate: false
-    application:
-      delete-upon-undeploy: false
-      scan-for-process-definitions: true
-      deploy-changed-only: true
-    job-execution:
-      deployment-aware: true
-canopi:
-  auth: 5E12ACACBD552A415E081E29F2C4772F9835792A51C766CCFDD7433DB5220B59969CB2798C
-csi:
-  aots:
-    addincidentmanagement:
-      endpoint: http://localhost:28090/AddIncidentManagementTicketRequest
-  networkstatus:
-    endpoint: http://localhost:28090/SendManagedNetworkStatusNotification
-entitymanager:
-  packagesToScan: com
-
-mso:
-  correlation:
-    timeout: PT60S
-  logPath: logs
-  async:
-    core-pool-size: 50
-    max-pool-size: 50
-    queue-capacity: 500
-  adapters:
-    completemsoprocess:
-      endpoint: http://localhost:30253/CompleteMsoProcess
-    db:
-      auth: 5E12ACACBD552A415E081E29F2C4772F9835792A51C766CCFDD7433DB5220B59969CB2798C
-      password: wLg4sjrAFUS8rfVfdvTXeQ==
-      endpoint: http://localhost:28090
-      spring:
-        endpoint: http://localhost:28090
-    network:
-      endpoint: http://localhost:30253/services/NetworkAdapter
-      rest:
-        endpoint: http://localhost:30253/services/rest/v1/networks
-    openecomp:
-      db:
-        endpoint: http://localhost:30257/services/RequestsDbAdapter
-    po:
-      auth: 5E12ACACBD552A415E081E29F2C4772F9835792A51C766CCFDD7433DB5220B59969CB2798C
-      password: 3141634BF7E070AA289CF2892C986C0B
-    sdnc:
-      endpoint: http://localhost:30254/adapters/SDNCAdapter
-      rest:
-        endpoint: http://localhost:30254/adapters/rest/v1/sdnc
-      timeout: PT60S
-    tenant:
-      endpoint: http://localhost:30253/services/TenantAdapter
-    vnf:
-      endpoint: http://localhost:30253/services/VnfAdapter
-      rest:
-        endpoint: http://localhost:30253/services/rest/v1/vnfs
-    volume-groups:
-      rest:
-        endpoint: http://localhost:30253/services/rest/v1/volume-groups
-    vnf-async:
-      endpoint: http://localhost:30253/services/VnfAdapterAsync
-  adiod:
-    vce:
-      service:
-        model:
-          invariant:
-            uuid: 1cc4e2e4-eb6e-404d-a66f-c8733cedcce8
-          version: '5.0'
-  bpmn:
-    process:
-      historyTimeToLive: '30'
-  callbackRetryAttempts: '5'
-  catalog:
-    db:
-      endpoint: http://localhost:30258/ecomp/mso/catalog
-      spring:
-        endpoint: http://localhost:30258
-  csi:
-    pwd: E684FA9977AF5DFB50F5ADC5B7425FDFA0CEBFF2E138E0477549879AEC8A9CE2DB7563
-    sendmanagednetworkstatusnotification:
-      applicationname: NetworkManagementEthernetOverFiber
-      version: '212'
-    usrname: mso
-  db:
-    auth: Basic YnBlbDptc28tZGItMTUwNyE=
-  default:
-    adapter:
-      namespace: http://com.att.mso
-  gateway:
-    service:
-      model:
-        name: HNGWaaS for DHV Test
-  healthcheck:
-    log:
-      debug: 'false'
-  infra:
-    customer:
-      id: testCustIdInfra
-  msoKey: 07a7159d3bf51a0e53be7a8f89699be7
-  oam:
-    network:
-      role:
-        gateway: HngwOamNetVto.OAM
-        portal: HnportalOamNetVto.OAM
-  po:
-    timeout: PT60S
-  portal:
-    service:
-      model:
-        name: HNPortalaaS for DHV Test
-  request:
-    db:
-      endpoint: http://localhost:28090/
-  rollback: 'true'
-  sdnc:
-    firewall:
-      yang:
-        model:
-          version: '2015-05-15'
-    password: 3141634BF7E070AA289CF2892C986C0B
-    timeout:
-      firewall:
-        minutes: '20'
-      ucpe:
-        async:
-          hours: '120'
-          minutes: '5'
-  service:
-    agnostic:
-      sniro:
-        endpoint: /sniro/api/v2/placement
-        host: http://localhost:30253
-  site-name: CamundaEngine
-  sniro:
-    auth: test:testpwd
-    callback: http://localhost:28090/adapters/rest/SDNCNotify
-    endpoint: http://localhost:28090/optimizationInstance/V1/create
-    policies:
-      dhv:
-        2vvig: SNIRO.DistanceToLocationPolicy_vhngw,SNIRO.VNFPolicy_vhngatewayprimary1_v1,SNIRO.ResourceInstancePolicy_hngateway,SNIRO.ResourceRegionPolicy_hngateway_v1,SNIRO.VNFPolicy_vhngatewaysecondary1_v1,SNIRO.ZonePolicy_vhngw,SNIRO.PlacementOptimizationPolicy_dhv_v3,SNIRO.VNFPolicy_vhnportal_primary1_v1,SNIRO.ResourceInstancePolicy_vhnportal_v3,SNIRO.ResourceRegionPolicy_vhnportal_v1,SNIRO.VNFPolicy_vhnportalsecondary1_v1,SNIRO.ZonePolicy_vhnportal,SNIRO.DistanceToLocationPolicy_vvig,SNIRO.InventoryGroupPolicy_vvig,SNIRO.VNFPolicy_vvigprimary1_v1,SNIRO.ResourceInstancePolicy_vvig,SNIRO.VNFPolicy_vvigsecondary1_v1
-        4vvig: SNIRO.DistanceToLocationPolicy_vhngw,SNIRO.VNFPolicy_vhngatewayprimary1_v1,SNIRO.ResourceInstancePolicy_hngateway,SNIRO.ResourceRegionPolicy_hngateway_v1,SNIRO.VNFPolicy_vhngatewaysecondary1_v1,SNIRO.ZonePolicy_vhngw,SNIRO.PlacementOptimizationPolicy_dhv_v3,SNIRO.VNFPolicy_vhnportal_primary1_v1,SNIRO.ResourceInstancePolicy_vhnportal_v3,SNIRO.ResourceRegionPolicy_vhnportal_v1,SNIRO.VNFPolicy_vhnportalsecondary1_v1,SNIRO.ZonePolicy_vhnportal,SNIRO.VNFPolicy_vvigprimary2_v1,SNIRO.VNFPolicy_vvigsecondary2_v1,SNIRO.DistanceToLocationPolicy_vvig,SNIRO.InventoryGroupPolicy_vvig,SNIRO.VNFPolicy_vvigprimary1_v1,SNIRO.ResourceInstancePolicy_vvig,SNIRO.VNFPolicy_vvigsecondary1_v1
-    timeout: PT30M
-  sriov:
-    network:
-      role:
-        gateway1: HngwSriovProviderNet.SR_IOV_Provider2_1
-        gateway2: HngwSriovProviderNet.SR_IOV_Provider2_2
-        portal1: HnportalSriovProviderNet3.SR_IOV_Provider2_1
-        portal2: HnportalSriovProviderNet3.SR_IOV_Provider2_2
-  workflow:
-    aai:
-      distribution:
-        delay: PT5S
-    CreateGenericVNFV1:
-      aai:
-        volume-group:
-          uri: /aai/v6/cloud-infrastructure/volume-groups/volume-group
-    DHVCreateService:
-      aai:
-        customer:
-          uri: /aai/v9/business/customers/customer
-    createvce:
-      delay:
-        seconds: '1'
-    default:
-      aai:
-        version: '8'
-        cloud-region:
-          version: '9'
-        generic-vnf:
-          version: '9'
-      retry:
-        attempts: '1'
-    deleteCinderVolumeV1:
-      aai:
-        volume-group:
-          uri: /aai/v6/cloud-infrastructure/volume-groups/volume-group
-    global:
-      default:
-        aai:
-          namespace: http://org.openecomp.aai.inventory/
-    l3ToHigherLayerAddBonding:
-      model:
-        invariantid: 50359538-066f-4a8d-807f-f2bc8eaa79dc
-        name: WAN Bonding v0.1
-        version: '0.1'
-        versionid: 52dbec20-47aa-42e4-936c-331d8e350d44
-    message:
-      endpoint: http://localhost:30252/mso/WorkflowMessage
-    notification:
-      name: GenericNotificationServiceATT
-    sdncadapter:
-      callback: http://localhost:30254/mso/SDNCAdapterCallbackService
-    vnfadapter:
-      create:
-        callback: http://localhost:30253/mso/vnfAdapterNotify
-      delete:
-        callback: http://localhost:30253/mso/vnfAdapterNotify
-      query:
-        callback: http://localhost:30253/mso/vnfAdapterNotify
-      rollback:
-        callback: http://localhost:30253/mso/vnfAdapterNotify
-org:
-  onap:
-    so:
-      cloud-owner: CloudOwner
-policy:
-  auth: Basic dGVzdHBkcDphbHBoYTEyMw==
-  client:
-    auth: Basic bTAzNzQzOnBvbGljeVIwY2sk
-  endpoint: https://localhost:8081/pdp/api/
-  environment: TEST
-sdnc:
-  auth: Basic YWRtaW46YWRtaW4=
-  host: https://localhost:8443
-  path: /restconf/operations/GENERIC-RESOURCE-API
-sdno:
-  health-check:
-    dmaap:
-      password: eHQ1cUJrOUc
-      publisher:
-        topic: com.att.sdno.test-health-diagnostic-v02
-      subscriber:
-        topic: com.att.sdno.test-health-diagnostic-v02
-      username: testuser
-sniro:
-  conductor:
-    host: http://localhost:30253
-    uri: /release
-  manager:
-    host: http://localhost:30253
-    uri: /sniro/api/placement/v2
-    headers.auth: Basic dGVzdDp0ZXN0cHdk
-    headers.patchVersion: 1
-    headers.minorVersion: 1
-    headers.latestVersion: 2
-server:
-  port: 8080
-  tomcat:
-    max-threads: 50
-  # ssl:
-    # key-store: /app/msoClientKeyStore.jks
-    # key-store-password: mso4you
-    # key-store-type: JKS
-    # trust-store: /app/msoTrustStore.jks
-    # trust-store-password: mso_Domain2.0_4you
-spring:
-  h2:
-    console:
-      enabled: true
-      path: /h2
-  datasource:
-    url: jdbc:h2:mem:AZ;;DB_CLOSE_ON_EXIT=FALSE
-    username: sa
-    password: sa
-    driverClassName: org.h2.Driver
-  security:
-    usercredentials:
-    -  
-      username: test
-      password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu'
-      role: BPMN-Client    
-# Hibernate
-hibernate:
-  dialect: org.hibernate.dialect.MySQL5Dialect
-  show_sql: false
-
-management:
-  security:
-    enabled: false
-
-security:
-  basic:
-    enabled: false
-
-appc:
-  client:
-    topic:
-      read: 
-        name: APPC-TEST-AMDOCS2
-        timeout: 360000 
-      write: APPC-TEST-AMDOCS1-IST
-    response:
-      timeout: 360000
-    key: LSl8QKolmKcC0yJR
-    secret: lgjXraD1HutKxv8jEN6tVouu
-    service: ueb
-    poolMembers: localhost:3904,localhost:3904,localhost:3904
index 38a2ef6..3b0bdb2 100644 (file)
@@ -1,44 +1,69 @@
 <configuration>
 
+  <property name="LOGS" value="target/logs" />
 
+  <!-- Add this appender to keep the log file for further troubleshooting-->
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] |%X{RequestId}| %-5level
+        %logger{1024} - %msg%n
+      </pattern>
+    </encoder>
+  </appender>
 
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} [%thread] |%X{RequestId}| %-5level
-                %logger{1024} - %msg%n
-            </pattern>
-        </encoder>
-    </appender>
+  <appender name="File"
+    class="ch.qos.logback.core.FileAppender">
+    <file>${LOGS}/testing.log</file>
+    <encoder
+      class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+      <Pattern>%d{HH:mm:ss.SSS} [%thread] |%X{RequestId}| %-5level
+        %logger{1024} - %msg%n</Pattern>
+    </encoder>
+  </appender>
 
+  <logger name="com.att.ecomp.audit" level="info" additivity="false">
+    <appender-ref ref="STDOUT"/>
+  </logger>
 
-    <logger name="com.att.ecomp.audit" level="info" additivity="false">
-        <appender-ref ref="STDOUT" />
-    </logger>
+  <logger name="com.att.eelf.metrics" level="info" additivity="false">
+    <appender-ref ref="STDOUT"/>
+  </logger>
 
-    <logger name="com.att.eelf.metrics" level="info" additivity="false">
-        <appender-ref ref="STDOUT" />
-    </logger>
+  <logger name="com.att.eelf.error" level="WARN" additivity="false">
+    <appender-ref ref="STDOUT"/>
+  </logger>
 
-    <logger name="com.att.eelf.error" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT" />
-    </logger>
+  <logger name="org.onap" level="${so.log.level:-DEBUG}" additivity="false">
+    <appender-ref ref="STDOUT"/>
+  </logger>
 
-    <logger name="org.onap" level="${so.log.level:-DEBUG}" additivity="false">
-        <appender-ref ref="STDOUT" />
-    </logger>
-    
 
-    <logger name="ch.vorburger" level="WARN" additivity="false">
-        <appender-ref ref="STDOUT" />
-    </logger>
-    
-    <logger name="AUDIT" level="info" additivity="true">        
-        <appender-ref ref="STDOUT" />
-    </logger>
+  <logger name="ch.vorburger" level="WARN" additivity="false">
+    <appender-ref ref="STDOUT"/>
+  </logger>
 
-    <root level="WARN">
-        <appender-ref ref="STDOUT" />
-    </root>
+  <logger name="AUDIT" level="info" additivity="true">
+    <appender-ref ref="STDOUT"/>
+  </logger>
 
+  <!-- suppress the amount of org.apache.tomcat.util.net.NioEndpoint log-->
+  <logger name="org.apache.tomcat" level="WARN" />
+
+  <!-- suppress the amount of org.springframework.beans log-->
+  <logger name="org.springframework.beans" level="WARN"/>
+
+  <!-- suppress the amount of org.springframework.context log-->
+  <logger name="org.springframework.context" level="WARN"/>
+
+  <!-- suppress the amount of org.camunda.bpm.engine.impl.persistence-->
+  <logger name="org.camunda.bpm.engine.impl.persistence" level="WARN"/>
+
+  <!-- suppress the amount of org.camunda.bpm.engine.persistence-->
+  <logger name="org.camunda.bpm.engine.persistence" level="WARN"/>
+
+  <root level="WARN">
+    <appender-ref ref="STDOUT"/>
+    <appender-ref ref="File"/>
+  </root>
 
 </configuration>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/request/CreateVcpeResCustServiceSimplifiedTest.json b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/request/CreateVcpeResCustServiceSimplifiedTest.json
new file mode 100644 (file)
index 0000000..b43148a
--- /dev/null
@@ -0,0 +1,47 @@
+{
+  "requestDetails":{
+    "requestInfo":{
+      "source":"VID",
+      "suppressRollback":false,
+      "requestorId":"demo",
+      "productFamilyId":"vCPEid"
+    },
+    "modelInfo":{
+      "modelType":"service",
+      "modelInvariantUuid":"539b7a2f-9524-4dbf-9eee-f2e05521df3f",
+      "modelInvariantId":"539b7a2f-9524-4dbf-9eee-f2e05521df3f",
+      "modelUuid":"f2daaac6-5017-4e1e-96c8-6a27dfbe1421",
+      "modelName":"PNF_int_service_2",
+      "modelVersion":"1.0"
+    },
+    "requestParameters":{
+      "userParams":[
+        {
+          "name":"aic_zone",
+          "value":"nova"
+        },
+        {
+          "name":"pnfId",
+          "value":"PNFDemo"
+        }
+      ],
+      "subscriptionServiceType":"vCPE",
+      "aLaCarte":false,
+      "pnfCorrelationId": "PNFDemo"
+    },
+    "cloudConfiguration":{
+      "lcpCloudRegionId":"regionOne",
+      "tenantId":"09a63533072f4a579d5c99c3b8fe94c6"
+    },
+    "subscriberInfo":{
+      "globalSubscriberId":"ADemoCustomerInCiti"
+    },
+    "project":{
+      "projectName":"Project-Demonstration"
+    },
+    "owningEntity":{
+      "owningEntityId":"5eae949c-1c50-4780-b8b5-7cbeb08856b4",
+      "owningEntityName":"OE-Demonstration"
+    }
+  }
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/response/CreateVcpeResCustServiceSimplifiedTest.json b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/response/CreateVcpeResCustServiceSimplifiedTest.json
new file mode 100644 (file)
index 0000000..a88f261
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "serviceResources":{
+    "modelInfo":{
+      "modelInvariantId":"539b7a2f-9524-4dbf-9eee-f2e05521df3f",
+      "modelUuid":"f2daaac6-5017-4e1e-96c8-6a27dfbe1421",
+      "modelName":"PNF_int_service_2",
+      "modelVersion":"1.0"
+    },
+    "serviceType":"NA",
+    "environmentContext":"Luna",
+    "serviceRole":"NA",
+    "workloadContext":"Oxygen",
+    "serviceVnfs":[
+
+    ],
+    "serviceNetworks":[
+
+    ],
+    "serviceAllottedResources":[
+
+    ],
+    "configResource":[
+
+    ]
+  }
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/response/CreateVcpeResCustServiceSimplifiedTest_catalogdb.json b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/response/CreateVcpeResCustServiceSimplifiedTest_catalogdb.json
new file mode 100644 (file)
index 0000000..66d1a88
--- /dev/null
@@ -0,0 +1,37 @@
+{
+  "_embedded": {
+    "pnfResourceCustomization": [
+      {
+        "modelCustomizationUUID": "68dc9a92-214c-11e7-93ae-92361f002680",
+        "modelInstanceName": "PNF routing",
+        "created": "2019-03-08 12:00:29.000",
+        "nfFunction": "routing",
+        "nfType": "routing",
+        "nfRole": "routing",
+        "nfNamingCode": "routing",
+        "multiStageDesign": null,
+        "resourceInput": null,
+        "blueprintName": "test_configuration_restconf",
+        "blueprintVersion": "1.0.0",
+        "skipPostInstConf": false,
+        "creationTimestamp": "2019-03-08T12:00:29.000+0000",
+        "_links": {
+          "self": {
+            "href": "http://localhost:41023/pnfResourceCustomization/68dc9a92-214c-11e7-93ae-92361f002680"
+          },
+          "pnfResourceCustomization": {
+            "href": "http://localhost:41023/pnfResourceCustomization/68dc9a92-214c-11e7-93ae-92361f002680"
+          },
+          "pnfResources": {
+            "href": "http://localhost:41023/pnfResourceCustomization/68dc9a92-214c-11e7-93ae-92361f002680/pnfResources"
+          }
+        }
+      }
+    ]
+  },
+  "_links": {
+    "self": {
+      "href": "http://localhost:41023/pnfResourceCustomization/search/findPnfResourceCustomizationByModelUuid?SERVICE_MODEL_UUID=5df8b6de-2083-11e7-93ae-92361f002676"
+    }
+  }
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/stubprocess/GenericStub.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/stubprocess/GenericStub.bpmn
deleted file mode 100644 (file)
index 66f4584..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_vwRmIBsREeeIQtzUKIjH4g" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
-  <bpmn2:process id="GenericStub" name="GenericStub" isExecutable="true">
-    <bpmn2:startEvent id="StartEvent_1">
-      <bpmn2:outgoing>SequenceFlow_0tyavm9</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:endEvent id="EndEvent_0n56tas">
-      <bpmn2:incoming>SequenceFlow_0tyavm9</bpmn2:incoming>
-      <bpmn2:terminateEventDefinition />
-    </bpmn2:endEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_0tyavm9" sourceRef="StartEvent_1" targetRef="EndEvent_0n56tas" />
-  </bpmn2:process>
-  <bpmn2:error id="Error_10hit0u" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
-  <bpmn2:error id="Error_1lwpypa" name="Java Lang Exception" errorCode="java.lang.Exception" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="GenericStub">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="147" y="275" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0ougemc_di" bpmnElement="EndEvent_0n56tas">
-        <dc:Bounds x="263" y="275" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="236" y="311" width="90" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0tyavm9_di" bpmnElement="SequenceFlow_0tyavm9">
-        <di:waypoint xsi:type="dc:Point" x="183" y="293" />
-        <di:waypoint xsi:type="dc:Point" x="263" y="293" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="223" y="272" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
index 14eb42f..42073ed 100644 (file)
         <dependency>
             <groupId>org.onap.sdnc.northbound</groupId>
             <artifactId>generic-resource-api-client</artifactId>
-            <version>1.5.0-SNAPSHOT</version>
+            <version>${sdnc.northbound.version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>javax.ws.rs</groupId>
index 28b77cd..df1c947 100644 (file)
@@ -175,7 +175,7 @@ public class CatalogDbClient {
     private String findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep = "/findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep";
     private String findByClliAndCloudVersion = "/findByClliAndCloudVersion";
     private String findServiceByServiceInstanceId = "/findServiceByServiceInstanceId";
-
+    private String findPnfResourceCustomizationByModelUuid = "/findPnfResourceCustomizationByModelUuid";
 
     private String serviceURI;
     private String vfModuleURI;
@@ -288,6 +288,9 @@ public class CatalogDbClient {
         findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep = endpoint + RAINY_DAY_HANDLER_MACRO + SEARCH + findOneByFlowNameAndServiceTypeAndVnfTypeAndErrorCodeAndWorkStep;
         findByClliAndCloudVersion = endpoint + CLOUD_SITE + SEARCH + findByClliAndCloudVersion;
 
+        findPnfResourceCustomizationByModelUuid =
+            endpoint + PNF_RESOURCE_CUSTOMIZATION + SEARCH + findPnfResourceCustomizationByModelUuid;
+
         serviceURI = endpoint + SERVICE + URI_SEPARATOR;
         vfModuleURI = endpoint + VFMODULE + URI_SEPARATOR;
         vnfResourceURI = endpoint + VNF_RESOURCE + URI_SEPARATOR;
@@ -458,6 +461,12 @@ public class CatalogDbClient {
         return pnfResourceCustomization;
     }
 
+    public List<PnfResourceCustomization> getPnfResourceCustomizationByModelUuid(String modelUuid) {
+        return this.getMultipleResources(pnfResourceCustomizationClient, getUri(
+            UriBuilder.fromUri(findPnfResourceCustomizationByModelUuid).queryParam("SERVICE_MODEL_UUID", modelUuid)
+                .build().toString()));
+    }
+
     public CollectionNetworkResourceCustomization getCollectionNetworkResourceCustomizationByID(String modelCustomizationUUID) {
         CollectionNetworkResourceCustomization collectionNetworkResourceCustomization =
                 this.getSingleResource(collectionNetworkResourceCustomizationClient,getUri(UriBuilder
index 7527a79..f64311a 100644 (file)
 
 package org.onap.so.db.catalog.data.repository;
 
+import java.util.List;
 import org.onap.so.db.catalog.beans.PnfResourceCustomization;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 
 @RepositoryRestResource(collectionResourceRel = "pnfResourceCustomization", path = "pnfResourceCustomization")
 public interface PnfCustomizationRepository extends JpaRepository<PnfResourceCustomization, String> {
 
+    /**
+     * Used to fetch the @{link PnfResourceCustomization} by the Model UUID.
+     *
+     * This operation is required by {@link org.onap.so.db.catalog.client.CatalogDbClient} to provide PnfResourceCustomization based on model UUID without projection.
+     *
+     * @param serviceModelUuid model UUID
+     * @return List of PnfResourceCustomization
+     */
+    @Query(value = "select b.* from pnf_resource_customization_to_service a join pnf_resource_customization b where a.RESOURCE_MODEL_CUSTOMIZATION_UUID = b.MODEL_CUSTOMIZATION_UUID and a.SERVICE_MODEL_UUID = ?1", nativeQuery = true)
+    List<PnfResourceCustomization> findPnfResourceCustomizationByModelUuid(
+        @Param("SERVICE_MODEL_UUID") String serviceModelUuid);
 }
\ No newline at end of file
index 4ba344c..0eec84f 100644 (file)
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.List;
 import org.junit.Test;
 import org.onap.so.db.catalog.BaseTest;
 import org.onap.so.db.catalog.beans.PnfResource;
@@ -43,6 +44,14 @@ public class PnfCustomizationRepositoryTest extends BaseTest {
         checkPnfResourceCustomization(pnfResourceCustomization);
     }
 
+    @Test
+    public void findPnfResourceCustomizationByModelUuid_ValidServiceUuidAndCustomizationUuid_ExpectedOutput() {
+        List<PnfResourceCustomization> pnfResourceCustomizationList = pnfCustomizationRepository
+            .findPnfResourceCustomizationByModelUuid("5df8b6de-2083-11e7-93ae-92361f002676");
+        assertEquals("Found the matching resource entity", 1, pnfResourceCustomizationList.size());
+        checkPnfResourceCustomization(pnfResourceCustomizationList.get(0));
+    }
+
     private void checkPnfResourceCustomization(PnfResourceCustomization pnfResourceCustomization) {
         assertEquals("modelInstanceName", "PNF routing", pnfResourceCustomization.getModelInstanceName());
         assertEquals("blueprintName", "test_configuration_restconf", pnfResourceCustomization.getBlueprintName());
index 5d04aa4..fe44397 100644 (file)
@@ -51,7 +51,6 @@ server:
     tomcat:
         max-threads: 50
 
-
 #Actuator
 management: 
   endpoints:
index 49f6422..6cef920 100644 (file)
@@ -23,6 +23,8 @@
                <docker.skip.push>false</docker.skip.push>
                <docker.pull.registry>nexus3.onap.org:10001</docker.pull.registry>
                <docker.push.registry>nexus3.onap.org:10003</docker.push.registry>
+               <docker.image.prefix>onap/so</docker.image.prefix>
+               <docker.push.phase>deploy</docker.push.phase>
        </properties>
 
        <build>
@@ -72,7 +74,7 @@
 
                                        <images>
                                                <image>
-                                                       <name>onap/so/base-image:1.0</name>
+                                                       <name>${docker.image.prefix}/base-image:1.0</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
@@ -80,7 +82,7 @@
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/vnfm-adapter</name>
+                                                       <name>${docker.image.prefix}/vnfm-adapter</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/catalog-db-adapter</name>
+                                                       <name>${docker.image.prefix}/catalog-db-adapter</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/request-db-adapter</name>
+                                                       <name>${docker.image.prefix}/request-db-adapter</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/sdnc-adapter</name>
+                                                       <name>${docker.image.prefix}/sdnc-adapter</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/openstack-adapter</name>
+                                                       <name>${docker.image.prefix}/openstack-adapter</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/vfc-adapter</name>
+                                                       <name>${docker.image.prefix}/vfc-adapter</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/sdc-controller</name>
+                                                       <name>${docker.image.prefix}/sdc-controller</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/bpmn-infra</name>
+                                                       <name>${docker.image.prefix}/bpmn-infra</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/api-handler-infra</name>
+                                                       <name>${docker.image.prefix}/api-handler-infra</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
                                                        </build>
                                                </image>
                                                <image>
-                                                       <name>onap/so/so-monitoring</name>
+                                                       <name>${docker.image.prefix}/so-monitoring</name>
                                                        <build>
                                                                <cleanup>try</cleanup>
                                                                <dockerFileDir>docker-files</dockerFileDir>
 
                                        <execution>
                                                <id>push-images</id>
-                                               <phase>deploy</phase>
+                                               <phase>${docker.push.phase}</phase>
                                                <goals>
                                                        <goal>build</goal>
                                                        <goal>push</goal>
                                                </goals>
                                                <configuration>
-                                                       <image>onap/so/catalog-db-adapter,onap/so/request-db-adapter,onap/so/sdnc-adapter,onap/so/openstack-adapter,onap/so/vfc-adapter,onap/so/sdc-controller,onap/so/bpmn-infra,onap/so/api-handler-infra,onap/so/so-monitoring</image>
+                                                       <image>${docker.image.prefix}/catalog-db-adapter,${docker.image.prefix}/request-db-adapter,${docker.image.prefix}/sdnc-adapter,${docker.image.prefix}/openstack-adapter,${docker.image.prefix}/vfc-adapter,${docker.image.prefix}/sdc-controller,${docker.image.prefix}/bpmn-infra,${docker.image.prefix}/api-handler-infra,${docker.image.prefix}/so-monitoring</image>
                                                </configuration>
                                        </execution>
                                </executions>