Merge "Change openjdk baseOS img to integration-java11"
authorByung-Woo Jun <byung-woo.jun@est.tech>
Wed, 24 Feb 2021 18:15:49 +0000 (18:15 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 24 Feb 2021 18:15:49 +0000 (18:15 +0000)
15 files changed:
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
asdc-controller/src/test/java/org/onap/so/asdc/client/ASDCControllerITTest.java
asdc-controller/src/test/resources/download/service-Ericservice-csar.csar [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateTnNssi.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateTnNssiInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssi.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssi.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/QueryJobStatus.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnAllocateNssi.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateTransportNSSI.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/QueryJobStatus.bpmn
pom.xml

index 56ec77c..da7aad4 100644 (file)
@@ -986,11 +986,30 @@ public class ToscaResourceInstaller {
         pnfResourceCustomization.setBlueprintVersion(getStringValue(properties.get(SDNC_MODEL_VERSION)));
         pnfResourceCustomization.setSkipPostInstConf(getBooleanValue(properties.get(SKIP_POST_INST_CONF)));
         pnfResourceCustomization.setControllerActor(getStringValue(properties.get(CONTROLLER_ACTOR)));
-        pnfResourceCustomization.setDefaultSoftwareVersion(getStringValue(properties.get(DEFAULT_SOFTWARE_VERSION)));
+        pnfResourceCustomization.setDefaultSoftwareVersion(extractDefaultSoftwareVersionFromSwVersions(properties));
         pnfResourceCustomization.setPnfResources(pnfResource);
         return pnfResourceCustomization;
     }
 
+    private String extractDefaultSoftwareVersionFromSwVersions(Map<String, Property> properties) {
+        final String SOFTWARE_VERSIONS = "software_versions";
+        final String EMPTY_STRING = "";
+        String defaultSoftwareVersionValue = getStringValue(properties.get(DEFAULT_SOFTWARE_VERSION));
+        if (defaultSoftwareVersionValue != null && !defaultSoftwareVersionValue.isEmpty()) {
+            return defaultSoftwareVersionValue;
+        }
+        if (properties.containsKey(SOFTWARE_VERSIONS) && properties.get(SOFTWARE_VERSIONS).getValue() != null) {
+            if (properties.get(SOFTWARE_VERSIONS).getValue() instanceof List) {
+                List<String> propertyValueList = (List) properties.get(SOFTWARE_VERSIONS).getValue();
+                return propertyValueList.get(0);
+            } else if (properties.get(SOFTWARE_VERSIONS).getValue() instanceof String) {
+                return getStringValue(properties.get(SOFTWARE_VERSIONS));
+            }
+        }
+
+        return EMPTY_STRING;
+    }
+
     /**
      * Get value from {@link Property} and cast to boolean value. Return true if property is null.
      */
index eafb42a..bf2b8ad 100644 (file)
@@ -19,9 +19,7 @@
 
 package org.onap.so.asdc.client;
 
-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 com.github.tomakehurst.wiremock.client.WireMock.*;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -38,6 +36,7 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TestName;
+import org.onap.aaiclient.client.aai.AAIVersion;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.asdc.BaseTest;
 import org.onap.so.asdc.client.exceptions.ASDCControllerException;
@@ -149,8 +148,8 @@ public class ASDCControllerITTest extends BaseTest {
      * Mock the AAI using wireshark.
      */
     private void initMockAaiServer(final String serviceUuid, final String serviceInvariantUuid) {
-        String modelEndpoint = "/aai/v17/service-design-and-creation/models/model/" + serviceInvariantUuid
-                + "/model-vers/model-ver/" + serviceUuid + "?depth=0";
+        String modelEndpoint = "/aai/" + AAIVersion.LATEST + "/service-design-and-creation/models/model/"
+                + serviceInvariantUuid + "/model-vers/model-ver/" + serviceUuid + "?depth=0";
 
         wireMockServer.stubFor(post(urlEqualTo(modelEndpoint)).willReturn(ok()));
     }
@@ -453,16 +452,16 @@ public class ASDCControllerITTest extends BaseTest {
     }
 
     /**
-     * Test with service-pnfservice.csar.
+     * Test with service-Ericservice-csar.csar to test default_software_version field.
      */
     @Test
-    public void treatNotification_ValidPnfResource_With_Software_Version_ExpectedOutput() {
+    public void treatNotification_ValidPnfResource_With_Default_Software_Version_ExpectedOutput() {
 
         /**
          * service UUID/invariantUUID from global metadata in service-PnfServiceTestCds-template.yml.
          */
-        String serviceUuid = "888d93bd-ef31-4ab8-9d9e-3935e9a71845";// "77cf276e-905c-43f6-8d54-dda474be2f2e";
-        String serviceInvariantUuid = "e5c5fd11-392f-4aa7-aeeb-b340c596d4bd";// "913e6776-4bc3-49b9-b399-b5bb4690f0c7";
+        String serviceUuid = "8e7b2bd7-6901-4cc2-b3fb-3b6a1d5631e3";// "77cf276e-905c-43f6-8d54-dda474be2f2e";
+        String serviceInvariantUuid = "9a5f99c8-0492-4691-b29a-7360d9c3aae3";// "913e6776-4bc3-49b9-b399-b5bb4690f0c7";
 
         initMockAaiServer(serviceUuid, serviceInvariantUuid);
 
@@ -493,11 +492,11 @@ public class ASDCControllerITTest extends BaseTest {
             ToscaCsar toscaCsar = toscaCsarRepository.findById(artifactUuid)
                     .orElseThrow(() -> new EntityNotFoundException("Tosca csar: " + artifactUuid + " not found"));
             assertEquals("tosca csar UUID", artifactUuid, toscaCsar.getArtifactUUID());
-            assertEquals("tosca csar name", "service-Testserviceforpnf-csar.csar", toscaCsar.getName());
+            assertEquals("tosca csar name", "service-Ericservice-csar.csar", toscaCsar.getName());
             assertEquals("tosca csar version", "1.0", toscaCsar.getVersion());
             assertNull("tosca csar descrption", toscaCsar.getDescription());
             assertEquals("tosca csar checksum", "MANUAL_RECORD", toscaCsar.getArtifactChecksum());
-            assertEquals("toscar csar URL", "/download/service-Testserviceforpnf-csar.csar", toscaCsar.getUrl());
+            assertEquals("toscar csar URL", "/download/service-Ericservice-csar.csar", toscaCsar.getUrl());
 
             /**
              * Check the service entity, it should be the same as global metadata information in
@@ -510,18 +509,18 @@ public class ASDCControllerITTest extends BaseTest {
              * Check PNF resource, it should be the same as metadata in the topology template in
              * service-PnfServiceTestCds-template.yml OR global metadata in the resource-PnfServiceTestCds-template.yml
              */
-            String pnfResourceKey = "72a2c44c-bb8a-4086-824b-0662d40bcd68";
+            String pnfResourceKey = "7a90f80b-a6f6-4597-8c48-80bda26b4823";
 
             /**
              * Check PNF resource customization, it should be the same as metadata in the topology template in
              * service-PnfServiceTestCds-template.yml OR global metadata in the resource-PnfServiceTestCds-template.yml
              */
-            String pnfCustomizationKey = "96642e60-17cd-48c1-875d-b00b08fdb37b";// "9f01263a-eaf7-4d98-a37b-3785f751903e";
+            String pnfCustomizationKey = "c850a53b-b63e-4043-ab10-53aabda78d37";// "9f01263a-eaf7-4d98-a37b-3785f751903e";
             PnfResourceCustomization pnfCustomization = pnfCustomizationRepository.findById(pnfCustomizationKey)
                     .orElseThrow(() -> new EntityNotFoundException(
                             "PNF resource customization: " + pnfCustomizationKey + " not found"));
             assertEquals("model customizationUUID", pnfCustomizationKey, pnfCustomization.getModelCustomizationUUID());
-            assertEquals("model instance name", "VSP_WithPNFD 1", pnfCustomization.getModelInstanceName());
+            assertEquals("model instance name", "demo-PNF 1", pnfCustomization.getModelInstanceName());
             assertEquals("NF type", "", pnfCustomization.getNfType());
             assertEquals("NF Role", "", pnfCustomization.getNfRole());
             assertEquals("NF function", "", pnfCustomization.getNfFunction());
@@ -562,6 +561,115 @@ public class ASDCControllerITTest extends BaseTest {
         }
     }
 
+    /**
+     * Test with service-Ericservice-csar.csar to test software_vesrions field.
+     */
+    @Test
+    public void treatNotification_ValidPnfResource_With_Software_Version_ExpectedOutput() {
+
+        /**
+         * service UUID/invariantUUID from global metadata in service-PnfServiceTestCds-template.yml.
+         */
+        String serviceUuid = "8e7b2bd7-6901-4cc2-b3fb-3b6a1d5631e3";// "77cf276e-905c-43f6-8d54-dda474be2f2e";
+        String serviceInvariantUuid = "9a5f99c8-0492-4691-b29a-7360d9c3aae3";// "913e6776-4bc3-49b9-b399-b5bb4690f0c7";
+
+        initMockAaiServer(serviceUuid, serviceInvariantUuid);
+
+        NotificationDataImpl notificationData = new NotificationDataImpl();
+        notificationData.setServiceUUID(serviceUuid);
+        notificationData.setDistributionID(distributionId);
+        notificationData.setServiceInvariantUUID(serviceInvariantUuid);
+        notificationData.setServiceVersion("1.0");
+
+        ResourceInfoImpl resourceInfo = constructPnfResourceInfoWithSWV1();
+        List<ResourceInfoImpl> resourceInfoList = new ArrayList<>();
+        resourceInfoList.add(resourceInfo);
+        notificationData.setResources(resourceInfoList);
+
+        ArtifactInfoImpl artifactInfo = constructPnfServiceArtifactWithSWV();
+        List<ArtifactInfoImpl> artifactInfoList = new ArrayList<>();
+        artifactInfoList.add(artifactInfo);
+        notificationData.setServiceArtifacts(artifactInfoList);
+
+        try {
+            asdcController.treatNotification(notificationData);
+
+            logger.info("Checking the database for PNF ingestion");
+
+            /**
+             * Check the tosca csar entity, it should be the same as provided from NotficationData.
+             */
+            ToscaCsar toscaCsar = toscaCsarRepository.findById(artifactUuid)
+                    .orElseThrow(() -> new EntityNotFoundException("Tosca csar: " + artifactUuid + " not found"));
+            assertEquals("tosca csar UUID", artifactUuid, toscaCsar.getArtifactUUID());
+            assertEquals("tosca csar name", "service-Ericservice-csar.csar", toscaCsar.getName());
+            assertEquals("tosca csar version", "1.0", toscaCsar.getVersion());
+            assertNull("tosca csar descrption", toscaCsar.getDescription());
+            assertEquals("tosca csar checksum", "MANUAL_RECORD", toscaCsar.getArtifactChecksum());
+            assertEquals("toscar csar URL", "/download/service-Ericservice-csar.csar", toscaCsar.getUrl());
+
+            /**
+             * Check the service entity, it should be the same as global metadata information in
+             * service-Testservice140-template.yml inside csar.
+             */
+            Service service = serviceRepository.findById(serviceUuid)
+                    .orElseThrow(() -> new EntityNotFoundException("Service: " + serviceUuid + " not found"));
+
+            /**
+             * Check PNF resource, it should be the same as metadata in the topology template in
+             * service-PnfServiceTestCds-template.yml OR global metadata in the resource-PnfServiceTestCds-template.yml
+             */
+            String pnfResourceKey = "7a90f80b-a6f6-4597-8c48-80bda26b4823";
+
+            /**
+             * Check PNF resource customization, it should be the same as metadata in the topology template in
+             * service-PnfServiceTestCds-template.yml OR global metadata in the resource-PnfServiceTestCds-template.yml
+             */
+            String pnfCustomizationKey = "05660370-41ed-4720-a42b-d6def010c326";// "9f01263a-eaf7-4d98-a37b-3785f751903e";
+            PnfResourceCustomization pnfCustomization = pnfCustomizationRepository.findById(pnfCustomizationKey)
+                    .orElseThrow(() -> new EntityNotFoundException(
+                            "PNF resource customization: " + pnfCustomizationKey + " not found"));
+            assertEquals("model customizationUUID", pnfCustomizationKey, pnfCustomization.getModelCustomizationUUID());
+            assertEquals("model instance name", "demo-PNF 0", pnfCustomization.getModelInstanceName());
+            assertEquals("NF type", "", pnfCustomization.getNfType());
+            assertEquals("NF Role", "", pnfCustomization.getNfRole());
+            assertEquals("NF function", "", pnfCustomization.getNfFunction());
+            assertEquals("NF naming code", "", pnfCustomization.getNfNamingCode());
+            assertEquals("PNF resource model UUID", pnfResourceKey, pnfCustomization.getPnfResources().getModelUUID());
+            assertEquals("Multi stage design", "", pnfCustomization.getMultiStageDesign());
+            assertNull("resource input", pnfCustomization.getResourceInput());
+            assertEquals("cds blueprint name(sdnc_model_name property)", "pm_control",
+                    pnfCustomization.getBlueprintName());
+            assertEquals("cds blueprint version(sdnc_model_version property)", "1.0.0",
+                    pnfCustomization.getBlueprintVersion());
+            assertEquals("default software version", "foo-123", pnfCustomization.getDefaultSoftwareVersion());
+            assertTrue("skip post instantiation configuration", pnfCustomization.isSkipPostInstConf());
+            assertEquals("controller actor", "SO-REF-DATA", pnfCustomization.getControllerActor());
+
+            /**
+             * Check the pnf resource customization with service mapping
+             */
+            List<PnfResourceCustomization> pnfCustList = service.getPnfCustomizations();
+            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());
+        }
+    }
 
     private ArtifactInfoImpl constructPnfServiceArtifact() {
         ArtifactInfoImpl artifactInfo = new ArtifactInfoImpl();
@@ -620,26 +728,41 @@ public class ASDCControllerITTest extends BaseTest {
     private ArtifactInfoImpl constructPnfServiceArtifactWithSWV() {
         ArtifactInfoImpl artifactInfo = new ArtifactInfoImpl();
         artifactInfo.setArtifactType(ASDCConfiguration.TOSCA_CSAR);
-        artifactInfo.setArtifactURL("/download/service-Testserviceforpnf-csar.csar");// service-pnfservice.csar");
-        artifactInfo.setArtifactName("service-Testserviceforpnf-csar.csar");// "service-pnfservice.csar");
+        artifactInfo.setArtifactURL("/download/service-Ericservice-csar.csar");// service-pnfservice.csar");
+        artifactInfo.setArtifactName("service-Ericservice-csar.csar");// "service-pnfservice.csar");
         artifactInfo.setArtifactVersion("1.0");
         artifactInfo.setArtifactUUID(artifactUuid);
         return artifactInfo;
     }
 
     /**
-     * Construct the PnfResourceInfo based on the resource-Test140Pnf-template.yml from
-     * service-Testservice140-csar.csar.
+     * Construct the PnfResourceInfo based on the resource-DemoPnf-template.yml from service-Ericservice-csar.csar.
      */
     private ResourceInfoImpl constructPnfResourceInfoWithSWV() {
         ResourceInfoImpl resourceInfo = new ResourceInfoImpl();
-        resourceInfo.setResourceInstanceName("PNF CDS Test");
-        resourceInfo.setResourceInvariantUUID("bf150ca9-b8d3-4450-b50a-d80382a12462");// "17d9d183-cee5-4a46-b5c4-6d5203f7d2e8");
+        resourceInfo.setResourceInstanceName("demo-PNF");
+        resourceInfo.setResourceInvariantUUID("e688fe35-21c2-41be-9fd2-c5ae830a5031");
         resourceInfo.setResoucreType("PNF");
-        resourceInfo.setCategory("Application L4+");
-        resourceInfo.setSubcategory("Firewall");
-        resourceInfo.setResourceUUID("72a2c44c-bb8a-4086-824b-0662d40bcd68");// "aa5d0562-80e7-43e9-af74-3085e57ab09f");
-        resourceInfo.setResourceCustomizationUUID("96642e60-17cd-48c1-875d-b00b08fdb37b");// "9f01263a-eaf7-4d98-a37b-3785f751903e");
+        resourceInfo.setCategory("Network L4+");
+        resourceInfo.setSubcategory("Common Network Resources");
+        resourceInfo.setResourceUUID("7a90f80b-a6f6-4597-8c48-80bda26b4823");
+        resourceInfo.setResourceCustomizationUUID("c850a53b-b63e-4043-ab10-53aabda78d37");// "9f01263a-eaf7-4d98-a37b-3785f751903e");
+        resourceInfo.setResourceVersion("1.0");
+        return resourceInfo;
+    }
+
+    /**
+     * Construct the PnfResourceInfo based on the resource-DemoPnf-template.yml from service-Ericservice-csar.csar.
+     */
+    private ResourceInfoImpl constructPnfResourceInfoWithSWV1() {
+        ResourceInfoImpl resourceInfo = new ResourceInfoImpl();
+        resourceInfo.setResourceInstanceName("demo-PNF");
+        resourceInfo.setResourceInvariantUUID("e688fe35-21c2-41be-9fd2-c5ae830a5031");
+        resourceInfo.setResoucreType("PNF");
+        resourceInfo.setCategory("Network L4+");
+        resourceInfo.setSubcategory("Common Network Resources");
+        resourceInfo.setResourceUUID("7a90f80b-a6f6-4597-8c48-80bda26b4823");
+        resourceInfo.setResourceCustomizationUUID("05660370-41ed-4720-a42b-d6def010c326");// "9f01263a-eaf7-4d98-a37b-3785f751903e");
         resourceInfo.setResourceVersion("1.0");
         return resourceInfo;
     }
diff --git a/asdc-controller/src/test/resources/download/service-Ericservice-csar.csar b/asdc-controller/src/test/resources/download/service-Ericservice-csar.csar
new file mode 100644 (file)
index 0000000..de8691e
Binary files /dev/null and b/asdc-controller/src/test/resources/download/service-Ericservice-csar.csar differ
index da95847..7500636 100644 (file)
@@ -268,34 +268,39 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
        Map<String,Object> profile
        switch(domainType) {
                case "AN-NF":
-                       profile = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)//pending fields - maxBandwidth, sST, plmnIdList, cSReliabilityMeanTime, 
-                                                                                                                                                                                                       //msgSizeByte, maxNumberofPDUSessions,overallUserDensity,transferIntervalTarget
+                       profile = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)//pending fields - cSReliabilityMeanTime, cSAvailabilityTarget, terminalDensity, msgSizeByte
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
+                        result.setMaxBandwidth(profile.get("maxbandwidth"))
                        result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
                        result.setUeMobilityLevel(profile.get("uEMobilityLevel"))
                        result.setMaxNumberOfUEs(profile.get("maxNumberofUEs"))
                        result.setActivityFactor(profile.get("activityFactor"))
-                       result.setCoverageAreaTAList(profile.get("coverageAreaTAList"))
+                       result.setCoverageAreaTAList(profile.get("coverageAreaTAList").toString())
                        result.setExpDataRateDL(profile.get("expDataRateDL"))
                        result.setExpDataRateUL(profile.get("expDataRateUL"))
                        result.setSurvivalTime(profile.get("survivalTime"))
+                       result.setMaxNumberOfPDUSession(profile.get("maxNumberOfPDUSession")) 
                        result.setAreaTrafficCapDL(profile.get("areaTrafficCapDL"))
                        result.setAreaTrafficCapUL(profile.get("areaTrafficCapUL"))
+                       result.setOverallUserDensity(profile.get("overallUserDensity")) 
+                       result.setTransferIntervalTarget(profile.get("transferIntervalTarget"))
                        result.setExpDataRate(profile.get("expDataRate"))
                        result.setProfileId(execution.getVariable("ANNF_sliceProfileId"))
                        break
                case "TN-FH":
-                       profile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class) //pending fields - maxBandwidth, sST, plmnIdList
+                       profile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class) 
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
+                        result.setMaxBandwidth(profile.get("maxbandwidth"))
                        result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
                        result.setProfileId(execution.getVariable("TNFH_sliceProfileId"))
                        break
                case "TN-MH":
-                       profile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)//pending fields - maxBandwidth, sST, plmnIdList
+                       profile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
+                        result.setMaxBandwidth(profile.get("maxbandwidth"))
                        result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
                        result.setProfileId(execution.getVariable("TNMH_sliceProfileId"))
                        break
@@ -356,6 +361,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        if(domainType.equals("TN_FH")) {
                                serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNFH_modelInvariantUuid"))
                                serviceInfo.addProperty("serviceUuid", execution.getVariable("TNFH_modelUuid"))
+                               serviceInfo.addProperty("nssiName", execution.getVariable("TNFH_modelName"))
                                allocateTnNssi.addProperty("nsstId", execution.getVariable("TNFH_modelUuid"))
                                allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_modelName"))
                                Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class)
@@ -367,6 +373,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        }else if(domainType.equals("TN_MH")) {
                                serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNMH_modelInvariantUuid"))
                                serviceInfo.addProperty("serviceUuid", execution.getVariable("TNMH_modelUuid"))
+                               serviceInfo.addProperty("nssiName", execution.getVariable("TNMH_modelName"))
                                allocateTnNssi.addProperty("nsstId", execution.getVariable("TNMH_modelUuid"))
                                allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_modelName"))
                                Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)
index ff7b0a3..515990a 100644 (file)
@@ -37,6 +37,9 @@ import org.onap.so.db.request.beans.ResourceOperationStatus
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
+import static org.apache.commons.lang3.StringUtils.isBlank
+import static org.apache.commons.lang3.StringUtils.isEmpty
+
 public class DoActivateTnNssi extends AbstractServiceTaskProcessor {
     String Prefix = "TNACT_"
 
@@ -63,7 +66,9 @@ public class DoActivateTnNssi extends AbstractServiceTaskProcessor {
 
         String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
         String modelUuid = execution.getVariable("modelUuid")
-        //here modelVersion is not set, we use modelUuid to decompose the service.
+        if (isEmpty(modelUuid)) {
+            modelUuid = tnNssmfUtils.getModelUuidFromServiceInstance(execution.getVariable("serviceInstanceID"))
+        }
         def isDebugLogEnabled = true
         execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
         String serviceModelInfo = """{
@@ -83,7 +88,13 @@ public class DoActivateTnNssi extends AbstractServiceTaskProcessor {
         String actionType = operationType.equals("activateInstance") ? "activate" : "deactivate"
         execution.setVariable("actionType", actionType)
 
-        tnNssmfUtils.setEnableSdncConfig(execution)
+        String additionalPropJsonStr = execution.getVariable("sliceParams")
+        if (isBlank(additionalPropJsonStr) ||
+                isBlank(tnNssmfUtils.setExecVarFromJsonIfExists(execution,
+                        additionalPropJsonStr,
+                        "enableSdnc", "enableSdnc"))) {
+            tnNssmfUtils.setEnableSdncConfig(execution)
+        }
 
         logger.debug("Finish preProcessRequest")
     }
index 33724bd..567c703 100644 (file)
@@ -323,7 +323,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                                execution.setVariable("isRspRanNssi", true)
                        }else {
                                JsonObject newNSISolution = sol.get("newNSISolution").getAsJsonObject()
-                               JsonArray sliceProfiles = newNSISolution.get("slice_profiles").getAsJsonArray()
+                               JsonArray sliceProfiles = newNSISolution.get("sliceProfiles").getAsJsonArray()
                                logger.debug("RanConstituentSliceProfiles list from OOF "+sliceProfiles)
                                execution.setVariable("RanConstituentSliceProfiles", sliceProfiles.toString())
                        }
@@ -354,14 +354,14 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                
                execution.setVariable("modifySliceParams", modifySliceParams.toString())
                //create operation status in request db
-               String serviceId = execution.getVariable("RANServiceInstanceId")
                String nsiId = execution.getVariable("nsiId")
-               logger.debug("Generated new job for Service Instance serviceId:" + serviceId + "jobId:" + jobId)
+               String modelUuid = execution.getVariable("modelUuid")
+               logger.debug("Generated new job for Service Instance serviceId:" + nsiId + "jobId:" + jobId)
 
                ResourceOperationStatus initStatus = new ResourceOperationStatus()
-               initStatus.setServiceId(serviceId)
+               initStatus.setServiceId(nsiId)
                initStatus.setOperationId(jobId)
-               initStatus.setResourceTemplateUUID(nsiId)
+               initStatus.setResourceTemplateUUID(modelUuid)
                initStatus.setOperType("Modify")
                requestDBUtil.prepareInitResourceOperationStatus(execution, initStatus)
        }
@@ -613,13 +613,17 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                ANServiceInstance.setServiceType(serviceType)
                String serviceStatus = "deactivated"
                ANServiceInstance.setOrchestrationStatus(serviceStatus)
-               String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "pLMNIdList")
+               String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "plmnIdList")
                ANServiceInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
                String serviceRole = "nssi"
                ANServiceInstance.setServiceRole(serviceRole)
                List<String> snssaiList = execution.getVariable("snssaiList")
                String snssai = snssaiList.get(0)
                ANServiceInstance.setEnvironmentContext(snssai)
+                String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
+                String modelUuid = execution.getVariable("modelUuid")
+                ANServiceInstance.setModelInvariantId(modelInvariantUuid)
+                ANServiceInstance.setModelVersionId(modelUuid)
                ANServiceInstance.setWorkloadContext("AN")
                String serviceFunctionAn = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "resourceSharingLevel")
                ANServiceInstance.setServiceFunction(serviceFunctionAn)
@@ -630,12 +634,14 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                ANNFServiceInstance.setServiceInstanceName(sliceInstanceName)
                ANNFServiceInstance.setServiceType(serviceType)
                ANNFServiceInstance.setOrchestrationStatus(serviceStatus)
-               serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "pLMNIdList")
+               serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
                ANNFServiceInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
                ANNFServiceInstance.setServiceRole(serviceRole)
                snssaiList = execution.getVariable("snssaiList")
                snssai = snssaiList.get(0)
                ANNFServiceInstance.setEnvironmentContext(snssai)
+                ANNFServiceInstance.setModelInvariantId(execution.getVariable("ANNF_modelInvariantUuid"))
+                ANNFServiceInstance.setModelVersionId(execution.getVariable("ANNF_modelUuid"))
                ANNFServiceInstance.setWorkloadContext("AN-NF")
                String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "resourceSharingLevel")
                ANNFServiceInstance.setServiceFunction(serviceFunctionAnnf)
@@ -852,16 +858,16 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
        def prepareOperationStatusUpdate = { DelegateExecution execution ->
                logger.debug(Prefix + "prepareOperationStatusUpdate Start")
 
-               String serviceId = execution.getVariable("dummyServiceId")
                String jobId = execution.getVariable("jobId")
                String nsiId = execution.getVariable("nsiId")
+               String modelUuid = execution.getVariable("modelUuid")
                String nssiId = execution.getVariable("RANServiceInstanceId")
-               logger.debug("Service Instance serviceId:" + serviceId + " jobId:" + jobId)
+               logger.debug("Service Instance serviceId:" + nsiId + " jobId:" + jobId)
 
                ResourceOperationStatus updateStatus = new ResourceOperationStatus()
-               updateStatus.setServiceId(serviceId)
+               updateStatus.setServiceId(nsiId)
                updateStatus.setOperationId(jobId)
-               updateStatus.setResourceTemplateUUID(nsiId)
+               updateStatus.setResourceTemplateUUID(modelUuid)
                updateStatus.setResourceInstanceID(nssiId)
                updateStatus.setOperType("Allocate")
                updateStatus.setProgress("100")
@@ -874,16 +880,16 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
        def prepareFailedOperationStatusUpdate = { DelegateExecution execution ->
                logger.debug(Prefix + "prepareFailedOperationStatusUpdate Start")
                
-               String serviceId = execution.getVariable("dummyServiceId")
                String jobId = execution.getVariable("jobId")
                String nsiId = execution.getVariable("nsiId")
+               String modelUuid = execution.getVariable("modelUuid")
                String nssiId = execution.getVariable("RANServiceInstanceId")
-               logger.debug("Service Instance serviceId:" + serviceId + " jobId:" + jobId)
+               logger.debug("Service Instance serviceId:" + nsiId + " jobId:" + jobId)
 
                ResourceOperationStatus updateStatus = new ResourceOperationStatus()
-               updateStatus.setServiceId(serviceId)
+               updateStatus.setServiceId(nsiId)
                updateStatus.setOperationId(jobId)
-               updateStatus.setResourceTemplateUUID(nsiId)
+               updateStatus.setResourceTemplateUUID(modelUuid)
                updateStatus.setResourceInstanceID(nssiId)
                updateStatus.setOperType("Allocate")
                updateStatus.setProgress("0")
index 04f07b6..c06e313 100644 (file)
@@ -35,6 +35,7 @@ import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
 import static org.apache.commons.lang3.StringUtils.isBlank
+import static org.apache.commons.lang3.StringUtils.isNotBlank
 
 class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor {
 
@@ -63,7 +64,9 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor {
              }"""
         execution.setVariable("serviceModelInfo", serviceModelInfo)
 
-        tnNssmfUtils.setEnableSdncConfig(execution)
+        if (isBlank(execution.getVariable("enableSdnc"))) {
+            tnNssmfUtils.setEnableSdncConfig(execution)
+        }
 
         logger.trace("Exit preProcessRequest")
     }
@@ -110,6 +113,12 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor {
         String ssInstanceId = execution.getVariable("sliceServiceInstanceId")
         String sliceProfileStr = execution.getVariable("sliceProfile")
         try {
+            if (sliceProfileStr == null || sliceProfileStr.isEmpty()) {
+                String msg = "ERROR: createServiceInstance: sliceProfile is null"
+                logger.error(msg)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+            }
+
             org.onap.aai.domain.yang.ServiceInstance ss = new org.onap.aai.domain.yang.ServiceInstance()
             ss.setServiceInstanceId(ssInstanceId)
             String sliceInstanceName = execution.getVariable("sliceServiceInstanceName")
@@ -125,12 +134,18 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor {
             String modelUuid = execution.getVariable("modelUuid")
             ss.setModelInvariantId(modelInvariantUuid)
             ss.setModelVersionId(modelUuid)
-            String serviceInstanceLocationid = tnNssmfUtils.getFirstPlmnIdFromSliceProfile(sliceProfileStr)
-            ss.setServiceInstanceLocationId(serviceInstanceLocationid)
+            String serviceInstanceLocationId = tnNssmfUtils.getFirstPlmnIdFromSliceProfile(sliceProfileStr)
+            ss.setServiceInstanceLocationId(serviceInstanceLocationId)
             String snssai = tnNssmfUtils.getFirstSnssaiFromSliceProfile(sliceProfileStr)
             //ss.setEnvironmentContext(snssai)
             ss.setEnvironmentContext("tn")
             ss.setServiceRole(serviceRole)
+
+            String domainTypeStr = jsonUtil.getJsonValue(sliceProfileStr, "domainType")
+            if (isNotBlank(domainTypeStr)) {
+                ss.setWorkloadContext(domainTypeStr)
+            }
+
             AAIResourcesClient client = getAAIClient()
             AAIResourceUri uri =
                     AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
@@ -280,25 +295,30 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor {
             List<String> linkStrList = jsonUtil.StringArrayToList(linkArrayStr)
 
             for (String linkStr : linkStrList) {
-                String logicalLinkId = UUID.randomUUID().toString()
+                String linkName = jsonUtil.getJsonValue(linkStr, "name")
+                if (isBlank(linkName)) {
+                    linkName = "tn-nssmf-" + UUID.randomUUID().toString()
+                }
+                logger.debug("createLogicalLinksForAllocatedResource: linkName=" + linkName)
+
                 String epA = jsonUtil.getJsonValue(linkStr, "transportEndpointA")
                 String epB = jsonUtil.getJsonValue(linkStr, "transportEndpointB")
                 String modelInvariantId = execution.getVariable("modelInvariantUuid")
                 String modelVersionId = execution.getVariable("modelUuid")
 
                 org.onap.aai.domain.yang.LogicalLink resource = new org.onap.aai.domain.yang.LogicalLink()
-                resource.setLinkId(logicalLinkId)
-                resource.setLinkName(epA)
+                resource.setLinkName(linkName)
+                resource.setLinkId(epA)
                 resource.setLinkName2(epB)
                 resource.setLinkType("TsciConnectionLink")
                 resource.setInMaint(false)
 
                 //epA is link-name
                 AAIResourceUri logicalLinkUri =
-                        AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().logicalLink(epA))
+                        AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().logicalLink(linkName))
                 getAAIClient().create(logicalLinkUri, resource)
 
-                tnNssmfUtils.attachLogicalLinkToAllottedResource(execution, AAI_VERSION, allottedResourceUri, epA);
+                tnNssmfUtils.attachLogicalLinkToAllottedResource(execution, AAI_VERSION, allottedResourceUri, linkName);
             }
         } catch (BpmnError e) {
             throw e
index a715e77..b09161d 100644 (file)
@@ -38,6 +38,9 @@ import org.onap.so.db.request.beans.ResourceOperationStatus
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
+import static org.apache.commons.lang3.StringUtils.isBlank
+import static org.apache.commons.lang3.StringUtils.isEmpty
+
 class DoDeallocateTnNssi extends AbstractServiceTaskProcessor {
     String Prefix = "TNDEALLOC_"
 
@@ -68,10 +71,11 @@ class DoDeallocateTnNssi extends AbstractServiceTaskProcessor {
         String sliceServiceInstanceName = execution.getVariable("servicename")
         execution.setVariable("sliceServiceInstanceName", sliceServiceInstanceName)
 
-
         String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
         String modelUuid = execution.getVariable("modelUuid")
-        //here modelVersion is not set, we use modelUuid to decompose the service.
+        if (isEmpty(modelUuid)) {
+            modelUuid = tnNssmfUtils.getModelUuidFromServiceInstance(execution.getVariable("serviceInstanceID"))
+        }
         def isDebugLogEnabled = true
         execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
         String serviceModelInfo = """{
@@ -81,7 +85,13 @@ class DoDeallocateTnNssi extends AbstractServiceTaskProcessor {
              }"""
         execution.setVariable("serviceModelInfo", serviceModelInfo)
 
-        tnNssmfUtils.setEnableSdncConfig(execution)
+        String additionalPropJsonStr = execution.getVariable("sliceParams")
+        if (isBlank(additionalPropJsonStr) ||
+                isBlank(tnNssmfUtils.setExecVarFromJsonIfExists(execution,
+                        additionalPropJsonStr,
+                        "enableSdnc", "enableSdnc"))) {
+            tnNssmfUtils.setEnableSdncConfig(execution)
+        }
 
         logger.debug("Finish preProcessRequest")
     }
index 4ff15a5..45af88d 100644 (file)
@@ -120,6 +120,11 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor {
             } else {
                 execution.setVariable("nsiInfo", nsiInfo)
             }
+
+            if (isBlank(tnNssmfUtils.setExecVarFromJsonIfExists(execution, additionalPropJsonStr,
+                    "enableSdnc", "enableSdnc"))) {
+                tnNssmfUtils.setEnableSdncConfig(execution)
+            }
         } catch (BpmnError e) {
             throw e
         } catch (Exception ex) {
index 74c9a49..7bb4511 100644 (file)
 
 package org.onap.so.bpmn.infrastructure.scripts
 
-import com.fasterxml.jackson.databind.ObjectMapper
 import groovy.json.JsonSlurper
 import org.json.JSONObject
 import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.beans.nsmf.JobStatusRequest
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.core.json.JsonUtils
@@ -45,7 +43,8 @@ public class QueryJobStatus extends AbstractServiceTaskProcessor{
         try{
             String requestId = execution.getVariable("msoRequestId")
             logger.debug("RequestId :" + requestId)
-            String jobId = execution.getVariable("jobId")
+            String responseId = execution.getVariable("responseId")
+            String jobId = execution.getVariable("jobId")   
             def jsonSlurper = new JsonSlurper()
             
             HashMap<String,?> esrInfo = jsonSlurper.parseText(execution.getVariable("esrInfo"))
@@ -53,7 +52,7 @@ public class QueryJobStatus extends AbstractServiceTaskProcessor{
             
             HashMap<String,?> serviceInfo = jsonSlurper.parseText(execution.getVariable("serviceInfo"))
             logger.debug("serviceInfo" + serviceInfo.toString())
-
+            
             execution.setVariable("esrInfo", esrInfo)
             execution.setVariable("serviceInfo", serviceInfo)
             
@@ -61,9 +60,10 @@ public class QueryJobStatus extends AbstractServiceTaskProcessor{
             String endPoint = String.format("/api/rest/provMns/v1/NSS/jobs/%s", jobId)          
             String url = nssmfEndpoint + endPoint 
             execution.setVariable("NSSMF_AdapterEndpoint", url)
-
+            
             String payload = """
                 {
+                  "responseId": "${responseId}",
                   "esrInfo":  ${execution.getVariable("esrInfo") as JSONObject},
                   "serviceInfo": ${execution.getVariable("serviceInfo") as JSONObject}
                 }
@@ -72,7 +72,7 @@ public class QueryJobStatus extends AbstractServiceTaskProcessor{
             execution.setVariable("NSSMF_AdapterRequest", payload.replaceAll("\\s+", ""))   
             execution.setVariable("startTime", System.currentTimeMillis())
             logger.debug("Outgoing NSSMF_AdapterRequest: \n" + payload)
-        }catch(Exception e){
+        }catch(Exception ex){
             String msg = "Exception in QueryJobStatus.preProcessRequest " + ex.getMessage()
             logger.error(msg)
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
@@ -107,7 +107,7 @@ public class QueryJobStatus extends AbstractServiceTaskProcessor{
                  responseDescriptorMap.put("statusDescription","Exception while querying job status")
                  String responseDescriptor = """
                  {
-                   "responseDescriptor": "${responseDescriptorMap}",
+                  "responseDescriptor": "${responseDescriptorMap as JSONObject}"
                  }
                """
                  execution.setVariable("JobStatusCompleted", "TRUE")
@@ -123,7 +123,7 @@ public class QueryJobStatus extends AbstractServiceTaskProcessor{
         responseDescriptorMap.put("statusDescription","timeout")
         String responseDescriptor = """
                 {
-                  "responseDescriptor": "${responseDescriptorMap}",
+                  "responseDescriptor": ${responseDescriptorMap as JSONObject}
                 }
               """
         execution.setVariable("JobStatusCompleted", "TRUE")
index deeec94..019e836 100644 (file)
@@ -116,10 +116,10 @@ class TnAllocateNssi extends AbstractServiceTaskProcessor {
                 execution.setVariable("nsiInfo", nsiInfoStr)
             }
 
-            //nsiId is passed in from caller bpmn
-            //String nsiIdStr = jsonUtil.getJsonValue(nsiInfo, "nsiId")
-            //execution.setVariable("nsiId", nsiIdStr)
-
+            if (isBlank(tnNssmfUtils.setExecVarFromJsonIfExists(execution, additionalPropJsonStr,
+                    "enableSdnc", "enableSdnc"))) {
+                tnNssmfUtils.setEnableSdncConfig(execution)
+            }
         } catch (BpmnError e) {
             throw e
         } catch (Exception ex) {
index 009b0a1..4877a23 100644 (file)
@@ -23,8 +23,11 @@ package org.onap.so.bpmn.infrastructure.scripts
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.onap.aai.domain.yang.Relationship
+import org.onap.aai.domain.yang.ServiceInstance
 import org.onap.aaiclient.client.aai.AAIResourcesClient
 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
+import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
+import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.common.scripts.MsoUtils
 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
@@ -368,4 +371,62 @@ class TnNssmfUtils {
 
         execution.setVariable("enableSdnc", enableSdnc)
     }
-}
+
+    String setExecVarFromJsonIfExists(DelegateExecution execution,
+                                      String jsonStr, String jsonKey, String varName) {
+        return setExecVarFromJsonStr(execution, jsonStr, jsonKey, varName, false)
+    }
+
+    String setExecVarFromJsonStr(DelegateExecution execution,
+                                 String jsonStr, String jsonKey, String varName,
+                                 boolean exceptionOnErr) {
+        String msg = ""
+        String valueStr = jsonUtil.getJsonValue(jsonStr, jsonKey)
+        if (isBlank(valueStr)) {
+            if (exceptionOnErr) {
+                msg = "cannot find " + jsonKey + " in " + jsonStr
+                logger.debug(msg)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+            }
+        } else {
+            execution.setVariable(varName, valueStr)
+        }
+
+        return valueStr
+    }
+
+    ServiceInstance getServiceInstanceFromAai(String serviceInstanceId) {
+        if (isBlank(serviceInstanceId)) {
+            logger.error("ERROR: getServiceInstanceFromAai: serviceInstanceId is blank")
+            return null
+        }
+
+        ServiceInstance nssi = null
+        AAIResourcesClient client = new AAIResourcesClient()
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.Types.SERVICE_INSTANCE
+                .getFragment(serviceInstanceId))
+        Optional<ServiceInstance> nssiOpt = client.get(ServiceInstance.class, uri)
+
+        if (nssiOpt.isPresent()) {
+            nssi = nssiOpt.get()
+            return nssi
+        } else {
+            String msg = String.format("ERROR: getServiceInstanceFromAai: NSSI %s not found in AAI", serviceInstanceId)
+            logger.error(msg)
+        }
+
+        return nssi;
+    }
+
+    String getModelUuidFromServiceInstance(String serviceInstanceId) {
+        ServiceInstance si = getServiceInstanceFromAai(serviceInstanceId)
+        if (si == null) {
+            String msg = String.format("ERROR: getModelUuidFromServiceInstance: getServiceInstanceFromAai() failed. " +
+                    "serviceInstanceId=%s", serviceInstanceId)
+            logger.error(msg)
+            return null
+        }
+
+        return si.modelVersionId()
+    }
+}
\ No newline at end of file
index 124b75c..82efc97 100644 (file)
@@ -131,6 +131,7 @@ css.prepareOofSelection(execution)</bpmn:script>
         <camunda:in source="operationId" target="operationId" />
         <camunda:in source="sliceProfile" target="sliceProfile" />
         <camunda:in source="transportSliceNetworks" target="transportSliceNetworks" />
+        <camunda:in source="enableSdnc" target="enableSdnc" />
         <camunda:in source="nsiInfo" target="nsiInfo" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:out source="rollbackData" target="rollbackData" />
index b2b6c03..8cafea7 100644 (file)
@@ -31,7 +31,7 @@ qjs.preProcessRequest(execution)</bpmn:script>
         </camunda:connector>
       </bpmn:extensionElements>
       <bpmn:incoming>Flow_0qhl0m8</bpmn:incoming>
-      <bpmn:incoming>Flow_1qqqckj</bpmn:incoming>
+      <bpmn:incoming>Flow_0akup2t</bpmn:incoming>
       <bpmn:outgoing>Flow_18di8yy</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="Flow_16nxw2f" sourceRef="StartEvent_1" targetRef="Activity_0cd23fy" />
@@ -64,17 +64,23 @@ qjs.updateJobStatusDetails(execution)</bpmn:script>
       <bpmn:incoming>Flow_0qqltc9</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="Flow_0qqltc9" sourceRef="Activity_0rtwx97" targetRef="Event_0p00z2s" />
-    <bpmn:sequenceFlow id="Flow_1qqqckj" name="No" sourceRef="Gateway_1ruy0j9" targetRef="Activity_1aivult">
+    <bpmn:sequenceFlow id="Flow_1qqqckj" name="No" sourceRef="Gateway_1ruy0j9" targetRef="Event_0dp6trf">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("JobStatusCompleted") == "FALSE"}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
+    <bpmn:intermediateCatchEvent id="Event_0dp6trf" name="TimeDelay">
+      <bpmn:incoming>Flow_1qqqckj</bpmn:incoming>
+      <bpmn:outgoing>Flow_0akup2t</bpmn:outgoing>
+      <bpmn:timerEventDefinition id="TimerEventDefinition_0ncw0aa">
+        <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT10S</bpmn:timeDuration>
+      </bpmn:timerEventDefinition>
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="Flow_0akup2t" sourceRef="Event_0dp6trf" targetRef="Activity_1aivult" />
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="QueryJobStatus">
       <bpmndi:BPMNEdge id="Flow_1qqqckj_di" bpmnElement="Flow_1qqqckj">
         <di:waypoint x="880" y="152" />
-        <di:waypoint x="880" y="280" />
-        <di:waypoint x="550" y="280" />
-        <di:waypoint x="550" y="167" />
+        <di:waypoint x="880" y="222" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="892" y="163" width="15" height="14" />
         </bpmndi:BPMNLabel>
@@ -106,6 +112,11 @@ qjs.updateJobStatusDetails(execution)</bpmn:script>
         <di:waypoint x="215" y="127" />
         <di:waypoint x="310" y="127" />
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0akup2t_di" bpmnElement="Flow_0akup2t">
+        <di:waypoint x="862" y="240" />
+        <di:waypoint x="570" y="240" />
+        <di:waypoint x="570" y="167" />
+      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
         <dc:Bounds x="179" y="109" width="36" height="36" />
         <bpmndi:BPMNLabel>
@@ -136,6 +147,13 @@ qjs.updateJobStatusDetails(execution)</bpmn:script>
           <dc:Bounds x="1160" y="152" width="20" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_0wfgoh7_di" bpmnElement="Event_0dp6trf">
+        <dc:Bounds x="862" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="896" y="252" width="53" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
+
diff --git a/pom.xml b/pom.xml
index e137ca5..353ee7b 100644 (file)
--- a/pom.xml
+++ b/pom.xml
   </properties>
   <distributionManagement>
     <repository>
-      <id>ecomp-releases</id>
+      <id>onap-releases</id>
       <url>${nexusproxy}/${releaseNexusPath}</url>
     </repository>
     <snapshotRepository>
-      <id>ecomp-snapshots</id>
+      <id>onap-snapshots</id>
       <url>${nexusproxy}/${snapshotNexusPath}</url>
     </snapshotRepository>
     <site>
-      <id>ecomp-site</id>
+      <id>onap-site</id>
       <url>dav:${nexusproxy}${siteNexusPath}</url>
     </site>
   </distributionManagement>
       <url>http://maven.restlet.com</url>
     </pluginRepository>
     <pluginRepository>
-      <id>ecomp-public</id>
+      <id>onap-public</id>
       <url>${nexusproxy}/${publicNexusPath}</url>
       <snapshots>
         <enabled>false</enabled>
       </snapshots>
     </pluginRepository>
     <pluginRepository>
-      <id>ecomp-release</id>
+      <id>onap-release</id>
       <url>${nexusproxy}/${releaseNexusPath}</url>
       <snapshots>
         <enabled>false</enabled>
       </snapshots>
     </pluginRepository>
     <pluginRepository>
-      <id>ecomp-snapshots</id>
+      <id>onap-snapshots</id>
       <url>${nexusproxy}/${snapshotNexusPath}</url>
       <releases>
         <enabled>false</enabled>
   </pluginRepositories>
   <repositories>
     <repository>
-      <id>ecomp-public</id>
+      <id>onap-public</id>
       <url>https://nexus.onap.org/content/repositories/public/</url>
       <snapshots>
         <enabled>false</enabled>
       </snapshots>
     </repository>
-    <repository>
-      <id>ecomp-releases</id>
-      <url>https://nexus.onap.org/content/repositories/releases/</url>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-    </repository>
-    <repository>
-      <id>ecomp-snapshots</id>
-      <url>https://nexus.onap.org/content/repositories/snapshots/</url>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-    </repository>
     <repository>
       <id>camunda-bpm</id>
       <url>https://app.camunda.com/nexus/content/repositories/camunda-bpm/</url>
       <url>https://app.camunda.com/nexus/content/groups/public</url>
     </repository>
     <repository>
-      <!-- TODO: remove from ONAP environemnt -->
       <id>onap-releases</id>
       <url>https://nexus.onap.org/content/repositories/releases/</url>
       <snapshots>
       </snapshots>
     </repository>
     <repository>
-      <!-- TODO: remove from ONAP environemnt -->
       <id>onap-snapshots</id>
       <url>https://nexus.onap.org/content/repositories/snapshots/</url>
       <releases>
       </resource>
     </resources>
     <plugins>
-      <!-- <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> 
-        <version>1.6.7</version> <extensions>true</extensions> <configuration> <nexusUrl>${nexusproxy}</nexusUrl> 
-        <stagingProfileId>176c31dfe190a</stagingProfileId> <serverId>ecomp-staging</serverId> 
-        </configuration> </plugin> -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-deploy-plugin</artifactId>