Merge "SO WorkflowAction refactor II"
authorLukasz Muszkieta <lukasz.muszkieta@nokia.com>
Tue, 19 Jan 2021 11:49:29 +0000 (11:49 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 19 Jan 2021 11:49:29 +0000 (11:49 +0000)
48 files changed:
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/consts/NssmfAdapterConsts.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProvider.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProviderImpl.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalAnNssmfManager.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalCnNssmfManager.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/RestUtil.java
adapters/mso-nssmf-adapter/src/test/java/org/onap/so/adapters/nssmf/service/impl/NssmfManagerServiceImplTest.java
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/ErrorCode.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboadingJobStatus.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJob.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJobDescriptor.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingRequest.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogServiceProvider.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiResourcePackageProcessor.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/HttpRestServiceProviderConfiguration.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/JobStatus.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcBasicHttpConfigurationProvider.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcResourceProvider.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SslBasedHttpClientConfiguration.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/EtsiCatalogManagerRequestFailureException.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageFailureException.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageProcessingException.java [deleted file]
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
asdc-controller/src/test/java/org/onap/so/asdc/client/SdcNotificationWithSol004PackageTest.java [deleted file]
asdc-controller/src/test/resources/application-test.yaml
asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/VENDOR_LICENSE/vendor-license-model.xml [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/VF_LICENSE/vf-license-model.xml [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/vgw6.csar [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/SDC_RESOURCE_CSAR/vgw_sdc_resource.csar [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/VENDOR_LICENSE/vendor-license-model.xml [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/VF_LICENSE/vf-license-model.xml [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/dmaap-notification-message.json [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error-package-exists.json [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error.json [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-successful.json [deleted file]
asdc-controller/src/test/resources/resource-examples/vgw/service-Vgwservicev1-csar.csar [deleted file]
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSliceService.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateSliceService.groovy [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoSendCommandToNSSMF.groovy [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateSliceService.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateSliceService.bpmn [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoSendCommandToNSSMF.bpmn [deleted file]
common/src/main/java/org/onap/so/beans/nsmf/ActDeActNssi.java
common/src/main/java/org/onap/so/beans/nsmf/CustomerInfo.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssInstance.java [moved from common/src/main/java/org/onap/so/beans/nsmf/NSSI.java with 57% similarity]
common/src/main/java/org/onap/so/beans/nsmf/OperationType.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/OrchestrationStatusEnum.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java

index 8f029e7..a24f8ef 100644 (file)
@@ -131,7 +131,7 @@ public class NssmfAdapterConsts {
         urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.CORE, ActionType.DEACTIVATE),
                 new NssmfUrlInfo(EXTERNAL_CN_DEACTIVATE_URL, HttpMethod.PUT));
         urlInfoMap.put(generateKey(ExecutorType.INTERNAL, null, ActionType.DEACTIVATE),
-                new NssmfUrlInfo(INTERNAL_DEACTIVATE_URL, HttpMethod.PUT));
+                new NssmfUrlInfo(INTERNAL_DEACTIVATE_URL, HttpMethod.POST));
 
         urlInfoMap.put(generateKey(ExecutorType.EXTERNAL, NetworkType.ACCESS, ActionType.TERMINATE),
                 new NssmfUrlInfo(EXTERNAL_AN_TERMINATE_URL, HttpMethod.DELETE));
index 77662bf..4df2fa1 100644 (file)
@@ -33,6 +33,9 @@ public interface AaiServiceProvider {
     void invokeCreateServiceInstance(ServiceInstance nssiInstance, String globalSubscriberId, String serviceType,
             String serviceInstanceId);
 
+    void invokeUpdateServiceInstance(ServiceInstance nssiInstance, String globalSubscriberId, String serviceType,
+            String serviceInstanceId);
+
     ServiceInstance invokeGetServiceInstance(String globalSubscriberId, String serviceType, String serviceInstanceId);
 
     void invokeDeleteServiceInstance(String globalSubscriberId, String serviceType, String serviceInstanceId);
index 1d7c42a..688012e 100644 (file)
@@ -76,6 +76,14 @@ public class AaiServiceProviderImpl implements AaiServiceProvider {
         aaiClientProvider.getAaiClient().create(uri, nssiInstance);
     }
 
+    @Override
+    public void invokeUpdateServiceInstance(ServiceInstance nssiInstance, String globalSubscriberId, String serviceType,
+            String serviceInstanceId) {
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+                .customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId));
+        aaiClientProvider.getAaiClient().update(uri, nssiInstance);
+    }
+
     @Override
     public ServiceInstance invokeGetServiceInstance(String globalSubscriberId, String serviceType,
             String serviceInstanceId) {
index 20ad3d1..1af6d15 100644 (file)
@@ -43,7 +43,10 @@ import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
 
 public class ExternalAnNssmfManager extends ExternalNssmfManager {
 
-    private Map<String, String> bodyParams = new HashMap<>(); // request body params
+    /**
+     * request body params
+     */
+    private Map<String, String> bodyParams = new HashMap<>();
 
     @Override
     protected String doWrapExtAllocateReqBody(NssmfAdapterNBIRequest nbiRequest) throws ApplicationException {
@@ -125,7 +128,23 @@ public class ExternalAnNssmfManager extends ExternalNssmfManager {
     @Override
     public RestResponse activateNssi(NssmfAdapterNBIRequest nbiRequest, String snssai) throws ApplicationException {
         // TODO
-        return null;
+        NssiResponse resp = new NssiResponse();
+        String nssiId = nbiRequest.getActDeActNssi().getNssiId();
+        resp.setJobId(UUID.randomUUID().toString());
+        resp.setNssiId(nssiId);
+
+        RestResponse returnRsp = new RestResponse();
+
+        returnRsp.setStatus(202);
+        returnRsp.setResponseContent(marshal(resp));
+
+        ResourceOperationStatus status =
+                new ResourceOperationStatus(serviceInfo.getNsiId(), resp.getJobId(), serviceInfo.getServiceUuid());
+        status.setResourceInstanceID(nssiId);
+        status.setOperType(actionType.toString());
+
+        updateDbStatus(status, returnRsp.getStatus(), JobStatus.FINISHED, NssmfAdapterUtil.getStatusDesc(actionType));
+        return returnRsp;
     }
 
     @Override
index fb76adc..08c464e 100644 (file)
 
 package org.onap.so.adapters.nssmf.manager.impl.external;
 
+import org.onap.aai.domain.yang.ServiceInstance;
+import org.onap.so.adapters.nssmf.enums.ActionType;
 import org.onap.so.adapters.nssmf.enums.SelectionType;
 import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
 import org.onap.so.adapters.nssmf.manager.impl.ExternalNssmfManager;
 import org.onap.so.beans.nsmf.DeAllocateNssi;
 import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest;
+import org.onap.so.db.request.beans.ResourceOperationStatus;
 import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
 
 public class ExternalCnNssmfManager extends ExternalNssmfManager {
@@ -44,6 +47,23 @@ public class ExternalCnNssmfManager extends ExternalNssmfManager {
         return marshal(deAllocateNssi);
     }
 
+    @Override
+    protected void afterQueryJobStatus(ResourceOperationStatus status) {
+        super.afterQueryJobStatus(status);
+        ActionType jobOperType = ActionType.valueOf(status.getOperType());
+        if (Integer.parseInt(status.getProgress()) == 100) {
+            if (ActionType.ACTIVATE.equals(jobOperType)) {
+                ServiceInstance nssiInstance = restUtil.getServiceInstance(serviceInfo);
+                nssiInstance.setOrchestrationStatus("activated");
+                restUtil.updateServiceInstance(nssiInstance, serviceInfo);
+            } else if (ActionType.DEACTIVATE.equals(jobOperType)) {
+                ServiceInstance nssiInstance = restUtil.getServiceInstance(serviceInfo);
+                nssiInstance.setOrchestrationStatus("deactivated");
+                restUtil.updateServiceInstance(nssiInstance, serviceInfo);
+            }
+        }
+    }
+
     @Override
     protected SelectionType doQueryNSSISelectionCapability() {
 
index 7a86c5b..60bf423 100644 (file)
@@ -77,6 +77,11 @@ public class RestUtil {
                 serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
     }
 
+    public void updateServiceInstance(ServiceInstance serviceInstance, ServiceInfo serviceInfo) {
+        aaiSvcProv.invokeUpdateServiceInstance(serviceInstance, serviceInfo.getGlobalSubscriberId(),
+                serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
+    }
+
     public ServiceInstance getServiceInstance(ServiceInfo serviceInfo) {
         return aaiSvcProv.invokeGetServiceInstance(serviceInfo.getGlobalSubscriberId(),
                 serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
index d7b3b03..26904fa 100644 (file)
@@ -35,6 +35,7 @@ import org.mockito.stubbing.Answer;
 import org.onap.so.adapters.nssmf.consts.NssmfAdapterConsts;
 import org.onap.so.adapters.nssmf.entity.NssmfInfo;
 import org.onap.so.adapters.nssmf.entity.TokenResponse;
+import org.onap.so.adapters.nssmf.enums.ActionType;
 import org.onap.so.adapters.nssmf.enums.HttpMethod;
 import org.onap.so.adapters.nssmf.util.RestUtil;
 import org.onap.so.beans.nsmf.*;
@@ -358,6 +359,7 @@ public class NssmfManagerServiceImplTest {
         operationStatus.setOperationId("4b45d919816ccaa2b762df5120f72067");
         operationStatus.setResourceTemplateUUID("8ee5926d-720b-4bb2-86f9-d20e921c143b");
         operationStatus.setServiceId("NSI-M-001-HDBNJ-NSMF-01-A-ZX");
+        operationStatus.setOperType(ActionType.ALLOCATE.toString());
 
         NssmfAdapterNBIRequest nbiRequest = createNbiRequest();
         nbiRequest.setResponseId("7512eb3feb5249eca5ddd742fedddd39");
@@ -376,8 +378,6 @@ public class NssmfManagerServiceImplTest {
         assertEquals(allRes.getResponseDescriptor().getStatus(), "processing");
         assertEquals(allRes.getResponseDescriptor().getResponseId(), "7512eb3feb5249eca5ddd742fedddd39");
 
-        System.out.println(res);
-
     }
 
     @Test
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/ErrorCode.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/ErrorCode.java
deleted file mode 100644 (file)
index 1714e24..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public enum ErrorCode {
-
-    NORMAL("0"), PACKAGE_EXIST("1"), CATALOG_EXCEPTION("2"), SYSTEM_ERROR("3"), UNKNOWN("-1");
-
-    private String code;
-
-    private ErrorCode(final String code) {
-        this.code = code;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public static ErrorCode getErrorCode(final String code) {
-        for (final ErrorCode errorCode : ErrorCode.values()) {
-            if (errorCode.getCode().equalsIgnoreCase(code)) {
-                return errorCode;
-            }
-
-        }
-        return UNKNOWN;
-    }
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboadingJobStatus.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboadingJobStatus.java
deleted file mode 100644 (file)
index 772f81a..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import java.io.Serializable;
-import javax.xml.bind.annotation.XmlElement;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class EtsiCatalogPackageOnboadingJobStatus implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @XmlElement(name = "jobId")
-    private String jobId;
-
-    @XmlElement(name = "responseDescriptor")
-    private EtsiCatalogPackageOnboardingJobDescriptor responseDescriptor;
-
-    public String getJobId() {
-        return jobId;
-    }
-
-    public void setJobId(final String jobId) {
-        this.jobId = jobId;
-    }
-
-    public EtsiCatalogPackageOnboardingJobDescriptor getResponseDescriptor() {
-        return responseDescriptor;
-    }
-
-    public void setResponseDescriptor(final EtsiCatalogPackageOnboardingJobDescriptor responseDescriptor) {
-        this.responseDescriptor = responseDescriptor;
-    }
-
-    @Override
-    public String toString() {
-        return "EtsiCatalogPackageOnboadingJobStatus [jobId=" + jobId + ", responseDescriptor=" + responseDescriptor
-                + "]";
-    }
-
-
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJob.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJob.java
deleted file mode 100644 (file)
index 0c7bba6..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import java.io.Serializable;
-import javax.xml.bind.annotation.XmlElement;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class EtsiCatalogPackageOnboardingJob implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @XmlElement(name = "jobId")
-    private String jobId;
-
-    public String getJobId() {
-        return jobId;
-    }
-
-    public void setJobId(final String jobId) {
-        this.jobId = jobId;
-    }
-
-    @Override
-    public String toString() {
-        return "EtsiCatalogPackageOnboardingJob [jobId=" + jobId + "]";
-    }
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJobDescriptor.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingJobDescriptor.java
deleted file mode 100644 (file)
index b0c07d6..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import java.io.Serializable;
-import javax.xml.bind.annotation.XmlElement;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class EtsiCatalogPackageOnboardingJobDescriptor implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @XmlElement(name = "status")
-    private String status;
-
-    @XmlElement(name = "statusDescription")
-    private String statusDescription;
-
-    @XmlElement(name = "errorCode")
-    private String errorCode;
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(final String status) {
-        this.status = status;
-    }
-
-    public String getStatusDescription() {
-        return statusDescription;
-    }
-
-    public void setStatusDescription(final String statusDescription) {
-        this.statusDescription = statusDescription;
-    }
-
-    public String getErrorCode() {
-        return errorCode;
-    }
-
-    public void setErrorCode(final String errorCode) {
-        this.errorCode = errorCode;
-    }
-
-    @Override
-    public String toString() {
-        return "EtsiCatalogPackageOnboardingJobDescriptor [status=" + status + ", statusDescription="
-                + statusDescription + ", errorCode=" + errorCode + "]";
-    }
-
-
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingRequest.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogPackageOnboardingRequest.java
deleted file mode 100644 (file)
index 79fd139..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import java.io.Serializable;
-import javax.xml.bind.annotation.XmlElement;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class EtsiCatalogPackageOnboardingRequest implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @XmlElement(name = "csarId")
-    private String csarId;
-
-    public EtsiCatalogPackageOnboardingRequest csarId(final String csarId) {
-        this.csarId = csarId;
-        return this;
-    }
-
-    public String getCsarId() {
-        return csarId;
-    }
-
-    public void setCsarId(final String csarId) {
-        this.csarId = csarId;
-    }
-
-    @Override
-    public String toString() {
-        return "EtsiCatalogPackageOnboardingRequest  [csarId=" + csarId + "]";
-    }
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogServiceProvider.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiCatalogServiceProvider.java
deleted file mode 100644 (file)
index f6a3032..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import static org.onap.so.asdc.etsi.pkg.processor.HttpRestServiceProviderConfiguration.ETSI_CATALOG_HTTP_REST_SERVICE_PROVIDER_BEAN;
-import org.onap.so.asdc.etsi.pkg.processor.exceptions.EtsiCatalogManagerRequestFailureException;
-import org.onap.so.rest.exceptions.InvalidRestRequestException;
-import org.onap.so.rest.exceptions.RestProcessingException;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class EtsiCatalogServiceProvider {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(EtsiCatalogServiceProvider.class);
-
-    private final HttpRestServiceProvider httpServiceProvider;
-
-    @Value("${etsi-catalog-manager.endpoint:http://modeling-etsicatalog.onap:8806/api/catalog/v1}")
-    private String etsiCatalogManagerEndpoint;
-
-    @Autowired
-    public EtsiCatalogServiceProvider(
-            @Qualifier(ETSI_CATALOG_HTTP_REST_SERVICE_PROVIDER_BEAN) final HttpRestServiceProvider httpServiceProvider) {
-        this.httpServiceProvider = httpServiceProvider;
-    }
-
-    public EtsiCatalogPackageOnboardingJob onBoardResource(
-            final EtsiCatalogPackageOnboardingRequest packageOnboardingRequest) {
-        try {
-            final String url = etsiCatalogManagerEndpoint + "/vnfpackages";
-            final ResponseEntity<EtsiCatalogPackageOnboardingJob> responseEntity = httpServiceProvider.postHttpRequest(
-                    packageOnboardingRequest, url, getHeaders(), EtsiCatalogPackageOnboardingJob.class);
-
-            if (responseEntity.getStatusCode().is2xxSuccessful()) {
-                if (responseEntity.hasBody()) {
-                    return responseEntity.getBody();
-                }
-                LOGGER.error("Received response without body");
-            }
-            final String message = "Unexpected status code received " + responseEntity.getStatusCode();
-            LOGGER.error(message);
-            throw new EtsiCatalogManagerRequestFailureException(message);
-
-        } catch (final InvalidRestRequestException | RestProcessingException exception) {
-            final String message = "Unable to process onboarding request";
-            LOGGER.error(message, exception);
-            throw new EtsiCatalogManagerRequestFailureException(message);
-        }
-
-    }
-
-    public EtsiCatalogPackageOnboadingJobStatus getJobStatus(final String jobId) {
-        try {
-            final String url = etsiCatalogManagerEndpoint + "/jobs/" + jobId;
-
-            final ResponseEntity<EtsiCatalogPackageOnboadingJobStatus> responseEntity =
-                    httpServiceProvider.getHttpResponse(url, getHeaders(), EtsiCatalogPackageOnboadingJobStatus.class);
-
-            if (responseEntity.getStatusCode().is2xxSuccessful()) {
-                if (responseEntity.hasBody()) {
-                    return responseEntity.getBody();
-                }
-                LOGGER.error("Received response without body");
-            }
-            final String message =
-                    "Unexpected status code received while getting job status " + responseEntity.getStatusCode();
-            LOGGER.error(message);
-            throw new EtsiCatalogManagerRequestFailureException(message);
-        } catch (final InvalidRestRequestException | RestProcessingException exception) {
-            final String message = "Unable to get job status";
-            LOGGER.error(message, exception);
-            throw new EtsiCatalogManagerRequestFailureException(message);
-        }
-
-    }
-
-    private HttpHeaders getHeaders() {
-        final HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.APPLICATION_JSON);
-        return headers;
-    }
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiResourcePackageProcessor.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/EtsiResourcePackageProcessor.java
deleted file mode 100644 (file)
index 4205de3..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.time.Instant;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import org.onap.so.asdc.etsi.pkg.processor.exceptions.SOL004ResourcePackageFailureException;
-import org.onap.so.asdc.etsi.pkg.processor.exceptions.SOL004ResourcePackageProcessingException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import com.google.common.collect.ImmutableSet;
-
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class EtsiResourcePackageProcessor {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(EtsiResourcePackageProcessor.class);
-    private static final String ONBOARDED_PACKAGE_DIR_PATH = "Artifacts/Deployment/ETSI_PACKAGE";
-    private final SdcResourceProvider sdcResourceProvider;
-    private final EtsiCatalogServiceProvider catalogServiceProvider;
-    private static final int SLEEP_TIME_IN_SECONDS = 5;
-
-    private static final ImmutableSet<JobStatus> JOB_FINISHED_STATES =
-            ImmutableSet.of(JobStatus.FINISHED, JobStatus.ERROR, JobStatus.TIMEOUT);
-
-    @Value("${etsi-catalog-manager.rest.timeoutInSeconds:300}")
-    private int timeOutInSeconds;
-
-    @Autowired
-    public EtsiResourcePackageProcessor(final SdcResourceProvider sdcResourceProvider,
-            final EtsiCatalogServiceProvider catalogServiceProvider) {
-        this.sdcResourceProvider = sdcResourceProvider;
-        this.catalogServiceProvider = catalogServiceProvider;
-    }
-
-    public void processPackageIfExists(final String vnfUuid) {
-        LOGGER.debug("Processing vnf with UUID: {} ", vnfUuid);
-        try {
-            final Optional<byte[]> optional = sdcResourceProvider.getVnfResource(vnfUuid);
-            if (optional.isPresent()) {
-                final byte[] resourceContent = optional.get();
-
-                if (containsOnBoardedSol004Package(resourceContent)) {
-                    final EtsiCatalogPackageOnboardingJob onboardingJob = catalogServiceProvider
-                            .onBoardResource(new EtsiCatalogPackageOnboardingRequest().csarId(vnfUuid));
-                    LOGGER.debug("Successfully created job with id: {} to onboard vnf with UUID: {}",
-                            onboardingJob.getJobId(), vnfUuid);
-
-                    if (onboardingJob.getJobId() == null) {
-                        throw new SOL004ResourcePackageFailureException(
-                                "Received invalid jobId " + onboardingJob.getJobId());
-                    }
-
-                    final Optional<EtsiCatalogPackageOnboadingJobStatus> jobStatusOptional =
-                            waitForJobToFinish(onboardingJob);
-
-                    if (!jobStatusOptional.isPresent()) {
-                        final String message = "Job status timeout reached failed to onboard vnf with UUID: " + vnfUuid;
-                        LOGGER.debug(message, vnfUuid);
-                        throw new SOL004ResourcePackageFailureException(message);
-                    }
-
-                    final EtsiCatalogPackageOnboadingJobStatus onboadingJobStatus = jobStatusOptional.get();
-                    final JobStatus jobStatus = getJobStatus(onboadingJobStatus);
-                    final ErrorCode errorCode = getErrorCode(onboadingJobStatus);
-
-                    LOGGER.debug("Final job status: {}, error code: {}", jobStatus, errorCode);
-                    if (!JobStatus.FINISHED.equals(jobStatus) && !ErrorCode.PACKAGE_EXIST.equals(errorCode)) {
-                        final String message = "Failed to onboard vnf with UUID: " + vnfUuid + " job status: "
-                                + jobStatus + " errorCode: " + errorCode;
-                        LOGGER.debug(message, vnfUuid);
-                        throw new SOL004ResourcePackageFailureException(message);
-                    }
-                    LOGGER.debug("Successfully onboarded package in ETSI catalog .. ");
-                }
-
-            }
-        } catch (final Exception exception) {
-            final String message = "Unable to process resource received from SDC";
-            LOGGER.error(message, exception);
-            throw new SOL004ResourcePackageProcessingException(message, exception);
-        }
-
-    }
-
-    private Optional<EtsiCatalogPackageOnboadingJobStatus> waitForJobToFinish(
-            final EtsiCatalogPackageOnboardingJob onboardingJob) throws InterruptedException {
-        JobStatus currentJobStatus = null;
-        final long startTimeInMillis = System.currentTimeMillis();
-        final long timeOutTime = startTimeInMillis + TimeUnit.SECONDS.toMillis(timeOutInSeconds);
-
-        LOGGER.debug("Will wait till {} for {} job to finish", Instant.ofEpochMilli(timeOutTime).toString(),
-                onboardingJob.getJobId());
-
-        while (timeOutTime > System.currentTimeMillis()) {
-
-            final EtsiCatalogPackageOnboadingJobStatus onboadingJobStatus =
-                    catalogServiceProvider.getJobStatus(onboardingJob.getJobId());
-            LOGGER.debug("Current job status {} ", onboadingJobStatus);
-
-            currentJobStatus = getJobStatus(onboadingJobStatus);
-            if (JOB_FINISHED_STATES.contains(currentJobStatus)) {
-                return Optional.of(onboadingJobStatus);
-            }
-
-            LOGGER.debug("Onboarding not finished yet, will try again in {} seconds", SLEEP_TIME_IN_SECONDS);
-            TimeUnit.SECONDS.sleep(SLEEP_TIME_IN_SECONDS);
-
-        }
-        LOGGER.warn("Timeout current job status: {}", currentJobStatus);
-        return Optional.empty();
-    }
-
-    private boolean containsOnBoardedSol004Package(final byte[] resourceContent) throws IOException {
-        try (final ZipInputStream zipStream = new ZipInputStream(new ByteArrayInputStream(resourceContent))) {
-            ZipEntry entry;
-            while ((entry = zipStream.getNextEntry()) != null) {
-                if (entry.getName() != null && entry.getName().contains(ONBOARDED_PACKAGE_DIR_PATH)) {
-                    LOGGER.debug("Found entry: {} that contains {} in name", entry.getName(),
-                            ONBOARDED_PACKAGE_DIR_PATH);
-                    return true;
-                }
-            }
-
-        }
-        LOGGER.debug("Unable to find {} dir in downloaded package", ONBOARDED_PACKAGE_DIR_PATH);
-        return false;
-    }
-
-    private JobStatus getJobStatus(final EtsiCatalogPackageOnboadingJobStatus onboadingJobStatus) {
-        if (onboadingJobStatus.getResponseDescriptor() != null) {
-            return JobStatus.getJobStatus(onboadingJobStatus.getResponseDescriptor().getStatus());
-        }
-        LOGGER.warn("Found null ResponseDescriptor {}", onboadingJobStatus);
-        return JobStatus.UNKNOWN;
-    }
-
-    private ErrorCode getErrorCode(final EtsiCatalogPackageOnboadingJobStatus onboadingJobStatus) {
-        if (onboadingJobStatus.getResponseDescriptor() != null) {
-            return ErrorCode.getErrorCode(onboadingJobStatus.getResponseDescriptor().getErrorCode());
-        }
-        LOGGER.warn("Found null ResponseDescriptor {}", onboadingJobStatus);
-        return ErrorCode.UNKNOWN;
-    }
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/HttpRestServiceProviderConfiguration.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/HttpRestServiceProviderConfiguration.java
deleted file mode 100644 (file)
index 1afda0d..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import static org.onap.so.asdc.etsi.pkg.processor.SslBasedHttpClientConfiguration.SSL_BASED_CONFIGURABLE_REST_TEMPLATE;
-import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.onap.so.rest.service.HttpRestServiceProviderImpl;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class HttpRestServiceProviderConfiguration {
-
-    public static final String ETSI_CATALOG_HTTP_REST_SERVICE_PROVIDER_BEAN = "etsiCatalogHttpRestServiceProviderBean";
-    public static final String SDC_HTTP_REST_SERVICE_PROVIDER_BEAN = "sdcHttpRestServiceProviderBean";
-
-    @Bean
-    @Qualifier(ETSI_CATALOG_HTTP_REST_SERVICE_PROVIDER_BEAN)
-    public HttpRestServiceProvider etsiCataloghttpRestServiceProvider(
-            @Qualifier(CONFIGURABLE_REST_TEMPLATE) final RestTemplate restTemplate) {
-        return new HttpRestServiceProviderImpl(restTemplate);
-    }
-
-    @Bean
-    @Qualifier(SDC_HTTP_REST_SERVICE_PROVIDER_BEAN)
-    public HttpRestServiceProvider sdchttpRestServiceProvider(
-            @Qualifier(SSL_BASED_CONFIGURABLE_REST_TEMPLATE) final RestTemplate restTemplate) {
-        return new HttpRestServiceProviderImpl(restTemplate);
-    }
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/JobStatus.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/JobStatus.java
deleted file mode 100644 (file)
index cf09b15..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public enum JobStatus {
-
-    STARTED("started"),
-    TIMEOUT("timeout"),
-    FINISHED("finished"),
-    PARTLY_FINISHED("partly_finished"),
-    PROCESSING("processing"),
-    ERROR("error"),
-    UNKNOWN("unknown");
-
-    private String value;
-
-    private JobStatus(final String value) {
-        this.value = value;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    @Override
-    public String toString() {
-        return this.value;
-    }
-
-    public static JobStatus getJobStatus(final String jobStatus) {
-        for (final JobStatus status : JobStatus.values()) {
-            if (status.getValue().equalsIgnoreCase(jobStatus)) {
-                return status;
-            }
-        }
-        return JobStatus.UNKNOWN;
-    }
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcBasicHttpConfigurationProvider.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcBasicHttpConfigurationProvider.java
deleted file mode 100644 (file)
index 19375e2..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import java.nio.charset.StandardCharsets;
-import java.security.GeneralSecurityException;
-import org.apache.commons.codec.binary.Base64;
-import org.onap.so.utils.CryptoUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class SdcBasicHttpConfigurationProvider {
-
-    @Value("${sdc.endpoint:https://sdc-be.onap:8443}")
-    private String endPoint;
-
-    @Value("${sdc.username:mso}")
-    private String username;
-
-    @Value(value = "${sdc.password:76966BDD3C7414A03F7037264FF2E6C8EEC6C28F2B67F2840A1ED857C0260FEE731D73F47F828E5527125D29FD25D3E0DE39EE44C058906BF1657DE77BF897EECA93BDC07FA64F}")
-    private String password;
-
-    @Value(value = "${sdc.key:566B754875657232314F5548556D3665}")
-    private String key;
-
-
-    public String getBasicAuthorization() throws GeneralSecurityException {
-        final String auth = username + ":" + CryptoUtils.decrypt(password, key);
-        final byte[] encodedAuth = Base64.encodeBase64(auth.getBytes(StandardCharsets.ISO_8859_1));
-        return "Basic " + new String(encodedAuth);
-    }
-
-    public String getEndPoint() {
-        return endPoint;
-    }
-
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcResourceProvider.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SdcResourceProvider.java
deleted file mode 100644 (file)
index 0cd0aba..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import static org.onap.so.asdc.etsi.pkg.processor.HttpRestServiceProviderConfiguration.SDC_HTTP_REST_SERVICE_PROVIDER_BEAN;
-import static org.springframework.http.HttpHeaders.ACCEPT;
-import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM_VALUE;
-import java.security.GeneralSecurityException;
-import java.util.Optional;
-import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Service
-public class SdcResourceProvider {
-    private final static Logger LOGGER = LoggerFactory.getLogger(SdcResourceProvider.class);
-
-    private static final String SERVICE_NAME = "SO-SDC-CONTROLLER";
-
-    private final HttpRestServiceProvider httpRestServiceProvider;
-
-    private final SdcBasicHttpConfigurationProvider sdcBasicHttpConfigurationProvider;
-
-    @Autowired
-    public SdcResourceProvider(
-            @Qualifier(SDC_HTTP_REST_SERVICE_PROVIDER_BEAN) final HttpRestServiceProvider httpRestServiceProvider,
-            final SdcBasicHttpConfigurationProvider sdcBasicHttpConfigurationProvider) {
-        this.httpRestServiceProvider = httpRestServiceProvider;
-        this.sdcBasicHttpConfigurationProvider = sdcBasicHttpConfigurationProvider;
-    }
-
-    public Optional<byte[]> getVnfResource(final String resourceId) {
-        LOGGER.debug("Will get resource from SDC using resource id: {}", resourceId);
-        try {
-            final HttpHeaders headers = getHttpHeaders();
-            headers.add(ACCEPT, APPLICATION_OCTET_STREAM_VALUE);
-            final String url = getSdcResourceEndPoint(resourceId);
-            LOGGER.debug("will invoke url: {} to get resource ", url);
-            final ResponseEntity<byte[]> responseEntity =
-                    httpRestServiceProvider.getHttpResponse(url, headers, byte[].class);
-
-            if (responseEntity.getStatusCode().is2xxSuccessful()) {
-                if (responseEntity.hasBody()) {
-                    return Optional.of(responseEntity.getBody());
-                }
-                LOGGER.error("Received response without body");
-            }
-            LOGGER.error("Unexpected Status code received : {}", responseEntity.getStatusCode());
-            return Optional.empty();
-        } catch (final Exception exception) {
-            LOGGER.error("Unable to get {} resource from SDC", resourceId, exception);
-            return Optional.empty();
-        }
-    }
-
-    private String getSdcResourceEndPoint(final String resourceId) {
-        return sdcBasicHttpConfigurationProvider.getEndPoint() + "/sdc/v1/catalog/resources/" + resourceId
-                + "/toscaModel";
-    }
-
-
-    private HttpHeaders getHttpHeaders() throws GeneralSecurityException {
-        final HttpHeaders headers = new HttpHeaders();
-        headers.add(HttpHeaders.AUTHORIZATION, sdcBasicHttpConfigurationProvider.getBasicAuthorization());
-        headers.add("X-ECOMP-InstanceID", SERVICE_NAME);
-        headers.add("X-FromAppId", SERVICE_NAME);
-        return headers;
-    }
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SslBasedHttpClientConfiguration.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/SslBasedHttpClientConfiguration.java
deleted file mode 100644 (file)
index 88c2152..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor;
-
-import java.security.NoSuchAlgorithmException;
-import java.util.concurrent.TimeUnit;
-import javax.net.ssl.SSLContext;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.onap.logging.filter.spring.SpringClientPayloadFilter;
-import org.onap.so.configuration.rest.HttpClientConnectionConfiguration;
-import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.client.BufferingClientHttpRequestFactory;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-@Configuration
-public class SslBasedHttpClientConfiguration {
-    private final static Logger LOGGER = LoggerFactory.getLogger(EtsiResourcePackageProcessor.class);
-
-
-    public static final String SSL_BASED_CONFIGURABLE_REST_TEMPLATE = "sslBasedConfigurableRestTemplate";
-    private final HttpClientConnectionConfiguration clientConnectionConfiguration;
-
-    @Autowired
-    public SslBasedHttpClientConfiguration(final HttpClientConnectionConfiguration clientConnectionConfiguration) {
-        this.clientConnectionConfiguration = clientConnectionConfiguration;
-    }
-
-    @Bean
-    @Qualifier(SSL_BASED_CONFIGURABLE_REST_TEMPLATE)
-    public RestTemplate sslBasedConfigurableRestTemplate() {
-        final RestTemplate restTemplate =
-                new RestTemplate(new BufferingClientHttpRequestFactory(httpComponentsClientHttpRequestFactory()));
-        restTemplate.getInterceptors().add(new SOSpringClientFilter());
-        restTemplate.getInterceptors().add((new SpringClientPayloadFilter()));
-        return restTemplate;
-    }
-
-    private HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory() {
-        try {
-            LOGGER.debug("Setting up HttpComponentsClientHttpRequestFactory with default SSL Context");
-            return new HttpComponentsClientHttpRequestFactory(HttpClientBuilder.create()
-                    .setConnectionManager(getConnectionManager())
-                    .setMaxConnPerRoute(clientConnectionConfiguration.getMaxConnectionsPerRoute())
-                    .setMaxConnTotal(clientConnectionConfiguration.getMaxConnections())
-                    .setDefaultRequestConfig(getRequestConfig()).setSSLContext(SSLContext.getDefault()).build());
-
-        } catch (final NoSuchAlgorithmException exception) {
-            LOGGER.error("Failed to create HttpComponentsClientHttpRequestFactory with default SSL Context", exception);
-            throw new RuntimeException(exception);
-        }
-    }
-
-    private PoolingHttpClientConnectionManager getConnectionManager() {
-        return new PoolingHttpClientConnectionManager(clientConnectionConfiguration.getTimeToLiveInMins(),
-                TimeUnit.MINUTES);
-    }
-
-    private RequestConfig getRequestConfig() {
-        return RequestConfig.custom().setSocketTimeout(clientConnectionConfiguration.getSocketTimeOutInMiliSeconds())
-                .setConnectTimeout(clientConnectionConfiguration.getConnectionTimeOutInMilliSeconds()).build();
-    }
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/EtsiCatalogManagerRequestFailureException.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/EtsiCatalogManagerRequestFailureException.java
deleted file mode 100644 (file)
index 4f2e503..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor.exceptions;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class EtsiCatalogManagerRequestFailureException extends RuntimeException {
-
-    private static final long serialVersionUID = 1L;
-
-    public EtsiCatalogManagerRequestFailureException(final String message) {
-        super(message);
-    }
-
-    @Override
-    public synchronized Throwable fillInStackTrace() {
-        return this;
-    }
-
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageFailureException.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageFailureException.java
deleted file mode 100644 (file)
index 8e05a50..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor.exceptions;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class SOL004ResourcePackageFailureException extends RuntimeException {
-
-    private static final long serialVersionUID = 5834657185124807797L;
-
-    public SOL004ResourcePackageFailureException(final String message) {
-        super(message);
-
-    }
-
-    @Override
-    public synchronized Throwable fillInStackTrace() {
-        return this;
-    }
-
-}
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageProcessingException.java b/asdc-controller/src/main/java/org/onap/so/asdc/etsi/pkg/processor/exceptions/SOL004ResourcePackageProcessingException.java
deleted file mode 100644 (file)
index 0e9f1ea..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.etsi.pkg.processor.exceptions;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class SOL004ResourcePackageProcessingException extends RuntimeException {
-
-    private static final long serialVersionUID = 4860501744379116092L;
-
-    public SOL004ResourcePackageProcessingException(final String message, final Throwable cause) {
-        super(message, cause);
-
-    }
-}
index 73b825d..56ec77c 100644 (file)
@@ -41,12 +41,12 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import org.hibernate.exception.ConstraintViolationException;
 import org.hibernate.exception.LockAcquisitionException;
+import org.onap.logging.filter.base.ErrorCode;
 import org.onap.sdc.api.notification.IArtifactInfo;
 import org.onap.sdc.api.notification.IResourceInstance;
 import org.onap.sdc.api.notification.IStatusData;
 import org.onap.sdc.tosca.parser.api.IEntityDetails;
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
-import org.onap.sdc.tosca.parser.elements.EntityDetails;
 import org.onap.sdc.tosca.parser.elements.queries.EntityQuery;
 import org.onap.sdc.tosca.parser.elements.queries.EntityQuery.EntityQueryBuilder;
 import org.onap.sdc.tosca.parser.elements.queries.TopologyTemplateQuery;
@@ -64,7 +64,6 @@ import org.onap.sdc.toscaparser.api.parameters.Input;
 import org.onap.sdc.utils.DistributionStatusEnum;
 import org.onap.so.asdc.client.ASDCConfiguration;
 import org.onap.so.asdc.client.exceptions.ArtifactInstallerException;
-import org.onap.so.asdc.etsi.pkg.processor.EtsiResourcePackageProcessor;
 import org.onap.so.asdc.installer.ASDCElementInfo;
 import org.onap.so.asdc.installer.BigDecimalVersion;
 import org.onap.so.asdc.installer.IVfModuleData;
@@ -76,15 +75,72 @@ import org.onap.so.asdc.installer.VfModuleStructure;
 import org.onap.so.asdc.installer.VfResourceStructure;
 import org.onap.so.asdc.installer.bpmn.WorkflowResource;
 import org.onap.so.asdc.util.YamlEditor;
-import org.onap.so.db.catalog.beans.*;
-import org.onap.so.db.catalog.data.repository.*;
+import org.onap.so.db.catalog.beans.AllottedResource;
+import org.onap.so.db.catalog.beans.AllottedResourceCustomization;
+import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
+import org.onap.so.db.catalog.beans.CollectionResource;
+import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
+import org.onap.so.db.catalog.beans.ConfigurationResource;
+import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
+import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
+import org.onap.so.db.catalog.beans.CvnfcCustomization;
+import org.onap.so.db.catalog.beans.HeatEnvironment;
+import org.onap.so.db.catalog.beans.HeatFiles;
+import org.onap.so.db.catalog.beans.HeatTemplate;
+import org.onap.so.db.catalog.beans.HeatTemplateParam;
+import org.onap.so.db.catalog.beans.InstanceGroup;
+import org.onap.so.db.catalog.beans.InstanceGroupType;
+import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
+import org.onap.so.db.catalog.beans.NetworkInstanceGroup;
+import org.onap.so.db.catalog.beans.NetworkResource;
+import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
+import org.onap.so.db.catalog.beans.PnfResource;
+import org.onap.so.db.catalog.beans.PnfResourceCustomization;
+import org.onap.so.db.catalog.beans.Service;
+import org.onap.so.db.catalog.beans.ServiceArtifact;
+import org.onap.so.db.catalog.beans.ServiceInfo;
+import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization;
+import org.onap.so.db.catalog.beans.SubType;
+import org.onap.so.db.catalog.beans.TempNetworkHeatTemplateLookup;
+import org.onap.so.db.catalog.beans.ToscaCsar;
+import org.onap.so.db.catalog.beans.VFCInstanceGroup;
+import org.onap.so.db.catalog.beans.VfModule;
+import org.onap.so.db.catalog.beans.VfModuleCustomization;
+import org.onap.so.db.catalog.beans.VnfResource;
+import org.onap.so.db.catalog.beans.VnfResourceCustomization;
+import org.onap.so.db.catalog.beans.VnfcCustomization;
+import org.onap.so.db.catalog.beans.VnfcInstanceGroupCustomization;
+import org.onap.so.db.catalog.data.repository.AllottedResourceCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.AllottedResourceRepository;
+import org.onap.so.db.catalog.data.repository.CollectionResourceCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.CollectionResourceRepository;
+import org.onap.so.db.catalog.data.repository.ConfigurationResourceCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.ConfigurationResourceRepository;
+import org.onap.so.db.catalog.data.repository.CvnfcCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.ExternalServiceToInternalServiceRepository;
+import org.onap.so.db.catalog.data.repository.HeatEnvironmentRepository;
+import org.onap.so.db.catalog.data.repository.HeatFilesRepository;
+import org.onap.so.db.catalog.data.repository.HeatTemplateRepository;
+import org.onap.so.db.catalog.data.repository.InstanceGroupRepository;
+import org.onap.so.db.catalog.data.repository.NetworkResourceCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.NetworkResourceRepository;
+import org.onap.so.db.catalog.data.repository.PnfCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.PnfResourceRepository;
+import org.onap.so.db.catalog.data.repository.ServiceProxyResourceCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.ServiceRepository;
+import org.onap.so.db.catalog.data.repository.TempNetworkHeatTemplateRepository;
+import org.onap.so.db.catalog.data.repository.ToscaCsarRepository;
+import org.onap.so.db.catalog.data.repository.VFModuleCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.VFModuleRepository;
+import org.onap.so.db.catalog.data.repository.VnfResourceRepository;
+import org.onap.so.db.catalog.data.repository.VnfcCustomizationRepository;
+import org.onap.so.db.catalog.data.repository.VnfcInstanceGroupCustomizationRepository;
 import org.onap.so.db.request.beans.WatchdogComponentDistributionStatus;
 import org.onap.so.db.request.beans.WatchdogDistributionStatus;
 import org.onap.so.db.request.beans.WatchdogServiceModVerIdLookup;
 import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatusRepository;
 import org.onap.so.db.request.data.repository.WatchdogDistributionStatusRepository;
 import org.onap.so.db.request.data.repository.WatchdogServiceModVerIdLookupRepository;
-import org.onap.logging.filter.base.ErrorCode;
 import org.onap.so.logger.LoggingAnchor;
 import org.onap.so.logger.MessageEnum;
 import org.slf4j.Logger;
@@ -221,9 +277,6 @@ public class ToscaResourceInstaller {
     @Autowired
     protected WorkflowResource workflowResource;
 
-    @Autowired
-    protected EtsiResourcePackageProcessor etsiResourcePackageProcessor;
-
     protected static final Logger logger = LoggerFactory.getLogger(ToscaResourceInstaller.class);
 
     public boolean isCsarAlreadyDeployed(ToscaResourceStructure toscaResourceStructure)
@@ -408,8 +461,6 @@ public class ToscaResourceInstaller {
                 if (ALLOTTED_RESOURCE.equalsIgnoreCase(category)) {
                     arEntityDetails.add(vfEntityDetails);
                 }
-                final String vnfUuid = metadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID);
-                etsiResourcePackageProcessor.processPackageIfExists(vnfUuid);
 
                 processVfModules(vfEntityDetails, toscaResourceStruct, vfResourceStructure, service, metadata);
             }
diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/client/SdcNotificationWithSol004PackageTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/client/SdcNotificationWithSol004PackageTest.java
deleted file mode 100644 (file)
index 2e8da35..0000000
+++ /dev/null
@@ -1,358 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Ericsson. 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.
- * 
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-package org.onap.so.asdc.client;
-
-import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
-import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
-import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson;
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
-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.post;
-import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
-import static com.github.tomakehurst.wiremock.client.WireMock.verify;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-import static org.onap.sdc.utils.DistributionStatusEnum.COMPONENT_DONE_ERROR;
-import static org.onap.sdc.utils.DistributionStatusEnum.COMPONENT_DONE_OK;
-import static org.springframework.http.HttpHeaders.ACCEPT;
-import static org.springframework.http.MediaType.APPLICATION_OCTET_STREAM_VALUE;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.List;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.so.asdc.BaseTest;
-import org.onap.so.asdc.client.exceptions.ASDCControllerException;
-import org.onap.so.asdc.client.test.emulators.DistributionClientEmulator;
-import org.onap.so.asdc.client.test.emulators.NotificationDataImpl;
-import org.onap.so.db.catalog.data.repository.ServiceRepository;
-import org.onap.so.db.request.beans.WatchdogComponentDistributionStatus;
-import org.onap.so.db.request.beans.WatchdogComponentDistributionStatusId;
-import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatusRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import com.google.gson.GsonBuilder;
-
-/**
- * @author Waqas Ikram (waqas.ikram@est.tech)
- *
- */
-public class SdcNotificationWithSol004PackageTest extends BaseTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(SdcNotificationWithSol004PackageTest.class);
-    private static final String ETSI_CATALOG_PACKAGE_ONBOARDING_URL = "/api/catalog/v1/vnfpackages";
-    private static final String COMPONENT_NAME = "SO";
-    private static final String CSAR_ID = "8f0b72e1-b6d6-42b6-a808-c60b17f04d7a";
-    private static final String SDC_GET_RESOURCE_URL = "/sdc/v1/catalog/resources/" + CSAR_ID + "/toscaModel";
-    private static final String ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST = "{\"csarId\": \"" + CSAR_ID + "\"}";
-    private static final String DISTRIBUTION_ID = "35f20eb9-238a-4cc2-96dc-0a08f71bc209";
-    private static final String VGW_RESOURCE_PATH = "src/test/resources/resource-examples/vgw";
-    private static final String SERVICE_UUID = "e051ff77-fb79-451c-8457-1cbf94e4db8f";
-    private static final String SERVICE_INVARIANT_UUID = "c2ce924f-0aa1-4777-9b42-c0fec006a883";
-    private static final String JOB_ID = "57c13120-0a03-4d2e-837a-7c41d61e4a30";
-    private static final String ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL = "/api/catalog/v1/jobs/" + JOB_ID;
-    private static final String ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE = "{\"jobId\": \"" + JOB_ID + "\"}";
-
-    @Autowired
-    private ASDCController asdcController;
-
-    private DistributionClientEmulator distributionClient;
-
-    @Autowired
-    private WatchdogComponentDistributionStatusRepository watchdogComponentDistributionStatusRepository;
-
-    @Autowired
-    protected ServiceRepository serviceRepository;
-
-    @Before
-    public void setUp() {
-        distributionClient = new DistributionClientEmulator();
-        distributionClient.setResourcePath(getAbsolutePath(VGW_RESOURCE_PATH));
-        asdcController.setDistributionClient(distributionClient);
-        try {
-            asdcController.initASDC();
-        } catch (final ASDCControllerException controllerException) {
-            LOGGER.error(controllerException.getMessage(), controllerException);
-            fail(controllerException.getMessage());
-        }
-    }
-
-    @After
-    public void shutDown() {
-        try {
-            if (serviceRepository.existsById(SERVICE_UUID)) {
-                LOGGER.debug("Deleting existing service using {} ", SERVICE_UUID);
-                serviceRepository.deleteById(SERVICE_UUID);
-            }
-
-            final WatchdogComponentDistributionStatusId distributionId = new WatchdogComponentDistributionStatusId();
-            distributionId.setDistributionId(DISTRIBUTION_ID);
-            distributionId.setComponentName(COMPONENT_NAME);
-            if (watchdogComponentDistributionStatusRepository.existsById(distributionId)) {
-                LOGGER.debug("Deleting existing WatchdogComponentDistributionStatus using {} ", distributionId);
-                watchdogComponentDistributionStatusRepository.deleteById(distributionId);
-            }
-            asdcController.closeASDC();
-        } catch (final ASDCControllerException asdcControllerException) {
-            LOGGER.error(asdcControllerException.getMessage(), asdcControllerException);
-            fail(asdcControllerException.getMessage());
-        }
-    }
-
-    @Test
-    public void testTreatNotification_vgwServiceContainingSol004Package_successfullyOnboard() throws IOException {
-        initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID);
-
-        wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL)
-                .willReturn(aResponse().withBody(getFileContent(
-                        Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar"))))
-                .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE)));
-
-        wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .willReturn(okJson(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE)));
-
-        wireMockServer.stubFor(get(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL))
-                .willReturn(okJson(new String(getFileContent(Paths.get(getAbsolutePath(VGW_RESOURCE_PATH),
-                        "etsi-catalog-package-onboading-job-status-successful.json"))))));
-
-        asdcController.treatNotification(getNotificationDataImplObject());
-
-        final List<WatchdogComponentDistributionStatus> distributionList =
-                watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID);
-        assertNotNull(distributionList);
-        assertEquals(1, distributionList.size());
-        final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
-        assertEquals(COMPONENT_DONE_OK.toString(), distributionStatus.getComponentDistributionStatus());
-        assertEquals(COMPONENT_NAME, distributionStatus.getComponentName());
-
-        verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST)));
-
-        verify(getRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL)));
-    }
-
-    @Test
-    public void testTreatNotification_vgwServiceUnableToGeSdcResource_successfullyOnboard() throws IOException {
-        initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID);
-
-        wireMockServer
-                .stubFor(get(SDC_GET_RESOURCE_URL).willReturn(aResponse().withStatus(HttpStatus.NOT_FOUND.value()))
-                        .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE)));
-
-        asdcController.treatNotification(getNotificationDataImplObject());
-
-        final List<WatchdogComponentDistributionStatus> distributionList =
-                watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID);
-        assertNotNull(distributionList);
-        assertEquals(1, distributionList.size());
-        final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
-        assertEquals(COMPONENT_DONE_OK.toString(), distributionStatus.getComponentDistributionStatus());
-        assertEquals(COMPONENT_NAME, distributionStatus.getComponentName());
-    }
-
-    @Test
-    public void testTreatNotification_vgwServiceContainingNonEtsiSdcResource_successfullyOnboard() throws IOException {
-
-        initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID);
-
-        wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL)
-                .willReturn(aResponse().withBody(getFileContent(
-                        Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "service-Vgwservicev1-csar.csar"))))
-                .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE)));
-
-        asdcController.treatNotification(getNotificationDataImplObject());
-
-        final List<WatchdogComponentDistributionStatus> distributionList =
-                watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID);
-        assertNotNull(distributionList);
-        assertEquals(1, distributionList.size());
-        final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
-        assertEquals(COMPONENT_DONE_OK.toString(), distributionStatus.getComponentDistributionStatus());
-        assertEquals(COMPONENT_NAME, distributionStatus.getComponentName());
-
-    }
-
-    @Test
-    public void testTreatNotification_vgwServiceContainingSol004Package_onnboardRequestToEtsiCatalogReturnsBadGatway_distributionStatusError()
-            throws IOException {
-        initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID);
-
-        wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL)
-                .willReturn(aResponse().withBody(getFileContent(
-                        Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar"))))
-                .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE)));
-
-        wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .willReturn(aResponse().withStatus(HttpStatus.BAD_GATEWAY.value())));
-
-        asdcController.treatNotification(getNotificationDataImplObject());
-
-        final List<WatchdogComponentDistributionStatus> distributionList =
-                watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID);
-        assertNotNull(distributionList);
-        assertEquals(1, distributionList.size());
-        final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
-        assertEquals(COMPONENT_DONE_ERROR.toString(), distributionStatus.getComponentDistributionStatus());
-        assertEquals(COMPONENT_NAME, distributionStatus.getComponentName());
-
-        verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST)));
-
-    }
-
-    @Test
-    public void testTreatNotification_vgwServiceContainingSol004Package_getJobStatusReturnsBadGatway_distributionStatusError()
-            throws IOException {
-        initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID);
-
-        wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL)
-                .willReturn(aResponse().withBody(getFileContent(
-                        Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar"))))
-                .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE)));
-
-        wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .willReturn(okJson(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE)));
-
-        wireMockServer.stubFor(get(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL))
-                .willReturn(aResponse().withStatus(HttpStatus.BAD_GATEWAY.value())));
-
-        asdcController.treatNotification(getNotificationDataImplObject());
-
-        final List<WatchdogComponentDistributionStatus> distributionList =
-                watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID);
-        assertNotNull(distributionList);
-        assertEquals(1, distributionList.size());
-        final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
-        assertEquals(COMPONENT_DONE_ERROR.toString(), distributionStatus.getComponentDistributionStatus());
-        assertEquals(COMPONENT_NAME, distributionStatus.getComponentName());
-
-        verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST)));
-
-        verify(getRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL)));
-
-    }
-
-    @Test
-    public void testTreatNotification_vgwServiceContainingSol004Package_getJobStatusBodyWithStatusError_distributionStatusError()
-            throws IOException {
-
-        initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID);
-
-        wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL)
-                .willReturn(aResponse().withBody(getFileContent(
-                        Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar"))))
-                .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE)));
-
-        wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .willReturn(okJson(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE)));
-
-        wireMockServer.stubFor(get(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL))
-                .willReturn(okJson(new String(getFileContent(Paths.get(getAbsolutePath(VGW_RESOURCE_PATH),
-                        "etsi-catalog-package-onboading-job-status-error.json"))))));
-
-        asdcController.treatNotification(getNotificationDataImplObject());
-
-        final List<WatchdogComponentDistributionStatus> distributionList =
-                watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID);
-        assertNotNull(distributionList);
-        assertEquals(1, distributionList.size());
-        final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
-        assertEquals(COMPONENT_DONE_ERROR.toString(), distributionStatus.getComponentDistributionStatus());
-        assertEquals(COMPONENT_NAME, distributionStatus.getComponentName());
-
-        verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST)));
-
-        verify(getRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL)));
-
-
-    }
-
-    @Test
-    public void testTreatNotification_vgwServiceContainingSol004PackageAndPackageAlreadyExistsInEtsiCatalog_successfullyOnboard()
-            throws IOException {
-        initMockAaiServer(SERVICE_UUID, SERVICE_INVARIANT_UUID);
-
-        wireMockServer.stubFor(get(SDC_GET_RESOURCE_URL)
-                .willReturn(aResponse().withBody(getFileContent(
-                        Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "SDC_RESOURCE_CSAR", "vgw_sdc_resource.csar"))))
-                .withHeader(ACCEPT, equalTo(APPLICATION_OCTET_STREAM_VALUE)));
-
-        wireMockServer.stubFor(post(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .willReturn(okJson(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_RESPONSE)));
-
-        wireMockServer.stubFor(get(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL))
-                .willReturn(okJson(new String(getFileContent(Paths.get(getAbsolutePath(VGW_RESOURCE_PATH),
-                        "etsi-catalog-package-onboading-job-status-error-package-exists.json"))))));
-
-        asdcController.treatNotification(getNotificationDataImplObject());
-
-        final List<WatchdogComponentDistributionStatus> distributionList =
-                watchdogComponentDistributionStatusRepository.findByDistributionId(DISTRIBUTION_ID);
-        assertNotNull(distributionList);
-        assertEquals(1, distributionList.size());
-        final WatchdogComponentDistributionStatus distributionStatus = distributionList.get(0);
-        assertEquals(COMPONENT_DONE_OK.toString(), distributionStatus.getComponentDistributionStatus());
-        assertEquals(COMPONENT_NAME, distributionStatus.getComponentName());
-
-        verify(postRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_URL))
-                .withRequestBody(equalToJson(ETSI_CATALOG_PACKAGE_ONBOARDING_REQUEST)));
-
-        verify(getRequestedFor(urlEqualTo(ETSI_CATALOG_PACKAGE_ONBOARDING_JOB_STATUS_URL)));
-    }
-
-
-    private byte[] getFileContent(final Path path) throws IOException {
-        return Files.readAllBytes(path);
-    }
-
-    private NotificationDataImpl getNotificationDataImplObject() throws IOException {
-        final Path filePath = Paths.get(getAbsolutePath(VGW_RESOURCE_PATH), "dmaap-notification-message.json");
-        final byte[] bytes = Files.readAllBytes(filePath);
-
-        return new GsonBuilder().setPrettyPrinting().create().fromJson(new String(bytes), NotificationDataImpl.class);
-    }
-
-    /**
-     * Mock the AAI using wireshark.
-     */
-    private void initMockAaiServer(final String serviceUuid, final String serviceInvariantUuid) {
-        final String modelEndpoint = "/aai/v21/service-design-and-creation/models/model/" + serviceInvariantUuid
-                + "/model-vers/model-ver/" + serviceUuid + "?depth=0";
-
-        wireMockServer.stubFor(post(urlEqualTo(modelEndpoint)).willReturn(ok()));
-    }
-
-    private String getAbsolutePath(final String path) {
-        final File file = new File(path);
-        return file.getAbsolutePath();
-    }
-}
index 60cd2d9..31ec987 100644 (file)
@@ -105,8 +105,4 @@ mso:
 
 sdc:
   endpoint: http://localhost:${wiremock.server.port}
-  
-etsi-catalog-manager:
-  endpoint:  http://localhost:${wiremock.server.port}/api/catalog/v1
-  rest:
-    timeoutInSeconds: 5
+  
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/VENDOR_LICENSE/vendor-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/VENDOR_LICENSE/vendor-license-model.xml
deleted file mode 100644 (file)
index 6499a58..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<vendor-license-model xmlns="http://xmlns.openecomp.org/asdc/license-model/1.0"><vendor-name>VLM</vendor-name><entitlement-pool-list><entitlement-pool><entitlement-pool-invariant-uuid>d6dea4a3db6b415ba50f17cb3311d046</entitlement-pool-invariant-uuid><entitlement-pool-uuid>04B01ABDE6CA4A9FBA75ACC023C6FEDA</entitlement-pool-uuid><version>1.0</version><name>EP</name><description/><increments/><manufacturer-reference-number>2345</manufacturer-reference-number><operational-scope><value/></operational-scope><start-date/><expiry-date/><threshold-value><unit/><value/></threshold-value><sp-limits/><vendor-limits/></entitlement-pool></entitlement-pool-list><license-key-group-list><license-key-group><version>1.0</version><name>LKG</name><description/><type>Unique</type><increments/><manufacturerReferenceNumber/><license-key-group-invariant-uuid>55ddeb1a87be4fbb95a9bd74b4d745ca</license-key-group-invariant-uuid><license-key-group-uuid>81117C9B092C4C70AFF76833373CE7F4</license-key-group-uuid><operational-scope><value/></operational-scope><start-date/><expiry-date/><threshold-value><unit>Absolute</unit><value>23456789</value></threshold-value><sp-limits/><vendor-limits/></license-key-group></license-key-group-list></vendor-license-model>
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/VF_LICENSE/vf-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/VF_LICENSE/vf-license-model.xml
deleted file mode 100644 (file)
index 581a3ac..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<vf-license-model xmlns="http://xmlns.openecomp.org/asdc/license-model/1.0"><vendor-name>VLM</vendor-name><vf-id>fa87b9536b704787981357393f36b3fc</vf-id><feature-group-list><feature-group><entitlement-pool-list><entitlement-pool><name>EP</name><description/><increments/><entitlement-pool-invariant-uuid>d6dea4a3db6b415ba50f17cb3311d046</entitlement-pool-invariant-uuid><entitlement-pool-uuid>04B01ABDE6CA4A9FBA75ACC023C6FEDA</entitlement-pool-uuid><manufacturer-reference-number>2345</manufacturer-reference-number><operational-scope><value/></operational-scope><start-date/><expiry-date/><threshold-value><unit/><value/></threshold-value><version>1.0</version><sp-limits/><vendor-limits/></entitlement-pool></entitlement-pool-list><license-key-group-list><license-key-group><name>LKG</name><description/><type>Unique</type><increments/><license-key-group-invariant-uuid>55ddeb1a87be4fbb95a9bd74b4d745ca</license-key-group-invariant-uuid><license-key-group-uuid>81117C9B092C4C70AFF76833373CE7F4</license-key-group-uuid><manufacturer-reference-number/><operational-scope><value/></operational-scope><start-date/><expiry-date/><threshold-value><unit>Absolute</unit><value>23456789</value></threshold-value><version>1.0</version><sp-limits/><vendor-limits/></license-key-group></license-key-group-list><name>FG</name><feature-group-uuid>2218d90f94944a94952be83354847631</feature-group-uuid><description/><part-number>234594</part-number></feature-group></feature-group-list></vf-license-model>
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/vgw6.csar b/asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/vgw6.csar
deleted file mode 100644 (file)
index 56dbb2b..0000000
Binary files a/asdc-controller/src/test/resources/resource-examples/vgw/ETSI_PACKAGE/vgw6.csar and /dev/null differ
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/SDC_RESOURCE_CSAR/vgw_sdc_resource.csar b/asdc-controller/src/test/resources/resource-examples/vgw/SDC_RESOURCE_CSAR/vgw_sdc_resource.csar
deleted file mode 100644 (file)
index 9eb240d..0000000
Binary files a/asdc-controller/src/test/resources/resource-examples/vgw/SDC_RESOURCE_CSAR/vgw_sdc_resource.csar and /dev/null differ
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/VENDOR_LICENSE/vendor-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vgw/VENDOR_LICENSE/vendor-license-model.xml
deleted file mode 100644 (file)
index 6499a58..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<vendor-license-model xmlns="http://xmlns.openecomp.org/asdc/license-model/1.0"><vendor-name>VLM</vendor-name><entitlement-pool-list><entitlement-pool><entitlement-pool-invariant-uuid>d6dea4a3db6b415ba50f17cb3311d046</entitlement-pool-invariant-uuid><entitlement-pool-uuid>04B01ABDE6CA4A9FBA75ACC023C6FEDA</entitlement-pool-uuid><version>1.0</version><name>EP</name><description/><increments/><manufacturer-reference-number>2345</manufacturer-reference-number><operational-scope><value/></operational-scope><start-date/><expiry-date/><threshold-value><unit/><value/></threshold-value><sp-limits/><vendor-limits/></entitlement-pool></entitlement-pool-list><license-key-group-list><license-key-group><version>1.0</version><name>LKG</name><description/><type>Unique</type><increments/><manufacturerReferenceNumber/><license-key-group-invariant-uuid>55ddeb1a87be4fbb95a9bd74b4d745ca</license-key-group-invariant-uuid><license-key-group-uuid>81117C9B092C4C70AFF76833373CE7F4</license-key-group-uuid><operational-scope><value/></operational-scope><start-date/><expiry-date/><threshold-value><unit>Absolute</unit><value>23456789</value></threshold-value><sp-limits/><vendor-limits/></license-key-group></license-key-group-list></vendor-license-model>
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/VF_LICENSE/vf-license-model.xml b/asdc-controller/src/test/resources/resource-examples/vgw/VF_LICENSE/vf-license-model.xml
deleted file mode 100644 (file)
index 581a3ac..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<vf-license-model xmlns="http://xmlns.openecomp.org/asdc/license-model/1.0"><vendor-name>VLM</vendor-name><vf-id>fa87b9536b704787981357393f36b3fc</vf-id><feature-group-list><feature-group><entitlement-pool-list><entitlement-pool><name>EP</name><description/><increments/><entitlement-pool-invariant-uuid>d6dea4a3db6b415ba50f17cb3311d046</entitlement-pool-invariant-uuid><entitlement-pool-uuid>04B01ABDE6CA4A9FBA75ACC023C6FEDA</entitlement-pool-uuid><manufacturer-reference-number>2345</manufacturer-reference-number><operational-scope><value/></operational-scope><start-date/><expiry-date/><threshold-value><unit/><value/></threshold-value><version>1.0</version><sp-limits/><vendor-limits/></entitlement-pool></entitlement-pool-list><license-key-group-list><license-key-group><name>LKG</name><description/><type>Unique</type><increments/><license-key-group-invariant-uuid>55ddeb1a87be4fbb95a9bd74b4d745ca</license-key-group-invariant-uuid><license-key-group-uuid>81117C9B092C4C70AFF76833373CE7F4</license-key-group-uuid><manufacturer-reference-number/><operational-scope><value/></operational-scope><start-date/><expiry-date/><threshold-value><unit>Absolute</unit><value>23456789</value></threshold-value><version>1.0</version><sp-limits/><vendor-limits/></license-key-group></license-key-group-list><name>FG</name><feature-group-uuid>2218d90f94944a94952be83354847631</feature-group-uuid><description/><part-number>234594</part-number></feature-group></feature-group-list></vf-license-model>
\ No newline at end of file
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/dmaap-notification-message.json b/asdc-controller/src/test/resources/resource-examples/vgw/dmaap-notification-message.json
deleted file mode 100644 (file)
index 8c42c9c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-    "distributionID": "35f20eb9-238a-4cc2-96dc-0a08f71bc209",
-    "serviceName": "VgwServiceV1",
-    "serviceVersion": "1.0",
-    "serviceUUID": "e051ff77-fb79-451c-8457-1cbf94e4db8f",
-    "serviceDescription": "Test VGW Service",
-    "serviceInvariantUUID": "c2ce924f-0aa1-4777-9b42-c0fec006a883",
-    "resources": [
-        {
-            "resourceInstanceName": "VgwVspV1 0",
-            "resourceName": "VgwVspV1",
-            "resourceVersion": "1.0",
-            "resourceType": "VF",
-            "resourceUUID": "655aa939-d589-4333-8cc6-8fcb15db858a",
-            "resourceInvariantUUID": "c53a0c91-35f6-40ff-bcda-f75030cfaf2d",
-            "resourceCustomizationUUID": "db1673e1-351a-4d04-8e2f-84b2b4c52cc7",
-            "category": "Generic",
-            "subcategory": "Network Service",
-            "artifacts": [
-                {
-                    "artifactName": "vf-license-model.xml",
-                    "artifactType": "VF_LICENSE",
-                    "artifactURL": "/VF_LICENSE/vf-license-model.xml",
-                    "artifactChecksum": "NjMwZDc0YzhiNDRlZDAyYjIxMmFlM2M0MWRkZjFmNDA\u003d",
-                    "artifactDescription": "VF license file",
-                    "artifactTimeout": 120,
-                    "artifactUUID": "8dda263d-90bb-4b3d-b8e0-0048222dc658",
-                    "artifactVersion": "1"
-                },
-                {
-                    "artifactName": "vgw6.csar",
-                    "artifactType": "ETSI_PACKAGE",
-                    "artifactURL": "/ETSI_PACKAGE/vgw6.csar",
-                    "artifactChecksum": "NjdmNGU3ZDlkODQ0YTUzMTU5NjZmOThiYjMxNTJiNGI\u003d",
-                    "artifactDescription": "Artifact created from csar",
-                    "artifactTimeout": 120,
-                    "artifactUUID": "9e9930b8-898e-4b8b-999e-66c43e1611f4",
-                    "artifactVersion": "1"
-                },
-                {
-                    "artifactName": "vendor-license-model.xml",
-                    "artifactType": "VENDOR_LICENSE",
-                    "artifactURL": "/VENDOR_LICENSE/vendor-license-model.xml",
-                    "artifactChecksum": "NGNmNzU4MDhjN2FjMTJkNWIxMjNkZDZhOWQyYzU0ZjA\u003d",
-                    "artifactDescription": " Vendor license file",
-                    "artifactTimeout": 120,
-                    "artifactUUID": "b3f7a4cf-6a35-4f66-b800-cd4a9a0e9719",
-                    "artifactVersion": "1"
-                }
-            ]
-        }
-    ],
-    "serviceArtifacts": [
-        {
-            "artifactName": "service-Vgwservicev1-csar.csar",
-            "artifactType": "TOSCA_CSAR",
-            "artifactURL": "/service-Vgwservicev1-csar.csar",
-            "artifactChecksum": "MzcxNTMwMDhmNGY0MjRkMjFkNzk1MDNjOTVhNjQzMmE\u003d",
-            "artifactDescription": "TOSCA definition package of the asset",
-            "artifactTimeout": 0,
-            "artifactUUID": "0cc70c6e-6ddc-4ecc-8052-d9f1433c14b8",
-            "artifactVersion": "1"
-        }
-    ],
-    "workloadContext": "Production"
-}
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error-package-exists.json b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error-package-exists.json
deleted file mode 100644 (file)
index 8dc07b9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "jobId": "57c13120-0a03-4d2e-837a-7c41d61e4a30",
-    "responseDescriptor": 
-    {
-        "status": "error",
-        "progress": "255",
-        "statusDescription": "VNF package() already exists.",
-        "errorCode": "1",
-        "responseId": "2",
-        "responseHistoryList": [
-            {
-                "status": "processing",
-                "progress": "5",
-                "statusDescription": "Start CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) distribute.",
-                "errorCode": "0",
-                "responseId": "1"
-            }
-        ]
-    }
-}
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error.json b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-error.json
deleted file mode 100644 (file)
index 13f346f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-    "jobId": "57c13120-0a03-4d2e-837a-7c41d61e4a30",
-    "responseDescriptor": 
-    {
-        "status": "error",
-        "progress": "255",
-        "statusDescription": "Failed to query artifacts(resources) from sdc.",
-        "errorCode": "0",
-        "responseId": "2",
-        "responseHistoryList": [
-            {
-                "status": "processing",
-                "progress": "5",
-                "statusDescription": "Start CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) distribute.",
-                "errorCode": "0",
-                "responseId": "1"
-            }
-        ]
-    }
-}
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-successful.json b/asdc-controller/src/test/resources/resource-examples/vgw/etsi-catalog-package-onboading-job-status-successful.json
deleted file mode 100644 (file)
index b5dc1fe..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-    "jobId": "57c13120-0a03-4d2e-837a-7c41d61e4a30",
-    "responseDescriptor": 
-    {
-        "status": "finished",
-        "progress": "100",
-        "statusDescription": "CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) distribute successfully.",
-        "errorCode": "0",
-        "responseId": "3",
-        "responseHistoryList": [
-            {
-                "status": "processing",
-                "progress": "30",
-                "statusDescription": "Save CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) to database.",
-                "errorCode": "0",
-                "responseId": "2"
-            },
-            {
-                "status": "processing",
-                "progress": "5",
-                "statusDescription": "Start CSAR(8f0b72e1-b6d6-42b6-a808-c60b17f04d7a) distribute.",
-                "errorCode": "0",
-                "responseId": "1"
-            }
-        ]
-    }
-}
diff --git a/asdc-controller/src/test/resources/resource-examples/vgw/service-Vgwservicev1-csar.csar b/asdc-controller/src/test/resources/resource-examples/vgw/service-Vgwservicev1-csar.csar
deleted file mode 100644 (file)
index eaed092..0000000
Binary files a/asdc-controller/src/test/resources/resource-examples/vgw/service-Vgwservicev1-csar.csar and /dev/null differ
index 36d579c..5c030a9 100644 (file)
@@ -20,9 +20,7 @@
 
 package org.onap.so.bpmn.infrastructure.scripts
 
-import static org.apache.commons.lang3.StringUtils.isBlank
-import java.lang.reflect.Type
-import javax.ws.rs.NotFoundException
+
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.onap.aai.domain.yang.*
@@ -32,9 +30,12 @@ import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri
 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.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
 import org.onap.logging.filter.base.ErrorCode
-import org.onap.so.beans.nsmf.NSSI
+import org.onap.so.beans.nsmf.CustomerInfo
+import org.onap.so.beans.nsmf.NetworkType
+import org.onap.so.beans.nsmf.NssInstance
+import org.onap.so.beans.nsmf.OperationType
+import org.onap.so.beans.nsmf.OrchestrationStatusEnum
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.common.scripts.MsoUtils
@@ -46,8 +47,11 @@ import org.onap.so.logger.LoggingAnchor
 import org.onap.so.logger.MessageEnum
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
+
+import javax.ws.rs.NotFoundException
+import java.util.function.Consumer
+
+import static org.apache.commons.lang3.StringUtils.isBlank
 
 /**
  * This groovy class supports the <class>ActivateSliceService.bpmn</class> process.
@@ -66,6 +70,8 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
 
     RequestDBUtil requestDBUtil = new RequestDBUtil()
 
+    AAIResourcesClient client = getAAIClient()
+
     private static final Logger logger = LoggerFactory.getLogger(ActivateSliceService.class)
 
     void preProcessRequest(DelegateExecution execution) {
@@ -75,7 +81,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
 
         try {
             // check for incoming json message/input
-            String siRequest = execution.getVariable("bpmnRequest")
+            String siRequest = Objects.requireNonNull(execution.getVariable("bpmnRequest"))
             logger.debug(siRequest)
 
             String requestId = execution.getVariable("mso-request-id")
@@ -109,13 +115,20 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
             } else {
                 execution.setVariable("subscriptionServiceType", subscriptionServiceType)
             }
-            String operationId = jsonUtil.getJsonValue(siRequest, "operationId")
+            String operationId = Objects.requireNonNull(jsonUtil.getJsonValue(siRequest, "operationId"))
             execution.setVariable("operationId", operationId)
 
-            String operationType = execution.getVariable("operationType")
-            execution.setVariable("operationType", operationType.toUpperCase())
-
+            String operationType = Objects.requireNonNull(execution.getVariable("operationType"))
             logger.info("operationType is " + execution.getVariable("operationType") )
+
+            CustomerInfo customerInfo = CustomerInfo.builder().operationId(operationId)
+                    .operationType(Objects.requireNonNull(OperationType.getOperationType(operationType)))
+                    .globalSubscriberId(globalSubscriberId).serviceInstanceId(serviceInstanceId)
+                    .subscriptionServiceType(subscriptionServiceType)
+                    .build()
+
+            execution.setVariable("customerInfo", customerInfo)
+
         } catch (BpmnError e) {
             throw e
         } catch (Exception ex) {
@@ -126,14 +139,58 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
         logger.debug(Prefix + "preProcessRequest Exit")
     }
 
+    /**
+     * Init the service Operation Status
+     */
+    def prepareInitServiceOperationStatus = { DelegateExecution execution ->
+        logger.debug(Prefix + "prepareActivateServiceOperationStatus Start")
+        try {
+            CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+            String serviceId = customerInfo.getServiceInstanceId()
+            String operationId = customerInfo.getOperationId()
+            String operationType = customerInfo.getOperationType().getType()
+            String userId = customerInfo.getGlobalSubscriberId()
+            String result = "processing"
+            String progress = "0"
+            String reason = ""
+            String operationContent = "Prepare service activation"
+
+            execution.setVariable("e2eserviceInstanceId", serviceId)
+            //execution.setVariable("operationType", operationType)
+
+            OperationStatus initStatus = new OperationStatus()
+            initStatus.setServiceId(serviceId)
+            initStatus.setOperationId(operationId)
+            initStatus.setOperation(operationType)
+            initStatus.setUserId(userId)
+            initStatus.setResult(result)
+            initStatus.setProgress(progress)
+            initStatus.setReason(reason)
+            initStatus.setOperationContent(operationContent)
+
+            requestDBUtil.prepareUpdateOperationStatus(execution, initStatus)
+
+        } catch (Exception e) {
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e)
+            execution.setVariable("CVFMI_ErrorResponse",
+                    "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage())
+        }
+        logger.debug(Prefix + "prepareInitServiceOperationStatus Exit")
+    }
+
 
     def sendSyncResponse = { DelegateExecution execution ->
         logger.debug(Prefix + "sendSyncResponse Start")
         try {
-            String operationId = execution.getVariable("operationId")
+            CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+            String operationId = customerInfo.getOperationId()
+
             // RESTResponse for API Handler (APIH) Reply Task
             String Activate5GsliceServiceRestRequest = """{"operationId":"${operationId}"}""".trim()
             logger.debug(" sendSyncResponse to APIH:" + "\n" + Activate5GsliceServiceRestRequest)
+
             sendWorkflowResponse(execution, 202, Activate5GsliceServiceRestRequest)
             execution.setVariable("sentSyncResponse", true)
         } catch (Exception ex) {
@@ -171,410 +228,289 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
         logger.debug(Prefix + "sendSyncError Exit")
     }
 
+    def checkAAIOrchStatusOfE2ESlice = { DelegateExecution execution ->
+        logger.debug(Prefix + "CheckAAIOrchStatus Start")
+        execution.setVariable("isContinue", "false")
+        CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+        String msg
+        String serviceInstanceId = customerInfo.serviceInstanceId
+        String globalSubscriberId = customerInfo.globalSubscriberId
+        String subscriptionServiceType = customerInfo.subscriptionServiceType
 
-    def prepareCompletionRequest = { DelegateExecution execution ->
-        logger.debug(Prefix + "prepareCompletionRequest Start")
-        String serviceId = execution.getVariable("serviceInstanceId")
-        String operationId = execution.getVariable("operationId")
-        String userId = execution.getVariable("globalSubscriberId")
-        //String result = execution.getVariable("result")
-        String result = "finished"
-        String progress = "100"
-        String reason = ""
-        String operationContent = execution.getVariable("operationContent")
-        String operationType = execution.getVariable("operationType")
-
-        OperationStatus initStatus = new OperationStatus()
-        initStatus.setServiceId(serviceId)
-        initStatus.setOperationId(operationId)
-        initStatus.setOperation(operationType)
-        initStatus.setUserId(userId)
-        initStatus.setResult(result)
-        initStatus.setProgress(progress)
-        initStatus.setReason(reason)
-        initStatus.setOperationContent(operationContent)
-
-        requestDBUtil.prepareUpdateOperationStatus(execution, initStatus)
-
-        logger.debug(Prefix + "prepareCompletionRequest Exit")
-    }
-
+        logger.debug("serviceInstanceId: " + serviceInstanceId)
 
-    /**
-     * Init the service Operation Status
-     */
-    def prepareInitServiceOperationStatus = { DelegateExecution execution ->
-        logger.debug(Prefix + "prepareActivateServiceOperationStatus Start")
+        //check the e2e slice status
         try {
-            String serviceId = execution.getVariable("serviceInstanceId")
-            String operationId = execution.getVariable("operationId")
-            String operationType = execution.getVariable("operationType")
-            String userId = execution.getVariable("globalSubscriberId")
-            String result = "processing"
-            String progress = "0"
-            String reason = ""
-            String operationContent = "Prepare service activation"
-
-            execution.setVariable("e2eserviceInstanceId", serviceId)
-            execution.setVariable("operationType", operationType)
+            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+                    .customer(globalSubscriberId)
+                    .serviceSubscription(subscriptionServiceType)
+                    .serviceInstance(serviceInstanceId))
 
-            OperationStatus initStatus = new OperationStatus()
-            initStatus.setServiceId(serviceId)
-            initStatus.setOperationId(operationId)
-            initStatus.setOperation(operationType)
-            initStatus.setUserId(userId)
-            initStatus.setResult(result)
-            initStatus.setProgress(progress)
-            initStatus.setReason(reason)
-            initStatus.setOperationContent(operationContent)
+            AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
+            Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
+            ServiceInstance serviceInstance = si.orElseThrow()
 
-            requestDBUtil.prepareUpdateOperationStatus(execution, initStatus)
+            boolean isContinue = handleOperation(customerInfo, serviceInstance)
+            execution.setVariable("isContinue", isContinue)
+            customerInfo.setSnssai(serviceInstance.getEnvironmentContext())
 
-        } catch (Exception e) {
-            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                    "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN",
-                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e)
-            execution.setVariable("CVFMI_ErrorResponse",
-                    "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage())
+            execution.setVariable("customerInfo", customerInfo)
+            execution.setVariable("ssInstance", serviceInstance)
+            execution.setVariable("ssiUri", uri)
+        } catch (BpmnError e) {
+            throw e
+        } catch (Exception ex) {
+            execution.setVariable("isContinue", "false")
+            msg = "Exception in org.onap.so.bpmn.common.scripts.CompleteMsoProcess.CheckAAIOrchStatus, " +
+                    "Requested e2eservice does not exist: " + ex.getMessage()
+            logger.info(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
         }
-        logger.debug(Prefix + "prepareInitServiceOperationStatus Exit")
-    }
 
+        logger.debug(Prefix + "CheckAAIOrchStatus Exit")
+    }
 
-    private getSNSSIStatusByNsi = { DelegateExecution execution, String NSIServiceId ->
+    static boolean handleOperation(CustomerInfo customerInfo, ServiceInstance serviceInstance) {
+        OperationType operationType = customerInfo.operationType
+        OrchestrationStatusEnum status = OrchestrationStatusEnum.getStatus(Objects.requireNonNull(
+                serviceInstance.getOrchestrationStatus()))
 
-        logger.debug(Prefix + "getSNSSIStatusByNsi Start")
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+        return ((OrchestrationStatusEnum.ACTIVATED == status && OperationType.DEACTIVATE == operationType)
+            || (OrchestrationStatusEnum.DEACTIVATED == status && OperationType.ACTIVATE == operationType))
+    }
 
-        AAIResourcesClient client = new AAIResourcesClient()
-        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(NSIServiceId))
-        if (!client.exists(uri)) {
-            exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
-        }
-        AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
-        Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
-        if (si.isPresent()) {
+    void checkAAIOrchStatusOfAllocates(DelegateExecution execution) {
+        logger.debug(Prefix + "CheckAAIOrchStatus Start")
+        CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+        String msg
+        String serviceInstanceId = customerInfo.serviceInstanceId
+        String globalSubscriberId = customerInfo.globalSubscriberId
+        String subscriptionServiceType = customerInfo.subscriptionServiceType
 
-            List<Relationship> relatedList = si.get().getRelationshipList().getRelationship()
-            for (Relationship relationship : relatedList) {
-                String relatedTo = relationship.getRelatedTo()
-                if (relatedTo.toLowerCase() == "allotted-resource") {
-                    //get snssi from allotted resource in list by nsi
-                    List<String> SNSSIList = new ArrayList<>()
-                    List<RelationshipData> relationshipDataList = relationship.getRelationshipData()
-                    for (RelationshipData relationshipData : relationshipDataList) {
-                        if (relationshipData.getRelationshipKey() == "service-instance.service-instance-id") {
-                            SNSSIList.add(relationshipData.getRelationshipValue())
-                        }
-                    }
-                    for (String snssi : SNSSIList) {
-                        AAIResourcesClient client01 = new AAIResourcesClient()
-                        AAIResourceUri uri01 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(snssi))
-                        if (!client.exists(uri01)) {
-                            exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
-                                    "Service Instance was not found in aai")
-                        }
-                        AAIResultWrapper wrapper01 = client01.get(uri01, NotFoundException.class)
-                        Optional<ServiceInstance> nssiSi = wrapper01.asBean(ServiceInstance.class)
-                        if (nssiSi.isPresent()) {
-                            return nssiSi.get().getOrchestrationStatus() == "deactivated"
-                        }
-                    }
+        logger.debug("serviceInstanceId: " + serviceInstanceId)
 
-                }
-            }
+        //check the NSI is exist or the status of NSI is active or de-active
+        try {
 
-        }
-        logger.debug(Prefix + "getSNSSIStatusByNsi Exit")
-    }
+            //get the allotted-resources by e2e slice id
+            AAIPluralResourceUri uriAllotted = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+                    .customer(globalSubscriberId)
+                    .serviceSubscription(subscriptionServiceType)
+                    .serviceInstance(serviceInstanceId)
+                    .allottedResources()
+            )
 
+            AAIResultWrapper wrapperAllotted = client.get(uriAllotted, NotFoundException.class)
+            Optional<AllottedResources> allAllotted = wrapperAllotted.asBean(AllottedResources.class)
 
-    def updateStatusSNSSAIandNSIandNSSI = { DelegateExecution execution ->
-        logger.debug(Prefix + "updateStatusSNSSAIandNSIandNSSI Start")
-        logger.debug(" ***** update SNSSAI NSI NSSI slicing ***** ")
-        String e2eserviceInstanceId = execution.getVariable("e2eserviceInstanceId")
-        String NSIserviceInstanceId = execution.getVariable("NSIserviceid")
-
-        String globalCustId = execution.getVariable("globalSubscriberId")
-        String serviceType = execution.getVariable("serviceType")
-        String operationType = execution.getVariable("operationType")
-
-        String nssiMap = execution.getVariable("nssiMap")
-        Type type = new TypeToken<HashMap<String, NSSI>>() {}.getType()
-        Map<String, NSSI> activateNssiMap = new Gson().fromJson(nssiMap, type)
-        //update tn/cn/an nssi
-        for (Map.Entry<String, NSSI> entry : activateNssiMap.entrySet()) {
-            NSSI nssi = entry.getValue()
-            String nssiid = nssi.getNssiId()
-            updateStratus(execution, globalCustId, serviceType, nssiid, operationType)
-        }
-        if (operationType.equalsIgnoreCase("activation")) {
-            //update the s-nssai
-            updateStratus(execution, globalCustId, serviceType, e2eserviceInstanceId, operationType)
-            //update the nsi
-            updateStratus(execution, globalCustId, serviceType, NSIserviceInstanceId, operationType)
-        } else {
-            //update the s-nssai
-            updateStratus(execution, globalCustId, serviceType, e2eserviceInstanceId, operationType)
-            boolean flag = getSNSSIStatusByNsi(execution, NSIserviceInstanceId)
-            if (flag) {
-                //update the nsi
-                updateStratus(execution, globalCustId, serviceType, NSIserviceInstanceId, operationType)
-            } else {
-                logger.error("Service's status update failed")
-                String msg = "Service's status update failed"
-                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+            AllottedResources allottedResources = allAllotted.get()
+            List<AllottedResource> AllottedResourceList = allottedResources.getAllottedResource()
+            if (AllottedResourceList.isEmpty()) {
+                execution.setVariable("isContinue", "false")
+                exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
+                        "allottedResources in aai is empty")
             }
+            AllottedResource ar = AllottedResourceList.first()
+            String relatedLink = ar.getRelationshipList().getRelationship().first().getRelatedLink()
+            String nsiServiceId = relatedLink.substring(relatedLink.lastIndexOf("/") + 1, relatedLink.length())
+            customerInfo.setNsiId(nsiServiceId)
+            execution.setVariable("customerInfo", customerInfo)
+            logger.info("the NSI ID is:" + nsiServiceId)
+        } catch (BpmnError e) {
+            throw e
+        } catch (Exception ex) {
+            logger.info("NSI Service doesnt exist")
+            execution.setVariable("isContinue", "false")
+            msg = "Exception in org.onap.so.bpmn.common.scripts.CompleteMsoProcess.CheckAAIOrchStatus " + ex.getMessage()
+            logger.info(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
         }
-        logger.debug(Prefix + "updateStatusSNSSAIandNSIandNSSI Exit")
+        logger.debug(Prefix + "CheckAAIOrchStatus Exit")
     }
 
+    void checkAAIOrchStatusOfNSI(DelegateExecution execution) {
 
-    def updateStratus = { DelegateExecution execution, String globalCustId,
-                          String serviceType, String serviceId, String operationType ->
-        logger.debug(Prefix + "updateStratus Start")
+        logger.debug(Prefix + "CheckAAIOrchStatus Start")
+        CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+        String msg = ""
+        String globalSubscriberId = customerInfo.globalSubscriberId
+        String subscriptionServiceType = customerInfo.subscriptionServiceType
+        String nsiServiceId = customerInfo.getNsiId()
+
+        logger.debug("network slice instance id: " + nsiServiceId)
 
+        //check the NSI is exist or the status of NSI is active or de-active
         try {
-            AAIResourcesClient client = new AAIResourcesClient()
-            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(serviceId))
-            if (!client.exists(uri)) {
-                exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
-            }
+            //Query nsi by nsi id
+
+            //get the NSI id by e2e slice id
+            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+                    .customer(globalSubscriberId)
+                    .serviceSubscription(subscriptionServiceType)
+                    .serviceInstance(nsiServiceId))
+
             AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
             Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
 
-            if (si.isPresent()) {
-                if (operationType.equalsIgnoreCase("activation")) {
-                    if (si.get().getOrchestrationStatus() == "deactivated") {
-                        si.get().setOrchestrationStatus("activated")
-                        client.update(uri, si.get())
-                    }
-                } else {
-                    if (si.get().getOrchestrationStatus() == "activated") {
-                        si.get().setOrchestrationStatus("deactivated")
-                        client.update(uri, si.get())
-                    }
-                }
-
+            ServiceInstance nsInstance = si.get()
+            if (!"nsi".equalsIgnoreCase(nsInstance.getServiceRole().toLowerCase())) {
+                logger.info("the service id" + nsInstance.getServiceInstanceId() + "is " +
+                        nsInstance.getServiceRole())
+                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
             }
-        } catch (Exception e) {
-            logger.info("Service is already in active state")
-            String msg = "Service is already in active state, " + e.getMessage()
+            execution.setVariable("nsInstance", nsInstance)
+            execution.setVariable("nsiUri", uri)
+            boolean isContinue = handleOperation(customerInfo, nsInstance)
+            execution.setVariable("isContinue", isContinue)
+
+        } catch (BpmnError e) {
+            throw e
+        } catch (Exception ex) {
+            logger.info("NSI Service doesnt exist")
+            execution.setVariable("isActivate", "false")
+            execution.setVariable("isContinue", "false")
+            msg = "Exception in org.onap.so.bpmn.common.scripts.CompleteMsoProcess.CheckAAIOrchStatus " + ex.getMessage()
+            logger.info(msg)
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
         }
-
-        logger.debug(Prefix + "updateStratus Exit")
+        logger.debug(Prefix + "CheckAAIOrchStatus Exit")
     }
 
-
-    def prepareActivation = { DelegateExecution execution ->
+    void prepareActivation(DelegateExecution execution) {
         logger.debug(Prefix + "prepareActivation Start")
 
-        logger.debug(" ***** prepare active NSI/AN/CN/TN slice ***** ")
-        String NSIserviceInstanceId = execution.getVariable("NSIserviceid")
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-
-        Map<String, NSSI> nssiMap = new HashMap<>()
+        CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+        String globalSubscriberId = customerInfo.globalSubscriberId
+        String subscriptionServiceType = customerInfo.subscriptionServiceType
 
-        List<String> activationSequence = new ArrayList<>(Arrays.asList("an", "tn", "cn"))
-
-        def activationCount = activationSequence.size()
-
-        execution.setVariable("activationIndex", "0")
+        logger.debug(" ***** prepare active NSI/AN/CN/TN slice ***** ")
 
-        execution.setVariable("activationCount", activationCount)
+        Queue<NssInstance> nssInstances = new LinkedList<>()
+        ServiceInstance nsInstance =
+                execution.getVariable("nsInstance") as ServiceInstance
         try {
             //get the TN NSSI id by NSI id, active NSSI TN slicing
-            AAIResourcesClient client = new AAIResourcesClient()
-            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(NSIserviceInstanceId))
-            if (!client.exists(uri)) {
-                exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
-            }
-            AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
-            Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
-            if (si.isPresent()) {
-
-                List<Relationship> relatedList = si.get().getRelationshipList().getRelationship()
-                for (Relationship relationship : relatedList) {
-                    String relatedTo = relationship.getRelatedTo()
-                    if (relatedTo.toLowerCase() == "service-instance") {
-                        String relatioshipurl = relationship.getRelatedLink()
-                        String nssiserviceid =
-                                relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1, relatioshipurl.length())
-
-                        AAIResourcesClient client01 = new AAIResourcesClient()
-                        AAIResourceUri uri01 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(nssiserviceid))
-                        if (!client.exists(uri01)) {
-                            exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
-                                    "Service Instance was not found in aai")
-                        }
-                        AAIResultWrapper wrapper01 = client01.get(uri01, NotFoundException.class)
-                        Optional<ServiceInstance> nssiSi = wrapper01.asBean(ServiceInstance.class)
-                        if (nssiSi.isPresent()) {
-                            if (nssiSi.get().getEnvironmentContext().toLowerCase().contains("an")
-                                    || nssiSi.get().getEnvironmentContext().toLowerCase().contains("cn")
-                                    || nssiSi.get().getEnvironmentContext().toLowerCase().contains("tn")) {
-                                nssiMap.put(nssiSi.get().getEnvironmentContext(),
-                                        new NSSI(nssiSi.get().getServiceInstanceId(),
-                                                nssiSi.get().getModelInvariantId(), nssiSi.get().getModelVersionId()))
-                            }
-                        }
-                    }
+            List<Relationship> relatedList = nsInstance.getRelationshipList().getRelationship()
+            for (Relationship relationship : relatedList) {
+                String relatedTo = relationship.getRelatedTo()
+                if (!"service-instance".equalsIgnoreCase(relatedTo)) {
+                    continue
                 }
-
-
+                String relatioshipurl = relationship.getRelatedLink()
+                String nssiserviceid = relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1,
+                        relatioshipurl.length())
+
+                AAIResourceUri nsiUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+                        .customer(globalSubscriberId)
+                        .serviceSubscription(subscriptionServiceType)
+                        .serviceInstance(nssiserviceid))
+                if (!client.exists(nsiUri)) {
+                    exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
+                            "Service Instance was not found in aai")
+                }
+                AAIResultWrapper wrapper01 = client.get(nsiUri, NotFoundException.class)
+                Optional<ServiceInstance> nssiSi = wrapper01.asBean(ServiceInstance.class)
+                nssiSi.ifPresent(new Consumer<ServiceInstance>() {
+                    @Override
+                    void accept(ServiceInstance instance) {
+                        String env = Objects.requireNonNull(instance.getEnvironmentContext())
+                        NssInstance nssi = NssInstance.builder().nssiId(instance.getServiceInstanceId())
+                                .modelInvariantId(instance.getModelInvariantId())
+                                .modelVersionId(instance.getModelVersionId())
+                                .networkType(NetworkType.fromString(env))
+                                .operationType(customerInfo.operationType)
+                                .snssai(customerInfo.snssai)
+                                .serviceType(instance.getServiceType())
+                                .build()
+                        nssInstances.offer(nssi)
+                    }
+                })
             }
+            execution.setVariable("nssInstances", nssInstances)
+            execution.setVariable("nssInstanceInfos", nssInstances)
         } catch (Exception e) {
             String msg = "Requested service does not exist:" + e.getMessage()
             logger.info("Service doesnt exist")
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
         }
 
-        if (nssiMap.size() > 0) {
-            execution.setVariable("isNSSIActivate", "true")
-            String nssiMap01 = mapToJsonStr(nssiMap)
-            execution.setVariable("nssiMap", nssiMap01)
-            execution.setVariable("operation_type", "activate")
-            execution.setVariable("activationCount", nssiMap.size())
-            logger.info("the nssiMap01 is :" + nssiMap01)
-        } else {
-            execution.setVariable("isNSSIActivate", "false")
-        }
-
         logger.debug(Prefix + "prepareActivation Exit")
     }
 
-
-    private mapToJsonStr = { HashMap<String, NSSI> stringNSSIHashMap ->
-        HashMap<String, NSSI> map = new HashMap<String, NSSI>()
-        for (Map.Entry<String, NSSI> child : stringNSSIHashMap.entrySet()) {
-            map.put(child.getKey(), child.getValue())
+    void isOperationFinished(DelegateExecution execution) {
+        Queue<NssInstance> nssInstances = execution.getVariable("nssInstances") as Queue<NssInstance>
+        if (nssInstances.isEmpty()) {
+            execution.setVariable("isOperationFinished", "true")
         }
-        return new Gson().toJson(map)
     }
 
+    def updateStatusSNSSAIandNSIandNSSI = { DelegateExecution execution ->
+        logger.debug(Prefix + "updateStatusSNSSAIandNSIandNSSI Start")
+        logger.debug(" ***** update SNSSAI NSI NSSI slicing ***** ")
+        ServiceInstance ssInstance = execution.getVariable("ssInstance") as ServiceInstance
+        AAIResourceUri ssUri = execution.getVariable("ssiUri") as AAIResourceUri
 
-    def checkAAIOrchStatusofslice = { DelegateExecution execution ->
-        logger.debug(Prefix + "CheckAAIOrchStatus Start")
+        CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+        OperationType operationType = customerInfo.operationType
 
-        String msg = ""
-        String serviceInstanceId = execution.getVariable("serviceInstanceId")
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-        String operationType = execution.getVariable("operationType")
+        updateStratus(execution, ssInstance, operationType, ssUri)
+        //update the nsi
+        ServiceInstance nsInstance = execution.getVariable("nsInstance") as ServiceInstance
+        AAIResourceUri nsiUri = execution.getVariable("nsiUri") as AAIResourceUri
 
-        logger.debug("serviceInstanceId: " + serviceInstanceId)
+        updateStratus(execution, nsInstance, operationType, nsiUri)
 
-        //check the e2e slice status
-        try {
-            try {
-                AAIResourcesClient client = new AAIResourcesClient()
-                AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId))
-                if (!client.exists(uri)) {
-                    exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
-                            "Service Instance was not found in aai")
-                }
-                AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
-                Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
-                if (si.isPresent()) {
-                    if (si.get().getOrchestrationStatus().toLowerCase() == "activated" &&
-                            operationType.equalsIgnoreCase("deactivation")) {
-                        logger.info("Service is in active state")
-                        execution.setVariable("e2eservicestatus", "activated")
-                        execution.setVariable("isContinue", "true")
-                        String snssai = si.get().getEnvironmentContext()
-                        execution.setVariable("snssai", snssai)
-                    } else if (si.get().getOrchestrationStatus().toLowerCase() == "deactivated" &&
-                            operationType.equalsIgnoreCase("activation")) {
-                        logger.info("Service is  in de-activated state")
-                        execution.setVariable("e2eservicestatus", "deactivated")
-                        execution.setVariable("isContinue", "true")
-                        String snssai = si.get().getEnvironmentContext()
-                        execution.setVariable("snssai", snssai)
-                    } else {
-                        execution.setVariable("isContinue", "false")
-                    }
-                }
-            } catch (Exception e) {
-                msg = "Requested e2eservice does not exist"
-                logger.info("e2eservice doesnt exist")
-                execution.setVariable("isContinue", "false")
-                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-            }
 
-            //check the NSI is exist or the status of NSI is active or de-active
-            try {
+        logger.debug(Prefix + "updateStatusSNSSAIandNSIandNSSI Exit")
+    }
 
-                //get the allotted-resources by e2e slice id
-                AAIResourcesClient client_allotted = new AAIResourcesClient()
-                AAIPluralResourceUri uri_allotted = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId).allottedResources()
-                        )
-                if (!client_allotted.exists(uri_allotted)) {
-                    exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
-                }
-                AAIResultWrapper wrapper_allotted = client_allotted.get(uri_allotted, NotFoundException.class)
-                Optional<AllottedResources> all_allotted = wrapper_allotted.asBean(AllottedResources.class)
-
-                if (all_allotted.isPresent() && all_allotted.get().getAllottedResource()) {
-                    List<AllottedResource> AllottedResourceList = all_allotted.get().getAllottedResource()
-                    AllottedResource ar = AllottedResourceList.first()
-                    String relatedLink = ar.getRelationshipList().getRelationship().first().getRelatedLink()
-                    String nsiserviceid = relatedLink.substring(relatedLink.lastIndexOf("/") + 1, relatedLink.length())
-                    execution.setVariable("NSIserviceid", nsiserviceid)
-                    logger.info("the NSI ID is:" + nsiserviceid)
-
-                    //Query nsi by nsi id
-                    try {
-                        //get the NSI id by e2e slice id
-                        AAIResourcesClient client = new AAIResourcesClient()
-                        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(nsiserviceid))
-                        if (!client.exists(uri)) {
-                            exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
-                                    "Service Instance was not found in aai")
-                        }
-                        AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
-                        Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
-
-                        if (si.isPresent()) {
-                            if (si.get().getServiceRole().toLowerCase() == "nsi") {
-                                if (si.get().getOrchestrationStatus() == "activated") {
-                                    logger.info("NSI services is  in activated state")
-                                    execution.setVariable("NSIservicestatus", "activated")
-                                } else {
-                                    logger.info("NSI services is  in deactivated state")
-                                    execution.setVariable("NSIservicestatus", "deactivated")
-                                }
-                            } else {
-                                logger.info("the service id" + si.get().getServiceInstanceId() + "is " +
-                                        si.get().getServiceRole())
-                                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-                            }
-                        }
-                    } catch (Exception e) {
-                        msg = "Requested NSI service does not exist:" + e.getMessage()
-                        logger.info("NSI service doesnt exist")
-                        execution.setVariable("isContinue", "false")
-                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-                    }
-                }
-            } catch (Exception e) {
-                msg = "Requested service does not exist: " + e.getMessage()
-                logger.info("NSI Service doesnt exist")
-                execution.setVariable("isActivate", "false")
-                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+    void updateStratus(DelegateExecution execution, ServiceInstance serviceInstance,
+                       OperationType operationType, AAIResourceUri uri) {
+
+        logger.debug(Prefix + "updateStratus Start")
+
+        try {
+            serviceInstance.setOrchestrationStatus()
+            if (OperationType.ACTIVATE == operationType) {
+                serviceInstance.setOrchestrationStatus(OrchestrationStatusEnum.ACTIVATED.getValue())
+            } else {
+                serviceInstance.setOrchestrationStatus(OrchestrationStatusEnum.DEACTIVATED.getValue())
             }
-        } catch (BpmnError e) {
-            throw e
-        } catch (Exception ex) {
-            msg = "Exception in org.onap.so.bpmn.common.scripts.CompleteMsoProcess.CheckAAIOrchStatus " + ex.getMessage()
-            logger.info(msg)
+            client.update(uri, serviceInstance)
+        } catch (Exception e) {
+            logger.info("Service is already in active state")
+            String msg = "Service is already in active state, " + e.getMessage()
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
         }
 
-        logger.debug(Prefix + "CheckAAIOrchStatus Exit")
+        logger.debug(Prefix + "updateStratus Exit")
     }
 
+    def prepareCompletionRequest = { DelegateExecution execution ->
+        logger.debug(Prefix + "prepareCompletionRequest Start")
+        CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+        String serviceId = customerInfo.getServiceInstanceId()
+        String operationId = customerInfo.getOperationId()
+        String userId = customerInfo.getGlobalSubscriberId()
+
+        String result = "finished"
+        String progress = "100"
+        String reason = ""
+        String operationContent = "action finished success"
+        String operationType = customerInfo.operationType.getType()
+
+        OperationStatus initStatus = new OperationStatus()
+        initStatus.setServiceId(serviceId)
+        initStatus.setOperationId(operationId)
+        initStatus.setOperation(operationType)
+        initStatus.setUserId(userId)
+        initStatus.setResult(result)
+        initStatus.setProgress(progress)
+        initStatus.setReason(reason)
+        initStatus.setOperationContent(operationContent)
+
+        requestDBUtil.prepareUpdateOperationStatus(execution, initStatus)
+
+        logger.debug(Prefix + "prepareCompletionRequest Exit")
+    }
 }
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateSliceService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateSliceService.groovy
new file mode 100644 (file)
index 0000000..3d9f676
--- /dev/null
@@ -0,0 +1,273 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # 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.bpmn.infrastructure.scripts
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import org.apache.commons.lang3.StringUtils
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.logging.filter.base.ErrorCode
+import org.onap.so.beans.nsmf.*
+import org.onap.so.beans.nsmf.oof.SubnetType
+import org.onap.so.bpmn.common.scripts.*
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.ServiceArtifact
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.LoggingAnchor
+import org.onap.so.logger.MessageEnum
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.springframework.web.util.UriUtils
+
+import java.lang.reflect.Type
+
+/**
+ * This class supports the DoCreateVnf building block subflow
+ * with the creation of a generic vnf for
+ * infrastructure.
+ *
+ */
+class DoActivateSliceService extends AbstractServiceTaskProcessor {
+
+    private static final Logger logger = LoggerFactory.getLogger(DoActivateSliceService.class)
+
+    private static final NSSMF_ACTIVATION_URL = "/api/rest/provMns/v1/NSS/%s/activation"
+
+    private static final NSSMF_DEACTIVATION_URL = "/api/rest/provMns/v1/NSS/%s/deactivation"
+
+    private static final NSSMF_QUERY_JOB_STATUS_URL = "/api/rest/provMns/v1/NSS/jobs/%s"
+
+    String Prefix="DoCNSSMF_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    JsonUtils jsonUtil = new JsonUtils()
+
+    ObjectMapper objectMapper = new ObjectMapper()
+
+    SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+
+    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
+
+       /**
+        * This method gets and validates the incoming
+        * request.
+        *
+        * @param - execution
+        *
+        */
+       public void preProcessRequest(DelegateExecution execution) {
+
+               execution.setVariable("prefix",Prefix)
+               logger.debug("STARTED Do sendcommandtoNssmf PreProcessRequest Process")
+
+               /*******************/
+               try{
+            Queue<NssInstance> nssInstances = execution.getVariable("nssInstances") as Queue<NssInstance>
+            NssInstance nssInstance = nssInstances.poll()
+            execution.setVariable("nssInstances", nssInstances)
+            execution.setVariable("nssInstance", nssInstance)
+
+                       logger.info("the end !!")
+               }catch(BpmnError b){
+                       logger.debug("Rethrowing MSOWorkflowException")
+                       throw b
+               }catch(Exception e){
+                       logger.info("the end of catch !!")
+                       logger.debug(" Error Occured in DoSendCommandToNSSMF PreProcessRequest method!" + e.getMessage())
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoSendCommandToNSSMF PreProcessRequest")
+
+               }
+               logger.trace("COMPLETED DoSendCommandToNSSMF PreProcessRequest Process")
+       }
+
+    void prepareCompose(DelegateExecution execution) {
+        NssInstance nssInstance = execution.getVariable("nssInstance") as NssInstance
+        execution.setVariable("nssInstanceId", nssInstance.nssiId)
+        String serviceModelInfo = """{
+                        "modelInvariantUuid":"${nssInstance.modelInvariantId}",
+                        "modelUuid":"${nssInstance.modelVersionId}",
+                        "modelVersion":""
+                    }"""
+        execution.setVariable("serviceModelInfo", serviceModelInfo)
+    }
+
+       /**
+        * get vendor Info
+        * @param execution
+        */
+       void processDecomposition(DelegateExecution execution) {
+               logger.debug("***** processDecomposition *****")
+
+               try {
+                       ServiceDecomposition serviceDecomposition =
+                    execution.getVariable("serviceDecomposition") as ServiceDecomposition
+
+                       String vendor = serviceDecomposition.getServiceRole()
+            CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+            NssInstance nssInstance = execution.getVariable("nssInstance") as NssInstance
+            String reqUrl
+            String actionType
+            if (OperationType.ACTIVATE == nssInstance.operationType) {
+                reqUrl = String.format(NSSMF_ACTIVATION_URL, nssInstance.snssai)
+                actionType = "activate"
+            } else {
+                reqUrl = String.format(NSSMF_DEACTIVATION_URL, nssInstance.snssai)
+                actionType = "deactivate"
+            }
+            execution.setVariable("reqUrl", reqUrl)
+
+            NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
+
+            EsrInfo esrInfo = new EsrInfo()
+            esrInfo.setVendor(vendor)
+            esrInfo.setNetworkType(nssInstance.networkType)
+
+            ServiceInfo serviceInfo = ServiceInfo.builder()
+                    .nssiId(nssInstance.nssiId)
+                    .subscriptionServiceType(customerInfo.subscriptionServiceType)
+                    .globalSubscriberId(customerInfo.globalSubscriberId)
+                    .nsiId(customerInfo.nsiId)
+                    .serviceInvariantUuid(nssInstance.modelInvariantId)
+                    .serviceUuid(nssInstance.modelVersionId)
+                    .serviceType(nssInstance.serviceType)
+                    .actionType(actionType)
+                    .build()
+
+            ActDeActNssi actDeActNssi = new ActDeActNssi()
+            actDeActNssi.setNsiId(customerInfo.nsiId)
+            actDeActNssi.setNssiId(nssInstance.nssiId)
+
+                       nbiRequest.setEsrInfo(esrInfo)
+            nbiRequest.setServiceInfo(serviceInfo)
+            nbiRequest.setActDeActNssi(actDeActNssi)
+            execution.setVariable("nbiRequest", nbiRequest)
+            execution.setVariable("esrInfo", esrInfo)
+            execution.setVariable("serviceInfo", serviceInfo)
+
+               } catch (any) {
+                       String exceptionMessage = "Bpmn error encountered in deallocate nssi. processDecomposition() - " + any.getMessage()
+                       logger.debug(exceptionMessage)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+               }
+               logger.debug("***** Exit processDecomposition *****")
+       }
+
+    /**
+     * send Create Request NSSMF
+     * @param execution
+     */
+    void sendCreateRequestNSSMF(DelegateExecution execution) {
+        NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest
+        String nssmfRequest = objectMapper.writeValueAsString(nbiRequest)
+        logger.debug("sendCreateRequestNSSMF: " + nssmfRequest)
+
+        String reqUrl = execution.getVariable("reqUrl")
+        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, reqUrl, nssmfRequest)
+
+        if (response != null) {
+            NssiResponse nssiResponse = objectMapper.readValue(response, NssiResponse.class)
+            execution.setVariable("nssiAllocateResult", nssiResponse)
+        }
+        //todo: error
+    }
+
+    /**
+     * query nssi allocate status
+     * @param execution
+     */
+    void queryNSSIStatus(DelegateExecution execution) {
+        NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
+        EsrInfo esrInfo = execution.getVariable("esrInfo") as EsrInfo
+        ServiceInfo serviceInfo = execution.getVariable("serviceInfo") as ServiceInfo
+        nbiRequest.setEsrInfo(esrInfo)
+        nbiRequest.setServiceInfo(serviceInfo)
+
+        NssiResponse nssiAllocateResult = execution.getVariable("nssiAllocateResult") as NssiResponse
+        String jobId = nssiAllocateResult.getJobId()
+
+        String endpoint = String.format(NSSMF_QUERY_JOB_STATUS_URL, jobId)
+
+        String response =
+                nssmfAdapterUtils.sendPostRequestNSSMF(execution, endpoint, objectMapper.writeValueAsString(nbiRequest))
+
+        logger.debug("nssmf response nssiAllocateStatus:" + response)
+
+        if (response != null) {
+            JobStatusResponse jobStatusResponse = objectMapper.readValue(response, JobStatusResponse.class)
+
+            execution.setVariable("nssiAllocateStatus", jobStatusResponse)
+            if (jobStatusResponse.getResponseDescriptor().getProgress() == 100) {
+                execution.setVariable("jobFinished", true)
+            }
+        }
+    }
+
+    void timeDelay(DelegateExecution execution) {
+        logger.trace("Enter timeDelay in DoAllocateNSSI()")
+        try {
+            Thread.sleep(60000)
+
+            int currentCycle = execution.hasVariable("currentCycle") ?
+                    execution.getVariable("currentCycle") as Integer : 1
+
+            currentCycle = currentCycle + 1
+            if(currentCycle >  60)
+            {
+                logger.trace("Completed all the retry times... but still nssmf havent completed the creation process...")
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, "NSSMF creation didnt complete by time...")
+            }
+            execution.setVariable("currentCycle", currentCycle)
+        } catch(InterruptedException e) {
+            logger.info("Time Delay exception" + e)
+        }
+        logger.trace("Exit timeDelay in DoAllocateNSSI()")
+    }
+
+    void sendSyncError (DelegateExecution execution) {
+               logger.trace("start sendSyncError")
+               try {
+                       String errorMessage = ""
+                       if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+                               WorkflowException wfe = execution.getVariable("WorkflowException")
+                               errorMessage = wfe.getErrorMessage()
+                       } else {
+                               errorMessage = "Sending Sync Error."
+                       }
+
+                       String buildworkflowException =
+                                       """<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+                                       <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+                                       <aetgt:ErrorCode>7000</aetgt:ErrorCode>
+                                  </aetgt:WorkflowException>"""
+
+                       logger.debug(buildworkflowException)
+                       sendWorkflowResponse(execution, 500, buildworkflowException)
+
+               } catch (Exception ex) {
+                       logger.debug("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+               }
+               logger.trace("finished sendSyncError")
+       }
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoSendCommandToNSSMF.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoSendCommandToNSSMF.groovy
deleted file mode 100644 (file)
index a85f5d8..0000000
+++ /dev/null
@@ -1,423 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2019, CMCC Technologies Co., Ltd.
- #
- # 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.bpmn.infrastructure.scripts
-
-import com.fasterxml.jackson.databind.ObjectMapper
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.beans.nsmf.*
-import org.onap.so.bpmn.common.scripts.*
-import org.onap.so.bpmn.core.UrnPropertiesReader
-import org.onap.so.bpmn.core.WorkflowException
-import org.onap.so.bpmn.core.domain.ServiceArtifact
-import org.onap.so.bpmn.core.domain.ServiceDecomposition
-import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.logging.filter.base.ErrorCode
-import org.onap.so.logger.LoggingAnchor
-import org.onap.so.logger.MessageEnum
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-import org.springframework.web.util.UriUtils
-
-import java.lang.reflect.Type
-
-/**
- * This class supports the DoCreateVnf building block subflow
- * with the creation of a generic vnf for
- * infrastructure.
- *
- */
-class DoSendCommandToNSSMF extends AbstractServiceTaskProcessor {
-
-    private static final Logger logger = LoggerFactory.getLogger( DoSendCommandToNSSMF.class);
-       String Prefix="DoCNSSMF_"
-    ExceptionUtil exceptionUtil = new ExceptionUtil()
-    JsonUtils jsonUtil = new JsonUtils()
-    VidUtils vidUtils = new VidUtils(this)
-    SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
-
-    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
-
-       /**
-        * This method gets and validates the incoming
-        * request.
-        *
-        * @param - execution
-        *
-        */
-       public void preProcessRequest(DelegateExecution execution) {
-
-               execution.setVariable("prefix",Prefix)
-               logger.debug("STARTED Do sendcommandtoNssmf PreProcessRequest Process")
-
-               /*******************/
-               try{
-                       // Get Variables
-                       String e2eserviceInstanceId = execution.getVariable("e2eserviceInstanceId")
-                       String serviceInstanceId = execution.getVariable("e2eserviceInstanceId")
-                       execution.setVariable("e2eserviceInstanceId", e2eserviceInstanceId)
-                       execution.setVariable("serviceInstanceId", serviceInstanceId)
-                       logger.debug("Incoming e2eserviceInstanceId is: " + e2eserviceInstanceId)
-
-                       String NSIserviceid =  execution.getVariable("NSIserviceid")
-                       execution.setVariable("NSIserviceid", NSIserviceid)
-                       logger.debug("Incoming NSI id is: " + NSIserviceid)
-
-
-                       String nssiMap  = execution.getVariable("nssiMap")
-                       Type type = new TypeToken<HashMap<String, NSSI>>(){}.getType()
-                       Map<String, NSSI> DonssiMap = new Gson().fromJson(nssiMap,type)
-            String strDonssiMap = mapToJsonStr(DonssiMap)
-                       execution.setVariable("DonssiMap",strDonssiMap)
-                       logger.debug("Incoming DonssiMap is: " + strDonssiMap)
-
-                       String requestId = execution.getVariable("msoRequestId")
-                       execution.setVariable("msoRequestId", requestId)
-
-                       String operationType = execution.getVariable("operationType")
-                       execution.setVariable("operationType", operationType.toLowerCase())
-                       logger.debug("Incoming operationType is: " + operationType)
-
-            if (operationType == "activation") {
-                               execution.setVariable("activationSequence","an,tn,cn")
-                       }else {
-                               execution.setVariable("activationSequence","cn,tn,an")
-                       }
-                       execution.setVariable("activationIndex",0)
-                       execution.setVariable("miniute", "0")
-                       execution.setVariable("activateNumberSlice",0)
-
-                       logger.info("the end !!")
-               }catch(BpmnError b){
-                       logger.debug("Rethrowing MSOWorkflowException")
-                       throw b
-               }catch(Exception e){
-                       logger.info("the end of catch !!")
-                       logger.debug(" Error Occured in DoSendCommandToNSSMF PreProcessRequest method!" + e.getMessage())
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoSendCommandToNSSMF PreProcessRequest")
-
-               }
-               logger.trace("COMPLETED DoSendCommandToNSSMF PreProcessRequest Process")
-       }
-
-    private String mapToJsonStr(Map<String, NSSI> stringNSSIHashMap) {
-        HashMap<String, NSSI> map = new HashMap<String, NSSI>()
-        for(Map.Entry<String, NSSI> child:stringNSSIHashMap.entrySet())
-        {
-            map.put(child.getKey(), child.getValue())
-        }
-        return new Gson().toJson(map)
-    }
-
-       public  void getNSSIformlist(DelegateExecution execution) {
-
-               String  nssiMap = execution.getVariable("DonssiMap")
-               Type type = new TypeToken<HashMap<String, NSSI>>(){}.getType()
-        Map<String, NSSI> DonssiMap = new Gson().fromJson(nssiMap,type)
-               String isNSSIActivate = execution.getVariable("isNSSIActivate")
-
-               String activationSequence01 = execution.getVariable("activationSequence")
-           String[] strlist = activationSequence01.split(",")
-
-               int  activationIndex = execution.getVariable("activationIndex")
-               int indexcurrent = 0
-               if (isNSSIActivate == "true")
-               {
-                       execution.setVariable("isGetSuccessfull", "false")
-               }else{for (int index = activationIndex; index < 3;index++) {
-                       String domaintype01 = strlist[index]
-                       if (DonssiMap.containsKey(domaintype01)) {
-                               NSSI nssiobject = DonssiMap.get(domaintype01)
-                               execution.setVariable("domainType", domaintype01)
-                               execution.setVariable("nssiId", nssiobject.getNssiId())
-                               execution.setVariable("modelInvariantUuid", nssiobject.getModelInvariantId())
-                               execution.setVariable("modelUuid", nssiobject.getModelVersionId())
-                               execution.setVariable("isGetSuccessfull", "true")
-                               String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
-                               String modelUuid = execution.getVariable("modelUuid")
-                               //here modelVersion is not set, we use modelUuid to decompose the service.
-                               String serviceModelInfo = """{
-            "modelInvariantUuid":"${modelInvariantUuid}",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-                               execution.setVariable("serviceModelInfo", serviceModelInfo)
-                               indexcurrent = index
-                               execution.setVariable("activationIndex", indexcurrent)
-                               break
-                       }else
-                       {
-                               indexcurrent = index + 1
-
-                       }
-               }
-                       if ( activationIndex > 2) {
-                               execution.setVariable("isGetSuccessfull", "false")
-                       }
-                       execution.setVariable("activationIndex", indexcurrent)}
-
-       }
-
-       /**
-        * get vendor Info
-        * @param execution
-        */
-       private void processDecomposition(DelegateExecution execution) {
-               logger.debug("***** processDecomposition *****")
-
-               try {
-                       ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") as ServiceDecomposition
-            ServiceArtifact serviceArtifact = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0)
-                       String content = serviceArtifact.getContent()
-                       String vendor = jsonUtil.getJsonValue(content, "metadata.vendor")
-                       //String domainType  = jsonUtil.getJsonValue(content, "metadata.domainType")
-
-                       execution.setVariable("vendor", vendor)
-               //      currentNSSI['domainType'] = domainType
-                       logger.info("processDecomposition, current vendor-domainType:" +  vendor)
-
-               } catch (any) {
-                       String exceptionMessage = "Bpmn error encountered in deallocate nssi. processDecomposition() - " + any.getMessage()
-                       logger.debug(exceptionMessage)
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
-               }
-               logger.debug("***** Exit processDecomposition *****")
-       }
-
-       public  void UpdateIndex(DelegateExecution execution) {
-               def activationIndex = execution.getVariable("activationIndex")
-               int activateNumberSlice = execution.getVariable("activateNumberSlice") as Integer
-               def activationCount= execution.getVariable("activationCount")
-               //DecimalFormat df1 = new DecimalFormat("##%")
-               int  rate = (activateNumberSlice / activationCount) * 100
-               if (rate == 100)
-               {
-                       execution.setVariable("isNSSIActivate","true")
-               }
-               else{
-                       execution.setVariable("isNSSIActivate","false")
-               }
-               activationIndex = activationIndex + 1
-               execution.setVariable("activationIndex",activationIndex)
-               logger.trace("the Progress of activation is " + rate.toString() + "%" )
-               try{
-                       String serviceId = execution.getVariable("serviceInstanceId")
-                       String operationId = UUID.randomUUID().toString()
-                       String operationType =  execution.getVariable("operationType")
-                       String userId = ""
-                       String result = (operationType.equalsIgnoreCase("activation"))? "ACTIVATING": "DEACTIVATING"
-                       int progress = rate
-                       String reason = ""
-                       String operationContent = "Service activation in progress"
-                       logger.debug("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId)
-                       serviceId = UriUtils.encode(serviceId,"UTF-8")
-                       execution.setVariable("e2eserviceInstanceId", serviceId)
-                       execution.setVariable("operationId", operationId)
-                       execution.setVariable("operationType", operationType)
-
-                       def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution)
-                       execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
-                       logger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint)
-
-                       String payload =
-                                       """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
-                        xmlns:ns="http://org.onap.so/requestsdb">
-                        <soapenv:Header/>
-                        <soapenv:Body>
-                            <ns:initServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
-                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
-                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
-                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
-                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
-                            <result>${MsoUtils.xmlEscape(result)}</result>
-                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
-                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
-                            <reason>${MsoUtils.xmlEscape(reason)}</reason>
-                        </ns:initServiceOperationStatus>
-                    </soapenv:Body>
-                </soapenv:Envelope>"""
-
-                       payload = utils.formatXml(payload)
-                       execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload)
-                       logger.debug("Outgoing CVFMI_updateServiceOperStatusRequest: \n" + payload)
-
-               }catch(Exception e){
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       "Exception Occured Processing Activate Slice .", "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e)
-                       execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during Activate Slice Method:\n" + e.getMessage())
-               }
-               logger.trace("finished Activate Slice")
-       }
-
-       public void WaitForReturn(DelegateExecution execution) {
-               //logger.debug("Query : "+ Jobid)
-               String miniute = execution.getVariable("miniute")
-               Thread.sleep(10000)
-               int miniute01  = Integer.parseInt(miniute) + 1
-               logger.debug("waiting for : "+ miniute + "miniutes")
-               execution.setVariable("miniute", String.valueOf(miniute01))
-       }
-
-       public void GetTheStatusOfActivation(DelegateExecution execution) {
-
-               String domaintype = execution.getVariable("domainType")
-               String NSIserviceid=execution.getVariable("NSIserviceid")
-               String nssiId = execution.getVariable("nssiId")
-               String Jobid=execution.getVariable("JobId")
-               String miniute=execution.getVariable("miniute")
-               String vendor = execution.getVariable("vendor")
-               String jobstatus
-
-
-               logger.debug("Query the jobid activation of SNSSAI: "+ Jobid)
-               logger.debug("the domain is : "+ domaintype)
-               logger.debug("the NSSID is : "+nssiId)
-               logger.debug("the NSIserviceid is : "+NSIserviceid)
-
-        JobStatusRequest jobStatusRequest = new JobStatusRequest()
-
-        EsrInfo info = new EsrInfo()
-               info.setNetworkType(NetworkType.fromString(domaintype))
-               info.setVendor(vendor)
-
-               jobStatusRequest.setNsiId(NSIserviceid)
-               jobStatusRequest.setNssiId(nssiId)
-               jobStatusRequest.setEsrInfo(info)
-
-
-               ObjectMapper mapper = new ObjectMapper()
-               String nssmfRequest = mapper.writeValueAsString(jobStatusRequest)
-               String isActivateSuccessfull
-
-        String urlString = "/api/rest/provMns/v1/NSS/jobs/" +Jobid
-
-        JobStatusResponse jobStatusResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest, JobStatusResponse.class)
-
-        if (jobStatusResponse != null) {
-            execution.setVariable("statusDescription", jobStatusResponse.getResponseDescriptor().getStatusDescription())
-            jobstatus = jobStatusResponse.getResponseDescriptor().getStatus()
-            switch(jobstatus) {
-                case "started":
-                case "processing":
-                    isActivateSuccessfull = "waitting"
-                    execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
-                    break
-                case "finished":
-                    isActivateSuccessfull = "true"
-                    execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
-                    execution.setVariable("activateNumberSlice",execution.getVariable("activateNumberSlice")+ 1)
-                    break
-                case "error":
-                default:
-                    isActivateSuccessfull = "false"
-                    execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
-
-            }
-            if(Integer.parseInt(miniute) > 6 )
-            {
-                isActivateSuccessfull = "false"
-                execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
-                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Received a timeout job status Response from NSSMF.")
-            }
-        } else {
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Received a Bad job status Response from NSSMF.")
-            isActivateSuccessfull = false
-            execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
-        }
-       }
-
-       public void SendCommandToNssmf(DelegateExecution execution) {
-
-               String snssai= execution.getVariable("snssai")
-               String domaintype = execution.getVariable("domainType")
-               String NSIserviceid=execution.getVariable("NSIserviceid")
-               String nssiId = execution.getVariable("nssiId")
-               String vendor = execution.getVariable("vendor")
-
-
-               logger.debug("the domain is : "+domaintype)
-               logger.debug("SNSSAI: "+snssai +" will be activated")
-               logger.debug("the NSSID is : "+nssiId)
-               logger.debug("the NSIserviceid is : "+NSIserviceid)
-
-        EsrInfo esr = new EsrInfo();
-               esr.setNetworkType(NetworkType.fromString(domaintype))
-               esr.setVendor(vendor)
-
-        ActDeActNssi actNssi = new ActDeActNssi();
-               actNssi.setNsiId(NSIserviceid);
-               actNssi.setNssiId(nssiId);
-        NssiActDeActRequest actRequest = new NssiActDeActRequest();
-               actRequest.setActDeActNssi(actNssi);
-               actRequest.setEsrInfo(esr)
-
-               ObjectMapper mapper = new ObjectMapper()
-               String nssmfRequest = mapper.writeValueAsString(actRequest)
-
-               String operationType = execution.getVariable("operationType")
-
-               String urlString = "/api/rest/provMns/v1/NSS/" + snssai + "/" + operationType.toLowerCase()
-
-        NssiResponse nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest, NssiResponse.class)
-
-        if (nssmfResponse != null) {
-            String  isNSSIActivated = "true"
-            execution.setVariable("isNSSIActivated", isNSSIActivated)
-            String jobId  = nssmfResponse.getJobId() ?: ""
-            execution.setVariable("JobId", jobId)
-        } else {
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Received a Bad Response from NSSMF.")
-            String  isNSSIActivated = "false"
-            execution.setVariable("isNSSIActivated", isNSSIActivated)
-            execution.setVariable("isNSSIActivate","false")
-        }
-
-       }
-
-       void sendSyncError (DelegateExecution execution) {
-               logger.trace("start sendSyncError")
-               try {
-                       String errorMessage = ""
-                       if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
-                               WorkflowException wfe = execution.getVariable("WorkflowException")
-                               errorMessage = wfe.getErrorMessage()
-                       } else {
-                               errorMessage = "Sending Sync Error."
-                       }
-
-                       String buildworkflowException =
-                                       """<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
-                                       <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
-                                       <aetgt:ErrorCode>7000</aetgt:ErrorCode>
-                                  </aetgt:WorkflowException>"""
-
-                       logger.debug(buildworkflowException)
-                       sendWorkflowResponse(execution, 500, buildworkflowException)
-
-               } catch (Exception ex) {
-                       logger.debug("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
-               }
-               logger.trace("finished sendSyncError")
-       }
-}
index cd4cf47..af89197 100644 (file)
@@ -2,25 +2,12 @@
 <bpmn:definitions xmlns:bpmn="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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_13dsy4w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
   <bpmn:error id="Error_0l3pcnc" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn:error id="Error_1eyu7sx" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
-  <bpmn:collaboration id="Collaboration_0htncd8">
-    <bpmn:participant id="ActivateSliceService01" name="ActivateSliceService" processRef="ActivateSliceService" />
-  </bpmn:collaboration>
+  <bpmn:error id="Error_0vq6f5h" name="Error_3ai5jm1" />
   <bpmn:process id="ActivateSliceService" name="ActivateSliceService" isExecutable="true">
-    <bpmn:scriptTask id="Task_1vscxgp" name="Update the status of SNSSAI and NSI and NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1jp9gjt</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1gkpl5q</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new ActivateSliceService()
-csi.updateStatusSNSSAIandNSIandNSSI(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_0cbth6k" name="Prepare Completion Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1gkpl5q</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0pzts4p</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi = new ActivateSliceService()
-csi.prepareCompletionRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:serviceTask id="ServiceTask_1aymwlt" name="Update Service Operation Status to Success">
+    <bpmn:startEvent id="StartEvent_01bdhbw" name="start">
+      <bpmn:outgoing>SequenceFlow_1tdecf1</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:serviceTask id="ServiceTask_1hmtmeq" name="Update Service Operation Status">
       <bpmn:extensionElements>
         <camunda:connector>
           <camunda:inputOutput>
@@ -28,7 +15,7 @@ csi.prepareCompletionRequest(execution)</bpmn:script>
             <camunda:inputParameter name="headers">
               <camunda:map>
                 <camunda:entry key="content-type">application/soap+xml</camunda:entry>
-                <camunda:entry key="Authorization">${UrnPropertiesReader.getVariable("mso.adapters.requestDb.auth", execution)}</camunda:entry>
+                <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry>
               </camunda:map>
             </camunda:inputParameter>
             <camunda:inputParameter name="payload">${updateOperationStatus}</camunda:inputParameter>
@@ -39,65 +26,95 @@ csi.prepareCompletionRequest(execution)</bpmn:script>
           <camunda:connectorId>http-connector</camunda:connectorId>
         </camunda:connector>
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0pzts4p</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0ozefu5</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_1ox6oh6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0szxmyf</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:endEvent id="EndEvent_0d1g3mv">
-      <bpmn:incoming>SequenceFlow_0r611x8</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0ozefu5</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:endEvent id="EndEvent_1pujgw8">
-      <bpmn:incoming>SequenceFlow_1qa8miv</bpmn:incoming>
-      <bpmn:errorEventDefinition id="ErrorEventDefinition_17jklyl" errorRef="Error_1eyu7sx" />
-    </bpmn:endEvent>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0z7s0nx" name="IsSuccessfull">
-      <bpmn:incoming>SequenceFlow_00ba5l9</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1jp9gjt</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1qa8miv</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:callActivity id="CallActivity_1cvb0iq" name="Send command NSSMF" calledElement="DoSendCommandToNSSMF">
-      <bpmn:extensionElements>
-        <camunda:in source="nssiMap" target="nssiMap" />
-        <camunda:in source="operationType" target="operationType" />
-        <camunda:in source="NSIserviceid" target="NSIserviceid" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:out source="isNSSIActivate" target="isNSSIActivate" />
-        <camunda:in source="snssai" target="snssai" />
-        <camunda:in source="e2eserviceInstanceId" target="e2eserviceInstanceId" />
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="activationCount" target="activationCount" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1o4zjvp</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_00ba5l9</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_04p0zjj" name="Send Sync Ack Response" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1yus0c1</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1uqgdxr</bpmn:outgoing>
+    <bpmn:scriptTask id="ScriptTask_1wow08q" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1tdecf1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0bvnci8</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.preProcessRequest(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_1730kjg" name="Init Service Operation Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0bvnci8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ox6oh6</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.prepareInitServiceOperationStatus(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1tdecf1" sourceRef="StartEvent_01bdhbw" targetRef="ScriptTask_1wow08q" />
+    <bpmn:sequenceFlow id="SequenceFlow_0bvnci8" sourceRef="ScriptTask_1wow08q" targetRef="ScriptTask_1730kjg" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ox6oh6" sourceRef="ScriptTask_1730kjg" targetRef="ServiceTask_1hmtmeq" />
+    <bpmn:scriptTask id="ScriptTask_1gm0rl4" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0szxmyf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1p778c2</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def csi = new  ActivateSliceService()
 csi.sendSyncResponse(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="Task_1o8fe1v" name="check AAI Orch Status of slice" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1uqgdxr</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_149lhmo</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_0szxmyf" sourceRef="ServiceTask_1hmtmeq" targetRef="ScriptTask_1gm0rl4" />
+    <bpmn:scriptTask id="ScriptTask_1yc7wdf" name="check AAI Orch Status of e2e slice" default="SequenceFlow_0mr8oz6" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1p778c2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wrrg4v</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0mr8oz6</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def csi= new ActivateSliceService()
-csi.checkAAIOrchStatusofslice(execution)</bpmn:script>
+csi.checkAAIOrchStatusOfE2ESlice(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0fcc3uy" name="Success?">
-      <bpmn:incoming>SequenceFlow_149lhmo</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_15fdf5d</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0r611x8</bpmn:outgoing>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0nce7pi" name="Success?">
+      <bpmn:incoming>SequenceFlow_19gpkz7</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0cn6n0t</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0cs78yf</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:scriptTask id="Task_08zavab" name="PrepareActiviation" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_15fdf5d</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_144cqr9</bpmn:outgoing>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_08yipcf" name="goto prepare active">
+      <bpmn:incoming>SequenceFlow_0cn6n0t</bpmn:incoming>
+      <bpmn:linkEventDefinition name="prepareActive" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0cn6n0t" name="yes" sourceRef="ExclusiveGateway_0nce7pi" targetRef="IntermediateThrowEvent_08yipcf">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == "true"}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:scriptTask id="ScriptTask_0916zkl" name="PrepareActiviation" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_003ne6w</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1b7nvps</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def csi= new ActivateSliceService()
 csi.prepareActivation(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:serviceTask id="Task_18urz3r" name="Update Service Operation Status">
+    <bpmn:endEvent id="EndEvent_0bvm36p">
+      <bpmn:incoming>SequenceFlow_1pgjdeq</bpmn:incoming>
+      <bpmn:errorEventDefinition id="ErrorEventDefinition_1jpik0g" errorRef="Error_0l3pcnc" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_003ne6w" sourceRef="IntermediateThrowEvent_0m13l1h" targetRef="ScriptTask_0916zkl" />
+    <bpmn:callActivity id="CallActivity_06ommam" name="DoActivateSliceService" default="SequenceFlow_1pgjdeq" calledElement="DoActivateSliceService">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="isNSSIActivate" target="isNSSIActivate" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="nssInstances" target="nssInstances" />
+        <camunda:out source="nssInstances" target="nssInstances" />
+        <camunda:in source="customerInfo" target="customerInfo" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1b7nvps</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1rsr0hp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1pgjdeq</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_150j97l</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="ScriptTask_0x0emke" name="Update the status of SNSSAI and NSI " scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_194fylv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0eiek58</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.updateStatusSNSSAIandNSIandNSSI(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0032ffo" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0eiek58</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0dc8i0s</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new ActivateSliceService()
+csi.prepareCompletionRequest(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_06tcv65" name="Update Service Operation Status to Success">
       <bpmn:extensionElements>
         <camunda:connector>
           <camunda:inputOutput>
@@ -105,7 +122,7 @@ csi.prepareActivation(execution)</bpmn:script>
             <camunda:inputParameter name="headers">
               <camunda:map>
                 <camunda:entry key="content-type">application/soap+xml</camunda:entry>
-                <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry>
+                <camunda:entry key="Authorization">${UrnPropertiesReader.getVariable("mso.adapters.requestDb.auth", execution)}</camunda:entry>
               </camunda:map>
             </camunda:inputParameter>
             <camunda:inputParameter name="payload">${updateOperationStatus}</camunda:inputParameter>
@@ -116,256 +133,275 @@ csi.prepareActivation(execution)</bpmn:script>
           <camunda:connectorId>http-connector</camunda:connectorId>
         </camunda:connector>
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1av6du3</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1yus0c1</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_0dc8i0s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11u2ido</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:scriptTask id="Task_1ossedo" name="Pre Process Incoming Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0qksr1g</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_183ypky</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new ActivateSliceService()
-csi.preProcessRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_1g8cg9g" name="Any NSSI to activate?">
-      <bpmn:incoming>SequenceFlow_144cqr9</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1o4zjvp</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1pj1j1o</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:startEvent id="StartEvent_1">
-      <bpmn:outgoing>SequenceFlow_0qksr1g</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:endEvent id="EndEvent_1taw2p9">
-      <bpmn:incoming>SequenceFlow_1pj1j1o</bpmn:incoming>
-      <bpmn:errorEventDefinition id="ErrorEventDefinition_03iwehr" errorRef="Error_0l3pcnc" />
+    <bpmn:endEvent id="EndEvent_1uebh6a" name="end">
+      <bpmn:incoming>SequenceFlow_11u2ido</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0cs78yf</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:scriptTask id="Task_13zoo6a" name="Init Service Operation Status" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_183ypky</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1av6du3</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new ActivateSliceService()
-csi.prepareInitServiceOperationStatus(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:subProcess id="SubProcess_0iljxjd" name="sub process for fallouthandler and rollback" triggeredByEvent="true">
-      <bpmn:scriptTask id="Task_01ooik6" name="Send Error Response">
-        <bpmn:incoming>SequenceFlow_0oiiwjo</bpmn:incoming>
-        <bpmn:outgoing>SequenceFlow_0uckyao</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_11u2ido" sourceRef="ServiceTask_06tcv65" targetRef="EndEvent_1uebh6a" />
+    <bpmn:subProcess id="SubProcess_1s80wtc" name="sub process for fallouthandler and rollback" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0pv8gip" name="Send Error Response">
+        <bpmn:incoming>SequenceFlow_16jz1l6</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_097vxbl</bpmn:outgoing>
         <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def csi= new ActivateSliceService()
 csi.sendSyncError(execution)</bpmn:script>
       </bpmn:scriptTask>
-      <bpmn:endEvent id="EndEvent_1wd8iqk">
-        <bpmn:incoming>SequenceFlow_0uckyao</bpmn:incoming>
+      <bpmn:endEvent id="EndEvent_0yy0a8r">
+        <bpmn:incoming>SequenceFlow_097vxbl</bpmn:incoming>
       </bpmn:endEvent>
-      <bpmn:startEvent id="StartEvent_0hmwdqq">
-        <bpmn:outgoing>SequenceFlow_0oiiwjo</bpmn:outgoing>
-        <bpmn:errorEventDefinition id="ErrorEventDefinition_1il80ww" />
+      <bpmn:startEvent id="StartEvent_1a9lxvc">
+        <bpmn:outgoing>SequenceFlow_16jz1l6</bpmn:outgoing>
+        <bpmn:errorEventDefinition id="ErrorEventDefinition_00r6zey" />
       </bpmn:startEvent>
-      <bpmn:sequenceFlow id="SequenceFlow_0oiiwjo" sourceRef="StartEvent_0hmwdqq" targetRef="Task_01ooik6" />
-      <bpmn:sequenceFlow id="SequenceFlow_0uckyao" sourceRef="Task_01ooik6" targetRef="EndEvent_1wd8iqk" />
+      <bpmn:sequenceFlow id="SequenceFlow_097vxbl" sourceRef="ScriptTask_0pv8gip" targetRef="EndEvent_0yy0a8r" />
+      <bpmn:sequenceFlow id="SequenceFlow_16jz1l6" sourceRef="StartEvent_1a9lxvc" targetRef="ScriptTask_0pv8gip" />
     </bpmn:subProcess>
-    <bpmn:sequenceFlow id="SequenceFlow_1av6du3" sourceRef="Task_13zoo6a" targetRef="Task_18urz3r" />
-    <bpmn:sequenceFlow id="SequenceFlow_1pj1j1o" name="no" sourceRef="ExclusiveGateway_1g8cg9g" targetRef="EndEvent_1taw2p9">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivate") == "false"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0r611x8" name="NO" sourceRef="ExclusiveGateway_0fcc3uy" targetRef="EndEvent_0d1g3mv">
+    <bpmn:sequenceFlow id="SequenceFlow_0eiek58" sourceRef="ScriptTask_0x0emke" targetRef="ScriptTask_0032ffo" />
+    <bpmn:sequenceFlow id="SequenceFlow_0dc8i0s" sourceRef="ScriptTask_0032ffo" targetRef="ServiceTask_06tcv65" />
+    <bpmn:sequenceFlow id="SequenceFlow_0cs78yf" name="no" sourceRef="ExclusiveGateway_0nce7pi" targetRef="EndEvent_1uebh6a">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == "false"}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1qa8miv" name="no" sourceRef="ExclusiveGateway_0z7s0nx" targetRef="EndEvent_1pujgw8">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivate") == "false"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1jp9gjt" name="yes" sourceRef="ExclusiveGateway_0z7s0nx" targetRef="Task_1vscxgp">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivate") == "true"}</bpmn:conditionExpression>
+    <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0m13l1h" name="prepareActive">
+      <bpmn:outgoing>SequenceFlow_003ne6w</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="prepareActive" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:scriptTask id="ScriptTask_1oa27ir" name="check AAI Orch Status of NSI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1wrrg4v</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ny9zkw</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.checkAAIOrchStatusOfAllocates(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1wrrg4v" name="continue" sourceRef="ScriptTask_1yc7wdf" targetRef="ScriptTask_1oa27ir">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == true}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_00ba5l9" sourceRef="CallActivity_1cvb0iq" targetRef="ExclusiveGateway_0z7s0nx" />
-    <bpmn:sequenceFlow id="SequenceFlow_1uqgdxr" sourceRef="ScriptTask_04p0zjj" targetRef="Task_1o8fe1v" />
-    <bpmn:sequenceFlow id="SequenceFlow_0qksr1g" sourceRef="StartEvent_1" targetRef="Task_1ossedo" />
-    <bpmn:sequenceFlow id="SequenceFlow_183ypky" sourceRef="Task_1ossedo" targetRef="Task_13zoo6a" />
-    <bpmn:sequenceFlow id="SequenceFlow_1yus0c1" sourceRef="Task_18urz3r" targetRef="ScriptTask_04p0zjj" />
-    <bpmn:sequenceFlow id="SequenceFlow_149lhmo" sourceRef="Task_1o8fe1v" targetRef="ExclusiveGateway_0fcc3uy" />
-    <bpmn:sequenceFlow id="SequenceFlow_15fdf5d" name="yes" sourceRef="ExclusiveGateway_0fcc3uy" targetRef="Task_08zavab">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == "true"}</bpmn:conditionExpression>
+    <bpmn:endEvent id="EndEvent_0n9enas" name="already operate so end">
+      <bpmn:incoming>SequenceFlow_0mr8oz6</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0mr8oz6" sourceRef="ScriptTask_1yc7wdf" targetRef="EndEvent_0n9enas" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ny9zkw" sourceRef="ScriptTask_1oa27ir" targetRef="Task_14srbts" />
+    <bpmn:sequenceFlow id="SequenceFlow_19gpkz7" sourceRef="Task_14srbts" targetRef="ExclusiveGateway_0nce7pi" />
+    <bpmn:scriptTask id="Task_14srbts" name="check AAI Orch Status of NSI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1ny9zkw</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_19gpkz7</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.checkAAIOrchStatusOfNSI(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1b7nvps" sourceRef="ScriptTask_0916zkl" targetRef="CallActivity_06ommam" />
+    <bpmn:sequenceFlow id="SequenceFlow_1pgjdeq" sourceRef="CallActivity_06ommam" targetRef="EndEvent_0bvm36p" />
+    <bpmn:sequenceFlow id="SequenceFlow_150j97l" sourceRef="CallActivity_06ommam" targetRef="Task_0gu3dv6">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("WorkflowException") == null}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_144cqr9" sourceRef="Task_08zavab" targetRef="ExclusiveGateway_1g8cg9g" />
-    <bpmn:sequenceFlow id="SequenceFlow_1o4zjvp" name="yes" sourceRef="ExclusiveGateway_1g8cg9g" targetRef="CallActivity_1cvb0iq">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivate") == "true"}</bpmn:conditionExpression>
+    <bpmn:sequenceFlow id="SequenceFlow_194fylv" sourceRef="Task_0gu3dv6" targetRef="ScriptTask_0x0emke">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isOperationFinished") == "true"}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1gkpl5q" sourceRef="Task_1vscxgp" targetRef="ScriptTask_0cbth6k" />
-    <bpmn:sequenceFlow id="SequenceFlow_0pzts4p" sourceRef="ScriptTask_0cbth6k" targetRef="ServiceTask_1aymwlt" />
-    <bpmn:sequenceFlow id="SequenceFlow_0ozefu5" sourceRef="ServiceTask_1aymwlt" targetRef="EndEvent_0d1g3mv" />
+    <bpmn:sequenceFlow id="SequenceFlow_1rsr0hp" sourceRef="Task_0gu3dv6" targetRef="CallActivity_06ommam" />
+    <bpmn:scriptTask id="Task_0gu3dv6" name="isOperationFinished&#10;" default="SequenceFlow_1rsr0hp" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_150j97l</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_194fylv</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1rsr0hp</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.isOperationFinished(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1p778c2" sourceRef="ScriptTask_1gm0rl4" targetRef="ScriptTask_1yc7wdf" />
   </bpmn:process>
-  <bpmn:error id="Error_0vq6f5h" name="Error_3ai5jm1" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0htncd8">
-      <bpmndi:BPMNShape id="Participant_1x12pgg_di" bpmnElement="ActivateSliceService01" isHorizontal="true">
-        <dc:Bounds x="160" y="120" width="2290" height="990" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="SubProcess_1qw5nm4_di" bpmnElement="SubProcess_0iljxjd" isExpanded="true">
-        <dc:Bounds x="935" y="680" width="810" height="180" />
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ActivateSliceService">
+      <bpmndi:BPMNShape id="StartEvent_01bdhbw_di" bpmnElement="StartEvent_01bdhbw">
+        <dc:Bounds x="172" y="72" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="179" y="115" width="23" height="14" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1azew71_di" bpmnElement="Task_01ooik6">
-        <dc:Bounds x="1255" y="720" width="100" height="80" />
+      <bpmndi:BPMNShape id="ServiceTask_1hmtmeq_di" bpmnElement="ServiceTask_1hmtmeq">
+        <dc:Bounds x="550" y="50" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_1wd8iqk_di" bpmnElement="EndEvent_1wd8iqk">
-        <dc:Bounds x="1492" y="742" width="36" height="36" />
+      <bpmndi:BPMNShape id="ScriptTask_1wow08q_di" bpmnElement="ScriptTask_1wow08q">
+        <dc:Bounds x="250" y="50" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="StartEvent_0hmwdqq_di" bpmnElement="StartEvent_0hmwdqq">
-        <dc:Bounds x="1042" y="742" width="36" height="36" />
+      <bpmndi:BPMNShape id="ScriptTask_1730kjg_di" bpmnElement="ScriptTask_1730kjg">
+        <dc:Bounds x="390" y="50" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0oiiwjo_di" bpmnElement="SequenceFlow_0oiiwjo">
-        <di:waypoint x="1078" y="760" />
-        <di:waypoint x="1255" y="760" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1tdecf1_di" bpmnElement="SequenceFlow_1tdecf1">
+        <di:waypoint x="208" y="90" />
+        <di:waypoint x="250" y="90" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0uckyao_di" bpmnElement="SequenceFlow_0uckyao">
-        <di:waypoint x="1355" y="760" />
-        <di:waypoint x="1492" y="760" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0bvnci8_di" bpmnElement="SequenceFlow_0bvnci8">
+        <di:waypoint x="350" y="90" />
+        <di:waypoint x="390" y="90" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1lb7w6u_di" bpmnElement="Task_1vscxgp">
-        <dc:Bounds x="1670" y="310" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0d1g3mv_di" bpmnElement="EndEvent_0d1g3mv">
-        <dc:Bounds x="2212" y="332" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_1pujgw8_di" bpmnElement="EndEvent_1pujgw8">
-        <dc:Bounds x="1462" y="422" width="36" height="36" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1ox6oh6_di" bpmnElement="SequenceFlow_1ox6oh6">
+        <di:waypoint x="490" y="90" />
+        <di:waypoint x="550" y="90" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gm0rl4_di" bpmnElement="ScriptTask_1gm0rl4">
+        <dc:Bounds x="690" y="50" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0cbth6k_di" bpmnElement="ScriptTask_0cbth6k">
-        <dc:Bounds x="1860" y="310" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0szxmyf_di" bpmnElement="SequenceFlow_0szxmyf">
+        <di:waypoint x="650" y="90" />
+        <di:waypoint x="690" y="90" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1yc7wdf_di" bpmnElement="ScriptTask_1yc7wdf">
+        <dc:Bounds x="840" y="50" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0z7s0nx_di" bpmnElement="ExclusiveGateway_0z7s0nx" isMarkerVisible="true">
-        <dc:Bounds x="1455" y="325" width="50" height="50" />
+      <bpmndi:BPMNShape id="ExclusiveGateway_0nce7pi_di" bpmnElement="ExclusiveGateway_0nce7pi" isMarkerVisible="true">
+        <dc:Bounds x="1315" y="65" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1449" y="313" width="65" height="14" />
+          <dc:Bounds x="1347" y="55" width="48" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_1cvb0iq_di" bpmnElement="CallActivity_1cvb0iq">
-        <dc:Bounds x="1290" y="310" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_04p0zjj_di" bpmnElement="ScriptTask_04p0zjj">
-        <dc:Bounds x="695" y="310" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1nsbn4r_di" bpmnElement="Task_1o8fe1v">
-        <dc:Bounds x="850" y="310" width="100" height="80" />
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_10d4tak_di" bpmnElement="IntermediateThrowEvent_08yipcf">
+        <dc:Bounds x="1432" y="72" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1422" y="115" width="63" height="27" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0fcc3uy_di" bpmnElement="ExclusiveGateway_0fcc3uy" isMarkerVisible="true">
-        <dc:Bounds x="975" y="325" width="50" height="50" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0cn6n0t_di" bpmnElement="SequenceFlow_0cn6n0t">
+        <di:waypoint x="1365" y="90" />
+        <di:waypoint x="1432" y="90" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1006" y="315" width="49" height="14" />
+          <dc:Bounds x="1390" y="72" width="17" height="14" />
         </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0916zkl_di" bpmnElement="ScriptTask_0916zkl">
+        <dc:Bounds x="250" y="390" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0g9vipz_di" bpmnElement="Task_08zavab">
-        <dc:Bounds x="1060" y="310" width="100" height="80" />
+      <bpmndi:BPMNShape id="EndEvent_0bvm36p_di" bpmnElement="EndEvent_0bvm36p">
+        <dc:Bounds x="522" y="532" width="36" height="36" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ServiceTask_1tv1ow6_di" bpmnElement="Task_18urz3r">
-        <dc:Bounds x="540" y="310" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_003ne6w_di" bpmnElement="SequenceFlow_003ne6w">
+        <di:waypoint x="208" y="430" />
+        <di:waypoint x="250" y="430" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_06ommam_di" bpmnElement="CallActivity_06ommam">
+        <dc:Bounds x="490" y="390" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0tam79l_di" bpmnElement="Task_1ossedo">
-        <dc:Bounds x="290" y="310" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_0x0emke_di" bpmnElement="ScriptTask_0x0emke">
+        <dc:Bounds x="920" y="390" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_1g8cg9g_di" bpmnElement="ExclusiveGateway_1g8cg9g" isMarkerVisible="true">
-        <dc:Bounds x="1195" y="325" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1141" y="406" width="58" height="27" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNShape id="ScriptTask_0032ffo_di" bpmnElement="ScriptTask_0032ffo">
+        <dc:Bounds x="1120" y="390" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="212" y="332" width="36" height="36" />
+      <bpmndi:BPMNShape id="ServiceTask_06tcv65_di" bpmnElement="ServiceTask_06tcv65">
+        <dc:Bounds x="1270" y="390" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1o4zjvp_di" bpmnElement="SequenceFlow_1o4zjvp">
-        <di:waypoint x="1220" y="350" />
-        <di:waypoint x="1290" y="350" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1251" y="332" width="18" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_144cqr9_di" bpmnElement="SequenceFlow_144cqr9">
-        <di:waypoint x="1160" y="350" />
-        <di:waypoint x="1195" y="350" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_15fdf5d_di" bpmnElement="SequenceFlow_15fdf5d">
-        <di:waypoint x="1025" y="350" />
-        <di:waypoint x="1060" y="350" />
+      <bpmndi:BPMNShape id="EndEvent_1uebh6a_di" bpmnElement="EndEvent_1uebh6a">
+        <dc:Bounds x="1422" y="412" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1034" y="332" width="18" height="14" />
+          <dc:Bounds x="1431" y="455" width="19" height="14" />
         </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11u2ido_di" bpmnElement="SequenceFlow_11u2ido">
+        <di:waypoint x="1370" y="430" />
+        <di:waypoint x="1422" y="430" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_149lhmo_di" bpmnElement="SequenceFlow_149lhmo">
-        <di:waypoint x="950" y="350" />
-        <di:waypoint x="975" y="350" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1yus0c1_di" bpmnElement="SequenceFlow_1yus0c1">
-        <di:waypoint x="640" y="350" />
-        <di:waypoint x="695" y="350" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_183ypky_di" bpmnElement="SequenceFlow_183ypky">
-        <di:waypoint x="390" y="350" />
-        <di:waypoint x="420" y="350" />
+      <bpmndi:BPMNShape id="SubProcess_1s80wtc_di" bpmnElement="SubProcess_1s80wtc" isExpanded="true">
+        <dc:Bounds x="410" y="700" width="810" height="180" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0pv8gip_di" bpmnElement="ScriptTask_0pv8gip">
+        <dc:Bounds x="730" y="740" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0yy0a8r_di" bpmnElement="EndEvent_0yy0a8r">
+        <dc:Bounds x="967" y="762" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1a9lxvc_di" bpmnElement="StartEvent_1a9lxvc">
+        <dc:Bounds x="517" y="762" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_097vxbl_di" bpmnElement="SequenceFlow_097vxbl">
+        <di:waypoint x="830" y="780" />
+        <di:waypoint x="967" y="780" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0qksr1g_di" bpmnElement="SequenceFlow_0qksr1g">
-        <di:waypoint x="248" y="350" />
-        <di:waypoint x="290" y="350" />
+      <bpmndi:BPMNEdge id="SequenceFlow_16jz1l6_di" bpmnElement="SequenceFlow_16jz1l6">
+        <di:waypoint x="553" y="780" />
+        <di:waypoint x="730" y="780" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1uqgdxr_di" bpmnElement="SequenceFlow_1uqgdxr">
-        <di:waypoint x="795" y="350" />
-        <di:waypoint x="850" y="350" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0eiek58_di" bpmnElement="SequenceFlow_0eiek58">
+        <di:waypoint x="1020" y="430" />
+        <di:waypoint x="1120" y="430" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_00ba5l9_di" bpmnElement="SequenceFlow_00ba5l9">
-        <di:waypoint x="1390" y="350" />
-        <di:waypoint x="1455" y="350" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0dc8i0s_di" bpmnElement="SequenceFlow_0dc8i0s">
+        <di:waypoint x="1220" y="430" />
+        <di:waypoint x="1270" y="430" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1jp9gjt_di" bpmnElement="SequenceFlow_1jp9gjt">
-        <di:waypoint x="1505" y="350" />
-        <di:waypoint x="1670" y="350" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0cs78yf_di" bpmnElement="SequenceFlow_0cs78yf">
+        <di:waypoint x="1340" y="115" />
+        <di:waypoint x="1340" y="170" />
+        <di:waypoint x="1440" y="170" />
+        <di:waypoint x="1440" y="412" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1596" y="332" width="18" height="14" />
+          <dc:Bounds x="1384" y="152" width="13" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1qa8miv_di" bpmnElement="SequenceFlow_1qa8miv">
-        <di:waypoint x="1480" y="375" />
-        <di:waypoint x="1480" y="422" />
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1vye481_di" bpmnElement="IntermediateThrowEvent_0m13l1h">
+        <dc:Bounds x="172" y="412" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1489" y="383" width="12" height="14" />
+          <dc:Bounds x="156" y="455" width="68" height="14" />
         </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0r611x8_di" bpmnElement="SequenceFlow_0r611x8">
-        <di:waypoint x="1000" y="375" />
-        <di:waypoint x="1000" y="500" />
-        <di:waypoint x="2230" y="500" />
-        <di:waypoint x="2230" y="368" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1oa27ir_di" bpmnElement="ScriptTask_1oa27ir">
+        <dc:Bounds x="1000" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wrrg4v_di" bpmnElement="SequenceFlow_1wrrg4v">
+        <di:waypoint x="940" y="90" />
+        <di:waypoint x="1000" y="90" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1608" y="482" width="15" height="14" />
+          <dc:Bounds x="950" y="72" width="42" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1pj1j1o_di" bpmnElement="SequenceFlow_1pj1j1o">
-        <di:waypoint x="1220" y="375" />
-        <di:waypoint x="1220" y="422" />
+      <bpmndi:BPMNShape id="EndEvent_0n9enas_di" bpmnElement="EndEvent_0n9enas">
+        <dc:Bounds x="872" y="182" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1199" y="378" width="12" height="14" />
+          <dc:Bounds x="855" y="225" width="77" height="27" />
         </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_1taw2p9_di" bpmnElement="EndEvent_1taw2p9">
-        <dc:Bounds x="1202" y="422" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0uwsu46_di" bpmnElement="Task_13zoo6a">
-        <dc:Bounds x="420" y="310" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1av6du3_di" bpmnElement="SequenceFlow_1av6du3">
-        <di:waypoint x="520" y="350" />
-        <di:waypoint x="540" y="350" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0mr8oz6_di" bpmnElement="SequenceFlow_0mr8oz6">
+        <di:waypoint x="890" y="130" />
+        <di:waypoint x="890" y="182" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_1aymwlt_di" bpmnElement="ServiceTask_1aymwlt">
-        <dc:Bounds x="2020" y="310" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1ny9zkw_di" bpmnElement="SequenceFlow_1ny9zkw">
+        <di:waypoint x="1100" y="90" />
+        <di:waypoint x="1170" y="90" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19gpkz7_di" bpmnElement="SequenceFlow_19gpkz7">
+        <di:waypoint x="1270" y="90" />
+        <di:waypoint x="1315" y="90" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0tmggtr_di" bpmnElement="Task_14srbts">
+        <dc:Bounds x="1170" y="50" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ozefu5_di" bpmnElement="SequenceFlow_0ozefu5">
-        <di:waypoint x="2120" y="350" />
-        <di:waypoint x="2212" y="350" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1b7nvps_di" bpmnElement="SequenceFlow_1b7nvps">
+        <di:waypoint x="350" y="430" />
+        <di:waypoint x="490" y="430" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pgjdeq_di" bpmnElement="SequenceFlow_1pgjdeq">
+        <di:waypoint x="540" y="470" />
+        <di:waypoint x="540" y="532" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0pzts4p_di" bpmnElement="SequenceFlow_0pzts4p">
-        <di:waypoint x="1960" y="350" />
-        <di:waypoint x="2020" y="350" />
+      <bpmndi:BPMNEdge id="SequenceFlow_150j97l_di" bpmnElement="SequenceFlow_150j97l">
+        <di:waypoint x="590" y="430" />
+        <di:waypoint x="710" y="430" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1gkpl5q_di" bpmnElement="SequenceFlow_1gkpl5q">
-        <di:waypoint x="1770" y="350" />
-        <di:waypoint x="1860" y="350" />
+      <bpmndi:BPMNEdge id="SequenceFlow_194fylv_di" bpmnElement="SequenceFlow_194fylv">
+        <di:waypoint x="810" y="430" />
+        <di:waypoint x="920" y="430" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rsr0hp_di" bpmnElement="SequenceFlow_1rsr0hp">
+        <di:waypoint x="760" y="390" />
+        <di:waypoint x="760" y="300" />
+        <di:waypoint x="540" y="300" />
+        <di:waypoint x="540" y="390" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0i2gnhv_di" bpmnElement="Task_0gu3dv6">
+        <dc:Bounds x="710" y="390" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1p778c2_di" bpmnElement="SequenceFlow_1p778c2">
+        <di:waypoint x="790" y="90" />
+        <di:waypoint x="840" y="90" />
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateSliceService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateSliceService.bpmn
new file mode 100644 (file)
index 0000000..ca231b3
--- /dev/null
@@ -0,0 +1,211 @@
+<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" 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="Definitions_13dsy4w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
+  <bpmn:error id="Error_08p7hsc" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn:process id="DoActivateSliceService" name="DoActivateSliceService" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_0s4ou5u" name="Start">
+      <bpmn:outgoing>SequenceFlow_13fdjwf</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="ScriptTask_1774fcg" name="Preprocess Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_13fdjwf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lh6vpe</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.preProcessRequest(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_13fdjwf" sourceRef="StartEvent_0s4ou5u" targetRef="ScriptTask_1774fcg" />
+    <bpmn:callActivity id="CallActivity_1ba0boc" name="Call Decompose Service" calledElement="DecomposeService">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="nssInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="serviceDecompositionString" target="serviceDecompositionString" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1yqrli6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ru5d0h</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="ScriptTask_0vhhyt1" name="processDecomposition" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0ru5d0h</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0so165e</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.processDecomposition(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_17x7ifp" name="SendCommandToNssmf" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0so165e</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_05wxhwm</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.sendCreateRequestNSSMF(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0ru5d0h" sourceRef="CallActivity_1ba0boc" targetRef="ScriptTask_0vhhyt1" />
+    <bpmn:sequenceFlow id="SequenceFlow_0so165e" sourceRef="ScriptTask_0vhhyt1" targetRef="ScriptTask_17x7ifp" />
+    <bpmn:sequenceFlow id="SequenceFlow_1lh6vpe" sourceRef="ScriptTask_1774fcg" targetRef="Task_0sjhszu" />
+    <bpmn:sequenceFlow id="SequenceFlow_1yqrli6" sourceRef="Task_0sjhszu" targetRef="CallActivity_1ba0boc" />
+    <bpmn:scriptTask id="Task_0sjhszu" name="Prepare Compose&#10;" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1lh6vpe</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1yqrli6</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.prepareCompose(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_00sf7s2" name="Query NSSI progress from adapter" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0oa5clt</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_05wxhwm</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1herzai</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.queryNSSIStatus(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0z3hxio" name="Completed" default="SequenceFlow_0btrzm8">
+      <bpmn:incoming>SequenceFlow_1herzai</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0btrzm8</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1lvozh0</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_1mivpop" name="end">
+      <bpmn:incoming>SequenceFlow_1lvozh0</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1lpgplr" name="Time delay" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0btrzm8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0oa5clt</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.timeDelay(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0oa5clt" sourceRef="ScriptTask_1lpgplr" targetRef="ScriptTask_00sf7s2" />
+    <bpmn:sequenceFlow id="SequenceFlow_1herzai" sourceRef="ScriptTask_00sf7s2" targetRef="ExclusiveGateway_0z3hxio" />
+    <bpmn:sequenceFlow id="SequenceFlow_0btrzm8" name="false" sourceRef="ExclusiveGateway_0z3hxio" targetRef="ScriptTask_1lpgplr" />
+    <bpmn:sequenceFlow id="SequenceFlow_1lvozh0" name="yes" sourceRef="ExclusiveGateway_0z3hxio" targetRef="EndEvent_1mivpop">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("jobFinished" )  == true)}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_05wxhwm" sourceRef="ScriptTask_17x7ifp" targetRef="ScriptTask_00sf7s2" />
+    <bpmn:subProcess id="SubProcess_0bkr0v1" name="sub process for fallouthandler and rollback" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0g7e26e">
+        <bpmn:outgoing>SequenceFlow_0ca8iyv</bpmn:outgoing>
+        <bpmn:errorEventDefinition id="ErrorEventDefinition_1cir65m" />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_14z3xck">
+        <bpmn:incoming>SequenceFlow_0aqapur</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_1gitk4f" name="Send Error Response" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0ca8iyv</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0aqapur</bpmn:outgoing>
+        <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.sendSyncError(execution)</bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0aqapur" sourceRef="ScriptTask_1gitk4f" targetRef="EndEvent_14z3xck" />
+      <bpmn:sequenceFlow id="SequenceFlow_0ca8iyv" sourceRef="StartEvent_0g7e26e" targetRef="ScriptTask_1gitk4f" />
+    </bpmn:subProcess>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoActivateSliceService">
+      <bpmndi:BPMNShape id="StartEvent_0s4ou5u_di" bpmnElement="StartEvent_0s4ou5u">
+        <dc:Bounds x="152" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="158" y="145" width="25" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1774fcg_di" bpmnElement="ScriptTask_1774fcg">
+        <dc:Bounds x="220" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13fdjwf_di" bpmnElement="SequenceFlow_13fdjwf">
+        <di:waypoint x="188" y="120" />
+        <di:waypoint x="220" y="120" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1ba0boc_di" bpmnElement="CallActivity_1ba0boc">
+        <dc:Bounds x="520" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0vhhyt1_di" bpmnElement="ScriptTask_0vhhyt1">
+        <dc:Bounds x="660" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_17x7ifp_di" bpmnElement="ScriptTask_17x7ifp">
+        <dc:Bounds x="810" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ru5d0h_di" bpmnElement="SequenceFlow_0ru5d0h">
+        <di:waypoint x="620" y="120" />
+        <di:waypoint x="660" y="120" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0so165e_di" bpmnElement="SequenceFlow_0so165e">
+        <di:waypoint x="760" y="120" />
+        <di:waypoint x="810" y="120" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lh6vpe_di" bpmnElement="SequenceFlow_1lh6vpe">
+        <di:waypoint x="320" y="120" />
+        <di:waypoint x="360" y="120" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yqrli6_di" bpmnElement="SequenceFlow_1yqrli6">
+        <di:waypoint x="460" y="120" />
+        <di:waypoint x="520" y="120" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1mfr1lo_di" bpmnElement="Task_0sjhszu">
+        <dc:Bounds x="360" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_00sf7s2_di" bpmnElement="ScriptTask_00sf7s2">
+        <dc:Bounds x="960" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0z3hxio_di" bpmnElement="ExclusiveGateway_0z3hxio" isMarkerVisible="true">
+        <dc:Bounds x="1125" y="95" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1123" y="71" width="54" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1mivpop_di" bpmnElement="EndEvent_1mivpop">
+        <dc:Bounds x="1292" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1301" y="145" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1lpgplr_di" bpmnElement="ScriptTask_1lpgplr">
+        <dc:Bounds x="1100" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0oa5clt_di" bpmnElement="SequenceFlow_0oa5clt">
+        <di:waypoint x="1100" y="300" />
+        <di:waypoint x="1010" y="300" />
+        <di:waypoint x="1010" y="160" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1herzai_di" bpmnElement="SequenceFlow_1herzai">
+        <di:waypoint x="1060" y="120" />
+        <di:waypoint x="1125" y="120" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0btrzm8_di" bpmnElement="SequenceFlow_0btrzm8">
+        <di:waypoint x="1150" y="145" />
+        <di:waypoint x="1150" y="260" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1126" y="205" width="23" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lvozh0_di" bpmnElement="SequenceFlow_1lvozh0">
+        <di:waypoint x="1175" y="120" />
+        <di:waypoint x="1292" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1226" y="133" width="17" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05wxhwm_di" bpmnElement="SequenceFlow_05wxhwm">
+        <di:waypoint x="910" y="120" />
+        <di:waypoint x="960" y="120" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0bkr0v1_di" bpmnElement="SubProcess_0bkr0v1" isExpanded="true">
+        <dc:Bounds x="240" y="420" width="810" height="180" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0g7e26e_di" bpmnElement="StartEvent_0g7e26e">
+        <dc:Bounds x="347" y="482" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_14z3xck_di" bpmnElement="EndEvent_14z3xck">
+        <dc:Bounds x="797" y="482" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1gitk4f_di" bpmnElement="ScriptTask_1gitk4f">
+        <dc:Bounds x="560" y="460" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0aqapur_di" bpmnElement="SequenceFlow_0aqapur">
+        <di:waypoint x="660" y="500" />
+        <di:waypoint x="797" y="500" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ca8iyv_di" bpmnElement="SequenceFlow_0ca8iyv">
+        <di:waypoint x="383" y="500" />
+        <di:waypoint x="560" y="500" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoSendCommandToNSSMF.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoSendCommandToNSSMF.bpmn
deleted file mode 100644 (file)
index 4f12ca7..0000000
+++ /dev/null
@@ -1,344 +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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_13dsy4w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
-  <bpmn:collaboration id="Collaboration_0htncd8">
-    <bpmn:participant id="DoSendCommandToNSSMF01" name="DoSendCommandToNSSMF" processRef="DoSendCommandToNSSMF" />
-  </bpmn:collaboration>
-  <bpmn:process id="DoSendCommandToNSSMF" name="DoSendCommandToNSSMF" isExecutable="true">
-    <bpmn:scriptTask id="Task_0qx12sa" name="Get one NSSI info from list" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0umnozs</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1vuuuhr</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1ea3pk8</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.getNSSIformlist(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_18qkm4u" name="Activation completed?">
-      <bpmn:incoming>SequenceFlow_1yjsv5s</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1qxmooy</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1lh0it1</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0swcqw8</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_07yenxg" name="Get successful?">
-      <bpmn:incoming>SequenceFlow_1ea3pk8</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_080lgb0</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1oi86yc</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1vuuuhr" sourceRef="ServiceTask_0myj742" targetRef="Task_0qx12sa" />
-    <bpmn:sequenceFlow id="SequenceFlow_1oeexsj" sourceRef="Task_1a9qxuo" targetRef="ServiceTask_0myj742" />
-    <bpmn:sequenceFlow id="SequenceFlow_1ea3pk8" sourceRef="Task_0qx12sa" targetRef="ExclusiveGateway_07yenxg" />
-    <bpmn:sequenceFlow id="SequenceFlow_1yjsv5s" sourceRef="Task_1y09kt4" targetRef="ExclusiveGateway_18qkm4u" />
-    <bpmn:sequenceFlow id="SequenceFlow_0swcqw8" name="waitting" sourceRef="ExclusiveGateway_18qkm4u" targetRef="Task_08qjojj">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isActivateSuccessfull") == "waitting"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1lh0it1" name="no" sourceRef="ExclusiveGateway_18qkm4u" targetRef="EndEvent_0k52g73">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isActivateSuccessfull") == "false"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1qxmooy" name="yes" sourceRef="ExclusiveGateway_18qkm4u" targetRef="Task_1a9qxuo">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isActivateSuccessfull") == "true"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_080lgb0" name="yes" sourceRef="ExclusiveGateway_07yenxg" targetRef="CallActivity_0018jhc">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isGetSuccessfull") == "true"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_08xfw41" sourceRef="Task_0xfp2r8" targetRef="ExclusiveGateway_0ljwjfh" />
-    <bpmn:sequenceFlow id="SequenceFlow_1s2oozd" name="yes" sourceRef="ExclusiveGateway_0ljwjfh" targetRef="Task_08qjojj">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivated") == "true"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_020xvv4" name="no" sourceRef="ExclusiveGateway_0ljwjfh" targetRef="EndEvent_0k52g73">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivated") == "false"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_10162l8" sourceRef="Task_08qjojj" targetRef="Task_1y09kt4" />
-    <bpmn:sequenceFlow id="SequenceFlow_1pfo460" sourceRef="StartEvent_1" targetRef="ScriptTask_1otgwej" />
-    <bpmn:sequenceFlow id="SequenceFlow_1oi86yc" name="no" sourceRef="ExclusiveGateway_07yenxg" targetRef="EndEvent_0d1g3mv">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isGetSuccessfull") == "false"}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:endEvent id="EndEvent_0d1g3mv">
-      <bpmn:incoming>SequenceFlow_1oi86yc</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:startEvent id="StartEvent_1">
-      <bpmn:outgoing>SequenceFlow_1pfo460</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:scriptTask id="ScriptTask_1otgwej" name="Preprocess Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1pfo460</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0umnozs</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoSendCommandToNSSMF()
-dcso.preProcessRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:subProcess id="SubProcess_0iljxjd" name="sub process for fallouthandler and rollback" triggeredByEvent="true">
-      <bpmn:startEvent id="StartEvent_0hmwdqq">
-        <bpmn:outgoing>SequenceFlow_0oiiwjo</bpmn:outgoing>
-        <bpmn:errorEventDefinition id="ErrorEventDefinition_1il80ww" />
-      </bpmn:startEvent>
-      <bpmn:endEvent id="EndEvent_1wd8iqk">
-        <bpmn:incoming>SequenceFlow_0uckyao</bpmn:incoming>
-      </bpmn:endEvent>
-      <bpmn:sequenceFlow id="SequenceFlow_0oiiwjo" sourceRef="StartEvent_0hmwdqq" targetRef="Task_01ooik6" />
-      <bpmn:sequenceFlow id="SequenceFlow_0uckyao" sourceRef="Task_01ooik6" targetRef="EndEvent_1wd8iqk" />
-      <bpmn:scriptTask id="Task_01ooik6" name="Send Error Response" scriptFormat="groovy">
-        <bpmn:incoming>SequenceFlow_0oiiwjo</bpmn:incoming>
-        <bpmn:outgoing>SequenceFlow_0uckyao</bpmn:outgoing>
-        <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.sendSyncError(execution)</bpmn:script>
-      </bpmn:scriptTask>
-    </bpmn:subProcess>
-    <bpmn:sequenceFlow id="SequenceFlow_0umnozs" sourceRef="ScriptTask_1otgwej" targetRef="Task_0qx12sa" />
-    <bpmn:sequenceFlow id="SequenceFlow_1ucjcm1" sourceRef="CallActivity_0018jhc" targetRef="ScriptTask_0q7is68" />
-    <bpmn:endEvent id="EndEvent_0k52g73">
-      <bpmn:incoming>SequenceFlow_020xvv4</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1lh0it1</bpmn:incoming>
-      <bpmn:errorEventDefinition id="ErrorEventDefinition_0fypnen" errorRef="Error_08p7hsc" />
-    </bpmn:endEvent>
-    <bpmn:scriptTask id="Task_08qjojj" name="wait for Return" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1s2oozd</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0swcqw8</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_10162l8</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.WaitForReturn(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="Task_1y09kt4" name="Get the activation status" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_10162l8</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1yjsv5s</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.GetTheStatusOfActivation(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0ljwjfh" name="Activation successful?">
-      <bpmn:incoming>SequenceFlow_08xfw41</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1s2oozd</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_020xvv4</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:scriptTask id="Task_0xfp2r8" name="SendCommandToNssmf" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1a6iu8c</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_08xfw41</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.SendCommandToNssmf(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:callActivity id="CallActivity_0018jhc" name="Call Decompose Service" calledElement="DecomposeService">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="nssiId" target="serviceInstanceId" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
-        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
-        <camunda:out source="serviceDecompositionString" target="serviceDecompositionString" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_080lgb0</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1ucjcm1</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_0q7is68" name="processDecomposition" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1ucjcm1</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1a6iu8c</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.processDecomposition(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1a6iu8c" sourceRef="ScriptTask_0q7is68" targetRef="Task_0xfp2r8" />
-    <bpmn:serviceTask id="ServiceTask_0myj742" name="Update Service Operation Status">
-      <bpmn:extensionElements>
-        <camunda:connector>
-          <camunda:inputOutput>
-            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
-            <camunda:inputParameter name="headers">
-              <camunda:map>
-                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
-                <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry>
-              </camunda:map>
-            </camunda:inputParameter>
-            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
-            <camunda:inputParameter name="method">POST</camunda:inputParameter>
-            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
-            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
-          </camunda:inputOutput>
-          <camunda:connectorId>http-connector</camunda:connectorId>
-        </camunda:connector>
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1oeexsj</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1vuuuhr</bpmn:outgoing>
-    </bpmn:serviceTask>
-    <bpmn:scriptTask id="Task_1a9qxuo" name="Update Index" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1qxmooy</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1oeexsj</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.UpdateIndex(execution)</bpmn:script>
-    </bpmn:scriptTask>
-  </bpmn:process>
-  <bpmn:error id="Error_08p7hsc" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0htncd8">
-      <bpmndi:BPMNShape id="Participant_1x12pgg_di" bpmnElement="DoSendCommandToNSSMF01" isHorizontal="true">
-        <dc:Bounds x="160" y="60" width="2080" height="1000" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0d1g3mv_di" bpmnElement="EndEvent_0d1g3mv">
-        <dc:Bounds x="1642" y="302" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="262" y="302" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0uckyao_di" bpmnElement="SequenceFlow_0uckyao">
-        <di:waypoint x="1120" y="860" />
-        <di:waypoint x="1257" y="860" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0oiiwjo_di" bpmnElement="SequenceFlow_0oiiwjo">
-        <di:waypoint x="843" y="860" />
-        <di:waypoint x="1020" y="860" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="StartEvent_0hmwdqq_di" bpmnElement="StartEvent_0hmwdqq">
-        <dc:Bounds x="807" y="842" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_1wd8iqk_di" bpmnElement="EndEvent_1wd8iqk">
-        <dc:Bounds x="1257" y="842" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0s82iw4_di" bpmnElement="Task_0xfp2r8">
-        <dc:Bounds x="1230" y="280" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_18qkm4u_di" bpmnElement="ExclusiveGateway_18qkm4u" isMarkerVisible="true">
-        <dc:Bounds x="835" y="595" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="832" y="558" width="55" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ea3pk8_di" bpmnElement="SequenceFlow_1ea3pk8">
-        <di:waypoint x="770" y="320" />
-        <di:waypoint x="815" y="320" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_08xfw41_di" bpmnElement="SequenceFlow_08xfw41">
-        <di:waypoint x="1330" y="320" />
-        <di:waypoint x="1415" y="320" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1yjsv5s_di" bpmnElement="SequenceFlow_1yjsv5s">
-        <di:waypoint x="1390" y="620" />
-        <di:waypoint x="885" y="620" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0ljwjfh_di" bpmnElement="ExclusiveGateway_0ljwjfh" isMarkerVisible="true">
-        <dc:Bounds x="1415" y="295" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1412" y="265" width="60" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1s2oozd_di" bpmnElement="SequenceFlow_1s2oozd">
-        <di:waypoint x="1440" y="345" />
-        <di:waypoint x="1440" y="420" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1451" y="373" width="18" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_0k52g73_di" bpmnElement="EndEvent_0k52g73">
-        <dc:Bounds x="1532" y="302" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_020xvv4_di" bpmnElement="SequenceFlow_020xvv4">
-        <di:waypoint x="1465" y="320" />
-        <di:waypoint x="1532" y="320" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1494" y="302" width="12" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_121jfnq_di" bpmnElement="Task_0qx12sa">
-        <dc:Bounds x="670" y="280" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_07yenxg_di" bpmnElement="ExclusiveGateway_07yenxg" isMarkerVisible="true">
-        <dc:Bounds x="815" y="295" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="800" y="353" width="80" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_080lgb0_di" bpmnElement="SequenceFlow_080lgb0">
-        <di:waypoint x="865" y="320" />
-        <di:waypoint x="930" y="320" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="869" y="302" width="18" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_10162l8_di" bpmnElement="SequenceFlow_10162l8">
-        <di:waypoint x="1440" y="500" />
-        <di:waypoint x="1440" y="580" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1qxmooy_di" bpmnElement="SequenceFlow_1qxmooy">
-        <di:waypoint x="835" y="620" />
-        <di:waypoint x="770" y="620" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="813" y="623" width="18" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0aspjme_di" bpmnElement="Task_1a9qxuo">
-        <dc:Bounds x="670" y="580" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_170g0ll_di" bpmnElement="Task_08qjojj">
-        <dc:Bounds x="1390" y="420" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1meh39q_di" bpmnElement="Task_1y09kt4">
-        <dc:Bounds x="1390" y="580" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1lh0it1_di" bpmnElement="SequenceFlow_1lh0it1">
-        <di:waypoint x="860" y="645" />
-        <di:waypoint x="860" y="720" />
-        <di:waypoint x="1550" y="720" />
-        <di:waypoint x="1550" y="338" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1110" y="702" width="12" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0swcqw8_di" bpmnElement="SequenceFlow_0swcqw8">
-        <di:waypoint x="860" y="595" />
-        <di:waypoint x="860" y="460" />
-        <di:waypoint x="1390" y="460" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1067" y="443" width="38" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1oeexsj_di" bpmnElement="SequenceFlow_1oeexsj">
-        <di:waypoint x="720" y="580" />
-        <di:waypoint x="720" y="520" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_0myj742_di" bpmnElement="ServiceTask_0myj742">
-        <dc:Bounds x="670" y="440" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1vuuuhr_di" bpmnElement="SequenceFlow_1vuuuhr">
-        <di:waypoint x="720" y="440" />
-        <di:waypoint x="720" y="360" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1pfo460_di" bpmnElement="SequenceFlow_1pfo460">
-        <di:waypoint x="298" y="320" />
-        <di:waypoint x="420" y="320" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1oi86yc_di" bpmnElement="SequenceFlow_1oi86yc">
-        <di:waypoint x="840" y="295" />
-        <di:waypoint x="840" y="230" />
-        <di:waypoint x="1660" y="230" />
-        <di:waypoint x="1660" y="302" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="884" y="212" width="12" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1otgwej_di" bpmnElement="ScriptTask_1otgwej">
-        <dc:Bounds x="420" y="280" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="SubProcess_1hlwd77_di" bpmnElement="SubProcess_0iljxjd" isExpanded="true">
-        <dc:Bounds x="700" y="780" width="810" height="180" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1c5l0io_di" bpmnElement="Task_01ooik6">
-        <dc:Bounds x="1020" y="820" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0umnozs_di" bpmnElement="SequenceFlow_0umnozs">
-        <di:waypoint x="520" y="320" />
-        <di:waypoint x="670" y="320" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_0018jhc_di" bpmnElement="CallActivity_0018jhc">
-        <dc:Bounds x="930" y="280" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ucjcm1_di" bpmnElement="SequenceFlow_1ucjcm1">
-        <di:waypoint x="1030" y="320" />
-        <di:waypoint x="1070" y="320" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0q7is68_di" bpmnElement="ScriptTask_0q7is68">
-        <dc:Bounds x="1070" y="280" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1a6iu8c_di" bpmnElement="SequenceFlow_1a6iu8c">
-        <di:waypoint x="1170" y="320" />
-        <di:waypoint x="1230" y="320" />
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn:definitions>
index ed82500..b14cf7e 100644 (file)
 
 package org.onap.so.beans.nsmf;
 
+import java.io.Serializable;
 import java.util.List;
 import com.fasterxml.jackson.annotation.JsonInclude;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class ActDeActNssi {
+public class ActDeActNssi implements Serializable {
 
     public final static String ACT_URL = "/api/rest/provMns/v1/NSS/%s" + "/activation";
 
     public final static String DE_ACT_URL = "/api/rest/provMns/v1/NSS/%s" + "/deactivation";
 
+    private static final long serialVersionUID = 7597630091910711349L;
+
     private String nsiId;
 
     private String nssiId;
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/CustomerInfo.java b/common/src/main/java/org/onap/so/beans/nsmf/CustomerInfo.java
new file mode 100644 (file)
index 0000000..6381d5b
--- /dev/null
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # 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.beans.nsmf;
+
+import lombok.Builder;
+import lombok.Data;
+import java.io.Serializable;
+
+@Data
+@Builder
+public class CustomerInfo implements Serializable {
+    private static final long serialVersionUID = -8749985097619384358L;
+
+    private String globalSubscriberId;
+
+    private String serviceInstanceId;
+
+    private String subscriptionServiceType;
+
+    private String operationId;
+
+    private OperationType operationType;
+
+    private String nsiId;
+
+    private String snssai;
+
+}
 
 package org.onap.so.beans.nsmf;
 
-public class NSSI {
+import lombok.Builder;
+import lombok.Data;
+import java.io.Serializable;
+
+@Data
+@Builder
+public class NssInstance implements Serializable {
+
+    private static final long serialVersionUID = -153484249182203537L;
 
     private String nssiId;
 
@@ -28,33 +36,11 @@ public class NSSI {
 
     private String modelVersionId;
 
-    public NSSI(String nssiId, String modelInvariantId, String modelVersionId) {
-        this.nssiId = nssiId;
-        this.modelInvariantId = modelInvariantId;
-        this.modelVersionId = modelVersionId;
-    }
-
-    public String getNssiId() {
-        return nssiId;
-    }
-
-    public void setNssiId(String nssiId) {
-        this.nssiId = nssiId;
-    }
-
-    public String getModelInvariantId() {
-        return modelInvariantId;
-    }
+    private NetworkType networkType;
 
-    public void setModelInvariantId(String modelInvariantId) {
-        this.modelInvariantId = modelInvariantId;
-    }
+    private OperationType operationType;
 
-    public String getModelVersionId() {
-        return modelVersionId;
-    }
+    private String snssai;
 
-    public void setModelVersionId(String modelVersionId) {
-        this.modelVersionId = modelVersionId;
-    }
+    private String serviceType;
 }
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/OperationType.java b/common/src/main/java/org/onap/so/beans/nsmf/OperationType.java
new file mode 100644 (file)
index 0000000..1ee56b5
--- /dev/null
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # 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.beans.nsmf;
+
+import lombok.Getter;
+import lombok.ToString;
+
+@Getter
+@ToString
+public enum OperationType {
+    /**
+     * allocate
+     */
+    ALLOCATE("allocate"),
+
+    DEALLOCATE("deallocate"),
+
+    CREATE("create"),
+
+    TERMINATE("terminate"),
+
+    ACTIVATE("activation"),
+
+    DEACTIVATE("deactivation");
+
+    private String type;
+
+
+    OperationType(String type) {
+        this.type = type;
+    }
+
+    public static OperationType getOperationType(String value) {
+        for (OperationType operationType : OperationType.values()) {
+            if (operationType.type.equalsIgnoreCase(value)) {
+                return operationType;
+            }
+        }
+        return null;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/OrchestrationStatusEnum.java b/common/src/main/java/org/onap/so/beans/nsmf/OrchestrationStatusEnum.java
new file mode 100644 (file)
index 0000000..572a312
--- /dev/null
@@ -0,0 +1,36 @@
+package org.onap.so.beans.nsmf;
+
+import lombok.Getter;
+import lombok.ToString;
+
+@Getter
+@ToString
+public enum OrchestrationStatusEnum {
+    /**
+     * activated
+     */
+    ACTIVATED("activated"),
+
+    /**
+     * deactivated
+     */
+    DEACTIVATED("deactivated"),
+
+    ;
+
+    private String value;
+
+
+    OrchestrationStatusEnum(String value) {
+        this.value = value;
+    }
+
+    public static OrchestrationStatusEnum getStatus(String value) {
+        for (OrchestrationStatusEnum orchestrationStatus : OrchestrationStatusEnum.values()) {
+            if (orchestrationStatus.value.equalsIgnoreCase(value)) {
+                return orchestrationStatus;
+            }
+        }
+        return null;
+    }
+}
index f9848fc..5146685 100644 (file)
 package org.onap.so.beans.nsmf;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 import java.io.Serializable;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
 @Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class ServiceInfo implements Serializable {
 
     private static final long serialVersionUID = 7895110339097615695L;