Merge "fixed sonar issue in MsoNetworkAdapterAsyncImpl"
authorSeshu Kumar M <seshu.kumar.m@huawei.com>
Tue, 18 Sep 2018 14:16:49 +0000 (14:16 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 18 Sep 2018 14:16:49 +0000 (14:16 +0000)
149 files changed:
adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.11__RecreateRecipe.sql [new file with mode: 0644]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/MsoNetworkAdapterImpl.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/NetworkAdapterRest.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/async/client/ObjectFactory.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/network/NetworkAdapterRestTest.java
adapters/mso-openstack-adapters/src/test/resources/CreateNetwork3.json [new file with mode: 0644]
adapters/mso-openstack-adapters/src/test/resources/__files/CreateNetworkResponse3.json [new file with mode: 0644]
adapters/mso-openstack-adapters/src/test/resources/data.sql
asdc-controller/pom.xml
asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java
asdc-controller/src/main/java/org/onap/so/asdc/installer/ToscaResourceStructure.java
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
asdc-controller/src/main/java/org/onap/so/asdc/util/ASDCNotificationLogging.java
bpmn/MSOCommonBPMN/pom.xml
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SniroUtils.groovy
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/exception/ExceptionBuilder.java
bpmn/pom.xml
bpmn/so-bpmn-building-blocks/pom.xml
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AAICheckVnfInMaintBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AAISetVnfInMaintBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AAIUnsetVnfInMaintBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateNetworkBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateNetworkCollectionBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateServiceInstanceBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVfModuleBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVnfBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ActivateVolumeGroupBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignNetworkBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignServiceInstanceBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignVfModuleBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignVnfBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignVolumeGroupBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ChangeModelServiceInstanceBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ChangeModelVfModuleBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ChangeModelVnfBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateCustomerBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkCollectionBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateVfModuleBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateVolumeGroupBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeactivateNetworkBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeactivateServiceInstanceBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeactivateVfModuleBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeactivateVnfBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeactivateVolumeGroupBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteNetworkBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteVfModuleBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteVolumeGroupBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/UnassignNetworkBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/UnassignServiceInstanceBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/UnassignVfModuleBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/UnassignVnfBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/UnassignVolumeGroupBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/UpdateNetworkBB.bpmn
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/VnfAdapter.bpmn
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/SniroHomingV2.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImpl.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterObjectMapper.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterVfModuleObjectMapper.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/SdnCommonTasks.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/sdnc/mapper/GeneralTopologyObjectMapper.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImplTest.java
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/genericResourceApiVfModuleSdncVfModuleTopology.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/genericResourceApiVfModuleSdncVfModuleTopologyWithCloudResources.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/genericResourceApiVfModuleSdncVnfTopology.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/genericResourceApiVfModuleSdncVnfTopologySubnetDhcpDisabled.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/genericResourceApiVfModuleSdncVnfTopologySubnetMultipleDhcp.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/genericResourceApiVfModuleSdncVnfTopologyWithCloudResources.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/genericResourceApiVfModuleSdncVnfTopologyWithSingletonArray.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiNetworkOperationInformation.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiNetworkOperationInformationNoNetworkName.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiNetworkOperationInformationUnAssign.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiVfModuleOperationInformationAssign.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/genericResourceApiVfModuleOperationInformationUnassign.json
bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/VNFAdapterRestDeleteResponse.xml [new file with mode: 0644]
cloudify-client/src/test/java/org/onap/so/cloudify/connector/http/HttpClientRedirectStrategyTest.java
common/src/main/java/org/onap/so/client/RestClient.java
common/src/main/java/org/onap/so/client/aai/AAIObjectPlurals.java
common/src/main/java/org/onap/so/client/aai/AAIObjectType.java
common/src/main/java/org/onap/so/client/aai/AAIPatchConverter.java [new file with mode: 0644]
common/src/main/java/org/onap/so/client/aai/AAIResourcesClient.java
common/src/main/java/org/onap/so/client/aai/AAIRestClient.java
common/src/main/java/org/onap/so/client/aai/AAISingleTransactionClient.java [new file with mode: 0644]
common/src/main/java/org/onap/so/client/aai/AAITransactionalClient.java
common/src/main/java/org/onap/so/client/aai/entities/bulkprocess/OperationBody.java
common/src/main/java/org/onap/so/client/aai/entities/bulkprocess/OperationBodySerializer.java [new file with mode: 0644]
common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyRequestSerializer.java [new file with mode: 0644]
common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyResponse.java [new file with mode: 0644]
common/src/main/java/org/onap/so/client/aai/entities/singletransaction/SingleTransactionRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/client/aai/entities/singletransaction/SingleTransactionResponse.java [new file with mode: 0644]
common/src/test/java/org/onap/so/client/aai/AAIPatchConverterTest.java [new file with mode: 0644]
common/src/test/java/org/onap/so/client/aai/AAIRestClientTest.java
common/src/test/java/org/onap/so/client/aai/AAISingleTransactionClientTest.java [new file with mode: 0644]
common/src/test/java/org/onap/so/client/aai/AAITransactionalClientTest.java
common/src/test/resources/__files/aai/singletransaction/sample-request.json [new file with mode: 0644]
common/src/test/resources/__files/aai/singletransaction/sample-response-failure.json [new file with mode: 0644]
common/src/test/resources/__files/aai/singletransaction/sample-response.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-common/pom.xml
mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Action.java
mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ApiExceptionMapper.java
mso-api-handlers/mso-api-handler-common/src/test/java/org/onap/so/apihandler/common/CamundaClientTest.java
mso-api-handlers/mso-api-handler-common/src/test/java/org/onap/so/apihandlerinfra/ApiExceptionMapperTest.java [deleted file]
mso-api-handlers/mso-api-handler-common/src/test/java/org/onap/so/apihandlerinfra/exceptions/ApiExceptionMapperTest.java [moved from mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ApiExceptionMapperTest.java with 61% similarity]
mso-api-handlers/mso-api-handler-infra/pom.xml
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/Action.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/CloudConfigurationValidation.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/ModelInfoValidation.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/BaseTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/E2EServiceInstancesTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/HealthCheckHandlerTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ManualTasksTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/MsoRequestTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/OrchestrationRequestsTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/TasksHandlerTest.java
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/CloudConfiguration/DeactivateAndCloudDeleteCloudConfiguration.json
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/CloudConfiguration/VnfRecreateCloudConfig.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelInvariantId.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelName.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersion.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersionId.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateNoModelCustomizationId.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/DeactivateAndCloudDeleteVfModule.json
mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/VnfRecreate.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/catalogdb/vnfRecipe_ResponseWorkflowAction.json [new file with mode: 0644]
mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/CollectionNetworkResourceCustomizationRepository.java
mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CollectionNetworkResourceCustomizationRepositoryTest.java [new file with mode: 0644]
mso-catalog-db/src/test/resources/data.sql
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProviderImpl.java
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/HttpRestServiceProviderImpl.java
so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java
so-monitoring/so-monitoring-ui/src/main/frontend/package-lock.json
so-monitoring/so-monitoring-ui/src/main/frontend/package.json
so-monitoring/so-monitoring-ui/src/main/frontend/src/app/app.module.ts
so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.html
so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.ts
so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html
so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.scss
so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.ts

diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.11__RecreateRecipe.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.11__RecreateRecipe.sql
new file mode 100644 (file)
index 0000000..627f7a4
--- /dev/null
@@ -0,0 +1,5 @@
+use catalogdb;
+
+INSERT INTO `vnf_recipe` (`NF_ROLE`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `RECIPE_TIMEOUT`) 
+VALUES
+('GR-API-DEFAULT', 'recreateInstance', '1', 'Gr api recipe to recreate vnf', '/mso/async/services/WorkflowActionBB', 180);
\ No newline at end of file
index ac33a52..4b6bd09 100644 (file)
@@ -42,6 +42,8 @@ import org.onap.so.db.catalog.beans.CloudSite;
 import org.onap.so.db.catalog.beans.HeatTemplate;
 import org.onap.so.db.catalog.beans.NetworkResource;
 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
+import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
+import org.onap.so.db.catalog.data.repository.CollectionNetworkResourceCustomizationRepository;
 import org.onap.so.db.catalog.data.repository.NetworkResourceCustomizationRepository;
 import org.onap.so.db.catalog.data.repository.NetworkResourceRepository;
 import org.onap.so.db.catalog.utils.MavenLikeVersioning;
@@ -107,6 +109,9 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
     @Autowired         
     private NetworkResourceCustomizationRepository  networkCustomRepo;
     
+    @Autowired
+    private CollectionNetworkResourceCustomizationRepository collectionNetworkCustomRepo;
+    
     @Autowired
     private NetworkResourceRepository  networkResourceRepo;
     /**
@@ -1124,18 +1129,26 @@ public class MsoNetworkAdapterImpl implements MsoNetworkAdapter {
         // Retrieve the Network Resource definition
         NetworkResource networkResource = null;
         NetworkResourceCustomization networkCust = null;
+        CollectionNetworkResourceCustomization collectionNetworkCust = null;
                        if (commonUtils.isNullOrEmpty(modelCustomizationUuid)) {
                                if (!commonUtils.isNullOrEmpty(networkType)) {
-                                       networkResource = networkResourceRepo.findOneByModelName(networkType);
+                                       networkResource = networkResourceRepo.findFirstByModelNameOrderByModelVersionDesc(networkType);
                                }
                        } else {
                                networkCust = networkCustomRepo.findOneByModelCustomizationUUID(modelCustomizationUuid);
+                               if (networkCust == null) {
+                                       collectionNetworkCust = collectionNetworkCustomRepo.findOneByModelCustomizationUUID(modelCustomizationUuid);
+                               }
                        }
                        if(networkCust != null){
                                LOGGER.debug("Got Network Customization definition from Catalog: "
                                                + networkCust.toString());
 
                                networkResource = networkCust.getNetworkResource();
+                       } else if (collectionNetworkCust != null) {
+                               LOGGER.debug("Retrieved Collection Network Resource Customization from Catalog: " 
+                                               + collectionNetworkCust.toString());
+                               networkResource = collectionNetworkCust.getNetworkResource();
                        }
                        if (networkResource == null) {
                                String error = "Create/UpdateNetwork: Unable to get network resource with NetworkType:"
index 465fb6d..effe7a8 100644 (file)
@@ -84,8 +84,8 @@ import io.swagger.annotations.ApiResponses;
 public class NetworkAdapterRest {
        private static final MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.RA,NetworkAdapterRest.class);
        private static final String TESTING_KEYWORD = "___TESTING___";
-
-   
+       private String APPEND_RESPONSE = ", resp=";
+       private String EXCEPTION = "Exception:";
 
        @Autowired
        private MsoNetworkAdapterImpl adapter;
@@ -239,7 +239,7 @@ public class NetworkAdapterRest {
                                                rollback.value,
                                                req.getMessageId());
                        } catch (NetworkException e) {
-                           LOGGER.debug ("Exception:", e);
+                           LOGGER.debug (EXCEPTION, e);
                                eresp = new CreateNetworkError(
                                        e.getMessage(), MsoExceptionCategory.INTERNAL, true, req.getMessageId());
                        }
@@ -248,7 +248,7 @@ public class NetworkAdapterRest {
                                BpelRestClient bpelClient = bpelRestClientProvider.get();
                                bpelClient.bpelPost(getResponse(), req.getNotificationUrl(), sendxml);
                        }
-                       LOGGER.debug ("CreateNetworkTask exit: code=" + getStatusCode() + ", resp="+ getResponse());
+                       LOGGER.debug ("CreateNetworkTask exit: code=" + getStatusCode() + APPEND_RESPONSE+ getResponse());
                }
        }
 
@@ -345,7 +345,7 @@ public class NetworkAdapterRest {
                                }
                                response = new DeleteNetworkResponse(req.getNetworkId(), networkDeleted.value, req.getMessageId());
                        } catch (NetworkException e) {
-                           LOGGER.debug ("Exception:", e);
+                           LOGGER.debug (EXCEPTION, e);
                                eresp = new DeleteNetworkError(e.getMessage(), MsoExceptionCategory.INTERNAL, true, req.getMessageId());
                        }
                        if (!req.isSynchronous()) {
@@ -353,7 +353,7 @@ public class NetworkAdapterRest {
                                BpelRestClient bpelClient = bpelRestClientProvider.get();
                                bpelClient.bpelPost(getResponse(), req.getNotificationUrl(), sendxml);
                        }
-                       LOGGER.debug("DeleteNetworkTask exit: code=" + getStatusCode() + ", resp="+ getResponse());
+                       LOGGER.debug("DeleteNetworkTask exit: code=" + getStatusCode() + APPEND_RESPONSE+ getResponse());
                }
        }
 
@@ -501,7 +501,7 @@ public class NetworkAdapterRest {
                                adapter.rollbackNetwork(nwr);
                                response = new RollbackNetworkResponse(true, req.getMessageId());
                        } catch (NetworkException e) {
-                           LOGGER.debug ("Exception:", e);
+                           LOGGER.debug (EXCEPTION, e);
                                eresp = new RollbackNetworkError(e.getMessage(), MsoExceptionCategory.INTERNAL, true, req.getMessageId());
                        }
                        if (!req.isSynchronous()) {
@@ -509,7 +509,7 @@ public class NetworkAdapterRest {
                                BpelRestClient bpelClient = bpelRestClientProvider.get();
                                bpelClient.bpelPost(getResponse(), req.getNotificationUrl(), sendxml);
                        }
-                       LOGGER.debug("RollbackNetworkTask exit: code=" + getStatusCode() + ", resp="+ getResponse());
+                       LOGGER.debug("RollbackNetworkTask exit: code=" + getStatusCode() + APPEND_RESPONSE+ getResponse());
                }
        }
 
@@ -649,7 +649,7 @@ public class NetworkAdapterRest {
                                        subnetIdMap.value,
                                        req.getMessageId());
                        } catch (NetworkException e) {
-                           LOGGER.debug ("Exception:", e);
+                           LOGGER.debug (EXCEPTION, e);
                                eresp = new UpdateNetworkError(e.getMessage(), MsoExceptionCategory.INTERNAL, true, req.getMessageId());
                        }
                        if (!req.isSynchronous()) {
@@ -657,7 +657,7 @@ public class NetworkAdapterRest {
                                BpelRestClient bpelClient = bpelRestClientProvider.get();
                                bpelClient.bpelPost(getResponse(), req.getNotificationUrl(), sendxml);
                        }
-                       LOGGER.debug("UpdateNetworkTask exit: code=" + getStatusCode() + ", resp="+ getResponse());
+                       LOGGER.debug("UpdateNetworkTask exit: code=" + getStatusCode() + APPEND_RESPONSE+ getResponse());
                }
        }
 
index d65cdc4..f2238fc 100644 (file)
@@ -4,7 +4,6 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
- * Modifications Copyright 2018 IBM.
  * 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
index 2a4564b..6123415 100644 (file)
@@ -142,7 +142,7 @@ public class NetworkAdapterRestTest extends BaseRestTestUtils {
 
                ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
                                createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
-
+               
                CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
                                new File("src/test/resources/__files/CreateNetworkResponse2.json"), CreateNetworkResponse.class);
 
@@ -150,6 +150,8 @@ public class NetworkAdapterRestTest extends BaseRestTestUtils {
                assertThat(response.getBody(), sameBeanAs(expectedResponse));
        }
        
+
+       
        @Test
        public void testDeleteNetwork() throws IOException{
                
@@ -267,6 +269,33 @@ public class NetworkAdapterRestTest extends BaseRestTestUtils {
                assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
        }       
        
+       @Test
+       public void testCreateNetworkCNRC_JSON() throws JSONException, JsonParseException, JsonMappingException, IOException {
+               
+               mockOpenStackResponseAccess(wireMockPort);
+
+               mockOpenStackPostPublicUrlWithBodyFile_200();
+
+               mockOpenStackGetStackCreatedAppC_200();
+               
+               mockOpenStackGetStackAppC_404();
+               
+               headers.add("Content-Type", MediaType.APPLICATION_JSON);
+               headers.add("Accept", MediaType.APPLICATION_JSON);
+               
+               String request = readJsonFileAsString("src/test/resources/CreateNetwork3.json");
+               HttpEntity<String> entity = new HttpEntity<String>(request, headers);
+
+               ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
+                               createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
+
+               CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
+                               new File("src/test/resources/__files/CreateNetworkResponse3.json"), CreateNetworkResponse.class);
+               
+               assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
+               assertThat(response.getBody(), sameBeanAs(expectedResponse));
+       }
+       
        @Override
        protected String readJsonFileAsString(String fileLocation) throws JsonParseException, JsonMappingException, IOException{
                return new String(Files.readAllBytes(Paths.get(fileLocation)));
diff --git a/adapters/mso-openstack-adapters/src/test/resources/CreateNetwork3.json b/adapters/mso-openstack-adapters/src/test/resources/CreateNetwork3.json
new file mode 100644 (file)
index 0000000..accd9e9
--- /dev/null
@@ -0,0 +1,42 @@
+{
+       "createNetworkRequest": {
+               "skipAAI": true,
+               "messageId": "c4c44af4-4310-4d8b-a1eb-656fc99fe709",
+               "synchronous": true,
+               "cloudSiteId": "mtn13",
+               "tenantId": "ba38bc24a2ef4fb2ad2810c894f1938f",
+               "networkId": "da886914-efb2-4917-b335-c8381528d90b",
+               "networkName": "APP-C-24595-T-IST-04AShared_untrusted_vDBE_net_3",
+               "networkType": "CONTRAIL30_BASIC",
+               "modelCustomizationUuid": "3bdbb104-ffff-483e-9f8b-c095b3d30844",
+               "networkTechnology": "NEUTRON",
+               "subnets": [{
+                       "subnetName": "APP-C-24595-T-IST-04AShared_untrusted_vDBE_net_3_subnet_1",
+                       "subnetId": "da60501d-9aa8-48d2-99b7-26644fa01093",
+                       "cidr": "20",
+                       "gatewayIp": "",
+                       "ipVersion": "4",
+                       "enableDHCP": false,
+                       "addrFromStart": true,
+                       "hostRoutes": []
+               }],
+               "providerVlanNetwork": {
+                       "physicalNetworkName": "FALSE",
+                       "vlans": []
+               },
+               "contrailNetwork": {
+                       "shared": "false",
+                       "external": "false",
+                       "routeTargets": [],
+                       "policyFqdns": [],
+                       "routeTableFqdns": []
+               },
+               "failIfExists": true,
+               "backout": false,
+               "msoRequest": {
+                       "requestId": "5349f419-b3e9-4546-b3a1-094bd568d6b7",
+                       "serviceInstanceId": "cf965caf-a003-4189-abf9-e0ed77056dd6"
+               },
+               "contrailRequest": false
+       }
+}
\ No newline at end of file
diff --git a/adapters/mso-openstack-adapters/src/test/resources/__files/CreateNetworkResponse3.json b/adapters/mso-openstack-adapters/src/test/resources/__files/CreateNetworkResponse3.json
new file mode 100644 (file)
index 0000000..2e5517c
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "createNetworkResponse": {
+               "networkId": "da886914-efb2-4917-b335-c8381528d90b",
+               "neutronNetworkId": null,
+               "networkStackId": "stackname/stackId",
+               "networkFqdn": null,
+               "networkCreated": true,
+               "subnetMap": {
+
+               },
+               "rollback": {
+                       "networkStackId": "stackname/stackId",
+                       "tenantId": "ba38bc24a2ef4fb2ad2810c894f1938f",
+                       "cloudId": "mtn13",
+                       "networkType": "CONTRAIL30_BASIC",
+                       "modelCustomizationUuid": "3bdbb104-ffff-483e-9f8b-c095b3d30844",
+                       "networkCreated": true,
+                       "msoRequest": {
+                               "requestId": "5349f419-b3e9-4546-b3a1-094bd568d6b7",
+                               "serviceInstanceId": "cf965caf-a003-4189-abf9-e0ed77056dd6"
+                       }
+               },
+               "messageId": "c4c44af4-4310-4d8b-a1eb-656fc99fe709"
+       }
+}
\ No newline at end of file
index d16ca45..960f483 100644 (file)
@@ -71,6 +71,20 @@ insert into network_resource_customization(model_customization_uuid, model_insta
 ('3bdbb104-476c-483e-9f8b-c095b3d30844', 'CONTRAIL30_BASIC', '', 'CONTRAIL30_BASIC', '', '', '2017-04-19 14:28:32', '10b36f65-f4e6-4be6-ae49-9596dc1c4789'),
 ('3bdbb104-476c-483e-9f8b-c095b3d3068c', 'CONTRAIL31_BASIC', '', 'CONTRAIL31_BASIC', '', '', '2017-04-19 14:28:32', '10b36f65-f4e6-4be6-ae49-9596dc1c4790');
 
+insert into instance_group(model_uuid, model_name, model_invariant_uuid, model_version, tosca_node_type, role, object_type, cr_model_uuid, instance_group_type) values
+('21e43a7c-d823-4f5b-a427-5235f63035ff', 'dror_cr_network_resource_1806..NetworkCollection..0', '81c94263-c01e-4046-b0c7-51878d658eab', '1', 'org.openecomp.groups.NetworkCollection', 'SUB_INTERFACE', 'L3_NETWORK', '5e3fca45-e2d8-4987-bef1-016d9bda1a8c', 'L3_NETWORK');
+
+insert into collection_resource(model_uuid, model_name, model_invariant_uuid, model_version, tosca_node_type, description) values
+('5e3fca45-e2d8-4987-bef1-016d9bda1a8c', 'Dror_CR_Network_Resource_1806', 'fe243154-ac18-405f-94c2-ef629d26b8bb', '2.0', 'org.openecomp.resource.cr.DrorCrNetworkResource1806', 'Creation date: 07/25/18');
+
+insert into collection_resource_customization(model_customization_uuid, model_instance_name, role, object_type, function, collection_resource_type, cr_model_uuid) values
+('c51096a4-6081-41f4-a540-3ed015a8064a', 'Dror_CR_Network_Resource_1806', 'Dror2', 'NetworkCollection', 'Dror1', 'Dror3', '5e3fca45-e2d8-4987-bef1-016d9bda1a8c');
+
+insert into collection_network_resource_customization(model_customization_uuid, model_instance_name, network_technology, network_type, network_role, network_scope, network_resource_model_uuid, instance_group_model_uuid, crc_model_customization_uuid) values
+('3bdbb104-ffff-483e-9f8b-c095b3d30844', 'ExtVL 0', 'CONTRAIL', 'L3-NETWORK', '', '', '10b36f65-f4e6-4be6-ae49-9596dc1c4789', '21e43a7c-d823-4f5b-a427-5235f63035ff', 'c51096a4-6081-41f4-a540-3ed015a8064a'),
+('3bdbb104-ffff-483e-9f8b-c095b3d3068c', 'ExtVL 0', 'CONTRAIL', 'L3-NETWORK', '', '', '10b36f65-f4e6-4be6-ae49-9596dc1c4790', '21e43a7c-d823-4f5b-a427-5235f63035ff', 'c51096a4-6081-41f4-a540-3ed015a8064a');
+
+
 insert into vnf_resource(orchestration_mode, description, creation_timestamp, model_uuid, aic_version_min, aic_version_max, model_invariant_uuid, model_version, model_name, tosca_node_type, heat_template_artifact_uuid) values
 ('HEAT', '1607 vSAMP10a - inherent network', '2017-04-14 21:46:28', 'ff2ae348-214a-11e7-93ae-92361f002672', '', '', '2fff5b20-214b-11e7-93ae-92361f002671', '2.0', 'vSAMP10a', 'VF', null);
 
index 87b269f..b5cb596 100644 (file)
                <dependency>
                        <groupId>org.onap.sdc.sdc-tosca</groupId>
                        <artifactId>sdc-tosca</artifactId>
-                       <version>1.3.5</version>
+                       <version>1.4.1</version>
                </dependency> 
                <dependency>
                        <groupId>org.onap.sdc.jtosca</groupId>
                        <artifactId>jtosca</artifactId>
-                       <version>1.3.5</version>
+                       <version>1.4.1</version>
                </dependency> 
                <dependency>
                        <groupId>org.onap.so</groupId>
index fae3a49..ee329ce 100644 (file)
@@ -22,6 +22,7 @@ d * ============LICENSE_START===================================================
 package org.onap.so.asdc.client;
 
 
+import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -352,9 +353,17 @@ public class ASDCController {
                        + artifact.getArtifactUUID ()
                        + ")");
        
+       String filePath = System.getProperty("mso.config.path") + "/ASDC" + "/" + artifact.getArtifactVersion() + "/" + artifact.getArtifactName();
+       // make parent directory
+       File file = new File(filePath);         
+       File fileParent = file.getParentFile();
+       if (!fileParent.exists()) {
+           fileParent.mkdirs();
+       }
+
        byte[] payloadBytes = resultArtifact.getArtifactPayload();
        
-       try (FileOutputStream outFile = new FileOutputStream(System.getProperty("mso.config.path") + "/ASDC" + "/" + artifact.getArtifactName())) {
+       try (FileOutputStream outFile = new FileOutputStream(filePath)) {
                LOGGER.info(MessageEnum.ASDC_RECEIVE_SERVICE_NOTIF, "***WRITE FILE ARTIFACT NAME", "ASDC", artifact.getArtifactName());
                outFile.write(payloadBytes, 0, payloadBytes.length);
                outFile.close();
index 8353f70..0300351 100644 (file)
@@ -126,7 +126,9 @@ public class ToscaResourceStructure {
                        
                        LOGGER.debug("MSO config path is: " + System.getProperty("mso.config.path"));
                        
-                       File spoolFile = new File(System.getProperty("mso.config.path") + "/ASDC/" + artifact.getArtifactName());
+                       String filePath = System.getProperty("mso.config.path") + "/ASDC/" + artifact.getArtifactVersion() + "/" + artifact.getArtifactName();
+
+                       File spoolFile = new File(filePath);
  
                        LOGGER.debug("ASDC File path is: " + spoolFile.getAbsolutePath());
                        LOGGER.info(MessageEnum.ASDC_RECEIVE_SERVICE_NOTIF, "***PATH", "ASDC", spoolFile.getAbsolutePath());
index 1fca9d3..970cb0b 100644 (file)
@@ -488,13 +488,11 @@ public class ToscaResourceInstaller {
                                                        .getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);
                                        IVfModuleData vfMetadata = vfModuleStructure.getVfModuleMetadata();     
                                        
-                                       logger.debug("Comparing VFModule Metadata CustomizationUUID : " + vfMetadata.getVfModuleModelCustomizationUUID());
-                                       for(Group group : vfGroups){
-                                               logger.debug("To Group VFModuleModelCustomizationUUID " + group.getMetadata().getValue("vfModuleModelCustomizationUUID"));
-                                       }
+                                       logger.debug("Comparing VFModuleMetadata CustomizationUUID : " + vfMetadata.getVfModuleModelCustomizationUUID());
                                        
-                                       Optional<org.onap.sdc.toscaparser.api.Group> matchingObject = vfGroups.stream().
-                                                   filter(group -> group.getMetadata().getValue("vfModuleModelCustomizationUUID").equals(vfMetadata.getVfModuleModelCustomizationUUID())).
+                                       Optional<org.onap.sdc.toscaparser.api.Group> matchingObject = vfGroups.stream()
+                                                       .peek(group -> logger.debug("To Csar Group VFModuleModelCustomizationUUID " + group.getMetadata().getValue("vfModuleModelCustomizationUUID")))
+                                                   .filter(group -> group.getMetadata().getValue("vfModuleModelCustomizationUUID").equals(vfMetadata.getVfModuleModelCustomizationUUID())).
                                                    findFirst();
                                        if(matchingObject.isPresent()){
                                                VfModuleCustomization vfModuleCustomization = createVFModuleResource(matchingObject.get(), nodeTemplate, toscaResourceStruct, 
index 5497710..ab9c359 100644 (file)
@@ -201,11 +201,6 @@ public class ASDCNotificationLogging {
                }
                }
                
-               buffer.append(System.lineSeparator());
-               buffer.append(System.lineSeparator());
-               buffer.append("VNF Level Properties:");
-               buffer.append(System.lineSeparator());
-               
         List<NodeTemplate> vfNodeTemplatesList = toscaResourceStructure.getSdcCsarHelper().getServiceVfList();
         for (NodeTemplate vfNodeTemplate :  vfNodeTemplatesList) {
                
@@ -287,17 +282,16 @@ public class ASDCNotificationLogging {
                        
                }
                
-               
-               
-               buffer.append(System.lineSeparator());
-               buffer.append("VF Module Properties:");
-               buffer.append(System.lineSeparator());
+                       
                List<Group> vfGroups = toscaResourceStructure.getSdcCsarHelper().getVfModulesByVf(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));
                
                for(Group group : vfGroups){
                        
                        Metadata vfMetadata = group.getMetadata();
                        
+                       buffer.append(System.lineSeparator());
+                       buffer.append("VF Module Properties:");
+                       buffer.append(System.lineSeparator());
                        buffer.append("ModelInvariantUuid:");
                        buffer.append(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)));
                        buffer.append(System.lineSeparator());
@@ -314,7 +308,62 @@ public class ASDCNotificationLogging {
                        buffer.append(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
                        buffer.append(System.lineSeparator());     
                }
-  
+               
+               List<NodeTemplate> cvfcList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(vfNodeTemplate, SdcTypes.CVFC);
+               
+               for(NodeTemplate cvfcTemplate : cvfcList) {
+                       
+                       buffer.append(System.lineSeparator());
+                       buffer.append("CVNFC Properties:");
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelCustomizationUuid:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelInvariantUuid:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelName:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));
+                       buffer.append(System.lineSeparator()); 
+                       buffer.append("ModelUuid:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelVersion:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));
+                       buffer.append(System.lineSeparator()); 
+                       buffer.append("Description:");
+                       buffer.append(testNull(cvfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
+                       buffer.append(System.lineSeparator()); 
+                       
+                       
+                       List<NodeTemplate> vfcList = toscaResourceStructure.getSdcCsarHelper().getNodeTemplateBySdcType(cvfcTemplate, SdcTypes.VFC);
+                       
+                       for(NodeTemplate vfcTemplate : vfcList) {
+                       buffer.append(System.lineSeparator());
+                       buffer.append("VNFC Properties:");
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelCustomizationUuid:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));
+                       buffer.append(System.lineSeparator());
+                               buffer.append("ModelInvariantUuid:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelName:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));
+                       buffer.append(System.lineSeparator()); 
+                       buffer.append("ModelUuid:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));
+                       buffer.append(System.lineSeparator());
+                       buffer.append("ModelVersion:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));
+                       buffer.append(System.lineSeparator()); 
+                       buffer.append("Description:");
+                       buffer.append(testNull(vfcTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
+                       buffer.append(System.lineSeparator()); 
+                               
+                       }               
+                       
+               }
         }
         
                
index 83714ed..456b8ae 100644 (file)
                </dependencies>
        </dependencyManagement>
        <dependencies>
-               <dependency>
-                       <groupId>commons-beanutils</groupId>
-                       <artifactId>commons-beanutils</artifactId>
-               </dependency>
                <dependency>
                        <groupId>org.camunda.bpm</groupId>
                        <artifactId>camunda-engine</artifactId>
index 9b14432..5ff49fb 100644 (file)
@@ -322,7 +322,6 @@ class SniroUtils{
                                        }
                                        if((isBlank(placements) || placements.equalsIgnoreCase("[]")) && (isBlank(licenses) || licenses.equalsIgnoreCase("[]"))){
                                                msoLogger.debug("Sniro Async Response does not contain: licenses or placements")
-                                               exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Sniro Async Callback Response does not contain: licenses or placements")
                                        }else{
                                                return
                                        }
index bb2ad95..35bd25f 100644 (file)
@@ -191,7 +191,9 @@ public class ResourceRequestBuilder {
 
         HashMap<String, String> map = new Gson().fromJson(value, new TypeToken<HashMap<String, String>>() {}.getType());
 
-        File csarFile = new File(System.getProperty("mso.config.path") + "ASDC/" + map.get("name"));
+        String filePath = System.getProperty("mso.config.path") + "ASDC/" +  map.get("version") + "/" + map.get("name");
+
+        File csarFile = new File(filePath);
 
         if(!csarFile.exists()) {
             throw new Exception("csar file does not exist.");
index c74e815..42da725 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
@@ -37,9 +37,9 @@ public class ExceptionBuilder {
                String msg = "Exception in %s.%s ";
                try{
                        msoLogger.error(exception);
-                       
+
                        String errorVariable = "Error%s%s";
-       
+
                        StackTraceElement[] trace = Thread.currentThread().getStackTrace();
                        for (StackTraceElement traceElement : trace) {
                                if (!traceElement.getClassName().equals(this.getClass().getName()) && !traceElement.getClassName().equals(Thread.class.getName())) {
@@ -49,7 +49,7 @@ public class ExceptionBuilder {
                                        break;
                                }
                        }
-                       
+
                        msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, msg.toString());
                        execution.setVariable(errorVariable, exception.getMessage());
                } catch (Exception ex){
index 9368be1..ebf4481 100644 (file)
@@ -19,7 +19,7 @@
                <camunda.bpm.assert.version>1.2</camunda.bpm.assert.version>
                <camunda.bpm.webapp.artifact>camunda-webapp-jboss-standalone</camunda.bpm.webapp.artifact>
                <h2.version>1.4.196</h2.version>
-               <groovy.version>2.4.7</groovy.version>
+               <groovy.version>2.4.8</groovy.version>
                <saxon.version>9.5.1-8</saxon.version>
                <xmlunit.version>2.4.0</xmlunit.version>
 
        </dependencyManagement>
 
        <dependencies>
-               <dependency>
-                       <groupId>commons-beanutils</groupId>
-                       <artifactId>commons-beanutils</artifactId>
-                       <version>1.9.3</version>
-               </dependency>
                <dependency>
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>httpcore</artifactId>
index 9823263..a523c1e 100644 (file)
@@ -12,7 +12,7 @@
                <httpclient.version>3.1</httpclient.version>
                <camunda.bpm.assert.version>1.2</camunda.bpm.assert.version>
                <h2.version>1.4.196</h2.version>
-               <groovy.version>2.4.7</groovy.version>
+               <groovy.version>2.4.8</groovy.version>
                <saxon.version>9.5.1-8</saxon.version>
                <xmlunit.version>1.6</xmlunit.version>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
index de0f450..99d03d6 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="AAICheckVnfInMaintBB" name="AAICheckVnfInMaintBB" isExecutable="true">
-    <bpmn:startEvent id="Start_AAICheckVnfInMaintBB" name="start">
+    <bpmn:startEvent id="Start_AAICheckVnfInMaintBB">
       <bpmn:outgoing>SequenceFlow_0zaz9o2</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:endEvent id="End_AAICheckVnfInMaintBB" name="end">
+    <bpmn:endEvent id="End_AAICheckVnfInMaintBB">
       <bpmn:incoming>SequenceFlow_1jwsja5</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:serviceTask id="Task_CheckVnfInMaint" name="Check If Vnf In Maint (AAI)" camunda:expression="${AAIFlagTasks.checkVnfInMaintFlag(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
@@ -17,9 +17,9 @@
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AAICheckVnfInMaintBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_AAICheckVnfInMaintBB">
-        <dc:Bounds x="104" y="76" width="36" height="36" />
+        <dc:Bounds x="99" y="76" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="111" y="112" width="22" height="12" />
+          <dc:Bounds x="106" y="112" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1h93h9d_di" bpmnElement="End_AAICheckVnfInMaintBB">
         <dc:Bounds x="192" y="54" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0zaz9o2_di" bpmnElement="SequenceFlow_0zaz9o2">
-        <di:waypoint xsi:type="dc:Point" x="140" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="135" y="94" />
         <di:waypoint xsi:type="dc:Point" x="192" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="166" y="73" width="0" height="12" />
+          <dc:Bounds x="118.5" y="73" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1jwsja5_di" bpmnElement="SequenceFlow_1jwsja5">
@@ -47,4 +47,4 @@
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn:definitions>
\ No newline at end of file
+</bpmn:definitions>
index b2e1000..c55b519 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="AAISetVnfInMaintBB" name="AAISetVnfInMaintBB" isExecutable="true">
-    <bpmn:startEvent id="Start_AAISetVnfInMaintBB" name="start">
+    <bpmn:startEvent id="Start_AAISetVnfInMaintBB">
       <bpmn:outgoing>SequenceFlow_0zaz9o2</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:endEvent id="End_AAISetVnfInMaintBB" name="end">
+    <bpmn:endEvent id="End_AAISetVnfInMaintBB">
       <bpmn:incoming>SequenceFlow_1jwsja5</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:serviceTask id="Task_SetInMaint" name="VNF Set InMaint Flag (AAI)" camunda:expression="${AAIFlagTasks.modifyVnfInMaintFlag(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)), true)}">
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AAISetVnfInMaintBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_AAISetVnfInMaintBB">
-        <dc:Bounds x="104" y="76" width="36" height="36" />
+        <dc:Bounds x="95" y="76" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="111" y="112" width="22" height="12" />
+          <dc:Bounds x="102" y="112" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1h93h9d_di" bpmnElement="End_AAISetVnfInMaintBB">
-        <dc:Bounds x="320" y="76" width="36" height="36" />
+        <dc:Bounds x="361" y="76" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="329" y="116" width="18" height="12" />
+          <dc:Bounds x="370" y="116" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1r380lg_di" bpmnElement="Task_SetInMaint">
         <dc:Bounds x="192" y="54" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0zaz9o2_di" bpmnElement="SequenceFlow_0zaz9o2">
-        <di:waypoint xsi:type="dc:Point" x="140" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="131" y="94" />
         <di:waypoint xsi:type="dc:Point" x="192" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="166" y="73" width="0" height="12" />
+          <dc:Bounds x="116.5" y="73" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1jwsja5_di" bpmnElement="SequenceFlow_1jwsja5">
         <di:waypoint xsi:type="dc:Point" x="292" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="320" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="306" y="79" width="0" height="0" />
+          <dc:Bounds x="281.5" y="79" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn:definitions>
\ No newline at end of file
+</bpmn:definitions>
index 7335f86..463b82d 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="AAIUnsetVnfInMaintBB" name="AAIUnsetVnfInMaintBB" isExecutable="true">
-    <bpmn:startEvent id="Start_AAIUnsetVnfInMaintBB" name="start">
+    <bpmn:startEvent id="Start_AAIUnsetVnfInMaintBB">
       <bpmn:outgoing>SequenceFlow_0zaz9o2</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:endEvent id="End_AAIUnsetVnfInMaintBB" name="end">
+    <bpmn:endEvent id="End_AAIUnsetVnfInMaintBB">
       <bpmn:incoming>SequenceFlow_1jwsja5</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0zaz9o2" sourceRef="Start_AAIUnsetVnfInMaintBB" targetRef="Task_UnsetInMaint" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AAIUnsetVnfInMaintBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_AAIUnsetVnfInMaintBB">
-        <dc:Bounds x="104" y="76" width="36" height="36" />
+        <dc:Bounds x="87" y="76" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="111" y="112" width="22" height="12" />
+          <dc:Bounds x="94" y="112" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1h93h9d_di" bpmnElement="End_AAIUnsetVnfInMaintBB">
-        <dc:Bounds x="320" y="76" width="36" height="36" />
+        <dc:Bounds x="361" y="76" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="329" y="116" width="18" height="12" />
+          <dc:Bounds x="370" y="116" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0zaz9o2_di" bpmnElement="SequenceFlow_0zaz9o2">
-        <di:waypoint xsi:type="dc:Point" x="140" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="123" y="94" />
         <di:waypoint xsi:type="dc:Point" x="192" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="166" y="73" width="0" height="0" />
+          <dc:Bounds x="112.5" y="79" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1r380lg_di" bpmnElement="Task_UnsetInMaint">
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1jwsja5_di" bpmnElement="SequenceFlow_1jwsja5">
         <di:waypoint xsi:type="dc:Point" x="292" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="320" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="306" y="79" width="0" height="0" />
+          <dc:Bounds x="281.5" y="79" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn:definitions>
\ No newline at end of file
+</bpmn:definitions>
index 6ca3745..dc6e4a8 100644 (file)
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="ActivateNetworkBB" name="ActivateNetworkBB" isExecutable="true">
-    <bpmn2:startEvent id="activateNetwork_startEvent" name="Start Flow">
+    <bpmn2:startEvent id="activateNetwork_startEvent">
       <bpmn2:outgoing>SequenceFlow_05elmhj</bpmn2:outgoing>
     </bpmn2:startEvent>
-    <bpmn2:endEvent id="activateNetwork_EndEvent" name="End Flow">
+    <bpmn2:endEvent id="activateNetwork_EndEvent">
       <bpmn2:incoming>SequenceFlow_18atf08</bpmn2:incoming>
     </bpmn2:endEvent>
-    <bpmn2:serviceTask id="Activate_Network_SDNC_ServiceTask" name="Activate Network (SDNC)" camunda:expression="${SDNCActivateTasks.activateNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="Activate_Network_SDNC_ServiceTask" name="&#10;SDNC&#10;Activate&#10;(network)&#10;" camunda:expression="${SDNCActivateTasks.activateNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_05elmhj</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0xbvwsu</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="Activate_Network_AAI_ServiceTask" name="Activate Network (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="Activate_Network_AAI_ServiceTask" name="&#10;AAI&#10;Update&#10;(network)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_0xbvwsu</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_18atf08</bpmn2:outgoing>
     </bpmn2:serviceTask>
       <bpmndi:BPMNShape id="StartEvent_0lbwmd1_di" bpmnElement="activateNetwork_startEvent">
         <dc:Bounds x="545" y="-55" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="538" y="-14" width="49" height="12" />
+          <dc:Bounds x="538" y="-14" width="50" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_10l9a3s_di" bpmnElement="activateNetwork_EndEvent">
         <dc:Bounds x="975" y="-55" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="971" y="-19" width="45" height="12" />
+          <dc:Bounds x="971" y="-19" width="46" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1k7d8ih_di" bpmnElement="Activate_Network_SDNC_ServiceTask">
@@ -68,4 +68,4 @@
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file
+</bpmn2:definitions>
index 87a1dae..e927a78 100644 (file)
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="ActivateNetworkCollectionBB" name="ActivateNetworkCollectionBB" isExecutable="true">
-    <bpmn2:startEvent id="activateNetworkCollection_startEvent" name="Start Flow">
+    <bpmn2:startEvent id="activateNetworkCollection_startEvent">
       <bpmn2:outgoing>SequenceFlow_05elmhj</bpmn2:outgoing>
     </bpmn2:startEvent>
-    <bpmn2:endEvent id="activateNetworkCollection_EndEvent" name="End Flow">
+    <bpmn2:endEvent id="activateNetworkCollection_EndEvent">
       <bpmn2:incoming>SequenceFlow_18atf08</bpmn2:incoming>
     </bpmn2:endEvent>
-    <bpmn2:serviceTask id="Activate_Network_Collection_AAI_ServiceTask" name="Activate Network Collection (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveNetworkCollection(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="Activate_Network_Collection_AAI_ServiceTask" name="&#10;AAI&#10;Update&#10;(network)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveNetworkCollection(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_05elmhj</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_18atf08</bpmn2:outgoing>
     </bpmn2:serviceTask>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ActivateNetworkCollectionBB">
       <bpmndi:BPMNShape id="StartEvent_0lbwmd1_di" bpmnElement="activateNetworkCollection_startEvent">
-        <dc:Bounds x="590" y="-55" width="36" height="36" />
+        <dc:Bounds x="197" y="115" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="583" y="-14" width="49" height="12" />
+          <dc:Bounds x="190" y="156" width="50" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_10l9a3s_di" bpmnElement="activateNetworkCollection_EndEvent">
-        <dc:Bounds x="894" y="-55" width="36" height="36" />
+        <dc:Bounds x="501" y="115" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="890" y="-19" width="45" height="12" />
+          <dc:Bounds x="497" y="151" width="46" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1911vum_di" bpmnElement="Activate_Network_Collection_AAI_ServiceTask">
-        <dc:Bounds x="715" y="-77" width="100" height="80" />
+        <dc:Bounds x="322" y="93" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_05elmhj_di" bpmnElement="SequenceFlow_05elmhj">
-        <di:waypoint xsi:type="dc:Point" x="626" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="715" y="-37" />
+        <di:waypoint xsi:type="dc:Point" x="233" y="133" />
+        <di:waypoint xsi:type="dc:Point" x="322" y="133" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="671" y="-52" width="0" height="0" />
+          <dc:Bounds x="233" y="118" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_18atf08_di" bpmnElement="SequenceFlow_18atf08">
-        <di:waypoint xsi:type="dc:Point" x="815" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="894" y="-37" />
+        <di:waypoint xsi:type="dc:Point" x="422" y="133" />
+        <di:waypoint xsi:type="dc:Point" x="501" y="133" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="855" y="-52" width="0" height="0" />
+          <dc:Bounds x="417" y="118" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 3d55ecd..47cd3cf 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="ActivateServiceInstanceBB" name="ActivateServiceInstanceBB" isExecutable="true">
-    <bpmn:startEvent id="Start_ActivateServiceInstanceBB" name="start">
+    <bpmn:startEvent id="Start_ActivateServiceInstanceBB">
       <bpmn:outgoing>SequenceFlow_1byfr8v</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:endEvent id="End_ActivateServiceInstanceBB" name="end">
+    <bpmn:endEvent id="End_ActivateServiceInstanceBB">
       <bpmn:incoming>SequenceFlow_0pioehv</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_00q7fsg" sourceRef="Task_NoOpServiceInstance" targetRef="Task_UpdateServiceOrchestrationStatusToActive" />
@@ -13,7 +13,7 @@
       <bpmn:outgoing>SequenceFlow_00q7fsg</bpmn:outgoing>
     </bpmn:task>
     <bpmn:sequenceFlow id="SequenceFlow_0pioehv" sourceRef="Task_UpdateServiceOrchestrationStatusToActive" targetRef="End_ActivateServiceInstanceBB" />
-    <bpmn:serviceTask id="Task_UpdateServiceOrchestrationStatusToActive" name="Update Service Orchestration Status to Active (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveService(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_UpdateServiceOrchestrationStatusToActive" name="&#10;AAI&#10;Update&#10;(svc instance)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveService(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_00q7fsg</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0pioehv</bpmn:outgoing>
     </bpmn:serviceTask>
@@ -24,7 +24,7 @@
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_ActivateServiceInstanceBB">
         <dc:Bounds x="174" y="102" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="181" y="138" width="22" height="12" />
+          <dc:Bounds x="181" y="138" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1qdtskz_di" bpmnElement="End_ActivateServiceInstanceBB">
index b118d9b..c7b7952 100644 (file)
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="ActivateVfModuleBB" name="ActivateVfModuleBB" isExecutable="true">
-    <bpmn:startEvent id="ActivateVfModuleBB_Start" name="Start">
+    <bpmn:startEvent id="ActivateVfModuleBB_Start">
       <bpmn:outgoing>SequenceFlow_0ieafii</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0ieafii" sourceRef="ActivateVfModuleBB_Start" targetRef="ActivateVfModule" />
-    <bpmn:endEvent id="ActivateVfModuleBB_End" name="End">
+    <bpmn:endEvent id="ActivateVfModuleBB_End">
       <bpmn:incoming>SequenceFlow_0xsp0pv</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="ActivateVfModule" name="SDNC Adapter VFModule  Activate" camunda:expression="${SDNCActivateTasks.activateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="ActivateVfModule" name="&#10;SDNC&#10;Activate&#10;(vf module)&#10;" camunda:expression="${SDNCActivateTasks.activateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0ieafii</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_14kvrbe</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_14kvrbe" sourceRef="ActivateVfModule" targetRef="UpdateVfModuleActiveStatus" />
-    <bpmn:serviceTask id="UpdateVfModuleActiveStatus" name="Activate OStatus (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVfModuleActiveStatus" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_14kvrbe</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0xsp0pv</bpmn:outgoing>
     </bpmn:serviceTask>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0ieafii_di" bpmnElement="SequenceFlow_0ieafii">
         <di:waypoint xsi:type="dc:Point" x="209" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="260" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="288" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="189.5" y="99" width="90" height="12" />
+          <dc:Bounds x="203.5" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1v967li_di" bpmnElement="ActivateVfModuleBB_End">
-        <dc:Bounds x="636" y="102" width="36" height="36" />
+        <dc:Bounds x="624" y="102" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="645" y="142" width="19" height="12" />
+          <dc:Bounds x="633" y="142" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0hawa84_di" bpmnElement="ActivateVfModule">
-        <dc:Bounds x="260" y="80" width="100" height="80" />
+        <dc:Bounds x="288" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_14kvrbe_di" bpmnElement="SequenceFlow_14kvrbe">
-        <di:waypoint xsi:type="dc:Point" x="360" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="466" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="388" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="433" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="368" y="99" width="90" height="12" />
+          <dc:Bounds x="365.5" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_175e9ul_di" bpmnElement="UpdateVfModuleActiveStatus">
-        <dc:Bounds x="466" y="80" width="100" height="80" />
+        <dc:Bounds x="433" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0xsp0pv_di" bpmnElement="SequenceFlow_0xsp0pv">
-        <di:waypoint xsi:type="dc:Point" x="566" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="636" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="533" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="624" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="601" y="99" width="0" height="12" />
+          <dc:Bounds x="533.5" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 61d8f6e..1147283 100644 (file)
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="ActivateVnfBB" name="ActivateVnfBB" isExecutable="true">
-    <bpmn:startEvent id="Start_ActivateVnfBB" name="start">
+    <bpmn:startEvent id="Start_ActivateVnfBB">
       <bpmn:outgoing>SequenceFlow_0k9qnoi</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0k9qnoi" sourceRef="Start_ActivateVnfBB" targetRef="Task_SDNCAdapterVnfTopologyActivate" />
     <bpmn:sequenceFlow id="SequenceFlow_0r6pzwt" sourceRef="Task_SDNCAdapterVnfTopologyActivate" targetRef="Task_ActivateOrchestrationStatusVnf" />
-    <bpmn:endEvent id="End_ActivateVnfBB" name="end">
+    <bpmn:endEvent id="End_ActivateVnfBB">
       <bpmn:incoming>SequenceFlow_0vnitwg</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0vnitwg" sourceRef="Task_ActivateOrchestrationStatusVnf" targetRef="End_ActivateVnfBB" />
-    <bpmn:serviceTask id="Task_SDNCAdapterVnfTopologyActivate" name="Call SDNC Adapter VNF Topology Activate" camunda:expression="${SDNCActivateTasks.activateVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_SDNCAdapterVnfTopologyActivate" name="&#10;SDNC&#10;Activate&#10;(vnf)&#10;" camunda:expression="${SDNCActivateTasks.activateVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0k9qnoi</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0r6pzwt</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="Task_ActivateOrchestrationStatusVnf" name="Activate Orchestration Status Vnf (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_ActivateOrchestrationStatusVnf" name="&#10;AAI&#10;Update&#10;(vnf)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0r6pzwt</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0vnitwg</bpmn:outgoing>
     </bpmn:serviceTask>
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_ActivateVnfBB">
         <dc:Bounds x="173" y="102" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="180" y="138" width="22" height="12" />
+          <dc:Bounds x="180" y="138" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0k9qnoi_di" bpmnElement="SequenceFlow_0k9qnoi">
         <di:waypoint xsi:type="dc:Point" x="209" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="263" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="279" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="236" y="99" width="0" height="12" />
+          <dc:Bounds x="199" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0r6pzwt_di" bpmnElement="SequenceFlow_0r6pzwt">
-        <di:waypoint xsi:type="dc:Point" x="363" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="422" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="379" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="411" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="392.5" y="99" width="0" height="12" />
+          <dc:Bounds x="350" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1ad7eym_di" bpmnElement="End_ActivateVnfBB">
-        <dc:Bounds x="572" y="102" width="36" height="36" />
+        <dc:Bounds x="580" y="102" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="581" y="142" width="18" height="12" />
+          <dc:Bounds x="589" y="142" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0vnitwg_di" bpmnElement="SequenceFlow_0vnitwg">
-        <di:waypoint xsi:type="dc:Point" x="522" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="572" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="511" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="580" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="547" y="99" width="0" height="12" />
+          <dc:Bounds x="500.5" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1k98q3r_di" bpmnElement="Task_SDNCAdapterVnfTopologyActivate">
-        <dc:Bounds x="263" y="80" width="100" height="80" />
+        <dc:Bounds x="279" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1vg25fs_di" bpmnElement="Task_ActivateOrchestrationStatusVnf">
-        <dc:Bounds x="422" y="80" width="100" height="80" />
+        <dc:Bounds x="411" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
index 03ba8bb..bb79e55 100644 (file)
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="ActivateVolumeGroupBB" name="ActivateVolumeGroupBB" isExecutable="true">
-    <bpmn:startEvent id="ActivateVolumeGroupBB_Start" name="Start">
+    <bpmn:startEvent id="ActivateVolumeGroupBB_Start">
       <bpmn:outgoing>SequenceFlow_1wz1rfg</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:sequenceFlow id="SequenceFlow_1wz1rfg" sourceRef="ActivateVolumeGroupBB_Start" targetRef="ActivateVolumeGroup" />
     <bpmn:endEvent id="ActivateVolumeGroupBB_End">
       <bpmn:incoming>SequenceFlow_0mh0v9h</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="ActivateVolumeGroup" name="ActivateVolumeGroup" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="ActivateVolumeGroup" name="&#10;AAI&#10;Update&#10;(volume)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusActiveVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1wz1rfg</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0mh0v9h</bpmn:outgoing>
     </bpmn:serviceTask>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1wz1rfg_di" bpmnElement="SequenceFlow_1wz1rfg">
         <di:waypoint xsi:type="dc:Point" x="346" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="464" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="441" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="360" y="99" width="90" height="12" />
+          <dc:Bounds x="348.5" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1k6463v_di" bpmnElement="ActivateVolumeGroupBB_End">
-        <dc:Bounds x="662" y="102" width="36" height="36" />
+        <dc:Bounds x="638" y="102" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="635" y="142" width="90" height="12" />
+          <dc:Bounds x="611" y="142" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0rytcj0_di" bpmnElement="ActivateVolumeGroup">
-        <dc:Bounds x="464" y="80" width="100" height="80" />
+        <dc:Bounds x="441" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0mh0v9h_di" bpmnElement="SequenceFlow_0mh0v9h">
-        <di:waypoint xsi:type="dc:Point" x="564" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="662" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="541" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="638" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="613" y="98" width="0" height="13" />
+          <dc:Bounds x="544.5" y="98.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 57c3424..5f7b29b 100644 (file)
@@ -1,63 +1,68 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="AssignNetworkBB" name="AssignNetworkBB" isExecutable="true">
-    <bpmn2:startEvent id="AssignNetworkBB_start" name="Start Flow">
+    <bpmn2:startEvent id="AssignNetworkBB_start">
       <bpmn2:outgoing>SequenceFlow_11op1ih</bpmn2:outgoing>
     </bpmn2:startEvent>
-    <bpmn2:serviceTask id="ServiceTask_get_cloud_region" name="Process cloud region by version&#10;" camunda:expression="${AssignNetworkBBUtils.getCloudRegion(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn2:incoming>SequenceFlow_0mxc4ri</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_017131q</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing>
+    <bpmn2:serviceTask id="ServiceTask_get_cloud_region" name="&#10;Process cloud region by version&#10;" camunda:expression="${AssignNetworkBBUtils.getCloudRegion(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn2:incoming>SequenceFlow_0jm95hf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16hhbw3</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="ServiceTask_assign_network_sdnc" name="Assign Network (SDNC)" camunda:expression="${SDNCAssignTasks.assignNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0do51t8</bpmn2:outgoing>
+    <bpmn2:serviceTask id="ServiceTask_assign_network_sdnc" name="&#10;SDNC&#10;Assign&#10;(network)&#10;" camunda:expression="${SDNCAssignTasks.assignNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn2:incoming>SequenceFlow_16hhbw3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0oawye1</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="ServiceTask_get_cloud_region" targetRef="ServiceTask_assign_network_sdnc" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0do51t8" sourceRef="ServiceTask_assign_network_sdnc" targetRef="ServiceTask_assign_network_aai" />
-    <bpmn2:serviceTask id="ServiceTask_put_network_in_AAI" name="Put network shell in AAI&#10;" camunda:expression="${AAICreateTasks.createNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="ServiceTask_put_network_in_AAI" name="&#10;AAI&#10;Create&#10;(network)&#10;" camunda:expression="${AAICreateTasks.createNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_0gkr871</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1ctpnpe</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="ServiceTask_assign_network_aai" name="Assign Network (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn2:incoming>SequenceFlow_0do51t8</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0ln3hj3</bpmn2:outgoing>
+    <bpmn2:serviceTask id="ServiceTask_assign_network_aai" name="&#10;AAI&#10;Update&#10;(network)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn2:incoming>SequenceFlow_0oawye1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0988gld</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:exclusiveGateway id="networkFoundByName_ExclusiveGateway" name="skip if network found by name" default="SequenceFlow_0gkr871">
-      <bpmn2:incoming>SequenceFlow_11op1ih</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_017131q</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0gkr871</bpmn2:outgoing>
-    </bpmn2:exclusiveGateway>
-    <bpmn2:sequenceFlow id="SequenceFlow_017131q" name="Yes" sourceRef="networkFoundByName_ExclusiveGateway" targetRef="ServiceTask_get_cloud_region">
+    <bpmn2:sequenceFlow id="SequenceFlow_017131q" name="Yes" sourceRef="networkFoundByName_ExclusiveGateway" targetRef="ExclusiveGateway_0vtj8n8">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{AssignNetwork.networkFoundByName(execution.getVariable("gBuildingBlockExecution")) == true}]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_0gkr871" name="No" sourceRef="networkFoundByName_ExclusiveGateway" targetRef="ServiceTask_put_network_in_AAI" />
-    <bpmn2:endEvent id="AssignNetworkBB_end" name="End Flow">
-      <bpmn2:incoming>SequenceFlow_0ln3hj3</bpmn2:incoming>
+    <bpmn2:endEvent id="AssignNetworkBB_end">
+      <bpmn2:incoming>SequenceFlow_0988gld</bpmn2:incoming>
     </bpmn2:endEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_0ln3hj3" sourceRef="ServiceTask_assign_network_aai" targetRef="AssignNetworkBB_end" />
     <bpmn2:sequenceFlow id="SequenceFlow_11op1ih" sourceRef="AssignNetworkBB_start" targetRef="networkFoundByName_ExclusiveGateway" />
-    <bpmn2:serviceTask id="ServiceTask_connect_to_NCIG" name="Connect L3Network to NetworkCollectionInstanceGroup&#10;" camunda:expression="${AAICreateTasks.connectNetworkToNetworkCollectionInstanceGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="ServiceTask_connect_to_NCIG" name="&#10;AAI&#10;Connect&#10;(collection)&#10;" camunda:expression="${AAICreateTasks.connectNetworkToNetworkCollectionInstanceGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_07z7hcu</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0e08b9t</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="ServiceTask_connect_to_NCSI" name="Connect L3Network to ServiceInstance&#10;" camunda:expression="${AAICreateTasks.connectNetworkToNetworkCollectionServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="ServiceTask_connect_to_NCSI" name="&#10;AAI&#10;Connect&#10;(svc instance)&#10;" camunda:expression="${AAICreateTasks.connectNetworkToNetworkCollectionServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_0e08b9t</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0mxc4ri</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1ctpnpe" sourceRef="ServiceTask_put_network_in_AAI" targetRef="ServiceTask_connect_to_Tenant" />
     <bpmn2:sequenceFlow id="SequenceFlow_0e08b9t" sourceRef="ServiceTask_connect_to_NCIG" targetRef="ServiceTask_connect_to_NCSI" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0mxc4ri" sourceRef="ServiceTask_connect_to_NCSI" targetRef="ServiceTask_get_cloud_region" />
-    <bpmn2:serviceTask id="ServiceTask_connect_to_Tenant" name="Connect L3Network to Tenant&#10;" camunda:expression="${AAICreateTasks.connectNetworkToTenant(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:sequenceFlow id="SequenceFlow_0mxc4ri" sourceRef="ServiceTask_connect_to_NCSI" targetRef="ExclusiveGateway_0vtj8n8" />
+    <bpmn2:serviceTask id="ServiceTask_connect_to_Tenant" name="&#10;AAI&#10;Connect&#10;(tenant)&#10;" camunda:expression="${AAICreateTasks.connectNetworkToTenant(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_1ctpnpe</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0fwcvep</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="ServiceTask_connect_to_CloudRegion" name="Connect L3Network to Cloud Region&#10;" camunda:expression="${AAICreateTasks.connectNetworkToCloudRegion(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="ServiceTask_connect_to_CloudRegion" name="&#10;AAI&#10;Connect&#10;(cloud region)&#10;" camunda:expression="${AAICreateTasks.connectNetworkToCloudRegion(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_0fwcvep</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_07z7hcu</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_0fwcvep" sourceRef="ServiceTask_connect_to_Tenant" targetRef="ServiceTask_connect_to_CloudRegion" />
     <bpmn2:sequenceFlow id="SequenceFlow_07z7hcu" sourceRef="ServiceTask_connect_to_CloudRegion" targetRef="ServiceTask_connect_to_NCIG" />
+    <bpmn2:inclusiveGateway id="networkFoundByName_ExclusiveGateway" name="Network Name Found?" default="SequenceFlow_0gkr871">
+      <bpmn2:incoming>SequenceFlow_11op1ih</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_017131q</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0gkr871</bpmn2:outgoing>
+    </bpmn2:inclusiveGateway>
+    <bpmn2:inclusiveGateway id="ExclusiveGateway_0vtj8n8">
+      <bpmn2:incoming>SequenceFlow_017131q</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0mxc4ri</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0jm95hf</bpmn2:outgoing>
+    </bpmn2:inclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0jm95hf" sourceRef="ExclusiveGateway_0vtj8n8" targetRef="ServiceTask_get_cloud_region" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16hhbw3" sourceRef="ServiceTask_get_cloud_region" targetRef="ServiceTask_assign_network_sdnc" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0oawye1" sourceRef="ServiceTask_assign_network_sdnc" targetRef="ServiceTask_assign_network_aai" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0988gld" sourceRef="ServiceTask_assign_network_aai" targetRef="AssignNetworkBB_end" />
     <bpmn2:textAnnotation id="TextAnnotation_0dnksb2">    <bpmn2:text>sets Cloud Region on BB execution for SDNC assign</bpmn2:text>
 </bpmn2:textAnnotation>
     <bpmn2:association id="Association_1rsqd3z" sourceRef="ServiceTask_get_cloud_region" targetRef="TextAnnotation_0dnksb2" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AssignNetworkBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="AssignNetworkBB_start">
-        <dc:Bounds x="764" y="-105" width="36" height="36" />
+        <dc:Bounds x="746" y="-105" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="757" y="-64" width="49" height="12" />
+          <dc:Bounds x="739" y="-64" width="50" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1wo7ke9_di" bpmnElement="ServiceTask_get_cloud_region">
-        <dc:Bounds x="1298" y="224" width="100" height="80" />
+        <dc:Bounds x="1632" y="-127" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1ofnl0p_di" bpmnElement="ServiceTask_assign_network_sdnc">
-        <dc:Bounds x="1449" y="229" width="100" height="80" />
+        <dc:Bounds x="1769" y="-127" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_53" bpmnElement="SequenceFlow_32">
-        <di:waypoint xsi:type="dc:Point" x="1398" y="264" />
-        <di:waypoint xsi:type="dc:Point" x="1446" y="264" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1422" y="249" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0do51t8_di" bpmnElement="SequenceFlow_0do51t8">
-        <di:waypoint xsi:type="dc:Point" x="1499" y="309" />
-        <di:waypoint xsi:type="dc:Point" x="1499" y="378" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1514" y="343.5" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="TextAnnotation_0dnksb2_di" bpmnElement="TextAnnotation_0dnksb2">
-        <dc:Bounds x="1393" y="153" width="212" height="30" />
+        <dc:Bounds x="1576" y="35" width="212" height="30" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="Association_1rsqd3z_di" bpmnElement="Association_1rsqd3z">
-        <di:waypoint xsi:type="dc:Point" x="1397" y="233" />
-        <di:waypoint xsi:type="dc:Point" x="1475" y="183" />
+        <di:waypoint xsi:type="dc:Point" x="1682" y="-47" />
+        <di:waypoint xsi:type="dc:Point" x="1682" y="35" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1dm3ngd_di" bpmnElement="ServiceTask_put_network_in_AAI">
-        <dc:Bounds x="813" y="-22" width="100" height="80" />
+        <dc:Bounds x="906" y="-49" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_18yks1p_di" bpmnElement="ServiceTask_assign_network_aai">
-        <dc:Bounds x="1449" y="378" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_19hvq7h_di" bpmnElement="networkFoundByName_ExclusiveGateway" isMarkerVisible="true">
-        <dc:Bounds x="838" y="-112" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="833" y="-169" width="85" height="48" />
-        </bpmndi:BPMNLabel>
+        <dc:Bounds x="1909" y="-127" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_017131q_di" bpmnElement="SequenceFlow_017131q">
-        <di:waypoint xsi:type="dc:Point" x="888" y="-87" />
-        <di:waypoint xsi:type="dc:Point" x="1348" y="-87" />
-        <di:waypoint xsi:type="dc:Point" x="1348" y="224" />
+        <di:waypoint xsi:type="dc:Point" x="863" y="-112" />
+        <di:waypoint xsi:type="dc:Point" x="863" y="-161" />
+        <di:waypoint xsi:type="dc:Point" x="1562" y="-161" />
+        <di:waypoint xsi:type="dc:Point" x="1562" y="-112" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="904" y="-113" width="18" height="12" />
+          <dc:Bounds x="871.5" y="-151.96931534232883" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0gkr871_di" bpmnElement="SequenceFlow_0gkr871">
         <di:waypoint xsi:type="dc:Point" x="863" y="-62" />
-        <di:waypoint xsi:type="dc:Point" x="863" y="-22" />
+        <di:waypoint xsi:type="dc:Point" x="863" y="-9" />
+        <di:waypoint xsi:type="dc:Point" x="906" y="-9" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="887" y="-53" width="14" height="12" />
+          <dc:Bounds x="872.125" y="-36.06410256410257" width="14" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_083u1a5_di" bpmnElement="AssignNetworkBB_end">
-        <dc:Bounds x="1481" y="512" width="36" height="36" />
+        <dc:Bounds x="2118" y="-105" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1476" y="552" width="45" height="12" />
+          <dc:Bounds x="2113" y="-65" width="46" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ln3hj3_di" bpmnElement="SequenceFlow_0ln3hj3">
-        <di:waypoint xsi:type="dc:Point" x="1499" y="458" />
-        <di:waypoint xsi:type="dc:Point" x="1499" y="512" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1514" y="475" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_11op1ih_di" bpmnElement="SequenceFlow_11op1ih">
-        <di:waypoint xsi:type="dc:Point" x="800" y="-87" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="-87" />
         <di:waypoint xsi:type="dc:Point" x="838" y="-87" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="819" y="-102" width="0" height="0" />
+          <dc:Bounds x="765" y="-102" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0a96yhg_di" bpmnElement="ServiceTask_connect_to_NCIG">
-        <dc:Bounds x="970" y="224" width="100" height="80" />
+        <dc:Bounds x="1286" y="-49" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0mauyto_di" bpmnElement="ServiceTask_connect_to_NCSI">
-        <dc:Bounds x="1130" y="224" width="100" height="80" />
+        <dc:Bounds x="1422" y="-49" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1ctpnpe_di" bpmnElement="SequenceFlow_1ctpnpe">
-        <di:waypoint xsi:type="dc:Point" x="863" y="58" />
-        <di:waypoint xsi:type="dc:Point" x="863" y="99" />
+        <di:waypoint xsi:type="dc:Point" x="1006" y="-9" />
+        <di:waypoint xsi:type="dc:Point" x="1036" y="-9" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="878" y="79" width="0" height="0" />
+          <dc:Bounds x="976" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0e08b9t_di" bpmnElement="SequenceFlow_0e08b9t">
-        <di:waypoint xsi:type="dc:Point" x="1070" y="264" />
-        <di:waypoint xsi:type="dc:Point" x="1130" y="264" />
+        <di:waypoint xsi:type="dc:Point" x="1386" y="-9" />
+        <di:waypoint xsi:type="dc:Point" x="1422" y="-9" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1100" y="249" width="0" height="0" />
+          <dc:Bounds x="1359" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0mxc4ri_di" bpmnElement="SequenceFlow_0mxc4ri">
-        <di:waypoint xsi:type="dc:Point" x="1230" y="264" />
-        <di:waypoint xsi:type="dc:Point" x="1298" y="264" />
+        <di:waypoint xsi:type="dc:Point" x="1522" y="-9" />
+        <di:waypoint xsi:type="dc:Point" x="1562" y="-9" />
+        <di:waypoint xsi:type="dc:Point" x="1562" y="-62" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1264" y="239" width="0" height="0" />
+          <dc:Bounds x="1497" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_019bzpc_di" bpmnElement="ServiceTask_connect_to_Tenant">
-        <dc:Bounds x="813" y="99" width="100" height="80" />
+        <dc:Bounds x="1036" y="-49" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1alvmym_di" bpmnElement="ServiceTask_connect_to_CloudRegion">
-        <dc:Bounds x="813" y="224" width="100" height="80" />
+        <dc:Bounds x="1162" y="-49" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0fwcvep_di" bpmnElement="SequenceFlow_0fwcvep">
-        <di:waypoint xsi:type="dc:Point" x="863" y="179" />
-        <di:waypoint xsi:type="dc:Point" x="863" y="224" />
+        <di:waypoint xsi:type="dc:Point" x="1136" y="-9" />
+        <di:waypoint xsi:type="dc:Point" x="1162" y="-9" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="878" y="191.5" width="0" height="0" />
+          <dc:Bounds x="1104" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_07z7hcu_di" bpmnElement="SequenceFlow_07z7hcu">
-        <di:waypoint xsi:type="dc:Point" x="913" y="264" />
-        <di:waypoint xsi:type="dc:Point" x="970" y="264" />
+        <di:waypoint xsi:type="dc:Point" x="1262" y="-9" />
+        <di:waypoint xsi:type="dc:Point" x="1286" y="-9" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="942" y="239" width="0" height="0" />
+          <dc:Bounds x="1229" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="TextAnnotation_17jb2vn_di" bpmnElement="TextAnnotation_17jb2vn">
-        <dc:Bounds x="941" y="344" width="158" height="54" />
+        <dc:Bounds x="1232" y="86" width="158" height="54" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="Association_15ppe1t_di" bpmnElement="Association_15ppe1t">
-        <di:waypoint xsi:type="dc:Point" x="996" y="304" />
-        <di:waypoint xsi:type="dc:Point" x="973" y="344" />
+        <di:waypoint xsi:type="dc:Point" x="1306" y="31" />
+        <di:waypoint xsi:type="dc:Point" x="1267" y="86" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0kiphfm_di" bpmnElement="networkFoundByName_ExclusiveGateway">
+        <dc:Bounds x="838" y="-112" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="-104" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_0pxktc3_di" bpmnElement="ExclusiveGateway_0vtj8n8">
+        <dc:Bounds x="1537" y="-112" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1562" y="-58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jm95hf_di" bpmnElement="SequenceFlow_0jm95hf">
+        <di:waypoint xsi:type="dc:Point" x="1587" y="-87" />
+        <di:waypoint xsi:type="dc:Point" x="1632" y="-87" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1609.5" y="-108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16hhbw3_di" bpmnElement="SequenceFlow_16hhbw3">
+        <di:waypoint xsi:type="dc:Point" x="1732" y="-87" />
+        <di:waypoint xsi:type="dc:Point" x="1769" y="-87" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1750.5" y="-108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0oawye1_di" bpmnElement="SequenceFlow_0oawye1">
+        <di:waypoint xsi:type="dc:Point" x="1869" y="-87" />
+        <di:waypoint xsi:type="dc:Point" x="1909" y="-87" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1889" y="-108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0988gld_di" bpmnElement="SequenceFlow_0988gld">
+        <di:waypoint xsi:type="dc:Point" x="2009" y="-87" />
+        <di:waypoint xsi:type="dc:Point" x="2118" y="-87" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2063.5" y="-108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
index f68fc91..d1f2286 100644 (file)
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="AssignServiceInstanceBB" name="AssignServiceInstanceBB" isExecutable="true">
-    <bpmn:startEvent id="Start_AssignServiceInstanceBB" name="start">
+    <bpmn:startEvent id="Start_AssignServiceInstanceBB">
       <bpmn:outgoing>SequenceFlow_1xr6chl</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="Task_CreateServiceInstance" name="Create Service Instance (AAI)" camunda:expression="${AAICreateTasks.createServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_CreateServiceInstance" name="&#10;AAI&#10;Create&#10;(svc instance)&#10;" camunda:expression="${AAICreateTasks.createServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1h6t7yr</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0czewtx</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="Task_CreateProject" name="Create Project (AAI)" camunda:expression="${AAICreateTasks.createProject(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_CreateProject" name="&#10;AAI&#10;Create&#10;(project)&#10;" camunda:expression="${AAICreateTasks.createProject(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0czewtx</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1t55i01</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="Task_CreateOwningEntity" name="Create Owning Entity (AAI)" camunda:expression="${AAICreateTasks.createOwningEntity(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_CreateOwningEntity" name="&#10;AAI&#10;Create&#10;(owning entity)&#10;" camunda:expression="${AAICreateTasks.createOwningEntity(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1t55i01</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0aef1l8</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="Task_AssignServiceInstance" name="Assign Service Instance (SDNC)" camunda:expression="${SDNCAssignTasks.assignServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_AssignServiceInstance" name="&#10;SDNC&#10;Assign&#10;(svc instance)&#10;" camunda:expression="${SDNCAssignTasks.assignServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0aef1l8</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_07ea5ui</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0czewtx" sourceRef="Task_CreateServiceInstance" targetRef="Task_CreateProject" />
     <bpmn:sequenceFlow id="SequenceFlow_1t55i01" sourceRef="Task_CreateProject" targetRef="Task_CreateOwningEntity" />
     <bpmn:sequenceFlow id="SequenceFlow_07ea5ui" sourceRef="Task_AssignServiceInstance" targetRef="Task_UpdateServiceOstatusToAssigned" />
-    <bpmn:endEvent id="End_AssignServiceInstanceBB" name="end">
+    <bpmn:endEvent id="End_AssignServiceInstanceBB">
       <bpmn:incoming>SequenceFlow_14xl505</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_14xl505" sourceRef="Task_UpdateServiceOstatusToAssigned" targetRef="End_AssignServiceInstanceBB" />
-    <bpmn:serviceTask id="Task_UpdateServiceOstatusToAssigned" name="Update Service Ostatus to Assigned (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedService(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_UpdateServiceOstatusToAssigned" name="&#10;AAI&#10;Update&#10;(svc instance)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedService(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_07ea5ui</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_14xl505</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1h6t7yr" sourceRef="Task_CreateServiceSubscription" targetRef="Task_CreateServiceInstance" />
-    <bpmn:serviceTask id="Task_CreateServiceSubscription" name="Create Service Subscription (AAI)" camunda:expression="${AAICreateTasks.createServiceSubscription(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_CreateServiceSubscription" name="&#10;AAI&#10;Create&#10;(svc subscrip)&#10;" camunda:expression="${AAICreateTasks.createServiceSubscription(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1xr6chl</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1h6t7yr</bpmn:outgoing>
     </bpmn:serviceTask>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AssignServiceInstanceBB">
       <bpmndi:BPMNShape id="StartEvent_0kxwniy_di" bpmnElement="Start_AssignServiceInstanceBB">
-        <dc:Bounds x="75" y="-3" width="36" height="36" />
+        <dc:Bounds x="68" y="90" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="82" y="33" width="23" height="12" />
+          <dc:Bounds x="75" y="126" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0028k7a_di" bpmnElement="Task_CreateServiceInstance">
-        <dc:Bounds x="285" y="-25" width="100" height="80" />
+        <dc:Bounds x="290" y="68" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0oh47a9_di" bpmnElement="Task_CreateProject">
-        <dc:Bounds x="426" y="-25" width="100" height="80" />
+        <dc:Bounds x="431" y="68" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_06hn530_di" bpmnElement="Task_CreateOwningEntity">
-        <dc:Bounds x="572" y="-25" width="100" height="80" />
+        <dc:Bounds x="577" y="68" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_13t22km_di" bpmnElement="Task_AssignServiceInstance">
-        <dc:Bounds x="714" y="-25" width="100" height="80" />
+        <dc:Bounds x="719" y="68" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1xr6chl_di" bpmnElement="SequenceFlow_1xr6chl">
-        <di:waypoint xsi:type="dc:Point" x="111" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="148" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="104" y="108" />
+        <di:waypoint xsi:type="dc:Point" x="153" y="108" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="84.5" y="-6" width="90" height="12" />
+          <dc:Bounds x="83.5" y="87" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0czewtx_di" bpmnElement="SequenceFlow_0czewtx">
-        <di:waypoint xsi:type="dc:Point" x="385" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="426" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="390" y="108" />
+        <di:waypoint xsi:type="dc:Point" x="431" y="108" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="361.5" y="-6" width="0" height="12" />
+          <dc:Bounds x="322" y="87" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1t55i01_di" bpmnElement="SequenceFlow_1t55i01">
-        <di:waypoint xsi:type="dc:Point" x="526" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="572" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="531" y="108" />
+        <di:waypoint xsi:type="dc:Point" x="577" y="108" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="504" y="-6" width="0" height="12" />
+          <dc:Bounds x="464" y="87" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_07ea5ui_di" bpmnElement="SequenceFlow_07ea5ui">
-        <di:waypoint xsi:type="dc:Point" x="814" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="864" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="819" y="108" />
+        <di:waypoint xsi:type="dc:Point" x="869" y="108" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="794" y="-6" width="90" height="12" />
+          <dc:Bounds x="799" y="87" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_0qdq7wj_di" bpmnElement="End_AssignServiceInstanceBB">
-        <dc:Bounds x="1007" y="-3" width="36" height="36" />
+        <dc:Bounds x="1030" y="90" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1016" y="37" width="18" height="12" />
+          <dc:Bounds x="1039" y="130" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_14xl505_di" bpmnElement="SequenceFlow_14xl505">
-        <di:waypoint xsi:type="dc:Point" x="964" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="1007" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="969" y="108" />
+        <di:waypoint xsi:type="dc:Point" x="1030" y="108" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="940.5" y="-6" width="90" height="12" />
+          <dc:Bounds x="954.5" y="87" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1dgenhy_di" bpmnElement="Task_UpdateServiceOstatusToAssigned">
-        <dc:Bounds x="864" y="-25" width="100" height="80" />
+        <dc:Bounds x="869" y="68" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1h6t7yr_di" bpmnElement="SequenceFlow_1h6t7yr">
-        <di:waypoint xsi:type="dc:Point" x="248" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="285" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="253" y="108" />
+        <di:waypoint xsi:type="dc:Point" x="290" y="108" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="266.5" y="-6" width="0" height="12" />
+          <dc:Bounds x="227" y="87" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_09fq3rp_di" bpmnElement="Task_CreateServiceSubscription">
-        <dc:Bounds x="148" y="-25" width="100" height="80" />
+        <dc:Bounds x="153" y="68" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0aef1l8_di" bpmnElement="SequenceFlow_0aef1l8">
-        <di:waypoint xsi:type="dc:Point" x="672" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="714" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="677" y="108" />
+        <di:waypoint xsi:type="dc:Point" x="719" y="108" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="693" y="-6" width="0" height="12" />
+          <dc:Bounds x="653" y="87" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn:definitions>
+</bpmn:definitions>
\ No newline at end of file
index b7ce68e..92b03a7 100644 (file)
@@ -1,30 +1,30 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="AssignVfModuleBB" name="AssignVfModuleBB" isExecutable="true">
-    <bpmn:startEvent id="AssignVfModuleBB_Start" name="Start">
+    <bpmn:startEvent id="AssignVfModuleBB_Start">
       <bpmn:outgoing>SequenceFlow_1xr6chl</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="CreateVfModule" name="Create VF Module (AAI)" camunda:expression="${AAICreateTasks.createVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="CreateVfModule" name="&#10;AAI&#10;Create&#10;(vf module)&#10;" camunda:expression="${AAICreateTasks.createVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1xr6chl</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0czewtx</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="AssignVfModule" name="Assign VF Module (SDNC)" camunda:expression="${SDNCAssignTasks.assignVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="AssignVfModule" name="&#10;SDNC&#10;Assign&#10;(vf module)&#10;" camunda:expression="${SDNCAssignTasks.assignVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0574gaa</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_15hn8si</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1xr6chl" sourceRef="AssignVfModuleBB_Start" targetRef="CreateVfModule" />
     <bpmn:sequenceFlow id="SequenceFlow_0czewtx" sourceRef="CreateVfModule" targetRef="ConnectVfModuleToVolumeGroup" />
-    <bpmn:endEvent id="AssignVfModuleBB_End" name="End">
+    <bpmn:endEvent id="AssignVfModuleBB_End">
       <bpmn:incoming>SequenceFlow_14xl505</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_14xl505" sourceRef="UpdateVfModuleStatus" targetRef="AssignVfModuleBB_End" />
-    <bpmn:serviceTask id="UpdateVfModuleStatus" name="Update VF Module Ostatus to Assigned (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVfModuleStatus" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_15hn8si</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_14xl505</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_15hn8si" sourceRef="AssignVfModule" targetRef="UpdateVfModuleStatus" />
     <bpmn:sequenceFlow id="SequenceFlow_0574gaa" sourceRef="ConnectVfModuleToVolumeGroup" targetRef="AssignVfModule" />
-    <bpmn:serviceTask id="ConnectVfModuleToVolumeGroup" name="Connect VfModule to VolumeGroup (AAI)" camunda:expression="${AAICreateTasks.connectVfModuleToVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="ConnectVfModuleToVolumeGroup" name="&#10;AAI&#10;Connect&#10;(volume)&#10;" camunda:expression="${AAICreateTasks.connectVfModuleToVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0czewtx</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0574gaa</bpmn:outgoing>
     </bpmn:serviceTask>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AssignVfModuleBB">
       <bpmndi:BPMNShape id="StartEvent_0kxwniy_di" bpmnElement="AssignVfModuleBB_Start">
-        <dc:Bounds x="213" y="-3" width="36" height="36" />
+        <dc:Bounds x="184" y="68" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="219" y="33" width="23" height="12" />
+          <dc:Bounds x="190" y="104" width="24" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0028k7a_di" bpmnElement="CreateVfModule">
-        <dc:Bounds x="326" y="-25" width="100" height="80" />
+        <dc:Bounds x="297" y="46" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_13t22km_di" bpmnElement="AssignVfModule">
-        <dc:Bounds x="661" y="-25" width="100" height="80" />
+        <dc:Bounds x="632" y="46" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1xr6chl_di" bpmnElement="SequenceFlow_1xr6chl">
-        <di:waypoint xsi:type="dc:Point" x="249" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="326" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="220" y="86" />
+        <di:waypoint xsi:type="dc:Point" x="297" y="86" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="288" y="0" width="0" height="0" />
+          <dc:Bounds x="214" y="71" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0czewtx_di" bpmnElement="SequenceFlow_0czewtx">
-        <di:waypoint xsi:type="dc:Point" x="426" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="490" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="86" />
+        <di:waypoint xsi:type="dc:Point" x="461" y="86" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="458" y="0" width="0" height="0" />
+          <dc:Bounds x="384" y="71" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_0qdq7wj_di" bpmnElement="AssignVfModuleBB_End">
-        <dc:Bounds x="1037" y="-3" width="36" height="36" />
+        <dc:Bounds x="1008" y="68" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1045" y="37" width="19" height="12" />
+          <dc:Bounds x="1016" y="108" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_14xl505_di" bpmnElement="SequenceFlow_14xl505">
-        <di:waypoint xsi:type="dc:Point" x="935" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="1037" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="906" y="86" />
+        <di:waypoint xsi:type="dc:Point" x="1008" y="86" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="986" y="0" width="0" height="0" />
+          <dc:Bounds x="912" y="71" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1dgenhy_di" bpmnElement="UpdateVfModuleStatus">
-        <dc:Bounds x="835" y="-25" width="100" height="80" />
+        <dc:Bounds x="806" y="46" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_15hn8si_di" bpmnElement="SequenceFlow_15hn8si">
-        <di:waypoint xsi:type="dc:Point" x="761" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="835" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="732" y="86" />
+        <di:waypoint xsi:type="dc:Point" x="806" y="86" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="798" y="0" width="0" height="0" />
+          <dc:Bounds x="724" y="71" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0574gaa_di" bpmnElement="SequenceFlow_0574gaa">
-        <di:waypoint xsi:type="dc:Point" x="590" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="661" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="561" y="86" />
+        <di:waypoint xsi:type="dc:Point" x="632" y="86" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="626" y="0" width="0" height="0" />
+          <dc:Bounds x="552" y="71" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0ekqpfn_di" bpmnElement="ConnectVfModuleToVolumeGroup">
-        <dc:Bounds x="490" y="-25" width="100" height="80" />
+        <dc:Bounds x="461" y="46" width="100" height="80" />
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
index f1a0239..8765bca 100644 (file)
@@ -1,44 +1,38 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="AssignVnfBB" name="AssignVnfBB" isExecutable="true">
-    <bpmn:startEvent id="Start_AssignVnfBB" name="start">
+    <bpmn:startEvent id="Start_AssignVnfBB">
       <bpmn:outgoing>SequenceFlow_0zaz9o2</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="Task_SDNCAdapterVnfTopologyAssign" name="Call SDNC Adapter VNF Topology Assign" camunda:expression="${SDNCAssignTasks.assignVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn:incoming>SequenceFlow_11jum90</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0v8d14a</bpmn:incoming>
+    <bpmn:serviceTask id="Task_SDNCAdapterVnfTopologyAssign" name="&#10;SDNC &#10;Assign&#10;(vnf)&#10;" camunda:expression="${SDNCAssignTasks.assignVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn:incoming>SequenceFlow_14mpqit</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1ks8kmt</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:endEvent id="End_AssignVnfBB" name="end">
+    <bpmn:endEvent id="End_AssignVnfBB">
       <bpmn:incoming>SequenceFlow_0csh9dc</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="Task_CreateVnf" name="Create Vnf (AAI)" camunda:expression="${AAICreateTasks.createVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_CreateVnf" name="&#10;AAI&#10;Create&#10;(vnf)&#10;" camunda:expression="${AAICreateTasks.createVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0zaz9o2</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1jwsja5</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0zaz9o2" sourceRef="Start_AssignVnfBB" targetRef="Task_CreateVnf" />
     <bpmn:sequenceFlow id="SequenceFlow_1ks8kmt" sourceRef="Task_SDNCAdapterVnfTopologyAssign" targetRef="Task_UpdateVnfOrchestrationStatusAssigned" />
     <bpmn:sequenceFlow id="SequenceFlow_0csh9dc" sourceRef="Task_UpdateVnfOrchestrationStatusAssigned" targetRef="End_AssignVnfBB" />
-    <bpmn:serviceTask id="Task_UpdateVnfOrchestrationStatusAssigned" name="Update VNF Orchestration Status Assigned (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_UpdateVnfOrchestrationStatusAssigned" name="&#10;AAI&#10;Update&#10;(vnf)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1ks8kmt</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0csh9dc</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="Task_createInstanceGroups" name="Create Instance Groups (AAI)" camunda:expression="${AssignVnf.createInstanceGroups(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_createInstanceGroups" name="&#10;AAI&#10;Create&#10;(instance grp)&#10;" camunda:expression="${AssignVnf.createInstanceGroups(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1lppa2m</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1nle8kc</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1jwsja5" sourceRef="Task_CreateVnf" targetRef="Task_createPlatform" />
     <bpmn:sequenceFlow id="SequenceFlow_1nle8kc" sourceRef="Task_createInstanceGroups" targetRef="ExclusiveGateway_02tchpp" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_02tchpp" name="Call Homing?" default="SequenceFlow_11jum90">
-      <bpmn:incoming>SequenceFlow_1nle8kc</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_11jum90</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1uiok7v</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_11jum90" name="no" sourceRef="ExclusiveGateway_02tchpp" targetRef="Task_SDNCAdapterVnfTopologyAssign" />
+    <bpmn:sequenceFlow id="SequenceFlow_11jum90" name="no" sourceRef="ExclusiveGateway_02tchpp" targetRef="ExclusiveGateway_1blf52g" />
     <bpmn:sequenceFlow id="SequenceFlow_1uiok7v" name="yes" sourceRef="ExclusiveGateway_02tchpp" targetRef="Task_callHoming">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("callHoming")}]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0v8d14a" sourceRef="Task_callHoming" targetRef="Task_SDNCAdapterVnfTopologyAssign" />
+    <bpmn:sequenceFlow id="SequenceFlow_0v8d14a" sourceRef="Task_callHoming" targetRef="ExclusiveGateway_1blf52g" />
     <bpmn:callActivity id="Task_callHoming" name="Call Homing" calledElement="HomingV2">
       <bpmn:extensionElements>
         <camunda:in source="gBuildingBlockExecution" target="gBuildingBlockExecution" />
     </bpmn:callActivity>
     <bpmn:sequenceFlow id="SequenceFlow_169g0ir" sourceRef="Task_createPlatform" targetRef="Task_createLineOfBusiness" />
     <bpmn:sequenceFlow id="SequenceFlow_1lppa2m" sourceRef="Task_createLineOfBusiness" targetRef="Task_createInstanceGroups" />
-    <bpmn:serviceTask id="Task_createPlatform" name="Create/Connect Platform" camunda:expression="${AAICreateTasks.createPlatform(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_createPlatform" name="&#10;AAI&#10;Connect&#10;(platform)&#10;" camunda:expression="${AAICreateTasks.createPlatform(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1jwsja5</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_169g0ir</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="Task_createLineOfBusiness" name="Create/Connect Line of Business" camunda:expression="${AAICreateTasks.createLineOfBusiness(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_createLineOfBusiness" name="&#10;AAI&#10;Create&#10;(line bus)&#10;" camunda:expression="${AAICreateTasks.createLineOfBusiness(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_169g0ir</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1lppa2m</bpmn:outgoing>
     </bpmn:serviceTask>
+    <bpmn:subProcess id="SubProcess_19596dp" name="Error Handling&#10;&#10;" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_1c3cyuv">
+        <bpmn:outgoing>SequenceFlow_1i52a7x</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1bywujf">
+        <bpmn:incoming>SequenceFlow_1i52a7x</bpmn:incoming>
+        <bpmn:terminateEventDefinition />
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1i52a7x" sourceRef="StartEvent_1c3cyuv" targetRef="EndEvent_1bywujf" />
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_14mpqit" sourceRef="ExclusiveGateway_1blf52g" targetRef="Task_SDNCAdapterVnfTopologyAssign" />
+    <bpmn:inclusiveGateway id="ExclusiveGateway_02tchpp" name="Call Homing?" default="SequenceFlow_11jum90">
+      <bpmn:incoming>SequenceFlow_1nle8kc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11jum90</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1uiok7v</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
+    <bpmn:inclusiveGateway id="ExclusiveGateway_1blf52g">
+      <bpmn:incoming>SequenceFlow_11jum90</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0v8d14a</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14mpqit</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
   </bpmn:process>
   <bpmn:error id="Error_0rgauy1" name="gDelegateError" errorCode="7000" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AssignVnfBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_AssignVnfBB">
-        <dc:Bounds x="-111" y="76" width="36" height="36" />
+        <dc:Bounds x="72" y="116" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-104" y="112" width="22" height="12" />
+          <dc:Bounds x="79" y="152" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0m0ikey_di" bpmnElement="Task_SDNCAdapterVnfTopologyAssign">
-        <dc:Bounds x="605" y="54" width="100" height="80" />
+        <dc:Bounds x="930" y="94" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1h93h9d_di" bpmnElement="End_AssignVnfBB">
-        <dc:Bounds x="895" y="76" width="36" height="36" />
+        <dc:Bounds x="1229" y="116" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="904" y="116" width="18" height="12" />
+          <dc:Bounds x="1238" y="156" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1r380lg_di" bpmnElement="Task_CreateVnf">
-        <dc:Bounds x="-36" y="54" width="100" height="80" />
+        <dc:Bounds x="147" y="94" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0zaz9o2_di" bpmnElement="SequenceFlow_0zaz9o2">
-        <di:waypoint xsi:type="dc:Point" x="-75" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="-36" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="108" y="134" />
+        <di:waypoint xsi:type="dc:Point" x="147" y="134" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-100" y="73" width="90" height="12" />
+          <dc:Bounds x="83" y="113" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1ks8kmt_di" bpmnElement="SequenceFlow_1ks8kmt">
-        <di:waypoint xsi:type="dc:Point" x="705" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="747" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="1030" y="134" />
+        <di:waypoint xsi:type="dc:Point" x="1056" y="134" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="681" y="73" width="90" height="12" />
+          <dc:Bounds x="998" y="113" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0csh9dc_di" bpmnElement="SequenceFlow_0csh9dc">
-        <di:waypoint xsi:type="dc:Point" x="847" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="895" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="1156" y="134" />
+        <di:waypoint xsi:type="dc:Point" x="1229" y="134" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="826" y="73" width="90" height="12" />
+          <dc:Bounds x="1147.5" y="113" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0s6d1be_di" bpmnElement="Task_UpdateVnfOrchestrationStatusAssigned">
-        <dc:Bounds x="747" y="54" width="100" height="80" />
+        <dc:Bounds x="1056" y="94" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0wjy7za_di" bpmnElement="Task_createInstanceGroups">
-        <dc:Bounds x="351" y="54" width="100" height="80" />
+        <dc:Bounds x="534" y="94" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1jwsja5_di" bpmnElement="SequenceFlow_1jwsja5">
-        <di:waypoint xsi:type="dc:Point" x="64" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="96" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="247" y="134" />
+        <di:waypoint xsi:type="dc:Point" x="279" y="134" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="35" y="73" width="90" height="12" />
+          <dc:Bounds x="218" y="113" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1nle8kc_di" bpmnElement="SequenceFlow_1nle8kc">
-        <di:waypoint xsi:type="dc:Point" x="451" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="496" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="634" y="134" />
+        <di:waypoint xsi:type="dc:Point" x="679" y="134" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="428.5" y="73" width="90" height="12" />
+          <dc:Bounds x="611.5" y="113" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_02tchpp_di" bpmnElement="ExclusiveGateway_02tchpp" isMarkerVisible="true">
-        <dc:Bounds x="496" y="69" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="489" y="123" width="64" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_11jum90_di" bpmnElement="SequenceFlow_11jum90">
-        <di:waypoint xsi:type="dc:Point" x="546" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="605" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="159" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="159" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="569.5" y="73" width="12" height="12" />
+          <dc:Bounds x="715.1383523847063" y="174" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1uiok7v_di" bpmnElement="SequenceFlow_1uiok7v">
-        <di:waypoint xsi:type="dc:Point" x="521" y="69" />
-        <di:waypoint xsi:type="dc:Point" x="521" y="-23" />
-        <di:waypoint xsi:type="dc:Point" x="605" y="-23" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="109" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="68" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="68" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="527" y="17.494623655913976" width="18" height="12" />
+          <dc:Bounds x="711" y="75.5" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0v8d14a_di" bpmnElement="SequenceFlow_0v8d14a">
-        <di:waypoint xsi:type="dc:Point" x="655" y="17" />
-        <di:waypoint xsi:type="dc:Point" x="655" y="54" />
+        <di:waypoint xsi:type="dc:Point" x="839" y="68" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="68" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="109" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="670" y="29.5" width="0" height="12" />
+          <dc:Bounds x="811.5" y="47" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_14ye6fs_di" bpmnElement="Task_callHoming">
-        <dc:Bounds x="605" y="-63" width="100" height="80" />
+        <dc:Bounds x="739" y="28" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_169g0ir_di" bpmnElement="SequenceFlow_169g0ir">
-        <di:waypoint xsi:type="dc:Point" x="196" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="221" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="379" y="134" />
+        <di:waypoint xsi:type="dc:Point" x="404" y="134" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="208.5" y="73" width="0" height="12" />
+          <dc:Bounds x="347" y="113" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1lppa2m_di" bpmnElement="SequenceFlow_1lppa2m">
-        <di:waypoint xsi:type="dc:Point" x="321" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="351" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="504" y="134" />
+        <di:waypoint xsi:type="dc:Point" x="534" y="134" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="336" y="73" width="0" height="12" />
+          <dc:Bounds x="474" y="113" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0c97kfg_di" bpmnElement="Task_createPlatform">
-        <dc:Bounds x="96" y="54" width="100" height="80" />
+        <dc:Bounds x="279" y="94" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1b9yljc_di" bpmnElement="Task_createLineOfBusiness">
-        <dc:Bounds x="221" y="54" width="100" height="80" />
+        <dc:Bounds x="404" y="94" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_19596dp_di" bpmnElement="SubProcess_19596dp" isExpanded="true">
+        <dc:Bounds x="249" y="267" width="231" height="135" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1c3cyuv_di" bpmnElement="StartEvent_1c3cyuv">
+        <dc:Bounds x="286" y="323" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="259" y="359" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1bywujf_di" bpmnElement="EndEvent_1bywujf">
+        <dc:Bounds x="422" y="323" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="395" y="359" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1i52a7x_di" bpmnElement="SequenceFlow_1i52a7x">
+        <di:waypoint xsi:type="dc:Point" x="322" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="422" y="341" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="372" y="320" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14mpqit_di" bpmnElement="SequenceFlow_14mpqit">
+        <di:waypoint xsi:type="dc:Point" x="899" y="134" />
+        <di:waypoint xsi:type="dc:Point" x="930" y="134" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="914.5" y="113" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0x0c3kk_di" bpmnElement="ExclusiveGateway_02tchpp">
+        <dc:Bounds x="679" y="109" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="732" y="128" width="64" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_0ijggth_di" bpmnElement="ExclusiveGateway_1blf52g">
+        <dc:Bounds x="849" y="109" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="896" y="163" width="0" height="12" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
index b1626c8..7331d84 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="AssignVolumeGroupBB" name="AssignVolumeGroupBB" isExecutable="true">
     <bpmn:startEvent id="AssignVolumeGroupBB_Start" name="Start">
       <bpmn:outgoing>SequenceFlow_1wz1rfg</bpmn:outgoing>
@@ -8,7 +8,7 @@
     <bpmn:endEvent id="AssignVolumeGroupBB_End">
       <bpmn:incoming>SequenceFlow_0mh0v9h</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="AssignVolumeGroup" name="AssignVolumeGroup" camunda:expression="${AAICreateTasks.createVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="AssignVolumeGroup" name="&#10;AAI&#10;Create&#10;(volume)&#10;" camunda:expression="${AAICreateTasks.createVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1wz1rfg</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0mh0v9h</bpmn:outgoing>
     </bpmn:serviceTask>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AssignVolumeGroupBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="AssignVolumeGroupBB_Start">
-        <dc:Bounds x="310" y="102" width="36" height="36" />
+        <dc:Bounds x="177" y="102" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="316" y="138" width="24" height="12" />
+          <dc:Bounds x="183" y="138" width="24" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1wz1rfg_di" bpmnElement="SequenceFlow_1wz1rfg">
-        <di:waypoint xsi:type="dc:Point" x="346" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="464" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="213" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="331" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="360" y="99" width="90" height="12" />
+          <dc:Bounds x="227" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1k6463v_di" bpmnElement="AssignVolumeGroupBB_End">
-        <dc:Bounds x="662" y="102" width="36" height="36" />
+        <dc:Bounds x="529" y="102" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="635" y="142" width="90" height="12" />
+          <dc:Bounds x="502" y="142" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0rytcj0_di" bpmnElement="AssignVolumeGroup">
-        <dc:Bounds x="464" y="80" width="100" height="80" />
+        <dc:Bounds x="331" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0mh0v9h_di" bpmnElement="SequenceFlow_0mh0v9h">
-        <di:waypoint xsi:type="dc:Point" x="564" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="662" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="431" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="529" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="613" y="98" width="0" height="13" />
+          <dc:Bounds x="435" y="98" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 6641516..fa0c7f4 100644 (file)
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="ChangeModelServiceInstanceBB" name="ChangeModelServiceInstanceBB" isExecutable="true">
-    <bpmn2:startEvent id="ChangeModelServiceInstance_Start" name="Start">
+    <bpmn2:startEvent id="ChangeModelServiceInstance_Start">
       <bpmn2:outgoing>SequenceFlow_18i4a05</bpmn2:outgoing>
     </bpmn2:startEvent>
-    <bpmn2:endEvent id="ChangeModelServiceInstance_End" name="End">
+    <bpmn2:endEvent id="ChangeModelServiceInstance_End">
       <bpmn2:incoming>SequenceFlow_0g502yj</bpmn2:incoming>
     </bpmn2:endEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_18i4a05" sourceRef="ChangeModelServiceInstance_Start" targetRef="SDNCChangeModelServiceInstance" />
     <bpmn2:sequenceFlow id="SequenceFlow_19kfk17" sourceRef="SDNCChangeModelServiceInstance" targetRef="AAIUpdateModelServiceInstance" />
     <bpmn2:sequenceFlow id="SequenceFlow_0g502yj" sourceRef="AAIUpdateModelServiceInstance" targetRef="ChangeModelServiceInstance_End" />
-    <bpmn2:serviceTask id="SDNCChangeModelServiceInstance" name="SDNC ChangeModel ServiceInstance" camunda:expression="${SDNCChangeAssignTasks.changeModelServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="SDNCChangeModelServiceInstance" name="&#10;SDNC &#10;Change&#10;(svc instance)&#10;" camunda:expression="${SDNCChangeAssignTasks.changeModelServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_18i4a05</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_19kfk17</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="AAIUpdateModelServiceInstance" name="AAI Update Model ServiceInstance" camunda:expression="${AAIUpdateTasks.updateServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="AAIUpdateModelServiceInstance" name="&#10;AAI &#10;Update&#10;(svc Instance)&#10;" camunda:expression="${AAIUpdateTasks.updateServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_19kfk17</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0g502yj</bpmn2:outgoing>
     </bpmn2:serviceTask>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_18i4a05_di" bpmnElement="SequenceFlow_18i4a05">
         <di:waypoint xsi:type="dc:Point" x="111" y="106" />
-        <di:waypoint xsi:type="dc:Point" x="213" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="234" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="162" y="85" width="0" height="12" />
+          <dc:Bounds x="127.5" y="85" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_19kfk17_di" bpmnElement="SequenceFlow_19kfk17">
-        <di:waypoint xsi:type="dc:Point" x="313" y="106" />
-        <di:waypoint xsi:type="dc:Point" x="423" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="334" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="390" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="368" y="85" width="0" height="12" />
+          <dc:Bounds x="317" y="85" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0g502yj_di" bpmnElement="SequenceFlow_0g502yj">
-        <di:waypoint xsi:type="dc:Point" x="523" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="106" />
         <di:waypoint xsi:type="dc:Point" x="632" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="577.5" y="85" width="0" height="12" />
+          <dc:Bounds x="516" y="85" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_03km5f0_di" bpmnElement="SDNCChangeModelServiceInstance">
-        <dc:Bounds x="213" y="66" width="100" height="80" />
+        <dc:Bounds x="234" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_10b2mxq_di" bpmnElement="AAIUpdateModelServiceInstance">
-        <dc:Bounds x="423" y="66" width="100" height="80" />
+        <dc:Bounds x="390" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
index a48abe2..fd247d2 100644 (file)
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="ChangeModelVfModuleBB" name="ChangeModelVfModuleBB" isExecutable="true">
-    <bpmn:startEvent id="ChangeModelVfModuleBB_Start" name="Start">
+    <bpmn:startEvent id="ChangeModelVfModuleBB_Start">
       <bpmn:outgoing>SequenceFlow_0ieafii</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0ieafii" sourceRef="ChangeModelVfModuleBB_Start" targetRef="ChangeModelVfModule" />
-    <bpmn:endEvent id="ChangeModelVfModuleBB_End" name="End">
+    <bpmn:endEvent id="ChangeModelVfModuleBB_End">
       <bpmn:incoming>SequenceFlow_0xsp0pv</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="ChangeModelVfModule" name="SDNC VFModule Change Model" camunda:expression="${SDNCChangeAssignTasks.changeAssignModelVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="ChangeModelVfModule" name="&#10;SDNC&#10;Change &#10;(vf model)&#10;" camunda:expression="${SDNCChangeAssignTasks.changeAssignModelVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0ieafii</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_14kvrbe</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_14kvrbe" sourceRef="ChangeModelVfModule" targetRef="UpdateVfModuleModel" />
-    <bpmn:serviceTask id="UpdateVfModuleModel" name="Change VFModule Model (AAI)" camunda:expression="${AAIUpdateTasks.updateModelVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVfModuleModel" name="&#10;AAI&#10;Update&#10;(vf model)&#10;" camunda:expression="${AAIUpdateTasks.updateModelVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_14kvrbe</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0xsp0pv</bpmn:outgoing>
     </bpmn:serviceTask>
@@ -30,9 +30,9 @@
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0ieafii_di" bpmnElement="SequenceFlow_0ieafii">
         <di:waypoint xsi:type="dc:Point" x="209" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="260" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="297" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="189.5" y="99" width="90" height="12" />
+          <dc:Bounds x="208" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1v967li_di" bpmnElement="ChangeModelVfModuleBB_End">
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0hawa84_di" bpmnElement="ChangeModelVfModule">
-        <dc:Bounds x="260" y="80" width="100" height="80" />
+        <dc:Bounds x="297" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_14kvrbe_di" bpmnElement="SequenceFlow_14kvrbe">
-        <di:waypoint xsi:type="dc:Point" x="360" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="466" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="435" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="368" y="99" width="90" height="12" />
+          <dc:Bounds x="371" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_175e9ul_di" bpmnElement="UpdateVfModuleModel">
-        <dc:Bounds x="466" y="80" width="100" height="80" />
+        <dc:Bounds x="435" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0xsp0pv_di" bpmnElement="SequenceFlow_0xsp0pv">
-        <di:waypoint xsi:type="dc:Point" x="566" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="535" y="120" />
         <di:waypoint xsi:type="dc:Point" x="636" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="601" y="99" width="0" height="12" />
+          <dc:Bounds x="540.5" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 68f491e..b320c12 100644 (file)
@@ -1,23 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="ChangeModelVnfBB" name="ChangeModelVnfBB" isExecutable="true">
-    <bpmn2:startEvent id="ChangeModelVnf_Start" name="Start">
+    <bpmn2:startEvent id="ChangeModelVnf_Start">
       <bpmn2:outgoing>SequenceFlow_18i4a05</bpmn2:outgoing>
     </bpmn2:startEvent>
-    <bpmn2:endEvent id="ChangeModelVnf_End" name="End">
+    <bpmn2:endEvent id="ChangeModelVnf_End">
       <bpmn2:incoming>SequenceFlow_0g502yj</bpmn2:incoming>
     </bpmn2:endEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_18i4a05" sourceRef="ChangeModelVnf_Start" targetRef="SDNCChangeModel" />
     <bpmn2:sequenceFlow id="SequenceFlow_19kfk17" sourceRef="SDNCChangeModel" targetRef="AAIUpdateModel" />
     <bpmn2:sequenceFlow id="SequenceFlow_0g502yj" sourceRef="AAIUpdateModel" targetRef="ChangeModelVnf_End" />
-    <bpmn2:serviceTask id="SDNCChangeModel" name="SDNC ChangeModel Vnf" camunda:expression="${SDNCChangeAssignTasks.changeModelVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="SDNCChangeModel" name="&#10;SDNC&#10;Change &#10;(vnf model)&#10;" camunda:expression="${SDNCChangeAssignTasks.changeModelVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_18i4a05</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_19kfk17</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="AAIUpdateModel" name="AAI Update Model Vnf" camunda:expression="${AAIUpdateTasks.updateObjectVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="AAIUpdateModel" name="&#10;AAI &#10;Update &#10;(vnf model)&#10;" camunda:expression="${AAIUpdateTasks.updateObjectVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_19kfk17</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0g502yj</bpmn2:outgoing>
     </bpmn2:serviceTask>
+    <bpmn2:subProcess id="SubProcess_1nibii6" name="Error Handling&#10;&#10;" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1fnfrm5">
+        <bpmn2:outgoing>SequenceFlow_0s2743f</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_124ugc0">
+        <bpmn2:incoming>SequenceFlow_0s2743f</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_0s2743f" sourceRef="StartEvent_1fnfrm5" targetRef="EndEvent_124ugc0" />
+    </bpmn2:subProcess>
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
       <bpmndi:BPMNShape id="ServiceTask_10b2mxq_di" bpmnElement="AAIUpdateModel">
         <dc:Bounds x="423" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1nibii6_di" bpmnElement="SubProcess_1nibii6" isExpanded="true">
+        <dc:Bounds x="164" y="244" width="231" height="135" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1fnfrm5_di" bpmnElement="StartEvent_1fnfrm5">
+        <dc:Bounds x="201" y="300" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="174" y="336" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_124ugc0_di" bpmnElement="EndEvent_124ugc0">
+        <dc:Bounds x="338" y="300" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="311" y="336" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s2743f_di" bpmnElement="SequenceFlow_0s2743f">
+        <di:waypoint xsi:type="dc:Point" x="237" y="318" />
+        <di:waypoint xsi:type="dc:Point" x="338" y="318" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="287.5" y="297" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
index 1e88963..42c6383 100644 (file)
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="CreateCustomerBB" name="CreateCustomerBB" isExecutable="true">
-    <bpmn:startEvent id="CreateCustomerBB_Start" name="Start">
+    <bpmn:startEvent id="CreateCustomerBB_Start">
       <bpmn:outgoing>SequenceFlow_1wz1rfg</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:sequenceFlow id="SequenceFlow_1wz1rfg" sourceRef="CreateCustomerBB_Start" targetRef="CreateCustomerAAI" />
     <bpmn:endEvent id="CreateCustomerBB_End">
       <bpmn:incoming>SequenceFlow_0kfkpbh</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="CreateCustomerAAI" name="CreateCustomer (AAI)" camunda:expression="${AAICreateTasks.createCustomer(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="CreateCustomerAAI" name="&#10;AAI&#10;Create&#10;(cust)&#10;" camunda:expression="${AAICreateTasks.createCustomer(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1wz1rfg</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0kfkpbh</bpmn:outgoing>
     </bpmn:serviceTask>
index 0d2d829..609edf4 100644 (file)
@@ -1,29 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="CreateNetworkBB" name="CreateNetworkBB" isExecutable="true">
-    <bpmn2:startEvent id="createNetwork_startEvent" name="Start Flow">
+    <bpmn2:startEvent id="createNetwork_startEvent">
       <bpmn2:outgoing>SequenceFlow_1maepy7</bpmn2:outgoing>
     </bpmn2:startEvent>
-    <bpmn2:endEvent id="createNetwork_EndEvent" name="End Flow">
+    <bpmn2:endEvent id="createNetwork_EndEvent">
       <bpmn2:incoming>SequenceFlow_0sissul</bpmn2:incoming>
     </bpmn2:endEvent>
-    <bpmn2:serviceTask id="QueryVpnBinding_ServiceTask" name="Query Vpn Binding in AAI" camunda:expression="${AAIQueryTasks.queryNetworkVpnBinding(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="QueryVpnBinding_ServiceTask" name="&#10;AAI&#10;Query&#10;(vpn binding)&#10;" camunda:expression="${AAIQueryTasks.queryNetworkVpnBinding(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_1oc7wcr</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0n42zi5</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="Create_Network_ServiceTask" name="Create Network" camunda:expression="${NetworkAdapterCreateTasks.createNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="Create_Network_ServiceTask" name="&#10;AIC&#10;Create&#10;(network)&#10;" camunda:expression="${NetworkAdapterCreateTasks.createNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_1eqfh23</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0innva6</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="QueryNetworkPolicy_ServiceTask" name="Query Network Policy in AAI" camunda:expression="${AAIQueryTasks.queryNetworkPolicy(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="QueryNetworkPolicy_ServiceTask" name="&#10;AAI&#10;Query&#10;(net policy)&#10;" camunda:expression="${AAIQueryTasks.queryNetworkPolicy(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_0n42zi5</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1yy4aik</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="QueryNetworkTableRef_ServiceTask" name="Query Network TableRef in AAI" camunda:expression="${AAIQueryTasks.queryNetworkTableRef(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="QueryNetworkTableRef_ServiceTask" name="&#10;AAI&#10;Query&#10;(net table)&#10;" camunda:expression="${AAIQueryTasks.queryNetworkTableRef(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_1yy4aik</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1h9kkhb</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="Update_Network_AAI_ServiceTask" name="Update Network in AAI" camunda:expression="${AAIUpdateTasks.updateNetworkCreated(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="Update_Network_AAI_ServiceTask" name="&#10;AAI&#10;Update (network)&#10;" camunda:expression="${AAIUpdateTasks.updateNetworkCreated(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_0innva6</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0sissul</bpmn2:outgoing>
     </bpmn2:serviceTask>
       <bpmndi:BPMNShape id="StartEvent_0lbwmd1_di" bpmnElement="createNetwork_startEvent">
         <dc:Bounds x="236" y="-55" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="230" y="-14" width="48" height="14" />
+          <dc:Bounds x="229" y="-14" width="50" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_10l9a3s_di" bpmnElement="createNetwork_EndEvent">
         <dc:Bounds x="656" y="326" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="652" y="362" width="45" height="14" />
+          <dc:Bounds x="652" y="362" width="46" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1k7d8ih_di" bpmnElement="QueryVpnBinding_ServiceTask">
index c6c3599..fb2bfae 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="CreateNetworkCollectionBB" name="CreateNetworkCollectionBB" isExecutable="true">
-    <bpmn2:startEvent id="createNetworkCollection_startEvent" name="Start Flow">
+    <bpmn2:startEvent id="createNetworkCollection_startEvent">
       <bpmn2:outgoing>SequenceFlow_1maepy7</bpmn2:outgoing>
     </bpmn2:startEvent>
-    <bpmn2:endEvent id="createNetworkCollection_EndEvent" name="End Flow">
+    <bpmn2:endEvent id="createNetworkCollection_EndEvent">
       <bpmn2:incoming>SequenceFlow_0hhklb4</bpmn2:incoming>
     </bpmn2:endEvent>
     <bpmn2:serviceTask id="BuildName_ServiceTask" name="Buld Collection and Instance Names" camunda:expression="${CreateNetworkCollection.buildNetworkCollectionName(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}  ">
       <bpmn2:outgoing>SequenceFlow_06rq9pi</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1maepy7" sourceRef="createNetworkCollection_startEvent" targetRef="BuildName_ServiceTask" />
-    <bpmn2:serviceTask id="ServiceTask_create_NetworkCollection" name="Create Network Collection in AAI&#10;" camunda:expression="${AAICreateTasks.createNetworkCollection(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="ServiceTask_create_NetworkCollection" name="&#10;AAI&#10;Create&#10;(net collection)&#10;" camunda:expression="${AAICreateTasks.createNetworkCollection(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_06rq9pi</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_05yxpu5</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_06rq9pi" sourceRef="BuildName_ServiceTask" targetRef="ServiceTask_create_NetworkCollection" />
-    <bpmn2:serviceTask id="ServiceTask_create_NetworkCollectionInstanceGroup" name="Create Network Collection Instance Group in AAI&#10;" camunda:expression="${AAICreateTasks.createNetworkCollectionInstanceGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="ServiceTask_create_NetworkCollectionInstanceGroup" name="&#10;AAI&#10;Create&#10;(instance grp)&#10;" camunda:expression="${AAICreateTasks.createNetworkCollectionInstanceGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_05yxpu5</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0z4c30j</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="ServiceTask_Connect_Collection_to_InstanceGroup" name="Connect Collection to InstanceGroup&#10;" camunda:expression="${CreateNetworkCollection.connectCollectionToInstanceGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}  ">
+    <bpmn2:serviceTask id="ServiceTask_Connect_Collection_to_InstanceGroup" name="&#10;AAI&#10;Connect&#10;(net collection)&#10;" camunda:expression="${CreateNetworkCollection.connectCollectionToInstanceGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}  ">
       <bpmn2:incoming>SequenceFlow_0z4c30j</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1hij1px</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_05yxpu5" sourceRef="ServiceTask_create_NetworkCollection" targetRef="ServiceTask_create_NetworkCollectionInstanceGroup" />
     <bpmn2:sequenceFlow id="SequenceFlow_0z4c30j" sourceRef="ServiceTask_create_NetworkCollectionInstanceGroup" targetRef="ServiceTask_Connect_Collection_to_InstanceGroup" />
-    <bpmn2:serviceTask id="ServiceTask_Connect_Collection_to_ServiceInstance" name="Connect Collection to ServiceInstance&#10;" camunda:expression="${CreateNetworkCollection.connectCollectionToServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}  ">
+    <bpmn2:serviceTask id="ServiceTask_Connect_Collection_to_ServiceInstance" name="&#10;AAI&#10;Connect&#10;(svc instance)&#10;" camunda:expression="${CreateNetworkCollection.connectCollectionToServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}  ">
       <bpmn2:incoming>SequenceFlow_1hij1px</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0hhklb4</bpmn2:outgoing>
     </bpmn2:serviceTask>
       <bpmndi:BPMNShape id="StartEvent_0lbwmd1_di" bpmnElement="createNetworkCollection_startEvent">
         <dc:Bounds x="236" y="-55" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="230" y="-14" width="48" height="14" />
+          <dc:Bounds x="229" y="-14" width="50" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_10l9a3s_di" bpmnElement="createNetworkCollection_EndEvent">
         <dc:Bounds x="1132" y="-55" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1128" y="-19" width="45" height="12" />
+          <dc:Bounds x="1128" y="-19" width="46" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_08q9eo4_di" bpmnElement="BuildName_ServiceTask">
index bd24eea..bd126de 100644 (file)
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="CreateVfModuleBB" name="CreateVfModuleBB" isExecutable="true">
-    <bpmn:startEvent id="CreateVfModuleBB_Start" name="Start">
+    <bpmn:startEvent id="CreateVfModuleBB_Start">
       <bpmn:outgoing>SequenceFlow_1xr6chl</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="QueryVfModule" name="Query VF Module (SDNC)" camunda:expression="${SDNCQueryTasks.queryVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="QueryVfModule" name="&#10;SDNC&#10;Get&#10;(vf module)&#10;" camunda:expression="${SDNCQueryTasks.queryVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1s4rpyp</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_15hn8si</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1xr6chl" sourceRef="CreateVfModuleBB_Start" targetRef="QueryVnf" />
-    <bpmn:endEvent id="CreateVfModuleBB_End" name="End">
+    <bpmn:endEvent id="CreateVfModuleBB_End">
       <bpmn:incoming>SequenceFlow_1stomxq</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:serviceTask id="CreateVfModule" name="Create VF Module (VNF)" camunda:expression="${VnfAdapterCreateTasks.createVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
@@ -18,7 +18,7 @@
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_15hn8si" sourceRef="QueryVfModule" targetRef="CreateVfModule" />
     <bpmn:sequenceFlow id="SequenceFlow_1s4rpyp" sourceRef="QueryVnf" targetRef="QueryVfModule" />
-    <bpmn:serviceTask id="QueryVnf" name="Query VNF (SDNC)" camunda:expression="${SDNCQueryTasks.queryVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="QueryVnf" name="&#10;SDNC&#10;Get&#10;(vnf)&#10;" camunda:expression="${SDNCQueryTasks.queryVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1xr6chl</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1s4rpyp</bpmn:outgoing>
     </bpmn:serviceTask>
       <bpmn:outgoing>SequenceFlow_0ecr393</bpmn:outgoing>
     </bpmn:callActivity>
     <bpmn:sequenceFlow id="SequenceFlow_1stomxq" sourceRef="UpdateVfModuleStatus" targetRef="CreateVfModuleBB_End" />
-    <bpmn:serviceTask id="UpdateVfModuleStatus" name="Update VfModule Ostatus to Created (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVfModuleStatus" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0qqsilv</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1stomxq</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0qqsilv" sourceRef="UpdateVfModuleHeatStackId" targetRef="UpdateVfModuleStatus" />
-    <bpmn:serviceTask id="UpdateVfModuleHeatStackId" name="Update VfModule HeatStackId (AAI)" camunda:expression="${AAIUpdateTasks.updateHeatStackIdVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVfModuleHeatStackId" name="&#10;AAI&#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateHeatStackIdVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0ecr393</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0qqsilv</bpmn:outgoing>
     </bpmn:serviceTask>
+    <bpmn:subProcess id="SubProcess_1getwnf" name="Error Handling&#10;&#10;" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_1c8o652">
+        <bpmn:outgoing>SequenceFlow_0gcots6</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1emam1w">
+        <bpmn:incoming>SequenceFlow_0gcots6</bpmn:incoming>
+        <bpmn:terminateEventDefinition />
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0gcots6" sourceRef="StartEvent_1c8o652" targetRef="EndEvent_1emam1w" />
+    </bpmn:subProcess>
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVfModuleBB">
       <bpmndi:BPMNShape id="StartEvent_0kxwniy_di" bpmnElement="CreateVfModuleBB_Start">
-        <dc:Bounds x="213" y="-3" width="36" height="36" />
+        <dc:Bounds x="100" y="88" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="219" y="33" width="23" height="12" />
+          <dc:Bounds x="106" y="124" width="24" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_13t22km_di" bpmnElement="QueryVfModule">
-        <dc:Bounds x="529" y="-25" width="100" height="80" />
+        <dc:Bounds x="416" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1xr6chl_di" bpmnElement="SequenceFlow_1xr6chl">
-        <di:waypoint xsi:type="dc:Point" x="249" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="329" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="136" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="216" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="289" y="0" width="0" height="0" />
+          <dc:Bounds x="131" y="91" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_0qdq7wj_di" bpmnElement="CreateVfModuleBB_End">
-        <dc:Bounds x="1391" y="-3" width="36" height="36" />
+        <dc:Bounds x="1278" y="88" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1399" y="37" width="19" height="12" />
+          <dc:Bounds x="1286" y="128" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1dgenhy_di" bpmnElement="CreateVfModule">
-        <dc:Bounds x="725" y="-25" width="100" height="80" />
+        <dc:Bounds x="612" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_15hn8si_di" bpmnElement="SequenceFlow_15hn8si">
-        <di:waypoint xsi:type="dc:Point" x="629" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="725" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="516" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="612" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="677" y="0" width="0" height="0" />
+          <dc:Bounds x="519" y="91" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1s4rpyp_di" bpmnElement="SequenceFlow_1s4rpyp">
-        <di:waypoint xsi:type="dc:Point" x="429" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="529" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="316" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="416" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="479" y="0" width="0" height="0" />
+          <dc:Bounds x="321" y="91" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1frb5h2_di" bpmnElement="QueryVnf">
-        <dc:Bounds x="329" y="-25" width="100" height="80" />
+        <dc:Bounds x="216" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_16g4dz0_di" bpmnElement="SequenceFlow_16g4dz0">
-        <di:waypoint xsi:type="dc:Point" x="825" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="890" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="712" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="777" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="857.5" y="-6" width="0" height="12" />
+          <dc:Bounds x="700" y="85" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ecr393_di" bpmnElement="SequenceFlow_0ecr393">
-        <di:waypoint xsi:type="dc:Point" x="990" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="1063" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="877" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="950" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1027" y="0" width="0" height="0" />
+          <dc:Bounds x="869" y="91" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_1i1pfzb_di" bpmnElement="VnfAdapter">
-        <dc:Bounds x="890" y="-25" width="100" height="80" />
+        <dc:Bounds x="777" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1stomxq_di" bpmnElement="SequenceFlow_1stomxq">
-        <di:waypoint xsi:type="dc:Point" x="1327" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="1391" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="1214" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="1278" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1359" y="0" width="0" height="0" />
+          <dc:Bounds x="1201" y="91" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0fpfn71_di" bpmnElement="UpdateVfModuleStatus">
-        <dc:Bounds x="1227" y="-25" width="100" height="80" />
+        <dc:Bounds x="1114" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0qqsilv_di" bpmnElement="SequenceFlow_0qqsilv">
-        <di:waypoint xsi:type="dc:Point" x="1163" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="1227" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="1050" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="1114" y="106" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1195" y="0" width="0" height="0" />
+          <dc:Bounds x="1037" y="91" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_04k1b85_di" bpmnElement="UpdateVfModuleHeatStackId">
-        <dc:Bounds x="1063" y="-25" width="100" height="80" />
+        <dc:Bounds x="950" y="66" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1getwnf_di" bpmnElement="SubProcess_1getwnf" isExpanded="true">
+        <dc:Bounds x="172" y="276" width="231" height="135" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1c8o652_di" bpmnElement="StartEvent_1c8o652">
+        <dc:Bounds x="211" y="334" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="184" y="370" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1emam1w_di" bpmnElement="EndEvent_1emam1w">
+        <dc:Bounds x="348" y="334" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="321" y="370" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gcots6_di" bpmnElement="SequenceFlow_0gcots6">
+        <di:waypoint xsi:type="dc:Point" x="247" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="348" y="352" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="297.5" y="331" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
index ffe74d1..747265c 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="CreateVolumeGroupBB" name="CreateVolumeGroupBB" isExecutable="true">
     <bpmn:startEvent id="CreateVolumeGroupBB_Start" name="Start">
       <bpmn:outgoing>SequenceFlow_1wz1rfg</bpmn:outgoing>
@@ -8,17 +8,17 @@
     <bpmn:endEvent id="CreateVolumeGroupBB_End">
       <bpmn:incoming>SequenceFlow_0mh0v9h</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="CreateVolumeGroupVnfAdapter" name="CreateVolumeGroupVnfAdapter Request" camunda:expression="${VnfAdapterCreateTasks.createVolumeGroupRequest(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="CreateVolumeGroupVnfAdapter" name="Create Request" camunda:expression="${VnfAdapterCreateTasks.createVolumeGroupRequest(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_06q6g74</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0kfkpbh</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0kfkpbh" sourceRef="CreateVolumeGroupVnfAdapter" targetRef="Vnf_Adapter" />
-    <bpmn:serviceTask id="UpdateVolumeGroupAAI" name="UpdateVolumeGroupAAI" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVolumeGroupAAI" name="&#10;AAI&#10;Update&#10;(volume)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1d5nux2</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0mh0v9h</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0mh0v9h" sourceRef="UpdateVolumeGroupAAI" targetRef="CreateVolumeGroupBB_End" />
-    <bpmn:serviceTask id="QueryVfModuleSDNC" name="Query Vf Module (SDNC)" camunda:expression="${SDNCQueryTasks.queryVfModuleForVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="QueryVfModuleSDNC" name="&#10;SDNC&#10;Get&#10;(vnf)&#10;" camunda:expression="${SDNCQueryTasks.queryVfModuleForVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1wz1rfg</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_06q6g74</bpmn:outgoing>
     </bpmn:serviceTask>
     </bpmn:callActivity>
     <bpmn:sequenceFlow id="SequenceFlow_06flg6h" sourceRef="Vnf_Adapter" targetRef="UpdateVolumeGroupHeatStackId" />
     <bpmn:sequenceFlow id="SequenceFlow_1d5nux2" sourceRef="UpdateVolumeGroupHeatStackId" targetRef="UpdateVolumeGroupAAI" />
-    <bpmn:serviceTask id="UpdateVolumeGroupHeatStackId" name="Update VolumeGroup HeatStackId (AAI)" camunda:expression="${AAIUpdateTasks.updateHeatStackIdVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVolumeGroupHeatStackId" name="&#10;AAI&#10;Update&#10;(volume)&#10;" camunda:expression="${AAIUpdateTasks.updateHeatStackIdVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_06flg6h</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1d5nux2</bpmn:outgoing>
     </bpmn:serviceTask>
+    <bpmn:subProcess id="SubProcess_14koudj" name="Error Handling&#10;&#10;" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_1f7qpgu">
+        <bpmn:outgoing>SequenceFlow_1wtq4y7</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0zycnsk">
+        <bpmn:incoming>SequenceFlow_1wtq4y7</bpmn:incoming>
+        <bpmn:terminateEventDefinition />
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1wtq4y7" sourceRef="StartEvent_1f7qpgu" targetRef="EndEvent_0zycnsk" />
+    </bpmn:subProcess>
   </bpmn:process>
   <bpmn:error id="Error_0pz4sdi" name="gDelegateError" errorCode="7000" />
   <bpmn:escalation id="Escalation_1hjulni" name="Escalation_2cgup2p" />
       <bpmndi:BPMNShape id="ServiceTask_0m035ns_di" bpmnElement="UpdateVolumeGroupHeatStackId">
         <dc:Bounds x="774" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_14koudj_di" bpmnElement="SubProcess_14koudj" isExpanded="true">
+        <dc:Bounds x="310" y="264" width="231" height="135" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1f7qpgu_di" bpmnElement="StartEvent_1f7qpgu">
+        <dc:Bounds x="350" y="323" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="359" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0zycnsk_di" bpmnElement="EndEvent_0zycnsk">
+        <dc:Bounds x="487" y="323" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="359" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wtq4y7_di" bpmnElement="SequenceFlow_1wtq4y7">
+        <di:waypoint xsi:type="dc:Point" x="386" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="487" y="341" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="436.5" y="320" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
index 836f52b..5c85d17 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DeactivateNetworkBB" name="DeactivateNetworkBB" isExecutable="true">
     <bpmn2:startEvent id="DeactivateNetworkBB_Start" name="Start">
       <bpmn2:outgoing>SequenceFlow_05elmhj</bpmn2:outgoing>
@@ -7,11 +7,11 @@
     <bpmn2:endEvent id="DeactivateNetworkBB_End" name="End">
       <bpmn2:incoming>SequenceFlow_18atf08</bpmn2:incoming>
     </bpmn2:endEvent>
-    <bpmn2:serviceTask id="DeactivateNetworkSDNC" name="Deactivate Network (SDNC)" camunda:expression="${SDNCDeactivateTasks.deactivateNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="DeactivateNetworkSDNC" name="&#10;SDNC&#10;Deactivate Network &#10;" camunda:expression="${SDNCDeactivateTasks.deactivateNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_05elmhj</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0xbvwsu</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="DeactivateNetworkAAI" name="Deactivate Network (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn2:serviceTask id="DeactivateNetworkAAI" name="&#10;AAI&#10;Update&#10;(network)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:incoming>SequenceFlow_0xbvwsu</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_18atf08</bpmn2:outgoing>
     </bpmn2:serviceTask>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeactivateNetworkBB">
       <bpmndi:BPMNShape id="StartEvent_0lbwmd1_di" bpmnElement="DeactivateNetworkBB_Start">
-        <dc:Bounds x="545" y="-55" width="36" height="36" />
+        <dc:Bounds x="242" y="100" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="551" y="-14" width="24" height="12" />
+          <dc:Bounds x="248" y="141" width="24" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_10l9a3s_di" bpmnElement="DeactivateNetworkBB_End">
-        <dc:Bounds x="975" y="-55" width="36" height="36" />
+        <dc:Bounds x="672" y="100" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="985" y="-19" width="19" height="12" />
+          <dc:Bounds x="682" y="136" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1k7d8ih_di" bpmnElement="DeactivateNetworkSDNC">
-        <dc:Bounds x="653" y="-77" width="100" height="80" />
+        <dc:Bounds x="350" y="78" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1911vum_di" bpmnElement="DeactivateNetworkAAI">
-        <dc:Bounds x="802" y="-77" width="100" height="80" />
+        <dc:Bounds x="499" y="78" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_05elmhj_di" bpmnElement="SequenceFlow_05elmhj">
-        <di:waypoint xsi:type="dc:Point" x="581" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="653" y="-37" />
+        <di:waypoint xsi:type="dc:Point" x="278" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="350" y="118" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="617" y="-62" width="0" height="0" />
+          <dc:Bounds x="269" y="93" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0xbvwsu_di" bpmnElement="SequenceFlow_0xbvwsu">
-        <di:waypoint xsi:type="dc:Point" x="753" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="778" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="778" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="802" y="-37" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="475" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="475" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="499" y="118" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="793" y="-37" width="0" height="0" />
+          <dc:Bounds x="445" y="118" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_18atf08_di" bpmnElement="SequenceFlow_18atf08">
-        <di:waypoint xsi:type="dc:Point" x="902" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="939" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="939" y="-37" />
-        <di:waypoint xsi:type="dc:Point" x="975" y="-37" />
+        <di:waypoint xsi:type="dc:Point" x="599" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="636" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="636" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="672" y="118" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="954" y="-37" width="0" height="0" />
+          <dc:Bounds x="606" y="118" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 80faf13..5284788 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DeactivateServiceInstanceBB" name="DeactivateServiceInstanceBB" isExecutable="true">
     <bpmn:startEvent id="Start_DeactivateServiceInstanceBB" name="Start">
       <bpmn:outgoing>SequenceFlow_101w1ck</bpmn:outgoing>
@@ -9,11 +9,11 @@
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_00q7fsg" sourceRef="Task_DeactivateServiceInstance_SDNC" targetRef="Task_DeactivateServiceInstance_AAI" />
     <bpmn:sequenceFlow id="SequenceFlow_0pioehv" sourceRef="Task_DeactivateServiceInstance_AAI" targetRef="End_DeactivateServiceInstanceBB" />
-    <bpmn:serviceTask id="Task_DeactivateServiceInstance_AAI" name="Update Service OStatus to Assigned (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedService(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_DeactivateServiceInstance_AAI" name="&#10;AAI&#10;Update&#10;(svc instance)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedService(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_00q7fsg</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0pioehv</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="Task_DeactivateServiceInstance_SDNC" name="Service Instance Deactivate (SDNC)" camunda:expression="${SDNCDeactivateTasks.deactivateServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_DeactivateServiceInstance_SDNC" name="&#10;SDNC &#10;Deactivate&#10;(svc instance)&#10;" camunda:expression="${SDNCDeactivateTasks.deactivateServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_101w1ck</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_00q7fsg</bpmn:outgoing>
     </bpmn:serviceTask>
index 85cde2a..f30a1f1 100644 (file)
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DeactivateVfModuleBB" name="DeactivateVfModuleBB" isExecutable="true">
     <bpmn:startEvent id="DeactivateVfModuleBB_Start" name="Start">
       <bpmn:outgoing>SequenceFlow_0m379r2</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="DeactivateVfModule" name="SDNC Vf Module Deactivate&#10;" camunda:expression="${SDNCDeactivateTasks.deactivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="DeactivateVfModule" name="&#10;SDNC &#10;Deactivate&#10;(vf module)&#10;" camunda:expression="${SDNCDeactivateTasks.deactivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0m379r2</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_01bdpek</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0m379r2" sourceRef="DeactivateVfModuleBB_Start" targetRef="DeactivateVfModule" />
-    <bpmn:serviceTask id="UpdateVfModuleDeactivateStatus" name="Deactivate OStatus (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusDeactivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVfModuleDeactivateStatus" name="&#10;AAI &#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusDeactivateVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_01bdpek</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1y1c7fh</bpmn:outgoing>
     </bpmn:serviceTask>
index d6b7dd6..790cab1 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DeactivateVnfBB" name="DeactivateVnfBB" isExecutable="true">
     <bpmn:startEvent id="Start_DeactivateVnfBB" name="start">
       <bpmn:outgoing>SequenceFlow_0k9qnoi</bpmn:outgoing>
       <bpmn:incoming>SequenceFlow_0vnitwg</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0vnitwg" sourceRef="Task_DeactivateOrchestrationStatusVnf" targetRef="End_DeactivateVnfBB" />
-    <bpmn:serviceTask id="Task_SDNCAdapterVnfTopologyDeactivate" name="Call SDNC Adapter VNF Topology Deactivate" camunda:expression="${SDNCDeactivateTasks.deactivateVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_SDNCAdapterVnfTopologyDeactivate" name="&#10;SDNC Deactivate&#10;(vnf)&#10;" camunda:expression="${SDNCDeactivateTasks.deactivateVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0k9qnoi</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0r6pzwt</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="Task_DeactivateOrchestrationStatusVnf" name="Deactivate Orchestration Status Vnf (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_DeactivateOrchestrationStatusVnf" name="&#10;AAI &#10;Update&#10;(vnf)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0r6pzwt</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0vnitwg</bpmn:outgoing>
     </bpmn:serviceTask>
index 2b2e30b..63a01d6 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DeactivateVolumeGroupBB" name="DeactivateVolumeGroupBB" isExecutable="true">
     <bpmn:startEvent id="DeactivateVolumeGroupBB_Start" name="Start">
       <bpmn:outgoing>SequenceFlow_1wz1rfg</bpmn:outgoing>
@@ -8,7 +8,7 @@
     <bpmn:endEvent id="DeactivateVolumeGroupBB_End">
       <bpmn:incoming>SequenceFlow_0mh0v9h</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="DeactivateVolumeGroup" name="Deactivate VolumeGroup" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="DeactivateVolumeGroup" name="&#10;AAI &#10;Update&#10;(volume)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusCreatedVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1wz1rfg</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0mh0v9h</bpmn:outgoing>
     </bpmn:serviceTask>
index faa4060..95e481d 100644 (file)
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DeleteNetworkBB" name="DeleteNetworkBB" isExecutable="true">
-    <bpmn:startEvent id="deleteNetwork_startEvent" name="Start Flow">
+    <bpmn:startEvent id="deleteNetwork_startEvent">
       <bpmn:outgoing>SequenceFlow_1mc3d3f</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="updateNetworkAAI" name="Update Network (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="updateNetworkAAI" name="&#10;AAI &#10;Update&#10;(network)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1c906im</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0nhd7b7</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1mc3d3f" sourceRef="deleteNetwork_startEvent" targetRef="deleteNetworkAIC" />
     <bpmn:sequenceFlow id="SequenceFlow_1c906im" sourceRef="deleteNetworkAIC" targetRef="updateNetworkAAI" />
-    <bpmn:serviceTask id="deleteNetworkAIC" name="Delete Network (AIC)" camunda:expression="${NetworkAdapterDeleteTasks.deleteNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="deleteNetworkAIC" name="&#10;AIC&#10;Delete&#10;(network)&#10;" camunda:expression="${NetworkAdapterDeleteTasks.deleteNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1mc3d3f</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1c906im</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:endEvent id="deleteNetwork_endEvent" name="End Flow">
+    <bpmn:endEvent id="deleteNetwork_endEvent">
       <bpmn:incoming>SequenceFlow_0nhd7b7</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0nhd7b7" sourceRef="updateNetworkAAI" targetRef="deleteNetwork_endEvent" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0zd65z2_di" bpmnElement="updateNetworkAAI">
-        <dc:Bounds x="555" y="80" width="100" height="80" />
+        <dc:Bounds x="530" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1mc3d3f_di" bpmnElement="SequenceFlow_1mc3d3f">
         <di:waypoint xsi:type="dc:Point" x="209" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="320" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="370" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="219.5" y="99" width="90" height="12" />
+          <dc:Bounds x="244.5" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1c906im_di" bpmnElement="SequenceFlow_1c906im">
-        <di:waypoint xsi:type="dc:Point" x="420" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="555" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="530" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="442.5" y="99" width="90" height="12" />
+          <dc:Bounds x="455" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1gcfuzf_di" bpmnElement="deleteNetworkAIC">
-        <dc:Bounds x="320" y="80" width="100" height="80" />
+        <dc:Bounds x="370" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_02vxchc_di" bpmnElement="deleteNetwork_endEvent">
         <dc:Bounds x="806" y="102" width="36" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0nhd7b7_di" bpmnElement="SequenceFlow_0nhd7b7">
-        <di:waypoint xsi:type="dc:Point" x="655" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="630" y="120" />
         <di:waypoint xsi:type="dc:Point" x="806" y="120" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="685.5" y="99" width="90" height="12" />
+          <dc:Bounds x="673" y="99" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 832a96c..5795c1c 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DeleteVfModuleBB" name="Start" isExecutable="true">
-    <bpmn:startEvent id="DeleteVfModuleBB_Start" name="Start">
+    <bpmn:startEvent id="DeleteVfModuleBB_Start">
       <bpmn:outgoing>SequenceFlow_1537yw5</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:serviceTask id="DeleteVfModuleVnfAdapter" name="Delete Vf Module VnfAdapter" camunda:expression="${VnfAdapterDeleteTasks.deleteVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
@@ -9,12 +9,12 @@
       <bpmn:outgoing>SequenceFlow_08tvhtf</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1537yw5" sourceRef="DeleteVfModuleBB_Start" targetRef="DeleteVfModuleVnfAdapter" />
-    <bpmn:serviceTask id="UpdateVfModuleDeleteStatus" name="Update OStatus (AAI)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusDeleteVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVfModuleDeleteStatus" name="&#10;AAI &#10;Update&#10;(vf module)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusDeleteVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_02lpx87</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1mxrfqv</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_08tvhtf" sourceRef="DeleteVfModuleVnfAdapter" targetRef="VnfAdapter" />
-    <bpmn:endEvent id="DeleteVfModuleBB_End" name="End">
+    <bpmn:endEvent id="DeleteVfModuleBB_End">
       <bpmn:incoming>SequenceFlow_1mxrfqv</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_1mxrfqv" sourceRef="UpdateVfModuleDeleteStatus" targetRef="DeleteVfModuleBB_End" />
       <bpmn:outgoing>SequenceFlow_02lpx87</bpmn:outgoing>
     </bpmn:callActivity>
     <bpmn:sequenceFlow id="SequenceFlow_02lpx87" sourceRef="VnfAdapter" targetRef="UpdateVfModuleDeleteStatus" />
+    <bpmn:subProcess id="SubProcess_11p7mrh" name="Error Handling&#10;&#10;" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_1xp6ewt">
+        <bpmn:outgoing>SequenceFlow_0h607z0</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0guhjau">
+        <bpmn:incoming>SequenceFlow_0h607z0</bpmn:incoming>
+        <bpmn:terminateEventDefinition />
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0h607z0" sourceRef="StartEvent_1xp6ewt" targetRef="EndEvent_0guhjau" />
+    </bpmn:subProcess>
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVfModuleBB">
           <dc:Bounds x="560" y="99" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_11p7mrh_di" bpmnElement="SubProcess_11p7mrh" isExpanded="true">
+        <dc:Bounds x="261" y="276" width="231" height="135" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1xp6ewt_di" bpmnElement="StartEvent_1xp6ewt">
+        <dc:Bounds x="304" y="338" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="277" y="374" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0guhjau_di" bpmnElement="EndEvent_0guhjau">
+        <dc:Bounds x="433" y="338" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="406" y="374" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0h607z0_di" bpmnElement="SequenceFlow_0h607z0">
+        <di:waypoint xsi:type="dc:Point" x="340" y="356" />
+        <di:waypoint xsi:type="dc:Point" x="433" y="356" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="386.5" y="335" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
index 97ac113..f2bd224 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DeleteVolumeGroupBB" name="DeleteVolumeGroupBB" isExecutable="true">
     <bpmn:startEvent id="DeleteVolumeGroupBB_Start" name="Start">
       <bpmn:outgoing>SequenceFlow_1wz1rfg</bpmn:outgoing>
@@ -8,7 +8,7 @@
     <bpmn:endEvent id="DeleteVolumeGroupBB_End">
       <bpmn:incoming>SequenceFlow_0mh0v9h</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:serviceTask id="UpdateVolumeGroupAAI" name="Update Volume Group A&#38;AI (AAI Assigned)" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UpdateVolumeGroupAAI" name="&#10;AAI&#10;Update&#10;(volume grp)&#10;" camunda:expression="${AAIUpdateTasks.updateOrchestrationStatusAssignedVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0fkan8t</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0mh0v9h</bpmn:outgoing>
     </bpmn:serviceTask>
       <bpmn:incoming>SequenceFlow_13ngwev</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0fkan8t</bpmn:outgoing>
     </bpmn:callActivity>
+    <bpmn:subProcess id="SubProcess_089t601" name="Sub Process Error" triggeredByEvent="true">
+      <bpmn:endEvent id="EndEvent_18lpeyi" name="End">
+        <bpmn:incoming>SequenceFlow_07rsz9o</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:startEvent id="StartEvent_1gun94q" name="Start">
+        <bpmn:outgoing>SequenceFlow_07rsz9o</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_07rsz9o" sourceRef="StartEvent_1gun94q" targetRef="EndEvent_18lpeyi" />
+    </bpmn:subProcess>
   </bpmn:process>
   <bpmn:error id="Error_0pz4sdi" name="gDelegateError" errorCode="7000" />
   <bpmn:escalation id="Escalation_1hjulni" name="Escalation_2cgup2p" />
       <bpmndi:BPMNShape id="CallActivity_0li7q97_di" bpmnElement="VnfAdapter">
         <dc:Bounds x="526" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_089t601_di" bpmnElement="SubProcess_089t601" isExpanded="true">
+        <dc:Bounds x="459" y="242" width="233" height="135" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_18lpeyi_di" bpmnElement="EndEvent_18lpeyi">
+        <dc:Bounds x="613" y="287" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="622" y="327" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1gun94q_di" bpmnElement="StartEvent_1gun94q">
+        <dc:Bounds x="498" y="287" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="505" y="327" width="24" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_07rsz9o_di" bpmnElement="SequenceFlow_07rsz9o">
+        <di:waypoint xsi:type="dc:Point" x="534" y="305" />
+        <di:waypoint xsi:type="dc:Point" x="573" y="305" />
+        <di:waypoint xsi:type="dc:Point" x="573" y="305" />
+        <di:waypoint xsi:type="dc:Point" x="613" y="305" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="543" y="305" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
index 8640f7e..01d88b9 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="ExecuteBuildingBlock" name="ExecuteBuildingBlock" isExecutable="true">
     <bpmn:startEvent id="Start_ExecuteBuildingBlock" name="start">
       <bpmn:outgoing>SequenceFlow_0rq4c5r</bpmn:outgoing>
       <bpmn:outgoing>SequenceFlow_1ryv9sh</bpmn:outgoing>
     </bpmn:exclusiveGateway>
     <bpmn:sequenceFlow id="SequenceFlow_0je0y25" sourceRef="StatusPolicy" targetRef="CheckOrchestrationStatusValidationResults" />
-    <bpmn:boundaryEvent id="BoundaryEvent_0i3q236" attachedToRef="Task_BBInputSetup">
-      <bpmn:outgoing>SequenceFlow_0yeaaxu</bpmn:outgoing>
-      <bpmn:errorEventDefinition errorRef="Error_17zcdbk" />
-    </bpmn:boundaryEvent>
-    <bpmn:serviceTask id="Task_QueryRainyDayTable" name="QueryRainyDayTable" camunda:expression="${ExecuteBuildingBlockRainyDay.queryRainyDayTable(execution)}">
-      <bpmn:incoming>SequenceFlow_0yeaaxu</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1b5op07</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_030qtgc</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0a62t4c</bpmn:outgoing>
-    </bpmn:serviceTask>
-    <bpmn:endEvent id="ErrorEnd2" name="end">
-      <bpmn:incoming>SequenceFlow_0h8v45y</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1db2c7t</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_1aonzik" name="Check HandlingCode" default="SequenceFlow_0h8v45y">
-      <bpmn:incoming>SequenceFlow_0a62t4c</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0fwsjva</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0h8v45y</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_RetryTimer" name="RetryTimer">
-      <bpmn:incoming>SequenceFlow_0ndt8ft</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_07a1ytc</bpmn:outgoing>
-      <bpmn:timerEventDefinition>
-        <bpmn:timeDuration xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("RetryDuration")}]]></bpmn:timeDuration>
-      </bpmn:timerEventDefinition>
-    </bpmn:intermediateCatchEvent>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0ey4zpt" name="Retries Left?">
-      <bpmn:incoming>SequenceFlow_0fwsjva</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1wbevp0</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1db2c7t</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:endEvent id="EndEvent_1sez2lh" name="end">
-      <bpmn:incoming>SequenceFlow_07a1ytc</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:serviceTask id="Task_SetRetryTimer" name="Set Retry Timer" camunda:expression="${ExecuteBuildingBlockRainyDay.setRetryTimer(execution)}">
-      <bpmn:incoming>SequenceFlow_1wbevp0</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0ndt8ft</bpmn:outgoing>
-    </bpmn:serviceTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0h8v45y" name="Rollback or Abort" sourceRef="ExclusiveGateway_1aonzik" targetRef="ErrorEnd2" />
-    <bpmn:sequenceFlow id="SequenceFlow_1db2c7t" name="no" sourceRef="ExclusiveGateway_0ey4zpt" targetRef="ErrorEnd2" />
-    <bpmn:sequenceFlow id="SequenceFlow_0fwsjva" name="Retry" sourceRef="ExclusiveGateway_1aonzik" targetRef="ExclusiveGateway_0ey4zpt">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("handlingCode")=="Retry"}]]></bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0ndt8ft" sourceRef="Task_SetRetryTimer" targetRef="IntermediateCatchEvent_RetryTimer" />
-    <bpmn:sequenceFlow id="SequenceFlow_07a1ytc" sourceRef="IntermediateCatchEvent_RetryTimer" targetRef="EndEvent_1sez2lh" />
-    <bpmn:sequenceFlow id="SequenceFlow_1wbevp0" name="yes" sourceRef="ExclusiveGateway_0ey4zpt" targetRef="Task_SetRetryTimer">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("retryCount")<5}]]></bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0a62t4c" sourceRef="Task_QueryRainyDayTable" targetRef="ExclusiveGateway_1aonzik" />
-    <bpmn:sequenceFlow id="SequenceFlow_0yeaaxu" sourceRef="BoundaryEvent_0i3q236" targetRef="Task_QueryRainyDayTable" />
-    <bpmn:sequenceFlow id="SequenceFlow_1b5op07" sourceRef="BoundaryEvent_0c2v381" targetRef="Task_QueryRainyDayTable" />
-    <bpmn:sequenceFlow id="SequenceFlow_030qtgc" sourceRef="BoundaryEvent_1jzujri" targetRef="Task_QueryRainyDayTable" />
-    <bpmn:boundaryEvent id="BoundaryEvent_1jzujri" attachedToRef="Call_BBToExecute">
-      <bpmn:outgoing>SequenceFlow_030qtgc</bpmn:outgoing>
-      <bpmn:errorEventDefinition errorRef="Error_17zcdbk" />
-    </bpmn:boundaryEvent>
-    <bpmn:boundaryEvent id="BoundaryEvent_0c2v381" attachedToRef="StatusPolicy">
-      <bpmn:outgoing>SequenceFlow_1b5op07</bpmn:outgoing>
-      <bpmn:errorEventDefinition errorRef="Error_17zcdbk" />
-    </bpmn:boundaryEvent>
+    <bpmn:subProcess id="SubProcess_0tv8zda" name="Error Handling&#10;&#10;" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0tmcs9g">
+        <bpmn:outgoing>SequenceFlow_09synl9</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_09synl9" sourceRef="StartEvent_0tmcs9g" targetRef="Task_QueryRainyDayTable" />
+      <bpmn:serviceTask id="Task_QueryRainyDayTable" name="QueryRainyDayTable" camunda:expression="${ExecuteBuildingBlockRainyDay.queryRainyDayTable(execution)}">
+        <bpmn:incoming>SequenceFlow_09synl9</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0a62t4c</bpmn:outgoing>
+      </bpmn:serviceTask>
+      <bpmn:endEvent id="ErrorEnd2">
+        <bpmn:incoming>SequenceFlow_1db2c7t</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:exclusiveGateway id="ExclusiveGateway_1aonzik" name="Check HandlingCode" default="SequenceFlow_0h8v45y">
+        <bpmn:incoming>SequenceFlow_0a62t4c</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0fwsjva</bpmn:outgoing>
+        <bpmn:outgoing>SequenceFlow_0h8v45y</bpmn:outgoing>
+      </bpmn:exclusiveGateway>
+      <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_RetryTimer" name="RetryTimer">
+        <bpmn:incoming>SequenceFlow_0ndt8ft</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_07a1ytc</bpmn:outgoing>
+        <bpmn:timerEventDefinition>
+          <bpmn:timeDuration xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("RetryDuration")}]]></bpmn:timeDuration>
+        </bpmn:timerEventDefinition>
+      </bpmn:intermediateCatchEvent>
+      <bpmn:exclusiveGateway id="ExclusiveGateway_0ey4zpt" name="Retries Left?">
+        <bpmn:incoming>SequenceFlow_0fwsjva</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1wbevp0</bpmn:outgoing>
+        <bpmn:outgoing>SequenceFlow_1db2c7t</bpmn:outgoing>
+      </bpmn:exclusiveGateway>
+      <bpmn:serviceTask id="Task_SetRetryTimer" name="Set Retry Timer" camunda:expression="${ExecuteBuildingBlockRainyDay.setRetryTimer(execution)}">
+        <bpmn:incoming>SequenceFlow_1wbevp0</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0ndt8ft</bpmn:outgoing>
+      </bpmn:serviceTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0a62t4c" sourceRef="Task_QueryRainyDayTable" targetRef="ExclusiveGateway_1aonzik" />
+      <bpmn:sequenceFlow id="SequenceFlow_0h8v45y" name="Rollback or Abort" sourceRef="ExclusiveGateway_1aonzik" targetRef="EndEvent_0mvmk3i" />
+      <bpmn:sequenceFlow id="SequenceFlow_1db2c7t" name="no" sourceRef="ExclusiveGateway_0ey4zpt" targetRef="ErrorEnd2" />
+      <bpmn:sequenceFlow id="SequenceFlow_0fwsjva" name="Retry" sourceRef="ExclusiveGateway_1aonzik" targetRef="ExclusiveGateway_0ey4zpt">
+        <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("handlingCode")=="Retry"}]]></bpmn:conditionExpression>
+      </bpmn:sequenceFlow>
+      <bpmn:sequenceFlow id="SequenceFlow_0ndt8ft" sourceRef="Task_SetRetryTimer" targetRef="IntermediateCatchEvent_RetryTimer" />
+      <bpmn:sequenceFlow id="SequenceFlow_07a1ytc" sourceRef="IntermediateCatchEvent_RetryTimer" targetRef="EndEvent_1sez2lh" />
+      <bpmn:sequenceFlow id="SequenceFlow_1wbevp0" name="yes" sourceRef="ExclusiveGateway_0ey4zpt" targetRef="Task_SetRetryTimer">
+        <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("retryCount")<5}]]></bpmn:conditionExpression>
+      </bpmn:sequenceFlow>
+      <bpmn:endEvent id="EndEvent_0mvmk3i">
+        <bpmn:incoming>SequenceFlow_0h8v45y</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:endEvent id="EndEvent_1sez2lh" name="end">
+        <bpmn:incoming>SequenceFlow_07a1ytc</bpmn:incoming>
+        <bpmn:terminateEventDefinition />
+      </bpmn:endEvent>
+    </bpmn:subProcess>
   </bpmn:process>
   <bpmn:error id="Error_0tnktdw" name="Error" errorCode="java.lang.Exception" />
   <bpmn:error id="Error_17zcdbk" name="Bpmn Error" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ExecuteBuildingBlock">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_ExecuteBuildingBlock">
-        <dc:Bounds x="-46" y="162" width="36" height="36" />
+        <dc:Bounds x="42" y="162" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-39" y="198" width="23" height="12" />
+          <dc:Bounds x="49" y="198" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0n67obl_di" bpmnElement="Call_BBToExecute">
-        <dc:Bounds x="501" y="140" width="100" height="80" />
+        <dc:Bounds x="589" y="140" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0rq4c5r_di" bpmnElement="SequenceFlow_0rq4c5r">
-        <di:waypoint xsi:type="dc:Point" x="-10" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="53" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="78" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="141" y="180" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-23.5" y="165" width="90" height="0" />
+          <dc:Bounds x="65" y="165" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0uzwjrq_di" bpmnElement="SequenceFlow_0uzwjrq">
-        <di:waypoint xsi:type="dc:Point" x="153" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="219" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="241" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="307" y="180" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="141" y="165" width="90" height="0" />
+          <dc:Bounds x="229" y="165" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1jcuk3b_di" bpmnElement="Task_BBInputSetup">
-        <dc:Bounds x="53" y="140" width="100" height="80" />
+        <dc:Bounds x="141" y="140" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_0ahsxzi_di" bpmnElement="End_ExecuteBuildingBlock">
-        <dc:Bounds x="668" y="162" width="36" height="36" />
+        <dc:Bounds x="808" y="162" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="677" y="202" width="18" height="12" />
+          <dc:Bounds x="817" y="202" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_01h9qmz_di" bpmnElement="SequenceFlow_01h9qmz">
-        <di:waypoint xsi:type="dc:Point" x="601" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="668" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="689" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="808" y="180" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="589.5" y="159" width="90" height="12" />
+          <dc:Bounds x="703.5" y="159" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0ey4zpt_di" bpmnElement="ExclusiveGateway_0ey4zpt" isMarkerVisible="true">
-        <dc:Bounds x="392" y="493" width="50" height="50" />
+        <dc:Bounds x="435" y="467" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="386" y="468" width="63" height="13" />
+          <dc:Bounds x="430" y="442" width="62" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_0qjyidb_di" bpmnElement="IntermediateCatchEvent_RetryTimer">
-        <dc:Bounds x="655" y="500" width="36" height="36" />
+        <dc:Bounds x="668" y="474" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="645" y="475" width="55" height="13" />
+          <dc:Bounds x="658" y="449" width="56" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_1aonzik_di" bpmnElement="ExclusiveGateway_1aonzik" isMarkerVisible="true">
-        <dc:Bounds x="264" y="493" width="50" height="50" />
+        <dc:Bounds x="324" y="467" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="236" y="456" width="70" height="25" />
+          <dc:Bounds x="315" y="429" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1wbevp0_di" bpmnElement="SequenceFlow_1wbevp0">
-        <di:waypoint xsi:type="dc:Point" x="442" y="518" />
-        <di:waypoint xsi:type="dc:Point" x="507" y="518" />
+        <di:waypoint xsi:type="dc:Point" x="485" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="539" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="458" y="493" width="18" height="13" />
+          <dc:Bounds x="496.68461538461537" y="467" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0fwsjva_di" bpmnElement="SequenceFlow_0fwsjva">
-        <di:waypoint xsi:type="dc:Point" x="314" y="518" />
-        <di:waypoint xsi:type="dc:Point" x="392" y="518" />
+        <di:waypoint xsi:type="dc:Point" x="374" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="435" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="339" y="526" width="27" height="13" />
+          <dc:Bounds x="390.60897435897436" y="500" width="27" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0h8v45y_di" bpmnElement="SequenceFlow_0h8v45y">
-        <di:waypoint xsi:type="dc:Point" x="289" y="543" />
-        <di:waypoint xsi:type="dc:Point" x="289" y="617" />
-        <di:waypoint xsi:type="dc:Point" x="475" y="617" />
+        <di:waypoint xsi:type="dc:Point" x="349" y="517" />
+        <di:waypoint xsi:type="dc:Point" x="349" y="573" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="323" y="624" width="85" height="13" />
+          <dc:Bounds x="355" y="538" width="85" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_0svi3iy_di" bpmnElement="ErrorEnd2">
-        <dc:Bounds x="475" y="599" width="36" height="36" />
+        <dc:Bounds x="442" y="573" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="484" y="639" width="19" height="13" />
+          <dc:Bounds x="452" y="613" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1tifgqh_di" bpmnElement="Task_QueryRainyDayTable">
-        <dc:Bounds x="80" y="478" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_1sez2lh_di" bpmnElement="EndEvent_1sez2lh">
-        <dc:Bounds x="733" y="500" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="742" y="540" width="19" height="13" />
-        </bpmndi:BPMNLabel>
+        <dc:Bounds x="181" y="452" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1db2c7t_di" bpmnElement="SequenceFlow_1db2c7t">
-        <di:waypoint xsi:type="dc:Point" x="417" y="543" />
-        <di:waypoint xsi:type="dc:Point" x="417" y="574" />
-        <di:waypoint xsi:type="dc:Point" x="493" y="574" />
-        <di:waypoint xsi:type="dc:Point" x="493" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="460" y="517" />
+        <di:waypoint xsi:type="dc:Point" x="460" y="573" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="449" y="553" width="13" height="13" />
+          <dc:Bounds x="469" y="518.5833333333333" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ndt8ft_di" bpmnElement="SequenceFlow_0ndt8ft">
-        <di:waypoint xsi:type="dc:Point" x="607" y="518" />
-        <di:waypoint xsi:type="dc:Point" x="655" y="518" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="668" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="586" y="497" width="90" height="12" />
+          <dc:Bounds x="608.5" y="471" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_07a1ytc_di" bpmnElement="SequenceFlow_07a1ytc">
-        <di:waypoint xsi:type="dc:Point" x="691" y="518" />
-        <di:waypoint xsi:type="dc:Point" x="733" y="518" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="753" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="667" y="497" width="90" height="12" />
+          <dc:Bounds x="683.5" y="471" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1obvxht_di" bpmnElement="Task_SetRetryTimer">
-        <dc:Bounds x="507" y="478" width="100" height="80" />
+        <dc:Bounds x="539" y="452" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0kdjsnx_di" bpmnElement="Continue">
-        <di:waypoint xsi:type="dc:Point" x="420" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="501" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="508" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="589" y="180" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="439.6328125" y="159" width="43" height="12" />
+          <dc:Bounds x="528" y="159" width="43" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0brnbqx_di" bpmnElement="StatusPolicy">
-        <dc:Bounds x="219" y="140" width="100" height="80" />
+        <dc:Bounds x="307" y="140" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1ryv9sh_di" bpmnElement="SequenceFlow_1ryv9sh">
-        <di:waypoint xsi:type="dc:Point" x="395" y="155" />
-        <di:waypoint xsi:type="dc:Point" x="395" y="75" />
-        <di:waypoint xsi:type="dc:Point" x="686" y="75" />
-        <di:waypoint xsi:type="dc:Point" x="686" y="162" />
+        <di:waypoint xsi:type="dc:Point" x="483" y="155" />
+        <di:waypoint xsi:type="dc:Point" x="483" y="75" />
+        <di:waypoint xsi:type="dc:Point" x="826" y="75" />
+        <di:waypoint xsi:type="dc:Point" x="826" y="162" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="506.4229651162791" y="54" width="69" height="12" />
+          <dc:Bounds x="620" y="54" width="69" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0f8ghh3_di" bpmnElement="CheckOrchestrationStatusValidationResults" isMarkerVisible="true">
-        <dc:Bounds x="370" y="155" width="50" height="50" />
+        <dc:Bounds x="458" y="155" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="354" y="209" width="87" height="48" />
+          <dc:Bounds x="442" y="209" width="87" height="48" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0je0y25_di" bpmnElement="SequenceFlow_0je0y25">
-        <di:waypoint xsi:type="dc:Point" x="319" y="180" />
-        <di:waypoint xsi:type="dc:Point" x="370" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="407" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="458" y="180" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="344.5" y="159" width="0" height="12" />
+          <dc:Bounds x="388" y="159" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="BoundaryEvent_1xzskt3_di" bpmnElement="BoundaryEvent_0i3q236">
-        <dc:Bounds x="135" y="202" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="153" y="241" width="0" height="13" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0a62t4c_di" bpmnElement="SequenceFlow_0a62t4c">
-        <di:waypoint xsi:type="dc:Point" x="180" y="518" />
-        <di:waypoint xsi:type="dc:Point" x="264" y="518" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="222" y="496" width="0" height="13" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0yeaaxu_di" bpmnElement="SequenceFlow_0yeaaxu">
-        <di:waypoint xsi:type="dc:Point" x="153" y="238" />
-        <di:waypoint xsi:type="dc:Point" x="153" y="302" />
-        <di:waypoint xsi:type="dc:Point" x="130" y="302" />
-        <di:waypoint xsi:type="dc:Point" x="130" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="281" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="324" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="141.5" y="280.5" width="0" height="13" />
+          <dc:Bounds x="257.5" y="470.5" width="90" height="13" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1b5op07_di" bpmnElement="SequenceFlow_1b5op07">
-        <di:waypoint xsi:type="dc:Point" x="235" y="226" />
-        <di:waypoint xsi:type="dc:Point" x="190" y="331" />
-        <di:waypoint xsi:type="dc:Point" x="166" y="473" />
+      <bpmndi:BPMNShape id="SubProcess_0tv8zda_di" bpmnElement="SubProcess_0tv8zda" isExpanded="true">
+        <dc:Bounds x="76" y="376" width="733" height="253" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0tmcs9g_di" bpmnElement="StartEvent_0tmcs9g">
+        <dc:Bounds x="96" y="474" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="212.5" y="257" width="0" height="13" />
+          <dc:Bounds x="24" y="510" width="0" height="12" />
         </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_030qtgc_di" bpmnElement="SequenceFlow_030qtgc">
-        <di:waypoint xsi:type="dc:Point" x="504" y="231" />
-        <di:waypoint xsi:type="dc:Point" x="334" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="177" y="485" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09synl9_di" bpmnElement="SequenceFlow_09synl9">
+        <di:waypoint xsi:type="dc:Point" x="132" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="419" y="280.5" width="0" height="13" />
+          <dc:Bounds x="156.5" y="471" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="BoundaryEvent_0k0rmt1_di" bpmnElement="BoundaryEvent_1jzujri">
-        <dc:Bounds x="499" y="202" width="36" height="36" />
+      <bpmndi:BPMNShape id="EndEvent_0mvmk3i_di" bpmnElement="EndEvent_0mvmk3i">
+        <dc:Bounds x="331" y="573" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="517" y="241" width="0" height="13" />
+          <dc:Bounds x="349" y="613" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="BoundaryEvent_1pw6a23_di" bpmnElement="BoundaryEvent_0c2v381">
-        <dc:Bounds x="233" y="202" width="36" height="36" />
+      <bpmndi:BPMNShape id="EndEvent_1aww7yx_di" bpmnElement="EndEvent_1sez2lh">
+        <dc:Bounds x="753" y="474" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="251" y="241" width="0" height="13" />
+          <dc:Bounds x="763" y="514" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
index fb250fc..fdae49f 100644 (file)
@@ -4,7 +4,7 @@
     <bpmn:startEvent id="Start_UnassignNetworkBB" name="start">
       <bpmn:outgoing>SequenceFlow_0zaz9o2</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="Task_SNDCUnAssign" name="Call SDNC Adapter Topology UnAssign" camunda:expression="${SDNCUnassignTasks.unassignNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_SNDCUnAssign" name="&#10;SDNC&#10;Unassign&#10;(network)&#10;" camunda:expression="${SDNCUnassignTasks.unassignNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0le4vrj</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1ks8kmt</bpmn:outgoing>
     </bpmn:serviceTask>
@@ -14,7 +14,7 @@
     <bpmn:sequenceFlow id="SequenceFlow_0zaz9o2" sourceRef="Start_UnassignNetworkBB" targetRef="Task_VfModuleRelatioship" />
     <bpmn:sequenceFlow id="SequenceFlow_1ks8kmt" sourceRef="Task_SNDCUnAssign" targetRef="Task_DeleteNetwork" />
     <bpmn:sequenceFlow id="SequenceFlow_0csh9dc" sourceRef="Task_DeleteNetwork" targetRef="End_UnassignNetworkBB" />
-    <bpmn:serviceTask id="Task_DeleteNetwork" name="Delete Network (AAI)" camunda:expression="${AAIDeleteTasks.deleteNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_DeleteNetwork" name="&#10;AAI&#10;Delete&#10;(network)&#10;" camunda:expression="${AAIDeleteTasks.deleteNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1ks8kmt</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0csh9dc</bpmn:outgoing>
     </bpmn:serviceTask>
index 235c7c9..f077c78 100644 (file)
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="UnassignServiceInstanceBB" name="UnassignServiceInstanceBB" isExecutable="true">
-    <bpmn:startEvent id="Start_UnassignServiceInstanceBB" name="start">
+    <bpmn:startEvent id="Start_UnassignServiceInstanceBB">
       <bpmn:outgoing>SequenceFlow_0fzrhkc</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="Task_AAIDeleteServiceInstance" name="Delete Service Instance (AAI)" camunda:expression="${AAIDeleteTasks.deleteServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_AAIDeleteServiceInstance" name="&#10;AAI&#10;Delete &#10;(svc instance)&#10;" camunda:expression="${AAIDeleteTasks.deleteServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0pu9j6i</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0sfeg65</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0sfeg65" sourceRef="Task_AAIDeleteServiceInstance" targetRef="End_UnassignServiceInstanceBB" />
-    <bpmn:serviceTask id="Task_SdncUnassignServiceInstance" name="Unassign Service Instance (SDNC)" camunda:expression="${SDNCUnassignTasks.unassignServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="Task_SdncUnassignServiceInstance" name="&#10;SDNC&#10;Unassign&#10;(svc instance)&#10;" camunda:expression="${SDNCUnassignTasks.unassignServiceInstance(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0fzrhkc</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0pu9j6i</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_0pu9j6i" sourceRef="Task_SdncUnassignServiceInstance" targetRef="Task_AAIDeleteServiceInstance" />
-    <bpmn:endEvent id="End_UnassignServiceInstanceBB" name="end">
+    <bpmn:endEvent id="End_UnassignServiceInstanceBB">
       <bpmn:incoming>SequenceFlow_0sfeg65</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_0fzrhkc" sourceRef="Start_UnassignServiceInstanceBB" targetRef="Task_SdncUnassignServiceInstance" />
@@ -24,9 +24,9 @@
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UnassignServiceInstanceBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="Start_UnassignServiceInstanceBB">
-        <dc:Bounds x="474" y="213" width="36" height="36" />
+        <dc:Bounds x="444" y="213" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="482" y="256" width="22" height="12" />
+          <dc:Bounds x="452" y="256" width="23" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0ltb3dj_di" bpmnElement="Task_AAIDeleteServiceInstance">
@@ -34,9 +34,9 @@
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0sfeg65_di" bpmnElement="SequenceFlow_0sfeg65">
         <di:waypoint xsi:type="dc:Point" x="808" y="231" />
-        <di:waypoint xsi:type="dc:Point" x="853" y="231" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="231" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="785.5" y="210" width="90" height="12" />
+          <dc:Bounds x="794.5" y="210" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_11klnmn_di" bpmnElement="Task_SdncUnassignServiceInstance">
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1p34ka9_di" bpmnElement="End_UnassignServiceInstanceBB">
-        <dc:Bounds x="853" y="213" width="36" height="36" />
+        <dc:Bounds x="871" y="213" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="863" y="255" width="21" height="12" />
+          <dc:Bounds x="883" y="255" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0fzrhkc_di" bpmnElement="SequenceFlow_0fzrhkc">
-        <di:waypoint xsi:type="dc:Point" x="510" y="231" />
+        <di:waypoint xsi:type="dc:Point" x="480" y="231" />
         <di:waypoint xsi:type="dc:Point" x="563" y="231" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="536.5" y="210" width="0" height="12" />
+          <dc:Bounds x="476.5" y="210" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 2b9edbc..0f31381 100644 (file)
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="UnassignVfModuleBB" name="UnassignVfModuleBB" isExecutable="true">
-    <bpmn:startEvent id="UnassignVfModuleBB_Start" name="Start">
+    <bpmn:startEvent id="UnassignVfModuleBB_Start">
       <bpmn:outgoing>SequenceFlow_1kfxl04</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="DeleteVfModule" name="Delete VF Module (AAI)" camunda:expression="${AAIDeleteTasks.deleteVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="DeleteVfModule" name="&#10;AAI &#10;Delete&#10;(vf module)&#10;" camunda:expression="${AAIDeleteTasks.deleteVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1p2r4og</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0qa6sxx</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="UnassignVfModule" name="Unassign VF Module (SDNC)" camunda:expression="${SDNCUnassignTasks.unassignVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UnassignVfModule" name="&#10;SDNC Unassign&#10;(vf module)&#10;" camunda:expression="${SDNCUnassignTasks.unassignVfModule(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1kfxl04</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1p2r4og</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:endEvent id="UnassignVfModuleBB_End" name="End">
+    <bpmn:endEvent id="UnassignVfModuleBB_End">
       <bpmn:incoming>SequenceFlow_0qa6sxx</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_1kfxl04" sourceRef="UnassignVfModuleBB_Start" targetRef="UnassignVfModule" />
       <bpmndi:BPMNShape id="StartEvent_0kxwniy_di" bpmnElement="UnassignVfModuleBB_Start">
         <dc:Bounds x="213" y="-3" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="219" y="33" width="23" height="12" />
+          <dc:Bounds x="219" y="33" width="24" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0028k7a_di" bpmnElement="DeleteVfModule">
-        <dc:Bounds x="571" y="-25" width="100" height="80" />
+        <dc:Bounds x="537" y="-25" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_13t22km_di" bpmnElement="UnassignVfModule">
-        <dc:Bounds x="367" y="-25" width="100" height="80" />
+        <dc:Bounds x="387" y="-25" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_0qdq7wj_di" bpmnElement="UnassignVfModuleBB_End">
         <dc:Bounds x="782" y="-3" width="36" height="36" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1kfxl04_di" bpmnElement="SequenceFlow_1kfxl04">
         <di:waypoint xsi:type="dc:Point" x="249" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="367" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="387" y="15" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="308" y="0" width="0" height="0" />
+          <dc:Bounds x="273" y="0" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1p2r4og_di" bpmnElement="SequenceFlow_1p2r4og">
-        <di:waypoint xsi:type="dc:Point" x="467" y="15" />
-        <di:waypoint xsi:type="dc:Point" x="571" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="487" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="537" y="15" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="519" y="-10" width="0" height="0" />
+          <dc:Bounds x="467" y="0" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0qa6sxx_di" bpmnElement="SequenceFlow_0qa6sxx">
-        <di:waypoint xsi:type="dc:Point" x="671" y="15" />
+        <di:waypoint xsi:type="dc:Point" x="637" y="15" />
         <di:waypoint xsi:type="dc:Point" x="782" y="15" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="727" y="0" width="0" height="0" />
+          <dc:Bounds x="664.5" y="0" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 83ba0a9..4676acf 100644 (file)
@@ -1,23 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="UnassignVnfBB" name="UnassignVnfBB" isExecutable="true">
-    <bpmn:startEvent id="UnassignVnfBB_Start" name="Start">
+    <bpmn:startEvent id="UnassignVnfBB_Start">
       <bpmn:outgoing>SequenceFlow_1kfxl04</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="DeleteVnf" name="Delete Vnf (AAI)" camunda:expression="${AAIDeleteTasks.deleteVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="DeleteVnf" name="&#10;AAI &#10;Delete&#10;(vnf)&#10;" camunda:expression="${AAIDeleteTasks.deleteVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_0w3s09a</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0qa6sxx</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:serviceTask id="UnassignVnf" name="Unassign Vnf (SDNC)" camunda:expression="${SDNCUnassignTasks.unassignVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UnassignVnf" name="&#10;SDNC &#10;Unassign&#10;(vnf)&#10;" camunda:expression="${SDNCUnassignTasks.unassignVnf(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1kfxl04</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_02st1i1</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:endEvent id="UnassignVnfBB_End" name="End">
+    <bpmn:endEvent id="UnassignVnfBB_End">
       <bpmn:incoming>SequenceFlow_0qa6sxx</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_1kfxl04" sourceRef="UnassignVnfBB_Start" targetRef="UnassignVnf" />
     <bpmn:sequenceFlow id="SequenceFlow_0qa6sxx" sourceRef="DeleteVnf" targetRef="UnassignVnfBB_End" />
-    <bpmn:serviceTask id="DeleteVnfInstanceGroups" name="Delete Vnf Instance Groups (AAI)" camunda:expression="${UnassignVnf.deleteInstanceGroups(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="DeleteVnfInstanceGroups" name="&#10;AAI &#10;Delete&#10;(instance grp)&#10;" camunda:expression="${UnassignVnf.deleteInstanceGroups(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_02st1i1</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0w3s09a</bpmn:outgoing>
     </bpmn:serviceTask>
@@ -29,7 +29,7 @@
       <bpmndi:BPMNShape id="StartEvent_0kxwniy_di" bpmnElement="UnassignVnfBB_Start">
         <dc:Bounds x="213" y="-3" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="218" y="33" width="25" height="12" />
+          <dc:Bounds x="219" y="33" width="24" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0028k7a_di" bpmnElement="DeleteVnf">
@@ -41,7 +41,7 @@
       <bpmndi:BPMNShape id="EndEvent_0qdq7wj_di" bpmnElement="UnassignVnfBB_End">
         <dc:Bounds x="959" y="-3" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="967" y="37" width="20" height="12" />
+          <dc:Bounds x="968" y="37" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1kfxl04_di" bpmnElement="SequenceFlow_1kfxl04">
index 12af246..9947d1a 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="UnassignVolumeGroupBB" name="UnassignVolumeGroupBB" isExecutable="true">
     <bpmn:startEvent id="UnassignVolumeGroupBB_Start" name="Start">
       <bpmn:outgoing>SequenceFlow_1kfxl04</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:serviceTask id="UnassignVolumeGroup" name="Delete VolumeGroup (AAI)" camunda:expression="${AAIDeleteTasks.deleteVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+    <bpmn:serviceTask id="UnassignVolumeGroup" name="&#10;AAI&#10;Delete&#10;(volume grp)&#10;" camunda:expression="${AAIDeleteTasks.deleteVolumeGroup(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn:incoming>SequenceFlow_1kfxl04</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0qa6sxx</bpmn:outgoing>
     </bpmn:serviceTask>
index daf0358..1cfb9a3 100644 (file)
       <bpmn2:incoming>SequenceFlow_0fhfitm</bpmn2:incoming>
     </bpmn2:endEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_0fhfitm" sourceRef="UpdateNetworkAAI" targetRef="UpdateNetworkBB_End" />
-    <bpmn2:subProcess id="SubProcess_1srp3f9" triggeredByEvent="true">
-      <bpmn2:startEvent id="Error_start" name="Start">
-        <bpmn2:outgoing>SequenceFlow_1vfwv05</bpmn2:outgoing>
-        <bpmn2:errorEventDefinition errorRef="Error_01yvdm8" camunda:errorCodeVariable="gBBErrorCode" camunda:errorMessageVariable="gBBErrorMessage" />
-      </bpmn2:startEvent>
-      <bpmn2:endEvent id="Error_end" name="End">
-        <bpmn2:incoming>SequenceFlow_1vfwv05</bpmn2:incoming>
-        <bpmn2:errorEventDefinition errorRef="Error_01yvdm8" />
-      </bpmn2:endEvent>
-      <bpmn2:sequenceFlow id="SequenceFlow_1vfwv05" sourceRef="Error_start" targetRef="Error_end" />
-    </bpmn2:subProcess>
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
           <dc:Bounds x="535" y="329" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="SubProcess_11x1b8w_di" bpmnElement="SubProcess_1srp3f9" isExpanded="true">
-        <dc:Bounds x="115" y="516" width="350" height="200" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="StartEvent_1uqy6gg_di" bpmnElement="Error_start">
-        <dc:Bounds x="194" y="592" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="200" y="632" width="24" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0oe6ngb_di" bpmnElement="Error_end">
-        <dc:Bounds x="358" y="592" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="367" y="632" width="19" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1vfwv05_di" bpmnElement="SequenceFlow_1vfwv05">
-        <di:waypoint xsi:type="dc:Point" x="230" y="610" />
-        <di:waypoint xsi:type="dc:Point" x="358" y="610" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="294" y="589" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
index 04f3684..30a95eb 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="VnfAdapter" name="Vnf Adapter" isExecutable="true">
-    <bpmn:startEvent id="VnfAdapter_Start" name="Start">
+    <bpmn:startEvent id="VnfAdapter_Start">
       <bpmn:outgoing>SequenceFlow_1xr6chl</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:subProcess id="VnfAdapter_Error" name="Sub Process Error" triggeredByEvent="true">
@@ -15,7 +15,7 @@
       <bpmn:sequenceFlow id="SequenceFlow_1abat8l" sourceRef="Error_Start" targetRef="Error_End" />
     </bpmn:subProcess>
     <bpmn:sequenceFlow id="SequenceFlow_1xr6chl" sourceRef="VnfAdapter_Start" targetRef="PreProcessRequest" />
-    <bpmn:endEvent id="VnfAdapter_End" name="End">
+    <bpmn:endEvent id="VnfAdapter_End">
       <bpmn:incoming>SequenceFlow_1ivhukd</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:serviceTask id="PreProcessRequest" name="Pre Process Request" camunda:expression="${VnfAdapterImpl.preProcessVnfAdapter(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
index 913970b..26b0fea 100644 (file)
@@ -42,9 +42,11 @@ import org.onap.so.client.aai.AAIObjectType
 import org.onap.so.client.aai.AAIResourcesClient
 import org.onap.so.client.aai.entities.AAIResultWrapper
 import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.bpmn.infrastructure.workflow.service.ServicePluginFactory
 import org.onap.so.client.aai.entities.uri.AAIUriFactory
 import org.onap.so.logger.MessageEnum
 import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
 import org.springframework.web.util.UriUtils;
 
 import groovy.json.*
@@ -331,6 +333,37 @@ public class DoCreateE2EServiceInstance extends AbstractServiceTaskProcessor {
        }
 
 
+       public void saveServiceInputToAAI(DelegateExecution execution) {
+               AaiUtil aaiUriUtil = new AaiUtil(this)
+
+               // create url for AAI requestInput
+               String aai_uri = aaiUriUtil.getAAIServiceInstanceUri(execution)
+               String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri)
+
+               String serviceInstanceId = execution.getVariable("serviceInstanceId")
+               String serviceInstanceName = execution.getVariable("serviceInstanceName")
+               String serviceType = execution.getVariable("serviceType")
+               String uuiRequest = execution.getVariable("uuiRequest")
+
+               String payload =
+                               """< xmlns=\"${namespace}\">
+                                       <service-instance>
+                                               <service-instance-id>${serviceInstanceId}</service-instance-id>
+                                               <service-instance-name>${serviceInstanceName}</service-instance-name>
+                                               <service-type>${serviceType}</service-type>
+                                       <customer-request>${uuiRequest}</customer-request>
+                                       </service-instance>""".trim()
+               utils.logAudit(payload)
+
+               String aai_endpoint = execution.getVariable("URN_aai_endpoint")
+               String serviceAaiPath = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(serviceInstanceId,"UTF-8")
+
+               APIResponse response = aaiUriUtil.executeAAIPutCall(execution, serviceAaiPath, payload)
+               int responseCode = response.getStatusCode()
+               execution.setVariable(Prefix + "PutSppartnerResponseCode", responseCode)
+       }
+
+
        public void postProcessAAIGET2(DelegateExecution execution) {
                msoLogger.trace("postProcessAAIGET2 ")
                String msg = ""
@@ -469,15 +502,25 @@ public class DoCreateE2EServiceInstance extends AbstractServiceTaskProcessor {
        // if site location is in local Operator, create all resources in local ONAP; 
        // if site location is in 3rd Operator, only process sp-partner to create all resources in 3rd ONAP
        public void doProcessSiteLocation(DelegateExecution execution){
-
                msoLogger.trace("======== Start doProcessSiteLocation Process ======== ")
                ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
                String uuiRequest = execution.getVariable("uuiRequest")
-               ServiceDecomposition serviceDecompositionforLocal = ServicePluginFactory.getInstance().doProcessSiteLocation(serviceDecomposition, uuiRequest);
-               execution.setVariable("serviceDecomposition", serviceDecompositionforLocal)
+               uuiRequest = ServicePluginFactory.getInstance().doProcessSiteLocation(serviceDecomposition, uuiRequest);
+               execution.setVariable("uuiRequest", uuiRequest)
+               execution.setVariable("serviceDecomposition", serviceDecomposition)
                
                msoLogger.trace("======== COMPLETED doProcessSiteLocation Process ======== ")
        }
+       
+       // Allocate cross link TPs(terminal points) for sotn network only
+       public void doTPResourcesAllocation(DelegateExecution execution){
+               msoLogger.trace("======== Start doTPResourcesAllocation Process ======== ")
+               ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+               String uuiRequest = execution.getVariable("uuiRequest")
+               uuiRequest = ServicePluginFactory.getInstance().doTPResourcesAllocation(execution, uuiRequest);
+               execution.setVariable("uuiRequest", uuiRequest)
+               msoLogger.trace("======== COMPLETED doTPResourcesAllocation Process ======== ")
+       }
 
        // prepare input param for using DoCreateResources.bpmn
        public void preProcessForAddResource(DelegateExecution execution) {
index 7226feb..6346309 100644 (file)
@@ -20,7 +20,6 @@
 
 package org.onap.so.bpmn.infrastructure.workflow.service;
 
-import org.json.JSONObject;
 import java.io.IOException;
 import java.net.SocketTimeoutException;
 import java.util.ArrayList;
@@ -43,6 +42,7 @@ import org.apache.http.entity.ContentType;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.util.EntityUtils;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.camunda.bpm.engine.runtime.Execution;
 import org.onap.so.bpmn.core.UrnPropertiesReader;
 import org.onap.so.bpmn.core.domain.ServiceDecomposition;
@@ -50,9 +50,7 @@ import org.onap.so.bpmn.core.domain.Resource;
 import org.onap.so.bpmn.core.json.JsonUtils;
 import org.onap.so.logger.MessageEnum;
 import org.onap.so.logger.MsoLogger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-
+import org.onap.so.bpmn.common.scripts.AaiUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
@@ -60,17 +58,17 @@ import com.fasterxml.jackson.databind.SerializationFeature;
 public class ServicePluginFactory {
 
        // SOTN calculate route
-       public static final String OOF_Default_EndPoint = "http://192.168.1.223:8443/oof/sotncalc";
+       public static final String OOF_DEFAULT_ENDPOINT = "http://192.168.1.223:8443/oof/sotncalc";
 
-       public static final String Third_SP_Default_EndPoint = "http://192.168.1.223:8443/sp/resourcemgr/querytps";
+       public static final String THIRD_SP_DEFAULT_ENDPOINT = "http://192.168.1.223:8443/sp/resourcemgr/querytps";
        
-       public static final String Inventory_OSS_Default_EndPoint = "http://192.168.1.199:8443/oss/inventory";
+       public static final String INVENTORY_OSS_DEFAULT_ENDPOINT = "http://192.168.1.199:8443/oss/inventory";
 
        private static final int DEFAULT_TIME_OUT = 60000;
 
        static JsonUtils jsonUtil = new JsonUtils();
 
-       private static MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA, ServicePluginFactory.class);
+       private static MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, ServicePluginFactory.class);
 
        private static ServicePluginFactory instance;
        
@@ -81,76 +79,230 @@ public class ServicePluginFactory {
                }
                return instance;
        }
-
-       private ServicePluginFactory() {
-
-       }
-
        
        private String getInventoryOSSEndPoint(){
-               return UrnPropertiesReader.getVariable("mso.service-plugin.inventory-oss-endpoint", Inventory_OSS_Default_EndPoint);
+               return UrnPropertiesReader.getVariable("mso.service-plugin.inventory-oss-endpoint", INVENTORY_OSS_DEFAULT_ENDPOINT);
        }
+       
        private String getThirdSPEndPoint(){
-               return UrnPropertiesReader.getVariable("mso.service-plugin.third-sp-endpoint", Third_SP_Default_EndPoint);
+               return UrnPropertiesReader.getVariable("mso.service-plugin.third-sp-endpoint", THIRD_SP_DEFAULT_ENDPOINT);
        }
 
        private String getOOFCalcEndPoint(){
-               return UrnPropertiesReader.getVariable("mso.service-plugin.oof-calc-endpoint", OOF_Default_EndPoint);
+               return UrnPropertiesReader.getVariable("mso.service-plugin.oof-calc-endpoint", OOF_DEFAULT_ENDPOINT);
        }
+
+       @SuppressWarnings("unchecked")
+       public String doProcessSiteLocation(ServiceDecomposition serviceDecomposition, String uuiRequest) {
+               if(!isNeedProcessSite(uuiRequest)) {
+                       return uuiRequest;
+               }
        
-       public ServiceDecomposition doProcessSiteLocation(ServiceDecomposition serviceDecomposition, String uuiRequest) {               
-               ServiceDecomposition serviceDecompositionforLocal = serviceDecomposition;
+               Map<String, Object> uuiObject = getJsonObject(uuiRequest, Map.class);
+               Map<String, Object> serviceObject = (Map<String, Object>) uuiObject.get("service");
+               Map<String, Object> serviceParametersObject = (Map<String, Object>) serviceObject.get("parameters");
+               Map<String, Object> serviceRequestInputs = (Map<String, Object>) serviceParametersObject.get("requestInputs");
+               List<Object> resources = (List<Object>) serviceParametersObject.get("resources");       
 
-               if (isSiteLocationLocal(serviceDecomposition, uuiRequest)) {
-                       return serviceDecomposition;
+               if (isSiteLocationLocal(serviceRequestInputs, resources)) {
+                       // resources changed : added TP info 
+                       String newRequest = getJsonString(uuiObject);
+                       return newRequest;
                }
 
                List<Resource> addResourceList = serviceDecomposition.getServiceResources();
                for (Resource resource : addResourceList) {
                        String resourcemodelName = resource.getModelInfo().getModelName();
-                       if (!StringUtils.containsIgnoreCase(resourcemodelName, "sp-partner")) {
-                               serviceDecompositionforLocal.deleteResource(resource);
+                       if (!StringUtils.containsIgnoreCase(resourcemodelName, "sp-partner") 
+                                       || !StringUtils.containsIgnoreCase(resourcemodelName, "sppartner")) {
+                               // change serviceDecomposition
+                               serviceDecomposition.deleteResource(resource);
                                break;
                        }
-                       if (!StringUtils.containsIgnoreCase(resourcemodelName, "sppartner")) {
-                               serviceDecompositionforLocal.deleteResource(resource);
+               }
+
+               return uuiRequest;
+       }
+
+       private boolean isNeedProcessSite(String uuiRequest) {
+               return uuiRequest.toLowerCase().contains("site_address") && uuiRequest.toLowerCase().contains("sotncondition_clientsignal");
+       }
+
+       @SuppressWarnings("unchecked")
+       private boolean isSiteLocationLocal(Map<String, Object> serviceRequestInputs, List<Object> resources) {         
+       Map<String, Object> tpInfoMap = getTPforVPNAttachment(serviceRequestInputs);    
+                       
+               if(tpInfoMap.isEmpty()) {
+                       return true;
+               }
+               String host = (String) tpInfoMap.get("host");
+               // host is empty means TP is in local, not empty means TP is in remote ONAP
+               if (!host.isEmpty()) {
+                       return false;
+               }
+               
+               Map<String, Object> accessTPInfo = new HashMap<String, Object>();
+               accessTPInfo.put("access-provider-id", tpInfoMap.get("access-provider-id"));
+               accessTPInfo.put("access-client-id", tpInfoMap.get("access-client-id"));
+               accessTPInfo.put("access-topology-id", tpInfoMap.get("access-topology-id"));
+               accessTPInfo.put("access-node-id", tpInfoMap.get("access-node-id"));
+               accessTPInfo.put("access-ltp-id", tpInfoMap.get("access-ltp-id"));
+
+               // change resources
+               String resourceName = (String) accessTPInfo.get("resourceName");
+               for(Object curResource : resources) {
+                       Map<String, Object> resource = (Map<String, Object>)curResource;
+                       String curResourceName = (String) resource.get("resourceName");
+                       curResourceName = curResourceName.replaceAll(" ", "");
+                       if(resourceName.equalsIgnoreCase(curResourceName)) { 
+                               putResourceRequestInputs(resource, accessTPInfo);
                                break;
                        }
                }
 
-               return serviceDecompositionforLocal;
+               return true;
        }
+       
+       @SuppressWarnings("unchecked")
+       private Map<String, Object> getTPforVPNAttachment(Map<String, Object> serviceRequestInputs) {
+               Object location = "";
+               Object clientSignal = "";
+               String vpnAttachmentResourceName = "";
 
-       public boolean isSiteLocationLocal(ServiceDecomposition serviceDecomposition, String uuiRequest) {
-        boolean isSiteLocationLocal = true;
-
-        String serviceModelName = serviceDecomposition.getModelInfo().getModelName();
-        String serviceParameters = JsonUtils.getJsonValue(uuiRequest, "service.parameters");
-       String requestInputs = JsonUtils.getJsonValue(serviceParameters, "requestInputs");
-       JSONObject inputParameters = new JSONObject(requestInputs);
-       
-       if(StringUtils.containsIgnoreCase(serviceModelName, "site") && inputParameters.has("location"))
-               {
-                       Object location  = inputParameters.get("location");
-                       JSONObject locationObj = new JSONObject(location);
-                       String locationONAP = queryLocationFromInventoryOSS(locationObj);
-                       if(StringUtils.containsIgnoreCase(locationONAP, "remote")) {
-                               isSiteLocationLocal = false;
+               // support R2 uuiReq and R1 uuiReq
+               // logic for R2 uuiRequest params in service level
+               for (Entry<String, Object> entry : serviceRequestInputs.entrySet()) {
+                       String key = entry.getKey();
+                       if (key.toLowerCase().contains("site_address")) {                               
+                               location = entry.getValue();
+                       } 
+                       if (key.toLowerCase().contains("sotncondition_clientsignal")) {                         
+                               clientSignal = entry.getValue();
+                               vpnAttachmentResourceName = key.substring(0, key.indexOf("_"));
                        }
                }
 
-               return isSiteLocationLocal;
+               Map<String, Object> tpInfoMap =  new HashMap<String, Object>();
+               
+               // Site resource has location param and SOTNAttachment resource has clientSignal param
+               if("".equals(location) || "".equals(clientSignal) ) {
+                       return tpInfoMap;
+               }
+               
+               // Query terminal points from InventoryOSS system by location.          
+               String locationAddress = (String) location;             
+               List<Object> locationTPList = queryAccessTPbyLocationFromInventoryOSS(locationAddress);
+               if(locationTPList != null && !locationTPList.isEmpty()) {
+                       tpInfoMap = (Map<String, Object>) locationTPList.get(0);
+                       // add resourceName
+                       tpInfoMap.put("resourceName", vpnAttachmentResourceName);
+                       LOGGER.debug("Get Terminal TP from InventoryOSS");
+                       return tpInfoMap;
+               }
+               
+               return tpInfoMap;
        }
        
-       private String queryLocationFromInventoryOSS(JSONObject locationObj) {
-               String reqContent = getJsonString(locationObj);
+       @SuppressWarnings("unchecked")
+       private List<Object> queryAccessTPbyLocationFromInventoryOSS(String locationAddress) {
+               Map<String, String> locationSrc = new HashMap<String, String>();
+               locationSrc.put("location", locationAddress);
+               String reqContent = getJsonString(locationSrc);
                String url = getInventoryOSSEndPoint();
                String responseContent = sendRequest(url, "POST", reqContent);
-               String locationONAP = "";
+               List<Object> accessTPs = new ArrayList<Object>();
                if (null != responseContent) {
-                       locationONAP = getJsonObject(responseContent, String.class);
+                       accessTPs = getJsonObject(responseContent, List.class);
+               }
+               return accessTPs;
+       }
+       
+       @SuppressWarnings("unchecked")
+       private void putResourceRequestInputs(Map<String, Object> resource, Map<String, Object> resourceInputs) {
+               Map<String, Object> resourceParametersObject = new HashMap<String, Object>();
+               Map<String, Object> resourceRequestInputs = new HashMap<String, Object>();
+               resourceRequestInputs.put("requestInputs", resourceInputs);
+               resourceParametersObject.put("parameters", resourceRequestInputs);
+
+               if(resource.containsKey("parameters")) {
+                       Map<String, Object> resParametersObject = (Map<String, Object>) resource.get("parameters");
+                       if(resParametersObject.containsKey("requestInputs")) {
+                               Map<String, Object> resRequestInputs = (Map<String, Object>) resourceParametersObject.get("requestInputs");
+                               resRequestInputs.putAll(resourceInputs);                                
+                       }
+                       else {
+                               resParametersObject.putAll(resourceRequestInputs);                              
+                       }
                }
-               return locationONAP;
+               else {
+                       resource.putAll(resourceParametersObject);
+               }
+
+               return;
+       }
+       
+
+       
+       @SuppressWarnings("unchecked")
+       public String doTPResourcesAllocation(DelegateExecution execution, String uuiRequest) {         
+               Map<String, Object> uuiObject = getJsonObject(uuiRequest, Map.class);
+               Map<String, Object> serviceObject = (Map<String, Object>) uuiObject.get("service");
+               Map<String, Object> serviceParametersObject = (Map<String, Object>) serviceObject.get("parameters");
+               Map<String, Object> serviceRequestInputs = (Map<String, Object>) serviceParametersObject.get("requestInputs");
+               
+               if(!isNeedAllocateCrossTPResources(serviceRequestInputs)) {
+                       return uuiRequest;
+               }
+               
+               allocateCrossTPResources(execution, serviceRequestInputs);
+               String newRequest = getJsonString(uuiObject);
+               return newRequest;
+       }
+
+       @SuppressWarnings("unchecked")
+       private boolean isNeedAllocateCrossTPResources(Map<String, Object> serviceRequestInputs) {
+               if(serviceRequestInputs.containsKey("CallSource"))
+               {
+                       String callSource = (String) serviceRequestInputs.get("CallSource");
+                       if("ExternalAPI".equalsIgnoreCase(callSource)) {
+                               return false;
+                       }                                                       
+               }                               
+               return true;
+       }
+       
+       @SuppressWarnings("unchecked")
+       private void allocateCrossTPResources(DelegateExecution execution, Map<String, Object> serviceRequestInputs) {
+
+               AaiUtil aai = new AaiUtil(null);
+               Map<String, Object> crossTPs = aai.getTPsfromAAI(execution);
+               
+               if(crossTPs == null || crossTPs.isEmpty()) {
+                       serviceRequestInputs.put("local-access-provider-id", "");
+                       serviceRequestInputs.put("local-access-client-id", "");
+                       serviceRequestInputs.put("local-access-topology-id", "");
+                       serviceRequestInputs.put("local-access-node-id", "");
+                       serviceRequestInputs.put("local-access-ltp-id", "");
+                       serviceRequestInputs.put("remote-access-provider-id", "");
+                       serviceRequestInputs.put("remote-access-client-id", "");
+                       serviceRequestInputs.put("remote-access-topology-id", "");
+                       serviceRequestInputs.put("remote-access-node-id", "");
+                       serviceRequestInputs.put("remote-access-ltp-id", "");                   
+               }
+               else {
+                       serviceRequestInputs.put("local-access-provider-id", crossTPs.get("local-access-provider-id"));
+                       serviceRequestInputs.put("local-access-client-id", crossTPs.get("local-access-client-id"));
+                       serviceRequestInputs.put("local-access-topology-id", crossTPs.get("local-access-topology-id"));
+                       serviceRequestInputs.put("local-access-node-id", crossTPs.get("local-access-node-id"));
+                       serviceRequestInputs.put("local-access-ltp-id", crossTPs.get("local-access-ltp-id"));
+                       serviceRequestInputs.put("remote-access-provider-id", crossTPs.get("remote-access-provider-id"));
+                       serviceRequestInputs.put("remote-access-client-id", crossTPs.get("remote-client-id"));
+                       serviceRequestInputs.put("remote-access-topology-id", crossTPs.get("remote-topology-id"));
+                       serviceRequestInputs.put("remote-access-node-id", crossTPs.get("remote-node-id"));
+                       serviceRequestInputs.put("remote-access-ltp-id", crossTPs.get("remote-ltp-id"));
+               }
+               
+               return;
        }
 
        public String preProcessService(ServiceDecomposition serviceDecomposition, String uuiRequest) {
@@ -211,8 +363,7 @@ public class ServicePluginFactory {
                for (Object resource : resources) {
                        Map<String, Object> resourceObject = (Map<String, Object>) resource;
                        Map<String, Object> resourceParametersObject = (Map<String, Object>) resourceObject.get("parameters");
-                       Map<String, Object> resourceRequestInputs = (Map<String, Object>) resourceParametersObject
-                                       .get("requestInputs");
+                       Map<String, Object> resourceRequestInputs = (Map<String, Object>) resourceParametersObject.get("requestInputs");
                        for (Entry<String, Object> entry : resourceRequestInputs.entrySet()) {
                                if (entry.getKey().toLowerCase().contains("location")) {
                                        if ("".equals(srcLocation)) {
@@ -258,14 +409,14 @@ public class ServicePluginFactory {
        }
 
        private List<Object> queryTerminalPointsFromServiceProviderSystem(String srcLocation, String dstLocation) {
-               Map<String, String> locationSrc = new HashMap<>();
+               Map<String, String> locationSrc = new HashMap<String, String>();
                locationSrc.put("location", srcLocation);
-               Map<String, String> locationDst = new HashMap<>();
+               Map<String, String> locationDst = new HashMap<String, String>();
                locationDst.put("location", dstLocation);
-               List<Map<String, String>> locations = new ArrayList<>();
+               List<Map<String, String>> locations = new ArrayList<Map<String, String>>();
                locations.add(locationSrc);
                locations.add(locationDst);
-               List<Object> returnList = new ArrayList<>();
+               List<Object> returnList = new ArrayList<Object>();
                String reqContent = getJsonString(locations);
                String url = getThirdSPEndPoint();
                String responseContent = sendRequest(url, "POST", reqContent);
@@ -275,12 +426,12 @@ public class ServicePluginFactory {
                return returnList;
        }
 
+       @SuppressWarnings("unchecked")
        private Map<String, Object> getVPNResourceRequestInputs(List<Object> resources) {
                for (Object resource : resources) {
                        Map<String, Object> resourceObject = (Map<String, Object>) resource;
                        Map<String, Object> resourceParametersObject = (Map<String, Object>) resourceObject.get("parameters");
-                       Map<String, Object> resourceRequestInputs = (Map<String, Object>) resourceParametersObject
-                                       .get("requestInputs");
+                       Map<String, Object> resourceRequestInputs = (Map<String, Object>) resourceParametersObject.get("requestInputs");
                        for (Entry<String, Object> entry : resourceRequestInputs.entrySet()) {
                                if (entry.getKey().toLowerCase().contains("vpntype")) {
                                        return resourceRequestInputs;
@@ -307,7 +458,7 @@ public class ServicePluginFactory {
                Map<String, Object> serviceObject = (Map<String, Object>) uuiObject.get("service");
                Map<String, Object> serviceParametersObject = (Map<String, Object>) serviceObject.get("parameters");
                Map<String, Object> serviceRequestInputs = (Map<String, Object>) serviceParametersObject.get("requestInputs");
-               Map<String, Object> oofQueryObject = new HashMap<>();
+               Map<String, Object> oofQueryObject = new HashMap<String, Object>();
                List<Object> resources = (List<Object>) serviceParametersObject.get("resources");
                oofQueryObject.put("src-access-provider-id", serviceRequestInputs.get("inner-src-access-provider-id"));
                oofQueryObject.put("src-access-client-id", serviceRequestInputs.get("inner-src-access-client-id"));
@@ -323,7 +474,7 @@ public class ServicePluginFactory {
                String url = getOOFCalcEndPoint();
                String responseContent = sendRequest(url, "POST", oofRequestReq);
 
-               List<Object> returnList = new ArrayList<>();
+               List<Object> returnList = new ArrayList<Object>();
                if (null != responseContent) {
                        returnList = getJsonObject(responseContent, List.class);
                }
@@ -336,7 +487,7 @@ public class ServicePluginFactory {
        }
        
        private Map<String, Object> getReturnRoute(List<Object> returnList){
-               Map<String, Object> returnRoute = new HashMap<>();
+               Map<String, Object> returnRoute = new HashMap<String,Object>();
                for(Object returnVpn :returnList){
                        Map<String, Object> returnVpnInfo = (Map<String, Object>) returnVpn;
                    String accessTopoId = (String)returnVpnInfo.get("access-topology-id");
@@ -399,7 +550,6 @@ public class ServicePluginFactory {
                        jsonStr = mapper.writeValueAsString(srcObj);
                } catch (JsonProcessingException e) {
                        LOGGER.debug("SdcToscaParserException", e);
-                       e.printStackTrace();
                }
                return jsonStr;
        }
@@ -452,9 +602,9 @@ public class ServicePluginFactory {
                                try {
                                        responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
                                } catch (ParseException e) {
-                                       e.printStackTrace();
+                                       LOGGER.debug("ParseException in sendrequest", e);
                                } catch (IOException e) {
-                                       e.printStackTrace();
+                                       LOGGER.debug("IOException in sendrequest", e);
                                }
                        }
                        if (null != method) {
index 0b890d8..0dc5707 100644 (file)
@@ -76,7 +76,7 @@ ddsi.postProcessAAIPUT(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1qctzm0" sourceRef="Task_0uiekmn" targetRef="Task_0raqlqc" />
     <bpmn2:scriptTask id="Task_0uiekmn" name="Prepare Resource Oper Status" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_1m2tm19</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1hbesp9</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1qctzm0</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
 def ddsi = new DoCreateE2EServiceInstance()
@@ -102,7 +102,7 @@ ddsi.preInitResourcesOperStatus(execution)]]></bpmn2:script>
         </camunda:connector>
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_1qctzm0</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_13xfsff</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0bfwj4y</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0bq4fxs" name="Go to Decompose_Service">
       <bpmn2:incoming>SequenceFlow_0w9t6tc</bpmn2:incoming>
@@ -147,10 +147,10 @@ dcsi.prepareDecomposeService(execution)]]></bpmn2:script>
     <bpmn2:sequenceFlow id="SequenceFlow_1qiiycn" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" />
     <bpmn2:sequenceFlow id="SequenceFlow_166w91p" sourceRef="IntermediateCatchEvent_0tv85pg" targetRef="ScriptTask_1cllqk3" />
     <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16okck2" name="GoTo StartPrepareResource">
-      <bpmn2:incoming>SequenceFlow_1tkgqu3</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_15d8lqu</bpmn2:incoming>
       <bpmn2:linkEventDefinition name="StartPrepareResource" />
     </bpmn2:intermediateThrowEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_1tkgqu3" sourceRef="ScriptTask_0q37vn9" targetRef="IntermediateThrowEvent_16okck2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1tkgqu3" sourceRef="ScriptTask_0q37vn9" targetRef="ScriptTask_08yiqtu" />
     <bpmn2:sequenceFlow id="SequenceFlow_0w9t6tc" sourceRef="preProcessRequest_ScriptTask" targetRef="IntermediateThrowEvent_0bq4fxs" />
     <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0jrb3xu" name="StartService">
       <bpmn2:outgoing>SequenceFlow_1i7t9hq</bpmn2:outgoing>
@@ -158,16 +158,10 @@ dcsi.prepareDecomposeService(execution)]]></bpmn2:script>
     </bpmn2:intermediateCatchEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_1i7t9hq" sourceRef="IntermediateCatchEvent_0jrb3xu" targetRef="CustomE2EPutService" />
     <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_05dus9b" name="StartPrepareResource">
-      <bpmn2:outgoing>SequenceFlow_1m2tm19</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1hbesp9</bpmn2:outgoing>
       <bpmn2:linkEventDefinition name="StartPrepareResource" />
     </bpmn2:intermediateCatchEvent>
-    <bpmn2:scriptTask id="Task_0ush1g4" name="Process Site Location" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_13xfsff</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0y3i2k7</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
-def dcsi= new DoCreateE2EServiceInstance()
-dcsi.doProcessSiteLocation(execution)]]></bpmn2:script>
-    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1hbesp9" sourceRef="IntermediateCatchEvent_05dus9b" targetRef="Task_0uiekmn" />
     <bpmn2:callActivity id="CallActivity_1ojtwas" name="Call DoCreateResources" calledElement="DoCreateResourcesV3">
       <bpmn2:extensionElements>
         <camunda:in source="nsServiceName" target="nsServiceName" />
@@ -190,7 +184,7 @@ dcsi.doProcessSiteLocation(execution)]]></bpmn2:script>
       <bpmn2:outgoing>SequenceFlow_0d0c20n</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:scriptTask id="ScriptTask_04b21gb" name="PreProcess for Add Resources" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0y3i2k7</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0p6ba92</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0bf6bzp</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
 def csi = new  DoCreateE2EServiceInstance()
@@ -203,7 +197,6 @@ csi.preProcessForAddResource(execution)]]></bpmn2:script>
 def csi = new  DoCreateE2EServiceInstance()
 csi.postProcessForAddResource(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_13xfsff" sourceRef="Task_0raqlqc" targetRef="Task_0ush1g4" />
     <bpmn2:sequenceFlow id="SequenceFlow_0bf6bzp" sourceRef="ScriptTask_04b21gb" targetRef="CallActivity_1ojtwas" />
     <bpmn2:sequenceFlow id="SequenceFlow_0d0c20n" sourceRef="CallActivity_1ojtwas" targetRef="ScriptTask_1y7jr4t" />
     <bpmn2:endEvent id="EndEvent_0hzmoug">
@@ -211,8 +204,31 @@ csi.postProcessForAddResource(execution)]]></bpmn2:script>
     </bpmn2:endEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_0a6vgsu" sourceRef="ScriptTask_1y7jr4t" targetRef="EndEvent_0hzmoug" />
     <bpmn2:sequenceFlow id="SequenceFlow_012h7yx" sourceRef="ScriptTask_1o01d7d" targetRef="IntermediateThrowEvent_1mlbhmt" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1m2tm19" sourceRef="IntermediateCatchEvent_05dus9b" targetRef="Task_0uiekmn" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0y3i2k7" sourceRef="Task_0ush1g4" targetRef="ScriptTask_04b21gb" />
+    <bpmn2:scriptTask id="ScriptTask_0dpt36a" name="Process Site Location" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0bfwj4y</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1e5vxox</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCreateE2EServiceInstance()
+dcsi.doProcessSiteLocation(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_1a5mdd6" name="Process Link TP Resource Allocation" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1e5vxox</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0p6ba92</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCreateE2EServiceInstance()
+dcsi.doTPResourcesAllocation(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1e5vxox" sourceRef="ScriptTask_0dpt36a" targetRef="ScriptTask_1a5mdd6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfwj4y" sourceRef="Task_0raqlqc" targetRef="ScriptTask_0dpt36a" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0p6ba92" sourceRef="ScriptTask_1a5mdd6" targetRef="ScriptTask_04b21gb" />
+    <bpmn2:scriptTask id="ScriptTask_08yiqtu" name="Store ServiceInput to AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1tkgqu3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15d8lqu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateE2EServiceInstance()
+ddsi.saveServiceInputToAAI(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_15d8lqu" sourceRef="ScriptTask_08yiqtu" targetRef="IntermediateThrowEvent_16okck2" />
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
@@ -228,15 +244,13 @@ csi.postProcessForAddResource(execution)]]></bpmn2:script>
         <dc:Bounds x="126" y="-229" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0khp0qc_di" bpmnElement="CustomE2EPutService">
-        <dc:Bounds x="713" y="54" width="100" height="80" />
+        <dc:Bounds x="478" y="54" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_129ih1g_di" bpmnElement="SequenceFlow_129ih1g">
-        <di:waypoint xsi:type="dc:Point" x="813" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="941" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="941" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="1068" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="578" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="713" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="911" y="94" width="90" height="0" />
+          <dc:Bounds x="600.5" y="79" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true">
@@ -272,7 +286,7 @@ csi.postProcessForAddResource(execution)]]></bpmn2:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0q37vn9_di" bpmnElement="ScriptTask_0q37vn9">
-        <dc:Bounds x="1068" y="54" width="100" height="80" />
+        <dc:Bounds x="713" y="54" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0ocetux_di" bpmnElement="ScriptTask_0ocetux">
         <dc:Bounds x="246" y="920" width="100" height="80" />
@@ -298,16 +312,16 @@ csi.postProcessForAddResource(execution)]]></bpmn2:script>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1qctzm0_di" bpmnElement="SequenceFlow_1qctzm0">
         <di:waypoint xsi:type="dc:Point" x="226" y="300" />
-        <di:waypoint xsi:type="dc:Point" x="337" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="297" y="300" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="236.5" y="279" width="90" height="12" />
+          <dc:Bounds x="216.5" y="279" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0v81r5h_di" bpmnElement="Task_0uiekmn">
         <dc:Bounds x="126" y="260" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_14tnuxf_di" bpmnElement="Task_0raqlqc">
-        <dc:Bounds x="337" y="260" width="100" height="80" />
+        <dc:Bounds x="297" y="260" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_11saqvj_di" bpmnElement="IntermediateThrowEvent_0bq4fxs">
         <dc:Bounds x="1315" y="-207" width="36" height="36" />
@@ -371,12 +385,10 @@ csi.postProcessForAddResource(execution)]]></bpmn2:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1tkgqu3_di" bpmnElement="SequenceFlow_1tkgqu3">
-        <di:waypoint xsi:type="dc:Point" x="1168" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="1242" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="1242" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="1315" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="991" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1257" y="88" width="0" height="12" />
+          <dc:Bounds x="857" y="73" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0w9t6tc_di" bpmnElement="SequenceFlow_0w9t6tc">
@@ -389,19 +401,18 @@ csi.postProcessForAddResource(execution)]]></bpmn2:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_0jrb3xu_di" bpmnElement="IntermediateCatchEvent_0jrb3xu">
-        <dc:Bounds x="18" y="79" width="36" height="36" />
+        <dc:Bounds x="18" y="76" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="8" y="115" width="60" height="12" />
+          <dc:Bounds x="8" y="112" width="60" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1i7t9hq_di" bpmnElement="SequenceFlow_1i7t9hq">
-        <di:waypoint xsi:type="dc:Point" x="54" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="528" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="646" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="646" y="94" />
-        <di:waypoint xsi:type="dc:Point" x="713" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="54" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="266" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="266" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="478" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="542" y="73" width="90" height="12" />
+          <dc:Bounds x="236" y="88" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_05dus9b_di" bpmnElement="IntermediateCatchEvent_05dus9b">
@@ -410,30 +421,27 @@ csi.postProcessForAddResource(execution)]]></bpmn2:script>
           <dc:Bounds x="-3" y="318" width="82" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0wr11dt_di" bpmnElement="Task_0ush1g4">
-        <dc:Bounds x="554" y="260" width="100" height="80" />
-      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hbesp9_di" bpmnElement="SequenceFlow_1hbesp9">
+        <di:waypoint xsi:type="dc:Point" x="54" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="126" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_1ojtwas_di" bpmnElement="CallActivity_1ojtwas">
         <dc:Bounds x="971" y="260" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_04b21gb_di" bpmnElement="ScriptTask_04b21gb">
-        <dc:Bounds x="774" y="260" width="100" height="80" />
+        <dc:Bounds x="799" y="260" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1y7jr4t_di" bpmnElement="ScriptTask_1y7jr4t">
         <dc:Bounds x="1145" y="260" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_13xfsff_di" bpmnElement="SequenceFlow_13xfsff">
-        <di:waypoint xsi:type="dc:Point" x="437" y="300" />
-        <di:waypoint xsi:type="dc:Point" x="554" y="300" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="450.5" y="279" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0bf6bzp_di" bpmnElement="SequenceFlow_0bf6bzp">
-        <di:waypoint xsi:type="dc:Point" x="874" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="899" y="300" />
         <di:waypoint xsi:type="dc:Point" x="971" y="300" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="877.5" y="279" width="90" height="12" />
+          <dc:Bounds x="890" y="279" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0d0c20n_di" bpmnElement="SequenceFlow_0d0c20n">
@@ -463,18 +471,41 @@ csi.postProcessForAddResource(execution)]]></bpmn2:script>
           <dc:Bounds x="1064" y="-61" width="0" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1m2tm19_di" bpmnElement="SequenceFlow_1m2tm19">
-        <di:waypoint xsi:type="dc:Point" x="54" y="300" />
-        <di:waypoint xsi:type="dc:Point" x="126" y="300" />
+      <bpmndi:BPMNShape id="ScriptTask_0dpt36a_di" bpmnElement="ScriptTask_0dpt36a">
+        <dc:Bounds x="455" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1a5mdd6_di" bpmnElement="ScriptTask_1a5mdd6">
+        <dc:Bounds x="613" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1e5vxox_di" bpmnElement="SequenceFlow_1e5vxox">
+        <di:waypoint xsi:type="dc:Point" x="555" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="613" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="539" y="279" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfwj4y_di" bpmnElement="SequenceFlow_0bfwj4y">
+        <di:waypoint xsi:type="dc:Point" x="397" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="455" y="300" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="90" y="278" width="0" height="14" />
+          <dc:Bounds x="426" y="279" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0y3i2k7_di" bpmnElement="SequenceFlow_0y3i2k7">
-        <di:waypoint xsi:type="dc:Point" x="654" y="300" />
-        <di:waypoint xsi:type="dc:Point" x="774" y="300" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0p6ba92_di" bpmnElement="SequenceFlow_0p6ba92">
+        <di:waypoint xsi:type="dc:Point" x="713" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="799" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="756" y="279" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_08yiqtu_di" bpmnElement="ScriptTask_08yiqtu">
+        <dc:Bounds x="991" y="54" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15d8lqu_di" bpmnElement="SequenceFlow_15d8lqu">
+        <di:waypoint xsi:type="dc:Point" x="1091" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="94" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="714" y="278" width="0" height="14" />
+          <dc:Bounds x="1203" y="73" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
index 66de6b3..7bc4851 100644 (file)
@@ -244,8 +244,8 @@ public class SniroHomingV2 {
                ModelInfoServiceInstance modelInfo = serviceInstance.getModelInfoServiceInstance();
                if(isNotBlank(modelInfo.getModelInvariantUuid()) && isNotBlank(modelInfo.getModelUuid())){
                        info.put("serviceInstanceId", serviceInstance.getServiceInstanceId());
-                       if(modelInfo.getServiceType() != null){ //temp solution
-                               info.put("serviceName", serviceInstance.getModelInfoServiceInstance().getServiceType());
+                       if(modelInfo.getServiceType() != null && modelInfo.getServiceType().length() > 0){ //temp solution
+                               info.put("serviceName", modelInfo.getServiceType());
                        }
                        info.put("modelInfo", buildModelInfo(serviceInstance.getModelInfoServiceInstance()));
                }else{
index 554af37..db54b21 100644 (file)
@@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.onap.so.adapters.vnfrest.CreateVfModuleResponse;
 import org.onap.so.adapters.vnfrest.CreateVolumeGroupResponse;
 import org.onap.so.adapters.vnfrest.DeleteVfModuleResponse;
+import org.onap.so.adapters.vnfrest.DeleteVolumeGroupResponse;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
@@ -72,8 +73,8 @@ public class VnfAdapterImpl {
        }
        
        public void postProcessVnfAdapter(BuildingBlockExecution execution) {
-               try {
-            String vnfAdapterResponse = execution.getVariable("vnfAdapterRestV1Response");
+               try {                   
+            String vnfAdapterResponse = execution.getVariable("vnfAdapterRestV1Response");           
             if (!StringUtils.isEmpty( vnfAdapterResponse)) {
                 Object vnfRestResponse = unMarshal(vnfAdapterResponse);
                 if(vnfRestResponse instanceof CreateVfModuleResponse) {
@@ -98,8 +99,15 @@ public class VnfAdapterImpl {
                         execution.setVariable("heatStackId", heatStackId);
                     }else{
                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "HeatStackId is missing from create VolumeGroup Vnf Adapter response.");
-                    }
-                }                
+                    }                    
+                } else if(vnfRestResponse instanceof DeleteVolumeGroupResponse) {                      
+                       VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
+                       Boolean volumeGroupDelete = ((DeleteVolumeGroupResponse) vnfRestResponse).getVolumeGroupDeleted();
+                       if(null!= volumeGroupDelete && volumeGroupDelete) {                             
+                               volumeGroup.setHeatStackId(null);
+                               execution.setVariable("heatStackId", null);
+                       }
+                }
             }
                } catch (Exception ex) {
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -116,7 +124,7 @@ public class VnfAdapterImpl {
             XMLReader xmlReader = spf.newSAXParser().getXMLReader();
 
             JAXBContext jaxbContext = JAXBContext.newInstance(CreateVfModuleResponse.class,
-                    CreateVolumeGroupResponse.class,DeleteVfModuleResponse.class);
+                    CreateVolumeGroupResponse.class,DeleteVfModuleResponse.class,DeleteVolumeGroupResponse.class);
             Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
 
             InputSource inputSource = new InputSource(new StringReader(input));
index ab29e21..9e4b01e 100644 (file)
@@ -30,13 +30,13 @@ import org.onap.so.bpmn.common.workflow.context.WorkflowContextHolder;
 import org.onap.so.bpmn.core.WorkflowException;
 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
-
 import org.onap.so.client.exception.ExceptionBuilder;
 import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.onap.so.db.request.client.RequestsDbClient;
-import org.onap.so.logger.MsoLogger;
 import org.onap.so.serviceinstancebeans.RequestReferences;
 import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -50,7 +50,7 @@ public class WorkflowActionBBTasks {
        private static final String G_REQUEST_ID = "mso-request-id";
        private static final String G_ALACARTE = "aLaCarte";
        private static final String G_ACTION = "requestAction";
-       private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, WorkflowActionBBTasks.class);
+       private static final Logger logger = LoggerFactory.getLogger(WorkflowActionBBTasks.class);
 
        @Autowired
        private RequestsDbClient requestDbclient;
@@ -84,10 +84,14 @@ public class WorkflowActionBBTasks {
        }
        
        public void updateFlowStatistics(DelegateExecution execution) {
-               int currentSequence = (int) execution.getVariable(G_CURRENT_SEQUENCE);
-               if(currentSequence > 1) {
-                       InfraActiveRequests request = this.getUpdatedRequest(execution, currentSequence);
-                       requestDbclient.updateInfraActiveRequests(request);
+               try{
+                       int currentSequence = (int) execution.getVariable(G_CURRENT_SEQUENCE);
+                       if(currentSequence > 1) {
+                               InfraActiveRequests request = this.getUpdatedRequest(execution, currentSequence);
+                               requestDbclient.updateInfraActiveRequests(request);
+                       }
+               }catch (Exception ex){
+                       logger.warn("Bpmn Flow Statistics was unable to update Request Db with the new completion percentage. Competion percentage may be invalid.");
                }
        }
 
@@ -146,7 +150,7 @@ public class WorkflowActionBBTasks {
                                .getProcessDefinition(execution.getProcessDefinitionId()).getKey();
                WorkflowContextHolder.getInstance().processCallback(processKey, execution.getProcessInstanceId(), requestId,
                                callbackResponse);
-               msoLogger.info("Successfully sent sync ack.");
+               logger.info("Successfully sent sync ack.");
        }
 
        public void sendErrorSyncAck(DelegateExecution execution) {
@@ -169,7 +173,7 @@ public class WorkflowActionBBTasks {
                                        callbackResponse);
                        execution.setVariable("sentSyncResponse", true);
                } catch (Exception ex) {
-                       msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage());
+                       logger.error(" Sending Sync Error Activity Failed. {}"  , ex.getMessage(), ex);
                }
        }
 
@@ -265,8 +269,7 @@ public class WorkflowActionBBTasks {
 
        public void abortCallErrorHandling(DelegateExecution execution) {
                String msg = "Flow has failed. Rainy day handler has decided to abort the process.";
-               Exception exception = new Exception(msg);
-               msoLogger.error(exception);
+               logger.error(msg);
                throw new BpmnError(msg);
        }
 
@@ -280,14 +283,14 @@ public class WorkflowActionBBTasks {
                                request.setStatusMessage(exception.getErrorMessage());
                        } catch (Exception ex) {
                                //log error and attempt to extact WorkflowExceptionMessage
-                               msoLogger.error(ex);
+                               logger.error("Failed to extract workflow exception from execution.",ex);
                        }
                        if (errorMsg == null){
                                try {
                                        errorMsg = (String) execution.getVariable("WorkflowExceptionErrorMessage");
                                        request.setStatusMessage(errorMsg);
                                } catch (Exception ex) {
-                                       msoLogger.error(ex);
+                                       logger.error("Failed to extract workflow exception message from WorkflowException",ex);
                                        request.setStatusMessage("Unexpected Error in BPMN");
                                }
                        }
index 67e7afb..ec202b8 100644 (file)
@@ -31,6 +31,7 @@ import javax.annotation.PostConstruct;
 
 import org.onap.sdnc.northbound.client.model.GenericResourceApiParam;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiParamParam;
+import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleTopology;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfmoduletopologyVfModuleTopology;
 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
@@ -108,8 +109,9 @@ public class VnfAdapterObjectMapper {
                final String USER_PARAM_NAME_KEY = "name";
         final String USER_PARAM_VALUE_KEY = "value";
                // sdncVfModuleQueryResponse will not be available in aLaCarte case
-               if (sdncVfModuleQueryResponse != null) {                        
-                       GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology = mapper.readValue(sdncVfModuleQueryResponse, GenericResourceApiVfmoduletopologyVfModuleTopology.class);
+               if (sdncVfModuleQueryResponse != null) {                
+                       GenericResourceApiVfModuleTopology vfModuleTop = mapper.readValue(sdncVfModuleQueryResponse, GenericResourceApiVfModuleTopology.class);
+                       GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology  = vfModuleTop.getVfModuleTopology();
                        buildParamsMapFromSdncParams(volumeGroupParams, vfModuleTopology.getVfModuleParameters());
                }
 
index 11a6941..2b58b7b 100644 (file)
@@ -31,11 +31,13 @@ import java.util.Map;
 import java.util.Optional;
 
 import javax.annotation.PostConstruct;
+import javax.validation.Valid;
 
 import org.onap.sdnc.northbound.client.model.GenericResourceApiParam;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiParamParam;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiSubInterfaceNetworkData;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiSubinterfacenetworkdataSubInterfaceNetworkData;
+import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleTopology;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfmoduleassignmentsVfModuleAssignments;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfmoduleassignmentsVfmoduleassignmentsVms;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfmoduletopologyVfModuleTopology;
@@ -52,6 +54,7 @@ import org.onap.sdnc.northbound.client.model.GenericResourceApiVmtopologydataVmN
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVmtopologydataVmNetworks;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVmtopologydataVmnamesVnfcNames;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfNetworkData;
+import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfTopology;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfcNetworkData;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfcnetworkdataVnfcNetworkData;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcPorts;
@@ -157,11 +160,14 @@ public class VnfAdapterVfModuleObjectMapper {
        private Map<String,String> buildVfModuleParamsMap(RequestContext requestContext, ServiceInstance serviceInstance, GenericVnf genericVnf, 
                                VfModule vfModule, String sdncVnfQueryResponse, String sdncVfModuleQueryResponse) throws JsonParseException, JsonMappingException, IOException {
                
-               GenericResourceApiVnftopologyVnfTopology vnfTopology = mapper.readValue(sdncVnfQueryResponse, GenericResourceApiVnftopologyVnfTopology.class);
-               GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology = mapper.readValue(sdncVfModuleQueryResponse, GenericResourceApiVfmoduletopologyVfModuleTopology.class);
+               
+               GenericResourceApiVnfTopology vnfTop= mapper.readValue(sdncVnfQueryResponse, GenericResourceApiVnfTopology.class);
+               GenericResourceApiVfModuleTopology vfModuleTop = mapper.readValue(sdncVfModuleQueryResponse, GenericResourceApiVfModuleTopology.class);
+               GenericResourceApiVnftopologyVnfTopology vnfTopology = vnfTop.getVnfTopology();
+               GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology = vfModuleTop.getVfModuleTopology();
                Map<String,String> paramsMap = new HashMap<>();
 
-               if(vnfTopology.getSdncGeneratedCloudResources() && vfModuleTopology.getSdncGeneratedCloudResources()) {
+               if( vfModuleTopology.getSdncGeneratedCloudResources()) {
                        buildParamsMapFromVfModuleSdncResponse(paramsMap, vfModuleTopology, true);
                        buildParamsMapFromVnfSdncResponse(paramsMap, vnfTopology, null, true);
                }
index d35296a..aefb84c 100644 (file)
@@ -20,7 +20,9 @@
 
 package org.onap.so.client.sdnc;
 
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
+import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.HttpStatus;
@@ -29,10 +31,16 @@ import org.onap.so.client.exception.BadResponseException;
 import org.onap.so.client.exception.MapperException;
 import org.onap.so.logger.MessageEnum;
 import org.onap.so.logger.MsoLogger;
+import org.onap.so.logging.jaxrs.filter.SpringClientFilter;
+import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.BufferingClientHttpRequestFactory;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.client.RestTemplate;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -79,6 +87,9 @@ public class SdnCommonTasks {
         HttpHeaders httpHeader = new HttpHeaders();
         httpHeader.set("Authorization", auth);
         httpHeader.setContentType(MediaType.APPLICATION_JSON);
+        List<MediaType> acceptMediaTypes = new ArrayList<MediaType>();
+        acceptMediaTypes.add(MediaType.APPLICATION_JSON);
+        httpHeader.setAccept(acceptMediaTypes);
         return httpHeader;
     }
 
index 84f056d..432399b 100644 (file)
@@ -83,6 +83,8 @@ public class GeneralTopologyObjectMapper {
                        onapModelInformation.setModelCustomizationUuid(network.getModelInfoNetwork().getModelCustomizationUUID());
                        networkInformation.setOnapModelInformation(onapModelInformation);
                }
+
+               networkInformation.setFromPreload(null);
                networkInformation.setNetworkId(network.getNetworkId());
                //TODO fix this after network type filed included in L3Network object type
                //networkInformation.setNetworkType(network.getNetwork);
@@ -130,6 +132,7 @@ public class GeneralTopologyObjectMapper {
                        vfModuleInformation.setVfModuleType(vfModule.getModelInfoVfModule().getModelName());
                }
                vfModuleInformation.setVfModuleId(vfModule.getVfModuleId());
+               vfModuleInformation.setFromPreload(null);
                return vfModuleInformation;
        }
        public GenericResourceApiSdncrequestheaderSdncRequestHeader buildSdncRequestHeader(SDNCSvcAction svcAction, String sdncReqId){
index 24a99c9..2a8046b 100644 (file)
@@ -46,8 +46,9 @@ public class VnfAdapterImplTest extends BaseTaskTest {
        private static final String VNF_ADAPTER_REST_DELETE_RESPONSE = FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestDeleteResponse.xml");
        private static final String VNF_ADAPTER_REST_CREATE_RESPONSE =  FileUtil.readResourceFile("__files/VfModularity/VNFAdapterRestCreateCallback.xml");
     private static final String VNF_ADAPTER_VOLUME_CREATE_RESPONSE =  FileUtil.readResourceFile("__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml");
+    private static final String VNF_ADAPTER_VOLUME_DELETE_RESPONSE =  FileUtil.readResourceFile("__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml");
        private static final String TEST_VFMODULE_HEATSTACK_ID = "slowburn";
-    private static final String TEST_VOLUME_HEATSTACK_ID = "testHeatStackId1";
+    private static final String TEST_VOLUME_HEATSTACK_ID = "testHeatStackId1";   
 
        @Before
        public void before() {
@@ -56,6 +57,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
                vfModule = setVfModule();
         volumeGroup = setVolumeGroup();
                vfModule.setHeatStackId(null);
+               volumeGroup.setHeatStackId(null);
        }
 
        @Test
@@ -98,13 +100,14 @@ public class VnfAdapterImplTest extends BaseTaskTest {
 
        @Test
        public void postProcessVnfAdapter_DeleteResponseTest() {
+               vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
                execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_DELETE_RESPONSE);
                vnfAdapterImpl.postProcessVnfAdapter(execution);
                assertNull(vfModule.getHeatStackId());
        }
        
        @Test
-       public void postProcessVnfAdapter_ResponseNullTest() {
+       public void postProcessVnfAdapter_ResponseNullTest() {          
                execution.setVariable("vnfAdapterRestV1Response", null);
                vnfAdapterImpl.postProcessVnfAdapter(execution);
                assertNull(vfModule.getHeatStackId());
@@ -119,9 +122,10 @@ public class VnfAdapterImplTest extends BaseTaskTest {
        
        @Test
        public void postProcessVnfAdapter_DeleteResponseTest_VfModuleDeletedFalse() {
+               vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
                execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse><vfModuleDeleted>false</vfModuleDeleted></deleteVfModuleResponse>");
                vnfAdapterImpl.postProcessVnfAdapter(execution);
-               assertNull(vfModule.getHeatStackId());
+               assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
        }
        
        @Test
@@ -133,9 +137,10 @@ public class VnfAdapterImplTest extends BaseTaskTest {
        
        @Test
        public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleDeletedTag() {
+               vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
                execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse></deleteVfModuleResponse>");
                vnfAdapterImpl.postProcessVnfAdapter(execution);
-               assertNull(vfModule.getHeatStackId());
+               assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
        }
 
        @Test
@@ -157,10 +162,43 @@ public class VnfAdapterImplTest extends BaseTaskTest {
         expectedException.expect(BpmnError.class);
         execution.setVariable("vnfAdapterRestV1Response", "<createVolumeGroupResponse></createVolumeGroupResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
+        assertNull(volumeGroup.getHeatStackId());
     }
+    
+    @Test
+       public void postProcessVnfAdapter_DeleteResponseTest_DeleteVolumeGroup() {
+       volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
+               execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_VOLUME_DELETE_RESPONSE);
+               vnfAdapterImpl.postProcessVnfAdapter(execution);
+               assertNull(volumeGroup.getHeatStackId());
+       }
+       
+    
+    @Test
+       public void postProcessVnfAdapter_DeleteResponseTest_VolumeGroupDeletedFalse() {
+       volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
+               execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse><volumeGroupDeleted>false</volumeGroupDeleted></deleteVolumeGroupResponse>");
+               vnfAdapterImpl.postProcessVnfAdapter(execution);
+               assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());           
+       }
+       
+       @Test
+       public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
+        expectedException.expect(BpmnError.class);
+               execution.setVariable("vnfAdapterRestV1Response", "<volumeGroupDeleted></volumeGroupDeleted>");
+               vnfAdapterImpl.postProcessVnfAdapter(execution);        
+       }
+       
+       @Test
+       public void postProcessVnfAdapter_DeleteResponseTest_EmptyVolumeGroupDeletedTag() {
+               volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
+               execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse></deleteVolumeGroupResponse>");
+               vnfAdapterImpl.postProcessVnfAdapter(execution);
+               assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
+       }
 
        @Test
-       public void postProcessVnfAdapterExceptionTest() {
+       public void postProcessVnfAdapterExceptionTest() {              
                execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
                expectedException.expect(BpmnError.class);
                lookupKeyMap.clear();
index 64192ff..f06d72a 100644 (file)
@@ -21,8 +21,9 @@
     "svc-action" : "unassign"
   },
   "vf-module-information" : {    
-    "vf-module-id" : "testVfModuleId"   
-  },
+    "vf-module-id" : "testVfModuleId",
+    "from-preload": null  
+ },
   "vnf-information" : {    
     "vnf-id" : "testVnfId",
     "vnf-type" : "testVnfType"
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml b/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/CreateVfModuleVolumeCallbackResponse.xml
new file mode 100644 (file)
index 0000000..feb7ede
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<createVolumeGroupResponse>
+    <messageId>{{MESSAGE-ID}}</messageId>
+    <volumeGroupCreated>true</volumeGroupCreated>
+    <volumeGroupId>d485ecee-957c-4a0a-8b95-27a22b90103f</volumeGroupId>
+    <volumeGroupOutputs>
+        <entry>
+            <key>mmsc_vol_1</key>
+            <value>a73e0fe9-1ce8-49c2-8fef-e2788605be29</value>
+        </entry>
+        <entry>
+            <key>mmsc_vol_2</key>
+            <value>37b6455a-5ea8-463a-89e3-0efeaf7b7c6d</value>
+        </entry>
+        <entry>
+            <key>nemsfe_vol_1</key>
+            <value>b7ff1c21-d138-49a3-bf13-4cfd91efaf48</value>
+        </entry>
+        <entry>
+            <key>nemsbe_vol_1</key>
+            <value>a5988471-cd42-44d8-b078-64f2f13d3d4c</value>
+        </entry>
+        <entry>
+            <key>mmsc_vol_5</key>
+            <value>f7b91c1e-ab8c-413a-a850-ba80a246c7e0</value>
+        </entry>
+        <entry>
+            <key>nemsfe_vol_2</key>
+            <value>957ea3f3-2d4a-4707-bfd2-ba66f42037c2</value>
+        </entry>
+        <entry>
+            <key>mmsc_vol_3</key>
+            <value>de6fccfe-d61a-48b0-b03b-87bf1bf749b3</value>
+        </entry>
+        <entry>
+            <key>mmsc_vol_4</key>
+            <value>76162310-2c38-4c32-981c-5c2880190077</value>
+        </entry>
+    </volumeGroupOutputs>
+    <volumeGroupRollback>
+        <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+        <messageId>e585e4f4-9452-437a-b294-45a2d6d3b7a3</messageId>
+        <msoRequest>
+            <requestId>c30b9453-4b68-4c2e-aacf-58a5ba648bf5</requestId>
+            <serviceInstanceId>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</serviceInstanceId>
+        </msoRequest>
+        <tenantId>1bbab536a19b4756926e7d0ec1eb543c</tenantId>
+        <volumeGroupCreated>true</volumeGroupCreated>
+        <volumeGroupId>78987</volumeGroupId>
+        <volumeGroupStackId>ZRDM1MMSC01_base_vol/7f74e5e1-5fc1-4593-ac7e-cc9899a106ef</volumeGroupStackId>
+    </volumeGroupRollback>
+    <volumeGroupStackId>testHeatStackId1</volumeGroupStackId>
+</createVolumeGroupResponse>
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml b/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/DeleteVfModuleVolumeCallbackResponse.xml
new file mode 100644 (file)
index 0000000..25aa45a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<deleteVolumeGroupResponse>
+       <messageId>{{MESSAGE-ID}}</messageId>
+       <volumeGroupDeleted>true</volumeGroupDeleted>
+</deleteVolumeGroupResponse>
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/VNFAdapterRestDeleteResponse.xml b/bpmn/so-bpmn-tasks/src/test/resources/__files/VfModularity/VNFAdapterRestDeleteResponse.xml
new file mode 100644 (file)
index 0000000..b5b6119
--- /dev/null
@@ -0,0 +1,56 @@
+<deleteVfModuleResponse>
+       <messageId>testMessageId</messageId> 
+       <vfModuleDeleted>true</vfModuleDeleted>
+       <vfModuleId>testVfModuleId</vfModuleId>
+       <vfModuleOutputs>
+               <entry>
+                       <key>key1</key>
+                       <value>value1</value>
+               </entry>
+               <entry>
+                       <key>key2</key>
+                       <value>value2</value>
+               </entry>
+               <entry>
+                       <key>server1_private_ip</key>
+                       <value>192.168.28.3</value>
+               </entry>
+               <entry>
+                       <key>contrail-service-instance-fqdn</key>
+                       <value>default-domain:MSOTest:MsoNW-RA</value>
+               </entry>
+               <entry>
+                       <key>policyKey1_contrail_network_policy_fqdn</key>
+                       <value>MSOTest:DefaultPolicyFQDN1</value>
+               </entry>
+               <entry>
+                       <key>policyKey2_contrail_network_policy_fqdn</key>
+                       <value>MSOTest:DefaultPolicyFQDN2</value>
+               </entry>
+               <entry>
+                       <key>oam_management_v6_address</key>
+                       <value>2000:abc:bce:1111</value>
+               </entry>
+               <entry>
+                       <key>oam_management_v4_address</key>
+                       <value>127.0.0.1</value>
+               </entry>
+               <entry> 
+            <key>internal_security_group</key> 
+            <value>test_internal_security_group</value>
+        </entry> 
+        <entry> 
+            <key>int_internal_net_id</key> 
+            <value>test_int_internal_net_id</value> 
+        </entry> 
+        <entry> 
+            <key>dsx_server_group_id</key> 
+            <value>test_dsx_server_group_id</value> 
+        </entry> 
+        <entry> 
+            <key>mcas_host_key</key> 
+            <value>test_mcas_host_key</value> 
+        </entry> 
+       </vfModuleOutputs>
+       <vnfId>testVnfId</vnfId>
+</deleteVfModuleResponse>
\ No newline at end of file
index bfe7f16..9a05602 100644 (file)
 package org.onap.so.cloudify.connector.http;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+import org.apache.http.ProtocolException;
 import org.apache.http.client.methods.HttpDelete;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpHead;
@@ -29,6 +37,8 @@ import org.apache.http.client.methods.HttpPatch;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpPut;
 import org.apache.http.client.methods.HttpTrace;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.protocol.HttpContext;
 import org.junit.Test;
 
 public class HttpClientRedirectStrategyTest {
@@ -50,4 +60,44 @@ public class HttpClientRedirectStrategyTest {
         assertThat(httpClientRedirectStrategy.isRedirectable(HttpDelete.METHOD_NAME)).isTrue();
         assertThat(httpClientRedirectStrategy.isRedirectable(HttpHead.METHOD_NAME)).isTrue();
     }
+
+    @Test
+    public void getRedirect_shouldReturnHttpHeadUriRequest() throws URISyntaxException, ProtocolException {
+        assertHttpUriRequestFor(HttpHead.METHOD_NAME, HttpHead.class);
+    }
+
+    @Test
+    public void getRedirect_shouldReturnHttpGetUriRequest() throws URISyntaxException, ProtocolException {
+        assertHttpUriRequestFor(HttpGet.METHOD_NAME, HttpGet.class);
+    }
+
+    private void assertHttpUriRequestFor(String methodName, Class<? extends HttpUriRequest> expectedHttpMethodClass)
+        throws URISyntaxException, ProtocolException {
+        // GIVEN
+        HttpRequest request = mock(HttpRequest.class, RETURNS_DEEP_STUBS);
+        given(request.getRequestLine().getMethod()).willReturn(methodName);
+        HttpResponse response = null;
+        HttpContext context = null;
+        URI expectedUri = new URI("http://localhost/host");
+        // WHEN
+        HttpUriRequest httpUriRequest = new TestableHttpClientRedirectStrategy(expectedUri)
+            .getRedirect(request, response, context);
+        // THEN
+        assertThat(httpUriRequest).isInstanceOf(expectedHttpMethodClass);
+        assertThat(httpUriRequest.getURI()).isEqualTo(expectedUri);
+    }
+
+    private static class TestableHttpClientRedirectStrategy extends HttpClientRedirectStrategy {
+
+        private final URI expectedUri;
+
+        public TestableHttpClientRedirectStrategy(URI expectedUri) {
+            this.expectedUri = expectedUri;
+        }
+
+        @Override
+        public URI getLocationURI(HttpRequest request, HttpResponse response, HttpContext context) {
+            return expectedUri;
+        }
+    }
 }
\ No newline at end of file
index 631850a..1a453c6 100644 (file)
@@ -271,7 +271,7 @@ public abstract class RestClient {
                return format(method("DELETE", obj), resultClass).orElse(null);
        }
        
-       private Response method(String method, Object entity) {
+       public Response method(String method, Object entity) {
                RetryPolicy policy = new RetryPolicy();
                
                List<Predicate<Throwable>> items = retryOn();
index c50653a..553c1e0 100644 (file)
@@ -33,7 +33,8 @@ public enum AAIObjectPlurals implements GraphInventoryObjectPlurals {
        SERVICE_SUBSCRIPTION(AAIObjectType.CUSTOMER.uriTemplate(), "/service-subscriptions"),
        SERVICE_INSTANCE(AAIObjectType.SERVICE_SUBSCRIPTION.uriTemplate(), "/service-instances"),
        OWNING_ENTITIES(AAINamespaceConstants.BUSINESS, "/owning-entities"),
-       VOLUME_GROUP(AAIObjectType.CLOUD_REGION.uriTemplate(), "/volume-groups/");
+       VOLUME_GROUP(AAIObjectType.CLOUD_REGION.uriTemplate(), "/volume-groups/"),
+       AVAILIBILITY_ZONE(AAIObjectType.CLOUD_REGION.uriTemplate(), "/availability-zones/");
 
 
        private final String uriTemplate;
index a5d8f12..4b646f9 100644 (file)
@@ -27,6 +27,7 @@ import org.onap.aai.annotations.Metadata;
 import org.onap.aai.domain.yang.AllottedResource;
 import org.onap.aai.domain.yang.CloudRegion;
 import org.onap.aai.domain.yang.Collection;
+import org.onap.aai.domain.yang.Complex;
 import org.onap.aai.domain.yang.Configuration;
 import org.onap.aai.domain.yang.Customer;
 import org.onap.aai.domain.yang.GenericVnf;
@@ -64,6 +65,7 @@ public enum AAIObjectType implements GraphInventoryObjectType {
        CUSTOMER(AAINamespaceConstants.BUSINESS, Customer.class),
        GENERIC_QUERY("/search", "/generic-query"),
        BULK_PROCESS("/bulkprocess", ""),
+       SINGLE_TRANSACTION("/bulk/single-transaction", ""),
        GENERIC_VNF(AAINamespaceConstants.NETWORK, GenericVnf.class),
        VF_MODULE(AAIObjectType.GENERIC_VNF.uriTemplate(), VfModule.class),
        L3_NETWORK(AAINamespaceConstants.NETWORK, L3Network.class),
@@ -98,6 +100,7 @@ public enum AAIObjectType implements GraphInventoryObjectType {
        COLLECTION(AAINamespaceConstants.NETWORK, Collection.class),
        VNFC(AAINamespaceConstants.NETWORK, Vnfc.class),
        VLAN_TAG(AAINamespaceConstants.NETWORK, VlanTag.class),
+       COMPLEX(AAINamespaceConstants.CLOUD_INFRASTRUCTURE, Complex.class),
        UNKNOWN("", "");
 
        private final String uriTemplate;
diff --git a/common/src/main/java/org/onap/so/client/aai/AAIPatchConverter.java b/common/src/main/java/org/onap/so/client/aai/AAIPatchConverter.java
new file mode 100644 (file)
index 0000000..6ccb592
--- /dev/null
@@ -0,0 +1,81 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import org.onap.so.client.graphinventory.exceptions.GraphInventoryPatchDepthExceededException;
+import org.onap.so.jsonpath.JsonPathUtil;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+public class AAIPatchConverter {
+
+       private static final AAICommonObjectMapperProvider standardProvider = new AAICommonObjectMapperProvider();
+       private static final AAICommonObjectMapperPatchProvider patchProvider = new AAICommonObjectMapperPatchProvider();
+       private static final Pattern LOCATE_COMPLEX_OBJECT = Pattern.compile("^((?!relationship-list).)+?\\['[^\\[\\]]+?'\\]$");
+
+       
+       protected String convertPatchFormat(Object obj) {
+               return validatePatchObject(marshallObjectToPatchFormat(obj));
+       }
+       
+       protected String validatePatchObject(String payload) {
+               if (hasComplexObject(payload)) {
+                       throw new GraphInventoryPatchDepthExceededException(payload);
+               }
+               
+               return payload;
+       }
+       
+       /** validates client side that json does not include any complex objects
+        * relationship-list is omitted from this validation
+        */
+       protected boolean hasComplexObject(String json) {
+               if (json.isEmpty()) {
+                       return false;
+               }
+               String complex = "$.*.*";
+               String array = "$.*.*.*";
+               List<String> result = JsonPathUtil.getInstance().getPathList(json, complex);
+               List<String> result2 = JsonPathUtil.getInstance().getPathList(json, array);
+               
+               result.addAll(result2);
+               return result.stream().anyMatch(item -> LOCATE_COMPLEX_OBJECT.matcher(item).find());
+       }
+       
+       protected String marshallObjectToPatchFormat(Object obj) {
+               Object value = obj;
+               try {
+                       if (!(obj instanceof Map || obj instanceof String)) {
+                               value = patchProvider.getMapper().writeValueAsString(obj);
+                       } else if (obj instanceof Map) {
+                               value = standardProvider.getMapper().writeValueAsString(obj);
+                       }
+               } catch (JsonProcessingException e) {
+                       value = "{}";
+               }
+               
+               return (String)value;
+       }
+}
index 072534d..7e4397e 100644 (file)
@@ -309,6 +309,15 @@ public class AAIResourcesClient extends AAIClient {
                return new AAITransactionalClient(this.getVersion());
        }
        
+       /**
+        * Starts a transaction groups multiple A&AI mutations
+        * 
+        * @return
+        */
+       public AAISingleTransactionClient beginSingleTransaction() {
+               return new AAISingleTransactionClient(this.getVersion());
+       }
+       
        private AAIUri addParams(Optional<Depth> depth, boolean nodesOnly, AAIUri uri) {
                AAIUri clone = uri.clone();
                if (depth.isPresent()) {
index 2bd5f11..ac6e939 100644 (file)
@@ -20,6 +20,8 @@
 
 package org.onap.so.client.aai;
 
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+
 import java.net.URI;
 import java.util.List;
 import java.util.Map;
@@ -41,9 +43,9 @@ public class AAIRestClient extends RestClientSSL {
 
        private final AAIProperties aaiProperties;
        private static final AAICommonObjectMapperProvider standardProvider = new AAICommonObjectMapperProvider();
-       private static final AAICommonObjectMapperPatchProvider patchProvider = new AAICommonObjectMapperPatchProvider();
-       private static final Pattern LOCATE_COMPLEX_OBJECT = Pattern.compile("^((?!relationship-list).)+?\\['[^\\[\\]]+?'\\]$");
 
+       private final AAIPatchConverter patchConverter = new AAIPatchConverter();
+       
        protected AAIRestClient(AAIProperties props, URI uri) {
                super(props, Optional.of(uri));
                this.aaiProperties = props;
@@ -79,53 +81,20 @@ public class AAIRestClient extends RestClientSSL {
 
        @Override
        public Response patch(Object obj) {
-               String value = convertObjectToPatchFormat(obj);
-               validatePatchObject(value);
-               return super.patch(value);
+               return super.patch(convertToPatchFormat(obj));
        }
 
        @Override
        public <T> T patch(Object obj, Class<T> resultClass) {
-               String value = convertObjectToPatchFormat(obj);
-               validatePatchObject(value);
-               return super.patch(value, resultClass);
+               return super.patch(convertToPatchFormat(obj), resultClass);
        }
        
-       protected String convertObjectToPatchFormat(Object obj) {
-               Object value = obj;
-               try {
-                       if (!(obj instanceof Map || obj instanceof String)) {
-                               value = patchProvider.getMapper().writeValueAsString(obj);
-                       } else if (obj instanceof Map) {
-                               value = standardProvider.getMapper().writeValueAsString(obj);
-                       }
-               } catch (JsonProcessingException e) {
-                       value = "{}";
-               }
-               
-               return (String)value;
+       protected AAIPatchConverter getPatchConverter() {
+               return this.patchConverter;
        }
        
-       
-       protected void validatePatchObject(String payload) {
-               if (hasComplexObject(payload)) {
-                       throw new GraphInventoryPatchDepthExceededException(payload);
-               }
-       }
-       
-       /** validates client side that json does not include any complex objects
-        * relationship-list is omitted from this validation
-        */
-       protected boolean hasComplexObject(String json) {
-               if (json.isEmpty()) {
-                       return false;
-               }
-               String complex = "$.*.*";
-               String array = "$.*.*.*";
-               List<String> result = JsonPathUtil.getInstance().getPathList(json, complex);
-               List<String> result2 = JsonPathUtil.getInstance().getPathList(json, array);
-               
-               result.addAll(result2);
-               return result.stream().anyMatch(item -> LOCATE_COMPLEX_OBJECT.matcher(item).find());
+       protected String convertToPatchFormat(Object obj) {
+               return getPatchConverter().convertPatchFormat(obj);
        }
+
 }
diff --git a/common/src/main/java/org/onap/so/client/aai/AAISingleTransactionClient.java b/common/src/main/java/org/onap/so/client/aai/AAISingleTransactionClient.java
new file mode 100644 (file)
index 0000000..2ecdb7c
--- /dev/null
@@ -0,0 +1,267 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+
+import javax.ws.rs.NotFoundException;
+import javax.ws.rs.core.GenericType;
+
+import org.onap.aai.domain.yang.Relationship;
+import org.onap.so.client.RestClient;
+import org.onap.so.client.aai.entities.AAIEdgeLabel;
+import org.onap.so.client.aai.entities.AAIError;
+import org.onap.so.client.aai.entities.bulkprocess.Transactions;
+import org.onap.so.client.aai.entities.singletransaction.OperationBodyRequest;
+import org.onap.so.client.aai.entities.singletransaction.OperationBodyResponse;
+import org.onap.so.client.aai.entities.singletransaction.SingleTransactionRequest;
+import org.onap.so.client.aai.entities.singletransaction.SingleTransactionResponse;
+import org.onap.so.client.aai.entities.uri.AAIResourceUri;
+import org.onap.so.client.aai.entities.uri.AAIUri;
+import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.client.graphinventory.exceptions.BulkProcessFailed;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Joiner;
+
+public class AAISingleTransactionClient extends AAIClient {
+
+       private final SingleTransactionRequest request;
+       private final AAIVersion version;
+       private int actionCount = 0;
+       
+       private final AAIPatchConverter patchConverter = new AAIPatchConverter();
+       
+       protected AAISingleTransactionClient(AAIVersion version) {
+               super();
+               this.version = version;
+               this.request = new SingleTransactionRequest();
+       }
+
+       /**
+        * creates a new object in A&AI
+        * 
+        * @param obj - can be any object which will marshal into a valid A&AI payload
+        * @param uri
+        * @return
+        */
+       public AAISingleTransactionClient create(AAIResourceUri uri, Object obj) {
+               request.getOperations().add(new OperationBodyRequest().withAction("put").withUri(uri.build().toString()).withBody(obj));
+               incrementActionAmount();
+               return this;
+       }
+
+       /**
+        * creates a new object in A&AI with no payload body
+        * 
+        * @param uri
+        * @return
+        */
+       public AAISingleTransactionClient createEmpty(AAIResourceUri uri) {
+               request.getOperations().add(new OperationBodyRequest().withAction("put").withUri(uri.build().toString()).withBody(new HashMap<String, String>()));
+               incrementActionAmount();
+               return this;
+       }
+
+       /**
+        * Adds a relationship between two objects in A&AI 
+        * @param uriA
+        * @param uriB
+        * @return
+        */
+       public AAISingleTransactionClient connect(AAIResourceUri uriA, AAIResourceUri uriB) {
+               AAIResourceUri uriAClone = uriA.clone();
+               request.getOperations().add(new OperationBodyRequest().withAction("put").withUri(uriAClone.relationshipAPI().build().toString()).withBody(this.buildRelationship(uriB)));
+               incrementActionAmount();
+               return this;
+       }
+
+       /**
+        * relationship between multiple objects in A&AI - connects A to all objects specified in list
+        * 
+        * @param uriA
+        * @param uris
+        * @return
+        */
+       public AAISingleTransactionClient connect(AAIResourceUri uriA, List<AAIResourceUri> uris) {
+               for (AAIResourceUri uri : uris) {
+                       this.connect(uriA, uri);
+               }
+               return this;
+       }
+       
+       public AAISingleTransactionClient connect(AAIResourceUri uriA, AAIResourceUri uriB, AAIEdgeLabel label) {
+               AAIResourceUri uriAClone = uriA.clone();
+               RestClient aaiRC = this.createClient(uriAClone.relationshipAPI());
+               aaiRC.put(this.buildRelationship(uriB, label));
+               return this;
+       }
+       
+       public AAISingleTransactionClient connect(AAIResourceUri uriA, List<AAIResourceUri> uris, AAIEdgeLabel label) {
+               for (AAIResourceUri uri : uris) {
+                       this.connect(uriA, uri, label);
+               }
+               return this;
+       }
+
+       /**
+        * Removes relationship from two objects in A&AI
+        * 
+        * @param uriA
+        * @param uriB
+        * @return
+        */
+       public AAISingleTransactionClient disconnect(AAIResourceUri uriA, AAIResourceUri uriB) {
+               AAIResourceUri uriAClone = uriA.clone();
+               request.getOperations().add(new OperationBodyRequest().withAction("delete").withUri(uriAClone.relationshipAPI().build().toString()).withBody(this.buildRelationship(uriB)));
+               incrementActionAmount();
+               return this;
+       }
+
+       /**
+        * Removes relationship from multiple objects - disconnects A from all objects specified in list
+        * @param uriA
+        * @param uris
+        * @return
+        */
+       public AAISingleTransactionClient disconnect(AAIResourceUri uriA, List<AAIResourceUri> uris) {
+               for (AAIResourceUri uri : uris) {
+                       this.disconnect(uriA, uri);
+               }
+               return this;
+       }
+       /**
+        * Deletes object from A&AI. Automatically handles resource-version.
+        * 
+        * @param uri
+        * @return
+        */
+       public AAISingleTransactionClient delete(AAIResourceUri uri) {
+               AAIResourcesClient client = new AAIResourcesClient();
+               AAIResourceUri clone = uri.clone();
+               Map<String, Object> result = client.get(new GenericType<Map<String, Object>>(){}, clone)
+                               .orElseThrow(() -> new NotFoundException(clone.build() + " does not exist in A&AI"));
+               String resourceVersion = (String) result.get("resource-version");
+               request.getOperations().add(new OperationBodyRequest().withAction("delete").withUri(clone.resourceVersion(resourceVersion).build().toString()).withBody(""));
+               incrementActionAmount();
+               return this;
+       }
+
+       /**
+        * @param obj - can be any object which will marshal into a valid A&AI payload
+        * @param uri
+        * @return
+        */
+       public AAISingleTransactionClient update(AAIResourceUri uri, Object obj) {
+               
+               final String payload = getPatchConverter().convertPatchFormat(obj);
+               request.getOperations().add(new OperationBodyRequest().withAction("patch").withUri(uri.build().toString()).withBody(payload));
+               incrementActionAmount();
+               return this;
+       }
+
+       private void incrementActionAmount() {
+               actionCount++;
+       }
+       /**
+        * Executes all created transactions in A&AI
+        * @throws BulkProcessFailed 
+        */
+       public void execute() throws BulkProcessFailed {
+               RestClient client = this.createClient(AAIUriFactory.createResourceUri(AAIObjectType.SINGLE_TRANSACTION));
+               try {
+                       SingleTransactionResponse response = client.post(this.request, SingleTransactionResponse.class);
+                       if (response != null) {
+                               final Optional<String> errorMessage = this.locateErrorMessages(response);
+                               if (errorMessage.isPresent()) {
+                                       throw new BulkProcessFailed("One or more transactions failed in A&AI. Check logs for payloads.\nMessages:\n" + errorMessage.get());
+                               }
+                       } else {
+                               throw new BulkProcessFailed("Transactions acccepted by A&AI, but there was no response. Unsure of result.");
+                       }
+               } finally {
+                       this.request.getOperations().clear();
+                       this.actionCount = 0;
+               }
+       }
+
+       protected Optional<String> locateErrorMessages(SingleTransactionResponse response) {
+               final List<String> errorMessages = new ArrayList<>();
+               final ObjectMapper mapper = new ObjectMapper();
+               
+               for (OperationBodyResponse body : response.getOperationResponses()) {
+                       if (Optional.ofNullable(body.getResponseStatusCode()).orElse(400) > 300) {
+                               AAIError error;
+                               try {
+                                       error = mapper.readValue(mapper.writeValueAsString(body.getResponseBody()), AAIError.class);
+                               } catch (IOException e) {
+                                       logger.error("could not parse error object from A&AI", e);
+                                       error = new AAIError();
+                               }
+                               AAIErrorFormatter formatter = new AAIErrorFormatter(error);
+                               String outputMessage = formatter.getMessage();
+                               errorMessages.add(outputMessage);
+                       }
+               }
+               
+               if (!errorMessages.isEmpty()) {
+                       return Optional.of(Joiner.on("\n").join(errorMessages));
+               } else {
+                       return Optional.empty();
+               }
+       }
+       
+       private Relationship buildRelationship(AAIResourceUri uri) {
+               return buildRelationship(uri, Optional.empty());
+       }
+       
+       private Relationship buildRelationship(AAIResourceUri uri, AAIEdgeLabel label) {
+               return buildRelationship(uri, Optional.of(label));
+       }
+       private Relationship buildRelationship(AAIResourceUri uri, Optional<AAIEdgeLabel> label) {
+               final Relationship result = new Relationship();
+               result.setRelatedLink(uri.build().toString());
+               if (label.isPresent()) {
+                       result.setRelationshipLabel(label.toString());
+               }
+               return result;
+       }
+
+       @Override
+       protected AAIVersion getVersion() {
+               return this.version;
+       }
+       
+       protected SingleTransactionRequest getRequest() {
+               return this.request;
+       }
+       
+       protected AAIPatchConverter getPatchConverter() {
+               return this.patchConverter;
+       }
+}
index 884d2aa..118a3ed 100644 (file)
@@ -20,6 +20,8 @@
 
 package org.onap.so.client.aai;
 
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -34,6 +36,7 @@ import javax.ws.rs.core.Response;
 
 import org.onap.aai.domain.yang.Relationship;
 import org.onap.so.client.RestClient;
+import org.onap.so.client.aai.entities.AAIEdgeLabel;
 import org.onap.so.client.aai.entities.AAIError;
 import org.onap.so.client.aai.entities.bulkprocess.OperationBody;
 import org.onap.so.client.aai.entities.bulkprocess.Transaction;
@@ -54,6 +57,9 @@ public class AAITransactionalClient extends AAIClient {
        private Transaction currentTransaction;
        private final AAIVersion version;
        private int actionCount = 0;
+       
+       private final AAIPatchConverter patchConverter = new AAIPatchConverter();
+       
        protected AAITransactionalClient(AAIVersion version) {
                super();
                this.version = version;
@@ -129,6 +135,20 @@ public class AAITransactionalClient extends AAIClient {
                return this;
        }
        
+       public AAITransactionalClient connect(AAIResourceUri uriA, AAIResourceUri uriB, AAIEdgeLabel label) {
+               AAIResourceUri uriAClone = uriA.clone();
+               RestClient aaiRC = this.createClient(uriAClone.relationshipAPI());
+               aaiRC.put(this.buildRelationship(uriB, label));
+               return this;
+       }
+       
+       public AAITransactionalClient connect(AAIResourceUri uriA, List<AAIResourceUri> uris, AAIEdgeLabel label) {
+               for (AAIResourceUri uri : uris) {
+                       this.connect(uriA, uri, label);
+               }
+               return this;
+       }
+       
        /**
         * Removes relationship from two objects in A&AI
         * 
@@ -178,7 +198,8 @@ public class AAITransactionalClient extends AAIClient {
         * @return
         */
        public AAITransactionalClient update(AAIResourceUri uri, Object obj) {
-               currentTransaction.getPatch().add(new OperationBody().withUri(uri.build().toString()).withBody(obj));
+               final String payload = getPatchConverter().convertPatchFormat(obj);
+               currentTransaction.getPatch().add(new OperationBody().withUri(uri.build().toString()).withBody(payload));
                incrementActionAmount();
                return this;
        }
@@ -247,9 +268,19 @@ public class AAITransactionalClient extends AAIClient {
                        return Optional.empty();
                }
        }
-       private Relationship buildRelationship(AAIUri uri) {
+       private Relationship buildRelationship(AAIResourceUri uri) {
+               return buildRelationship(uri, Optional.empty());
+       }
+       
+       private Relationship buildRelationship(AAIResourceUri uri, AAIEdgeLabel label) {
+               return buildRelationship(uri, Optional.of(label));
+       }
+       private Relationship buildRelationship(AAIResourceUri uri, Optional<AAIEdgeLabel> label) {
                final Relationship result = new Relationship();
                result.setRelatedLink(uri.build().toString());
+               if (label.isPresent()) {
+                       result.setRelationshipLabel(label.toString());
+               }
                return result;
        }
 
@@ -261,4 +292,8 @@ public class AAITransactionalClient extends AAIClient {
        protected Transactions getTransactions() {
                return this.transactions;
        }
+       
+       protected AAIPatchConverter getPatchConverter() {
+               return this.patchConverter;
+       }
 }
index 1803440..4b2aac1 100644 (file)
@@ -23,6 +23,8 @@ package org.onap.so.client.aai.entities.bulkprocess;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonRawValue;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
 @JsonPropertyOrder({
@@ -34,6 +36,7 @@ public class OperationBody {
 @JsonProperty("uri")
 private String uri;
 @JsonProperty("body")
+@JsonSerialize(using = OperationBodySerializer.class)
 private Object body;
 
 @JsonProperty("uri")
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/bulkprocess/OperationBodySerializer.java b/common/src/main/java/org/onap/so/client/aai/entities/bulkprocess/OperationBodySerializer.java
new file mode 100644 (file)
index 0000000..2981e0d
--- /dev/null
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai.entities.bulkprocess;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+
+public class OperationBodySerializer extends StdSerializer<Object> {
+
+       private static final long serialVersionUID = 5367385969270400106L;
+
+       public OperationBodySerializer() {
+               this(null);
+       }
+       public OperationBodySerializer(Class<Object> t) {
+               super(t);
+       }
+
+       @Override
+       public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers)
+                       throws IOException, JsonProcessingException {
+               
+               if (value instanceof String) {
+                       gen.writeRawValue((String)value);
+               } else {
+                       gen.writeObject(value);
+               }
+               
+       }
+
+}
+
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyRequest.java b/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyRequest.java
new file mode 100644 (file)
index 0000000..f2626e9
--- /dev/null
@@ -0,0 +1,88 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai.entities.singletransaction;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonRawValue;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+"action",
+"uri",
+"body"
+})
+public class OperationBodyRequest {
+
+@JsonProperty("action")
+private String action;
+@JsonProperty("uri")
+private String uri;
+@JsonProperty("body")
+@JsonSerialize(using = OperationBodyRequestSerializer.class)
+private Object body;
+
+
+public String getAction() {
+       return action;
+}
+
+public void setAction(String action) {
+       this.action = action;
+}
+
+public OperationBodyRequest withAction(String action) {
+       this.action = action;
+       return this;
+}
+@JsonProperty("uri")
+public String getUri() {
+return uri;
+}
+
+@JsonProperty("uri")
+public void setUri(String uri) {
+this.uri = uri;
+}
+
+public OperationBodyRequest withUri(String uri) {
+this.uri = uri;
+return this;
+}
+
+@JsonProperty("body")
+public Object getBody() {
+return body;
+}
+
+@JsonProperty("body")
+public void setBody(Object body) {
+this.body = body;
+}
+
+public OperationBodyRequest withBody(Object body) {
+this.body = body;
+return this;
+}
+
+}
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyRequestSerializer.java b/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyRequestSerializer.java
new file mode 100644 (file)
index 0000000..1707199
--- /dev/null
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai.entities.singletransaction;
+
+import java.io.IOException;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+
+public class OperationBodyRequestSerializer extends StdSerializer<Object> {
+
+       private static final long serialVersionUID = 5367385969270400106L;
+
+       public OperationBodyRequestSerializer() {
+               this(null);
+       }
+       public OperationBodyRequestSerializer(Class<Object> t) {
+               super(t);
+       }
+
+       @Override
+       public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers)
+                       throws IOException, JsonProcessingException {
+               
+               if (value instanceof String) {
+                       gen.writeRawValue((String)value);
+               } else {
+                       gen.writeObject(value);
+               }
+               
+       }
+
+}
+
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyResponse.java b/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/OperationBodyResponse.java
new file mode 100644 (file)
index 0000000..71f65b5
--- /dev/null
@@ -0,0 +1,71 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai.entities.singletransaction;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonPropertyOrder({
+"action",
+"uri",
+"response-status-code",
+"response-body"
+})
+public class OperationBodyResponse {
+
+       @JsonProperty("action")
+       public String action;
+       @JsonProperty("uri")
+       public String uri;
+       @JsonProperty("response-status-code")
+       public Integer responseStatusCode;
+       @JsonProperty("response-body")
+       public Object responseBody;
+       
+       public String getAction() {
+               return action;
+       }
+       public void setAction(String action) {
+               this.action = action;
+       }
+       public String getUri() {
+               return uri;
+       }
+       public void setUri(String uri) {
+               this.uri = uri;
+       }
+       @JsonProperty("response-status-code")
+       public Integer getResponseStatusCode() {
+               return responseStatusCode;
+       }
+       @JsonProperty("response-status-code")
+       public void setResponseStatusCode(Integer responseStatusCode) {
+               this.responseStatusCode = responseStatusCode;
+       }
+       @JsonProperty("response-body")
+       public Object getResponseBody() {
+               return responseBody;
+       }
+       @JsonProperty("response-body")
+       public void getResponseBody(Object responseBody) {
+               this.responseBody = responseBody;
+       }
+}
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/SingleTransactionRequest.java b/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/SingleTransactionRequest.java
new file mode 100644 (file)
index 0000000..0d392c4
--- /dev/null
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai.entities.singletransaction;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class SingleTransactionRequest {
+
+       @JsonProperty("operations")
+       public List<OperationBodyRequest> operations;
+       
+       public List<OperationBodyRequest> getOperations() {
+               
+               if (operations == null) {
+                       operations = new ArrayList<>();
+               }
+               
+               return operations;
+       }
+       
+       public void setOperations(List<OperationBodyRequest> operations) {
+               this.operations = operations;
+       }
+}
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/SingleTransactionResponse.java b/common/src/main/java/org/onap/so/client/aai/entities/singletransaction/SingleTransactionResponse.java
new file mode 100644 (file)
index 0000000..db251b5
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai.entities.singletransaction;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class SingleTransactionResponse {
+
+       @JsonProperty("operation-responses")
+       public List<OperationBodyResponse> operationResponses;
+
+       @JsonProperty("operation-responses")
+       public List<OperationBodyResponse> getOperationResponses() {
+               if (operationResponses == null) {
+                       operationResponses = new ArrayList<>();
+               }
+               return operationResponses;
+       }
+
+       @JsonProperty("operation-responses")
+       public void setOperationResponses(List<OperationBodyResponse> operationResponses) {
+               this.operationResponses = operationResponses;
+       }
+       
+       
+}
diff --git a/common/src/test/java/org/onap/so/client/aai/AAIPatchConverterTest.java b/common/src/test/java/org/onap/so/client/aai/AAIPatchConverterTest.java
new file mode 100644 (file)
index 0000000..008b612
--- /dev/null
@@ -0,0 +1,102 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.HashMap;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.aai.domain.yang.GenericVnf;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+
+@RunWith(MockitoJUnitRunner.class)
+public class AAIPatchConverterTest {
+
+       private ObjectMapper mapper = new AAICommonObjectMapperProvider().getMapper();
+
+       @Test
+       public void convertObjectToPatchFormatTest() throws URISyntaxException, JsonParseException, JsonMappingException, IOException {
+               AAIPatchConverter validator = new AAIPatchConverter();
+               GenericVnf vnf = new GenericVnf();
+               vnf.setIpv4Loopback0Address("");
+               String result = validator.marshallObjectToPatchFormat(vnf);
+               GenericVnf resultObj = mapper.readValue(result.toString(), GenericVnf.class);
+               assertTrue("expect object to become a String to prevent double marshalling", result instanceof String);
+               assertNull("expect null because of custom mapper", resultObj.getIpv4Loopback0Address());
+               
+       }
+       
+       @Test
+       public void convertStringToPatchFormatTest() throws URISyntaxException, JsonParseException, JsonMappingException, IOException {
+               AAIPatchConverter validator = new AAIPatchConverter();
+               String payload = "{\"ipv4-loopback0-address\":\"\"}";
+               String result = validator.marshallObjectToPatchFormat(payload);
+               
+               assertEquals("expect no change", payload, result);
+       }
+       
+       @Test
+       public void convertMapToPatchFormatTest() throws URISyntaxException, JsonParseException, JsonMappingException, IOException {
+               AAIPatchConverter validator = new AAIPatchConverter();
+               HashMap<String, String> map = new HashMap<>();
+               map.put("ipv4-loopback0-address", "");
+               String result = validator.marshallObjectToPatchFormat(map);
+               
+               assertEquals("expect string", "{\"ipv4-loopback0-address\":\"\"}", result);
+       }
+       
+       @Test
+       public void hasComplexObjectTest() {
+               AAIPatchConverter validator = new AAIPatchConverter();
+               String hasNesting = "{ \"hello\" : \"world\", \"nested\" : { \"key\" : \"value\" } }";
+               String noNesting = "{ \"hello\" : \"world\" }";
+               String arrayCase = "{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"], \"nestedComplex\" : [{\"key\" : \"value\"}]}";
+               String empty = "{}";
+               String arrayCaseSimpleOnly = "{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"]}";
+               String relationshipListCaseNesting = "{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"], \"relationship-list\" : [{\"key\" : \"value\"}], \"nested\" : { \"key\" : \"value\" }}";
+               String relationshipListCase = "{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"], \"relationship-list\" : [{\"key\" : \"value\"}]}";
+               String nothing = "";
+               
+               assertTrue("expect has nesting", validator.hasComplexObject(hasNesting));
+               assertFalse("expect no nesting", validator.hasComplexObject(noNesting));
+               assertTrue("expect has nesting", validator.hasComplexObject(arrayCase));
+               assertFalse("expect no nesting", validator.hasComplexObject(empty));
+               assertFalse("expect no nesting", validator.hasComplexObject(arrayCaseSimpleOnly));
+               assertFalse("expect no nesting", validator.hasComplexObject(relationshipListCase));
+               assertTrue("expect has nesting", validator.hasComplexObject(relationshipListCaseNesting));
+               assertFalse("expect no nesting", validator.hasComplexObject(nothing));
+       }
+       
+}
index f2e371c..752c49e 100644 (file)
 package org.onap.so.client.aai;
 
 import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 
-import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.HashMap;
 
 import javax.ws.rs.core.Response;
 
@@ -42,11 +40,9 @@ import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.aai.domain.yang.GenericVnf;
+import org.onap.so.client.RestClientSSL;
 import org.onap.so.client.graphinventory.exceptions.GraphInventoryPatchDepthExceededException;
 
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -60,65 +56,23 @@ public class AAIRestClientTest {
        @Rule
        public ExpectedException thrown = ExpectedException.none();
        
-       @Test
-       public void convertObjectToPatchFormatTest() throws URISyntaxException, JsonParseException, JsonMappingException, IOException {
-               AAIRestClient client = new AAIRestClient(props, new URI(""));
-               GenericVnf vnf = new GenericVnf();
-               vnf.setIpv4Loopback0Address("");
-               String result = client.convertObjectToPatchFormat(vnf);
-               GenericVnf resultObj = mapper.readValue(result.toString(), GenericVnf.class);
-               assertTrue("expect object to become a String to prevent double marshalling", result instanceof String);
-               assertNull("expect null because of custom mapper", resultObj.getIpv4Loopback0Address());
-               
-       }
-       
-       @Test
-       public void convertStringToPatchFormatTest() throws URISyntaxException, JsonParseException, JsonMappingException, IOException {
-               AAIRestClient client = new AAIRestClient(props, new URI(""));
-               String payload = "{\"ipv4-loopback0-address\":\"\"}";
-               String result = client.convertObjectToPatchFormat(payload);
-               
-               assertEquals("expect no change", payload, result);
-       }
-       
-       @Test
-       public void convertMapToPatchFormatTest() throws URISyntaxException, JsonParseException, JsonMappingException, IOException {
-               AAIRestClient client = new AAIRestClient(props, new URI(""));
-               HashMap<String, String> map = new HashMap<>();
-               map.put("ipv4-loopback0-address", "");
-               String result = client.convertObjectToPatchFormat(map);
-               
-               assertEquals("expect string", "{\"ipv4-loopback0-address\":\"\"}", result);
-       }
-       
        @Test
        public void failPatchOnComplexObject() throws URISyntaxException {
                AAIRestClient client = new AAIRestClient(props, new URI(""));
                this.thrown.expect(GraphInventoryPatchDepthExceededException.class); 
                this.thrown.expectMessage(containsString("Object exceeds allowed depth for update action"));
                client.patch("{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"], \"relationship-list\" : [{\"key\" : \"value\"}], \"nested\" : { \"key\" : \"value\" }}");
-
        }
        
        @Test
-       public void hasComplexObjectTest() throws URISyntaxException {
+       public void verifyPatchValidation() throws URISyntaxException {
                AAIRestClient client = new AAIRestClient(props, new URI(""));
-               String hasNesting = "{ \"hello\" : \"world\", \"nested\" : { \"key\" : \"value\" } }";
-               String noNesting = "{ \"hello\" : \"world\" }";
-               String arrayCase = "{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"], \"nestedComplex\" : [{\"key\" : \"value\"}]}";
-               String empty = "{}";
-               String arrayCaseSimpleOnly = "{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"]}";
-               String relationshipListCaseNesting = "{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"], \"relationship-list\" : [{\"key\" : \"value\"}], \"nested\" : { \"key\" : \"value\" }}";
-               String relationshipListCase = "{ \"hello\" : \"world\", \"nestedSimple\" : [\"value1\" , \"value2\"], \"relationship-list\" : [{\"key\" : \"value\"}]}";
-               String nothing = "";
-               
-               assertTrue("expect has nesting", client.hasComplexObject(hasNesting));
-               assertFalse("expect no nesting", client.hasComplexObject(noNesting));
-               assertTrue("expect has nesting", client.hasComplexObject(arrayCase));
-               assertFalse("expect no nesting", client.hasComplexObject(empty));
-               assertFalse("expect no nesting", client.hasComplexObject(arrayCaseSimpleOnly));
-               assertFalse("expect no nesting", client.hasComplexObject(relationshipListCase));
-               assertTrue("expect has nesting", client.hasComplexObject(relationshipListCaseNesting));
-               assertFalse("expect no nesting", client.hasComplexObject(nothing));
+               AAIRestClient spy = spy(client);
+               AAIPatchConverter patchValidatorMock = mock(AAIPatchConverter.class);
+               doReturn(patchValidatorMock).when(spy).getPatchConverter();
+               String payload = "{}";
+               doReturn(Response.ok().build()).when(spy).method(eq("PATCH"), any());
+               spy.patch(payload);
+               verify(patchValidatorMock, times(1)).convertPatchFormat(eq((Object)payload));
        }
 }
diff --git a/common/src/test/java/org/onap/so/client/aai/AAISingleTransactionClientTest.java b/common/src/test/java/org/onap/so/client/aai/AAISingleTransactionClientTest.java
new file mode 100644 (file)
index 0000000..8c42686
--- /dev/null
@@ -0,0 +1,133 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.client.aai;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Optional;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.aai.domain.yang.Pserver;
+import org.onap.aai.domain.yang.v9.Complex;
+import org.onap.so.client.aai.entities.singletransaction.SingleTransactionRequest;
+import org.onap.so.client.aai.entities.singletransaction.SingleTransactionResponse;
+import org.onap.so.client.aai.entities.uri.AAIResourceUri;
+import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.client.defaultproperties.DefaultAAIPropertiesImpl;
+import org.skyscreamer.jsonassert.JSONAssert;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+
+public class AAISingleTransactionClientTest {
+
+       private final static String AAI_JSON_FILE_LOCATION = "src/test/resources/__files/aai/singletransaction/";
+       AAIResourceUri uriA = AAIUriFactory.createResourceUri(AAIObjectType.PSERVER, "pserver-hostname");
+       AAIResourceUri uriB = AAIUriFactory.createResourceUri(AAIObjectType.COMPLEX, "my-complex");
+       
+       ObjectMapper mapper;
+       
+       @Before
+       public void before() throws JsonParseException, JsonMappingException, IOException {
+               mapper = new AAICommonObjectMapperProvider().getMapper();
+               mapper.enable(SerializationFeature.INDENT_OUTPUT);
+       }
+       
+       @Test
+       public void testRequest() throws IOException {
+               AAIResourcesClient client = createClient();
+               Pserver pserver = new Pserver();
+               pserver.setHostname("pserver-hostname");
+               pserver.setFqdn("pserver-bulk-process-single-transactions-multiple-actions-1-fqdn");
+               Pserver pserver2 = new Pserver();
+               pserver2.setFqdn("patched-fqdn");
+               Complex complex = new Complex();
+               complex.setCity("my-city");
+               AAISingleTransactionClient singleTransaction = 
+               client.beginSingleTransaction()
+                       .create(uriA, pserver)
+                       .update(uriA, pserver2)
+                       .create(uriB, complex);
+               
+               
+               SingleTransactionRequest actual = singleTransaction.getRequest();
+               
+               SingleTransactionRequest expected = mapper.readValue(this.getJson("sample-request.json"), SingleTransactionRequest.class);
+               
+               JSONAssert.assertEquals(mapper.writeValueAsString(expected),mapper.writeValueAsString(actual), false);
+       }
+       
+       @Test
+       public void testFailure() throws IOException {
+               AAIResourcesClient client = createClient();
+               AAISingleTransactionClient singleTransaction = client.beginSingleTransaction();
+               SingleTransactionResponse expected = mapper.readValue(this.getJson("sample-response-failure.json"), SingleTransactionResponse.class);
+               Optional<String> errorMessage = singleTransaction.locateErrorMessages(expected);
+               
+               assertThat(expected.getOperationResponses().size(), greaterThan(0));
+               assertThat(errorMessage.isPresent(), equalTo(true));
+               
+       }
+       
+       @Test
+       public void testSuccessResponse() throws IOException {
+               AAIResourcesClient client = createClient();
+               AAISingleTransactionClient singleTransaction = client.beginSingleTransaction();
+               SingleTransactionResponse expected = mapper.readValue(this.getJson("sample-response.json"), SingleTransactionResponse.class);
+               Optional<String> errorMessage = singleTransaction.locateErrorMessages(expected);
+               
+               assertThat(expected.getOperationResponses().size(), greaterThan(0));
+               assertThat(errorMessage.isPresent(), equalTo(false));
+               
+       }
+       
+       @Test
+       public void confirmPatchFormat() {
+               AAISingleTransactionClient singleTransaction = spy(new AAISingleTransactionClient(AAIVersion.LATEST));
+               AAIPatchConverter mock = mock(AAIPatchConverter.class);
+               doReturn(mock).when(singleTransaction).getPatchConverter();
+               singleTransaction.update(uriA, "{}");
+               verify(mock, times(1)).convertPatchFormat(any());
+       }
+       private String getJson(String filename) throws IOException {
+                return new String(Files.readAllBytes(Paths.get(AAI_JSON_FILE_LOCATION + filename)));
+       }
+       
+       private AAIResourcesClient createClient() {
+               AAIResourcesClient client = spy(new AAIResourcesClient());
+               doReturn(new DefaultAAIPropertiesImpl()).when(client).getRestProperties();
+               return client;
+       }
+}
index f6ee826..cbf8d67 100644 (file)
 package org.onap.so.client.aai;
 
 import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -136,6 +140,15 @@ public class AAITransactionalClientTest {
                assertEquals(transactions.locateErrorMessages(getJson("response-failure.json")).get(), "another error message\nmy great error");
        }
        
+       @Test
+       public void confirmPatchFormat() {
+               AAITransactionalClient client = spy(new AAITransactionalClient(AAIVersion.LATEST));
+               AAIPatchConverter mock = mock(AAIPatchConverter.class);
+               doReturn(mock).when(client).getPatchConverter();
+               client.update(uriA, "{}");
+               verify(mock, times(1)).convertPatchFormat(any());
+       }
+       
        private String getJson(String filename) throws IOException {
                 return new String(Files.readAllBytes(Paths.get(AAI_JSON_FILE_LOCATION + filename)));
        }
diff --git a/common/src/test/resources/__files/aai/singletransaction/sample-request.json b/common/src/test/resources/__files/aai/singletransaction/sample-request.json
new file mode 100644 (file)
index 0000000..f0761a0
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "operations": [
+    {
+      "action": "put",
+      "uri": "/cloud-infrastructure/pservers/pserver/pserver-hostname",
+      "body": {
+        "hostname": "pserver-hostname",
+        "fqdn": "pserver-bulk-process-single-transactions-multiple-actions-1-fqdn"
+      }
+    },
+    {
+      "action": "patch",
+      "uri": "/cloud-infrastructure/pservers/pserver/pserver-hostname",
+      "body": {
+        "fqdn": "patched-fqdn"
+      }
+    },
+    {
+      "action": "put",
+      "uri": "/cloud-infrastructure/complexes/complex/my-complex",
+      "body": {
+        "city": "my-city"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/common/src/test/resources/__files/aai/singletransaction/sample-response-failure.json b/common/src/test/resources/__files/aai/singletransaction/sample-response-failure.json
new file mode 100644 (file)
index 0000000..d0b0e39
--- /dev/null
@@ -0,0 +1,30 @@
+{
+       "operation-responses": [
+               {
+                       "action": "put",
+                       "uri": "/cloud-infrastructure/pservers/pserver/pserver-hostname",
+                       "response-status-code": 201,
+                       "response-body": null
+               },
+               {
+                       "action": "patch",
+                       "uri": "/cloud-infrastructure/pservers/pserver/pserver-hostname",
+                       "response-status-code": 200,
+                       "response-body": null
+               },
+               {
+                       "action": "put",
+                       "uri": "/cloud-infrastructure/complexes/complex/my-complex",
+                       "response-status-code": 400,
+                       "response-body": {
+                               "requestError": {
+                                       "serviceException": {
+                                               "messageId": "SVC3003",
+                                               "text": "another error message",
+                                               "variables": []
+                                       }
+                               }
+                       }
+               }
+       ]
+}
\ No newline at end of file
diff --git a/common/src/test/resources/__files/aai/singletransaction/sample-response.json b/common/src/test/resources/__files/aai/singletransaction/sample-response.json
new file mode 100644 (file)
index 0000000..a5b322e
--- /dev/null
@@ -0,0 +1,22 @@
+{
+  "operation-responses": [
+    {
+      "action": "put",
+      "uri": "/cloud-infrastructure/pservers/pserver/pserver-hostname",
+      "response-status-code": 201,
+      "response-body": null
+    },
+    {
+      "action": "patch",
+      "uri": "/cloud-infrastructure/pservers/pserver/pserver-hostname",
+      "response-status-code": 200,
+      "response-body": null
+    },
+    {
+      "action": "put",
+      "uri": "/cloud-infrastructure/complexes/complex/my-complex",
+      "response-status-code": 201,
+      "response-body": null
+    }
+  ]
+}
\ No newline at end of file
index 78e8a44..156ce80 100644 (file)
                        <artifactId>spring-boot-starter-test</artifactId>
                        <scope>test</scope>
                </dependency>
-               <dependency>
-                       <groupId>commons-beanutils</groupId>
-                       <artifactId>commons-beanutils</artifactId>
-               </dependency>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-configuration-processor</artifactId>
index 8dba63b..3a35c23 100644 (file)
@@ -43,5 +43,6 @@ public enum Action {
        compareModel,
        scaleInstance,
        deactivateAndCloudDelete,
-       scaleOut
+       scaleOut,
+       recreateInstance
 }
index 0e581cb..7c49eea 100644 (file)
 
 package org.onap.so.apihandlerinfra.exceptions;
 
+import java.io.StringWriter;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.ext.ExceptionMapper;
 import javax.ws.rs.ext.Provider;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
 
 import org.onap.so.apihandlerinfra.logging.AlarmLoggerInfo;
 import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo;
@@ -34,7 +44,6 @@ import org.onap.so.logger.MsoLogger;
 import org.onap.so.serviceinstancebeans.RequestError;
 import org.onap.so.serviceinstancebeans.ServiceException;
 
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -45,6 +54,22 @@ public class ApiExceptionMapper implements ExceptionMapper<ApiException> {
 
     private static MsoLogger logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA, ApiExceptionMapper.class);
     private static MsoAlarmLogger alarmLogger = new MsoAlarmLogger();
+    
+    private final JAXBContext context;
+    private final Marshaller marshaller;
+
+    @Context
+    private HttpHeaders headers;
+
+    public ApiExceptionMapper() {
+       try {
+                       context = JAXBContext.newInstance(RequestError.class);
+               marshaller = context.createMarshaller();
+               } catch (JAXBException e) {
+                       logger.debug("could not create JAXB marshaller");
+                       throw new IllegalStateException(e);
+               }
+    }
     @Override
     public Response toResponse(ApiException exception) {
 
@@ -64,12 +89,23 @@ public class ApiExceptionMapper implements ExceptionMapper<ApiException> {
         }
 
         writeErrorLog(exception, errorText, errorLoggerInfo, alarmLoggerInfo);
+        
+        List<MediaType> typeList = Optional.ofNullable(headers.getAcceptableMediaTypes()).orElse(new ArrayList<>());
+        List<String> typeListString = typeList.stream().map(item -> item.toString()).collect(Collectors.toList());
+        MediaType type;
+        if (typeListString.stream().anyMatch(item -> item.contains(MediaType.APPLICATION_XML))) {
+               type = MediaType.APPLICATION_XML_TYPE;
+        } else if (typeListString.stream().anyMatch(item -> typeListString.contains(MediaType.APPLICATION_JSON))) {
+               type = MediaType.APPLICATION_JSON_TYPE;
+        } else {
+               type = MediaType.APPLICATION_JSON_TYPE;
+        }
 
-        return buildServiceErrorResponse(errorText,messageId,variables);
+        return buildServiceErrorResponse(errorText,messageId,variables, type);
 
     }
 
-    protected String buildServiceErrorResponse(String errorText, String messageId, List<String> variables){
+    protected String buildServiceErrorResponse(String errorText, String messageId, List<String> variables, MediaType type){
         RequestError re = new RequestError();
         ServiceException se = new ServiceException();
         se.setMessageId(messageId);
@@ -83,11 +119,18 @@ public class ApiExceptionMapper implements ExceptionMapper<ApiException> {
         String requestErrorStr;
 
         ObjectMapper mapper = createObjectMapper();
+       
         mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
         mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT);
         try {
-            requestErrorStr = mapper.writeValueAsString(re);
-        } catch (JsonProcessingException e) {
+               if (MediaType.APPLICATION_JSON_TYPE.equals(type)) {
+                       requestErrorStr = mapper.writeValueAsString(re);
+            } else {
+               StringWriter sw = new StringWriter();
+               this.getMarshaller().marshal(re, sw);
+               requestErrorStr = sw.toString();
+            }
+        } catch (JsonProcessingException | JAXBException e) {
             String errorMsg = "Exception in buildServiceErrorResponse writing exceptionType to string " + e.getMessage();
             logger.error(MessageEnum.GENERAL_EXCEPTION, "BuildServiceErrorResponse", "", "", MsoLogger.ErrorCode.DataError, errorMsg, e);
             return errorMsg;
@@ -109,4 +152,9 @@ public class ApiExceptionMapper implements ExceptionMapper<ApiException> {
     public ObjectMapper createObjectMapper(){
         return new ObjectMapper();
     }
+    
+    public Marshaller getMarshaller() {
+       return marshaller;
+    }
+    
 }
index d705276..7a4b587 100644 (file)
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (C) 2018 IBM.
+ * ================================================================================
  * 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
@@ -22,6 +24,7 @@ package org.onap.so.apihandler.common;
 
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -122,45 +125,60 @@ public class CamundaClientTest{
     }
     
     public String inputStream(String JsonInput)throws IOException{
-               JsonInput = "src/test/resources/CamundaClientTest" + JsonInput;
-               String input = new String(Files.readAllBytes(Paths.get(JsonInput)));
-               return input;
-       }
+        JsonInput = "src/test/resources/CamundaClientTest" + JsonInput;
+        String input = new String(Files.readAllBytes(Paths.get(JsonInput)));
+        return input;
+    }
     
     @Test
     public void wrapVIDRequestTest() throws IOException{
-       CamundaClient testClient = new CamundaClient();
-       testClient.setUrl("/mso/async/services/CreateGenericALaCarteServiceInstance");
-       
-       String requestId = "f7ce78bb-423b-11e7-93f8-0050569a796";
-       boolean isBaseVfModule = true;
-       int recipeTimeout = 10000;
-       String requestAction = "createInstance";
-       String serviceInstanceId = "12345679";
-       String correlationId = "12345679";
-       String vnfId = "234567891";
-       String vfModuleId = "345678912";
-       String volumeGroupId = "456789123";
-       String networkId = "567891234";
-       String configurationId = "678912345";
-       String serviceType = "testService";
-       String vnfType = "testVnf";
-       String vfModuleType = "vfModuleType";
-       String networkType = "networkType";
-       String requestDetails = "{requestDetails: }";
-       String apiVersion = "6";
-       boolean aLaCarte = true;
-       String requestUri = "v7/serviceInstances/assign";
-       
-       String testResult = testClient.wrapVIDRequest(requestId, isBaseVfModule, recipeTimeout, requestAction, serviceInstanceId, correlationId,
-                                               vnfId, vfModuleId, volumeGroupId, networkId, configurationId, serviceType, 
-                                               vnfType, vfModuleType, networkType, requestDetails, apiVersion, aLaCarte, requestUri, "");
-       String expected = inputStream("/WrappedVIDRequest.json");
-       
-       assertEquals(expected, testResult);
+        CamundaClient testClient = new CamundaClient();
+        testClient.setUrl("/mso/async/services/CreateGenericALaCarteServiceInstance");
+        
+        String requestId = "f7ce78bb-423b-11e7-93f8-0050569a796";
+        boolean isBaseVfModule = true;
+        int recipeTimeout = 10000;
+        String requestAction = "createInstance";
+        String serviceInstanceId = "12345679";
+        String correlationId = "12345679";
+        String vnfId = "234567891";
+        String vfModuleId = "345678912";
+        String volumeGroupId = "456789123";
+        String networkId = "567891234";
+        String configurationId = "678912345";
+        String serviceType = "testService";
+        String vnfType = "testVnf";
+        String vfModuleType = "vfModuleType";
+        String networkType = "networkType";
+        String requestDetails = "{requestDetails: }";
+        String apiVersion = "6";
+        boolean aLaCarte = true;
+        String requestUri = "v7/serviceInstances/assign";
+        
+        String testResult = testClient.wrapVIDRequest(requestId, isBaseVfModule, recipeTimeout, requestAction, serviceInstanceId, correlationId,
+                            vnfId, vfModuleId, volumeGroupId, networkId, configurationId, serviceType, 
+                            vnfType, vfModuleType, networkType, requestDetails, apiVersion, aLaCarte, requestUri, "");
+        String expected = inputStream("/WrappedVIDRequest.json");
+        
+        assertEquals(expected, testResult);
     }
 
-
+    @Test
+    public void testPost() throws Exception{
+        CamundaClient testClient = new CamundaClient();
+        String orchestrationURI = "/engine-rest/process-definition/key/dummy/start";
+        MockEnvironment environment = new MockEnvironment();
+        
+        environment.setProperty("mso.camundaUR", "yourValue1");
+        testClient.setProps(environment);
+        testClient.setClient(mockHttpClient);
+        
+        testClient.setUrl(orchestrationURI);
+        
+        String responseBody ="{\"links\":[{\"method\":\"GET\",\"href\":\"http://localhost:9080/engine-rest/process-instance/2047c658-37ae-11e5-9505-7a1020524153\",\"rel\":\"self\"}],\"id\":\"2047c658-37ae-11e5-9505-7a1020524153\",\"definitionId\":\"dummy:10:73298961-37ad-11e5-9505-7a1020524153\",\"businessKey\":null,\"caseInstanceId\":null,\"ended\":true,\"suspended\":false}";
+        assertNull(testClient.post(responseBody));
+        
+    }
 
 
 }
diff --git a/mso-api-handlers/mso-api-handler-common/src/test/java/org/onap/so/apihandlerinfra/ApiExceptionMapperTest.java b/mso-api-handlers/mso-api-handler-common/src/test/java/org/onap/so/apihandlerinfra/ApiExceptionMapperTest.java
deleted file mode 100644 (file)
index b98c474..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.apihandlerinfra;
-
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.onap.so.apihandler.common.ErrorNumbers;
-import org.onap.so.apihandlerinfra.exceptions.*;
-
-import org.apache.http.HttpStatus;
-import javax.ws.rs.core.Response;
-
-
-import java.io.IOException;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.anyObject;
-import static org.hamcrest.core.StringStartsWith.startsWith;
-
-public class ApiExceptionMapperTest {
-
-    ApiExceptionMapper mapper = new ApiExceptionMapper();
-
-
-    @Test
-    public void testObjectMapperError() throws JsonProcessingException {
-        ObjectMapper mockedMapper = Mockito.mock(ObjectMapper.class);
-        Mockito.when(mockedMapper.writeValueAsString(anyObject())).thenThrow(JsonProcessingException.class);
-        ValidateException validateException = new ValidateException.Builder("Test", 0 , null).build();
-        ApiExceptionMapper mockedException = Mockito.spy(new ApiExceptionMapper());
-        Mockito.doReturn(mockedMapper).when(mockedException).createObjectMapper();
-        Response resp = mockedException.toResponse((ApiException) validateException);
-
-       /// assertEquals(resp.getStatus(), HttpStatus.SC_BAD_REQUEST);
-        assertThat(resp.getEntity().toString(),startsWith("Exception in buildServiceErrorResponse writing exceptionType to string"));
-    }
-
-    @Test
-    public void testValidateResponse(){
-        ValidateException validateException = new ValidateException.Builder("Test Message", HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).build();
-        Response resp = mapper.toResponse((ApiException) validateException);
-
-        assertEquals(resp.getStatus(), HttpStatus.SC_BAD_REQUEST);
-    }
-
-    @Test
-    public void testBPMNFailureResponse(){
-        BPMNFailureException bpmnException = new BPMNFailureException.Builder("Test Message", HttpStatus.SC_NOT_FOUND, ErrorNumbers.SVC_BAD_PARAMETER).build();
-        Response resp = mapper.toResponse((ApiException) bpmnException);
-
-        assertEquals(resp.getStatus(), HttpStatus.SC_NOT_FOUND);
-    }
-    @Test
-    public void testClientConnectionResponse(){
-        ClientConnectionException clientConnectionException = new ClientConnectionException.Builder("test", HttpStatus.SC_INTERNAL_SERVER_ERROR,ErrorNumbers.SVC_BAD_PARAMETER).build();
-        Response resp =  mapper.toResponse((ApiException) clientConnectionException);
-
-        assertEquals(resp.getStatus(), HttpStatus.SC_INTERNAL_SERVER_ERROR);
-    }
-    @Test
-    public void testVFModuleResponse() {
-        VfModuleNotFoundException vfModuleException = new VfModuleNotFoundException.Builder("Test Message", HttpStatus.SC_CONFLICT,ErrorNumbers.SVC_BAD_PARAMETER).build();
-        Response resp =  mapper.toResponse((ApiException) vfModuleException);
-
-        assertEquals(resp.getStatus(), HttpStatus.SC_CONFLICT);
-    }
-    @Test
-    public void testDuplicateRequestResponse() throws IOException {
-        DuplicateRequestException duplicateRequestException = new DuplicateRequestException.Builder("Test1", "Test2","Test3","Test4", HttpStatus.SC_BAD_GATEWAY,ErrorNumbers.SVC_BAD_PARAMETER).build();
-        Response resp =  mapper.toResponse((ApiException) duplicateRequestException);
-
-        assertEquals(resp.getStatus(), HttpStatus.SC_BAD_GATEWAY);
-    }
-}
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.apihandlerinfra;
+package org.onap.so.apihandlerinfra.exceptions;
 
 
+import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.StringStartsWith.startsWith;
 import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import java.io.IOException;
+import java.io.Writer;
+import java.util.Arrays;
+import java.util.List;
 
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
 
 import org.apache.http.HttpStatus;
+import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
 import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
 import org.onap.so.apihandler.common.ErrorNumbers;
 import org.onap.so.apihandlerinfra.exceptions.ApiException;
 import org.onap.so.apihandlerinfra.exceptions.ApiExceptionMapper;
@@ -45,17 +64,29 @@ import org.onap.so.apihandlerinfra.exceptions.VfModuleNotFoundException;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-public class ApiExceptionMapperTest extends BaseTest {
 
+@RunWith(MockitoJUnitRunner.class)
+public class ApiExceptionMapperTest {
+
+       @Mock
+       private HttpHeaders headers;
+       @Mock
+       private Marshaller marshaller;
+       
+       @InjectMocks
     ApiExceptionMapper mapper = new ApiExceptionMapper();
 
 
+       @Before
+       public void setUp() {
+               when(headers.getAcceptableMediaTypes()).thenReturn(Arrays.asList(MediaType.APPLICATION_JSON_TYPE));
+       }
     @Test
     public void testObjectMapperError() throws JsonProcessingException {
         ObjectMapper mockedMapper = Mockito.mock(ObjectMapper.class);
         Mockito.when(mockedMapper.writeValueAsString(anyObject())).thenThrow(JsonProcessingException.class);
         ValidateException validateException = new ValidateException.Builder("Test", 0 , null).build();
-        ApiExceptionMapper mockedException = Mockito.spy(new ApiExceptionMapper());
+        ApiExceptionMapper mockedException = Mockito.spy(mapper);
         Mockito.doReturn(mockedMapper).when(mockedException).createObjectMapper();
         Response resp = mockedException.toResponse((ApiException) validateException);
 
@@ -99,4 +130,31 @@ public class ApiExceptionMapperTest extends BaseTest {
 
         assertEquals(resp.getStatus(), HttpStatus.SC_BAD_GATEWAY);
     }
+    
+    @Test
+    public void verifyXMLPath() throws JAXBException {
+               when(headers.getAcceptableMediaTypes()).thenReturn(Arrays.asList(MediaType.APPLICATION_XML_TYPE));
+        BPMNFailureException bpmnException = new BPMNFailureException.Builder("Test Message", HttpStatus.SC_NOT_FOUND, ErrorNumbers.SVC_BAD_PARAMETER).build();
+        ApiExceptionMapper mapperSpy = Mockito.spy(mapper);
+        doReturn(marshaller).when(mapperSpy).getMarshaller();
+        Response resp =  mapperSpy.toResponse((ApiException) bpmnException);
+        verify(marshaller, times(1)).marshal(any(Object.class), any(Writer.class));
+    }
+    
+    @Test
+    public void verifyMediaType() {
+       ApiExceptionMapper mapperSpy = Mockito.spy(mapper);
+        BPMNFailureException bpmnException = new BPMNFailureException.Builder("Test Message", HttpStatus.SC_NOT_FOUND, ErrorNumbers.SVC_BAD_PARAMETER).build();
+               when(headers.getAcceptableMediaTypes()).thenReturn(Arrays.asList(MediaType.APPLICATION_XML_TYPE.withCharset("UTF-8")));
+       mapperSpy.toResponse(bpmnException);
+       verify(mapperSpy, times(1)).buildServiceErrorResponse(any(String.class), any(String.class), any(List.class), eq(MediaType.APPLICATION_XML_TYPE));
+               when(headers.getAcceptableMediaTypes()).thenReturn(Arrays.asList(MediaType.APPLICATION_JSON_TYPE.withCharset("UTF-8")));
+       mapperSpy = Mockito.spy(mapper);
+       mapperSpy.toResponse(bpmnException);
+       verify(mapperSpy, times(1)).buildServiceErrorResponse(any(String.class), any(String.class), any(List.class), eq(MediaType.APPLICATION_JSON_TYPE));
+               when(headers.getAcceptableMediaTypes()).thenReturn(null);
+       mapperSpy = Mockito.spy(mapper);
+       mapperSpy.toResponse(bpmnException);
+       verify(mapperSpy, times(1)).buildServiceErrorResponse(any(String.class), any(String.class), any(List.class), eq(MediaType.APPLICATION_JSON_TYPE));
+    }
 }
index 49590d3..9439dca 100644 (file)
                        <groupId>com.h2database</groupId>
                        <artifactId>h2</artifactId>
                </dependency>
-               <dependency>
-                       <groupId>commons-beanutils</groupId>
-                       <artifactId>commons-beanutils</artifactId>
-               </dependency>
                <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-configuration-processor</artifactId>
index 5b08cc1..6013677 100644 (file)
@@ -43,5 +43,6 @@ public enum Action implements Actions{
        compareModel,
        scaleInstance,
        deactivateAndCloudDelete,
-       scaleOut
+       scaleOut,
+       recreateInstance
 }
index 5d9ad76..bb7df4b 100644 (file)
@@ -372,6 +372,20 @@ public class ServiceInstances {
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);              
                return serviceInstances(request, Action.applyUpdatedConfig, instanceIdMap, version, requestId, getRequestUri(requestContext));
        }
+       
+       @POST
+       @Path("/{version:[vV][7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/recreate")
+       @Consumes(MediaType.APPLICATION_JSON)
+       @Produces(MediaType.APPLICATION_JSON)
+       @ApiOperation(value="Recreate VNF Instance",response=Response.class)
+       public Response recreateVnfInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
+                                       @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
+               String requestId = getRequestId(requestContext);
+               HashMap<String, String> instanceIdMap = new HashMap<>();
+               instanceIdMap.put("serviceInstanceId", serviceInstanceId);
+               instanceIdMap.put("vnfInstanceId", vnfInstanceId);              
+               return serviceInstances(request, Action.recreateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+       }
 
 
        @DELETE
index f366c7e..b0ea857 100644 (file)
@@ -56,6 +56,9 @@ public class CloudConfigurationValidation implements ValidationRule{
                        if(requestScope.equalsIgnoreCase(ModelType.vfModule.name()) && (action == Action.deactivateAndCloudDelete || action == Action.scaleOut)){
                                throw new ValidationException("cloudConfiguration");
                        }
+                       if(requestScope.equals(ModelType.vnf.name()) && action == Action.recreateInstance){
+                               throw new ValidationException("cloudConfiguration", true);
+                       }
                }
                
                if (cloudConfiguration == null && ((aLaCarteFlag != null && !aLaCarteFlag) && requestScope.equalsIgnoreCase (ModelType.service.name ()) && reqVersion < 5)) {
index aa98d2a..c6fae6e 100644 (file)
@@ -60,7 +60,7 @@ public class ModelInfoValidation implements ValidationRule{
         }
         
         // modelCustomizationId or modelCustomizationName are required for VNF Replace
-        if(requestParameters != null && reqVersion > 4 && requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.replaceInstance) {
+        if(requestParameters != null && reqVersion > 4 && requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.replaceInstance || action == Action.recreateInstance) {
                if(!UUIDChecker.isValidUUID(modelInfo.getModelCustomizationId()) && modelInfo.getModelCustomizationName() == null) {
                        throw new ValidationException("modelCustomizationId or modelCustomizationName");
                }
@@ -77,14 +77,16 @@ public class ModelInfoValidation implements ValidationRule{
         if(empty(modelInfo.getModelInvariantId()) && (requestScope.equalsIgnoreCase(ModelType.vfModule.name()) && action == Action.scaleOut)){
                throw new ValidationException("modelInvariantId");
         }
-
+        if(empty(modelInfo.getModelInvariantId()) && (requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.recreateInstance)){
+               throw new ValidationException("modelInvariantId", true);
+        }
         if (!empty (modelInfo.getModelInvariantId ()) && !UUIDChecker.isValidUUID (modelInfo.getModelInvariantId ())) {
                throw new ValidationException ("modelInvariantId format");
         }
 
         if(reqVersion >= 4 && !(requestScope.equalsIgnoreCase(ModelType.configuration.name())) && empty (modelInfo.getModelName ()) && (action == Action.createInstance || action == Action.updateInstance || 
-                       action == Action.addRelationships || action == Action.removeRelationships || ((action == Action.deleteInstance || action == Action.scaleOut) && (requestScope.equalsIgnoreCase (ModelType.vfModule.name ()))))){
-               throw new ValidationException ("modelName");
+                       action == Action.addRelationships || action == Action.removeRelationships || action == Action.recreateInstance || ((action == Action.deleteInstance || action == Action.scaleOut) && (requestScope.equalsIgnoreCase (ModelType.vfModule.name ()))))){
+               throw new ValidationException ("modelName", true);
         }
 
         if (empty (modelInfo.getModelVersion ()) && !(requestScope.equalsIgnoreCase(ModelType.configuration.name())) && 
@@ -92,6 +94,10 @@ public class ModelInfoValidation implements ValidationRule{
                                        && (action == Action.createInstance || action == Action.updateInstance || action == Action.addRelationships || action == Action.removeRelationships || action == Action.scaleOut))) {
                throw new ValidationException ("modelVersion");
         }
+        
+        if(empty(modelInfo.getModelVersion()) && (requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.recreateInstance)){
+               throw new ValidationException("modelVersion", true);
+        }
 
         // is required for serviceInstance delete macro when aLaCarte=false in v4
         if (reqVersion >= 4 && empty (modelInfo.getModelVersionId()) && (((aLaCarteFlag != null && !aLaCarteFlag) && requestScope.equalsIgnoreCase(ModelType.service.name()) && action == Action.deleteInstance) ||
@@ -99,6 +105,9 @@ public class ModelInfoValidation implements ValidationRule{
                        (requestScope.equalsIgnoreCase(ModelType.configuration.name()) && (action == Action.activateInstance || action == Action.deactivateInstance))))) {
                throw new ValidationException ("modelVersionId");
          }
+        if(empty(modelInfo.getModelVersionId()) && (requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.recreateInstance)){
+               throw new ValidationException("modelVersionId", true);
+        }
         if(empty(modelInfo.getModelVersionId()) && (requestScope.equalsIgnoreCase(ModelType.vfModule.name()) && action == Action.scaleOut)){
                throw new ValidationException("modelVersionId");
         }
index 52ed34a..4072613 100644 (file)
@@ -59,8 +59,6 @@ public abstract class BaseTest {
        protected MsoLogger logger = MsoLogger.getMsoLogger(Catalog.GENERAL, BaseTest.class);
        protected TestRestTemplate restTemplate = new TestRestTemplate("test", "test");
 
-       protected HttpHeaders headers = new HttpHeaders();      
-
        @Autowired
        protected Environment env;
 
index f634057..66e29a8 100644 (file)
 
 package org.onap.so.apihandlerinfra;
 
-import static com.github.tomakehurst.wiremock.client.WireMock.*;
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+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.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
@@ -30,11 +35,9 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import org.apache.http.HttpStatus;
 import org.junit.Before;
 import org.junit.Test;
@@ -44,10 +47,12 @@ import org.onap.so.db.request.beans.OperationStatus;
 import org.onap.so.serviceinstancebeans.RequestError;
 import org.onap.so.serviceinstancebeans.ServiceException;
 import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.util.UriComponentsBuilder;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.tomakehurst.wiremock.http.Fault;
 
@@ -87,7 +92,8 @@ private final ObjectMapper mapper = new ObjectMapper();
                JsonInput = "src/test/resources/E2EServiceInstancesTest" + JsonInput;
                return new String(Files.readAllBytes(Paths.get(JsonInput)));
        }
-       public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod){             
+       public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod){
+               HttpHeaders headers = new HttpHeaders();
                headers.set("Accept", MediaType.APPLICATION_JSON);
                headers.set("Content-Type",MediaType.APPLICATION_JSON);
                
index e16f265..8b4d353 100644 (file)
@@ -39,7 +39,7 @@ public class HealthCheckHandlerTest extends BaseTest{
                
        @Test
        public void testHealthcheckGet() throws JSONException {
-
+               HttpHeaders headers = new HttpHeaders();
                HttpEntity<String> entity = new HttpEntity<String>(null, headers);
 
                ResponseEntity<String> response = restTemplate.exchange(
index 76d4b48..eec68d8 100644 (file)
@@ -32,12 +32,10 @@ import static org.junit.Assert.assertThat;
 import java.io.IOException;
 import java.util.Map;
 
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 import org.apache.http.HttpStatus;
-import org.apache.log4j.MDC;
 import org.junit.Test;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.apihandlerinfra.tasksbeans.RequestDetails;
@@ -47,6 +45,7 @@ import org.onap.so.apihandlerinfra.tasksbeans.TasksRequest;
 import org.onap.so.apihandlerinfra.tasksbeans.ValidResponses;
 import org.onap.so.logger.MsoLogger;
 import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.util.UriComponentsBuilder;
@@ -82,7 +81,7 @@ public class ManualTasksTest extends BaseTest{
         //expected response
         TaskRequestReference expectedResponse = new TaskRequestReference();
         expectedResponse.setTaskId(taskId);    
-
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
         headers.set("Content-Type", MediaType.APPLICATION_JSON);
         headers.set(MsoLogger.ECOMP_REQUEST_ID, "987654321");
index 63dc96f..fa3ce07 100644 (file)
@@ -193,6 +193,7 @@ public class MsoRequestTest extends BaseTest {
                        {"No valid cloudConfiguration is specified", mapper.readValue(inputStream("/CloudConfiguration/InPlaceSoftwareUpdateCloudConfiguration.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
                        {"No valid cloudConfiguration is specified", mapper.readValue(inputStream("/CloudConfiguration/DeactivateAndCloudDeleteCloudConfiguration.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.deactivateAndCloudDelete, 7},
                        {"No valid cloudConfiguration is specified", mapper.readValue(inputStream("/CloudConfiguration/ScaleOutNoCloudConfig.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid cloudConfiguration is specified", mapper.readValue(inputStream("/CloudConfiguration/VnfRecreateCloudConfig.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid lcpCloudRegionId is specified", mapper.readValue(inputStream("/CloudConfiguration/EmptyLcpCloudConfiguration.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid lcpCloudRegionId is specified", mapper.readValue(inputStream("/CloudConfiguration/InPlaceSoftwareUpdateCloudRegionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
                        {"No valid tenantId is specified", mapper.readValue(inputStream("/CloudConfiguration/EmptyTenantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
@@ -207,6 +208,7 @@ public class MsoRequestTest extends BaseTest {
                        {"No valid modelCustomizationId or modelCustomizationName is specified", mapper.readValue(inputStream("/ModelInfo/ModelCustomization.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, 6},
                        {"No valid modelCustomizationId or modelCustomizationName is specified", mapper.readValue(inputStream("/ModelInfo/ModelCustomization.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, 6},
                        {"No valid modelCustomizationId or modelCustomizationName is specified", mapper.readValue(inputStream("/ModelInfo/VnfModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, 5},
+                       {"No valid modelCustomizationId or modelCustomizationName is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateNoModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid modelCustomizationId is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
                        {"No valid model-info is specified", mapper.readValue(inputStream("/ModelInfo/ModelInfoNull.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid modelInvariantId format is specified", mapper.readValue(inputStream("/ModelInfo/InvalidModelInvariantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 2},
@@ -218,13 +220,16 @@ public class MsoRequestTest extends BaseTest {
                        {"No valid modelInvariantId is specified", mapper.readValue(inputStream("/ModelInfo/v5DeactivateModelInvariantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.deactivateInstance, 5},
                        {"No valid modelInvariantId is specified", mapper.readValue(inputStream("/ModelInfo/v3UpdateNetworkBad.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, 4},
                        {"No valid modelInvariantId is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelInvariantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid modelInvariantId is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelInvariantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid modelName is specified", mapper.readValue(inputStream("/ModelInfo/VfModuleModelName.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.deleteInstance, 4},
                        {"No valid modelName is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelName.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid modelName is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelName.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid modelType is specified", mapper.readValue(inputStream("/ModelInfo/ModelTypeNull.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionService.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, 3},
                        {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionVfModule.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 3},
                        {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionServiceCreate.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 3},
                        {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelVersion.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelVersion.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/ConfigurationModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, 5},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/v2ModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, 4},
@@ -235,6 +240,7 @@ public class MsoRequestTest extends BaseTest {
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionIdCreate.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/v5ActivateModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, 5},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        //ValidationException for Platform and LineOfBusiness
                        {"No valid lineOfBusinessName is specified", mapper.readValue(inputStream("/PlatformAndLineOfBusiness/EmptyLineOfBusiness.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid platform is specified", mapper.readValue(inputStream("/PlatformAndLineOfBusiness/Platform.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 6},
index 0af9826..ea2261a 100644 (file)
@@ -41,7 +41,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
@@ -60,6 +59,7 @@ import org.onap.so.serviceinstancebeans.RequestProcessingData;
 import org.onap.so.serviceinstancebeans.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.util.UriComponentsBuilder;
@@ -105,7 +105,7 @@ public class OrchestrationRequestsTest extends BaseTest {
         Request request = ORCHESTRATION_LIST.getRequestList().get(1).getRequest();
         testResponse.setRequest(request);
         String testRequestId = request.getRequestId();
-
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
         headers.set("Content-Type", MediaType.APPLICATION_JSON);
         HttpEntity<Request> entity = new HttpEntity<Request>(null, headers);
@@ -136,6 +136,7 @@ public class OrchestrationRequestsTest extends BaseTest {
         testResponse.setRequest(request);
         String testRequestId = request.getRequestId();
 
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
         headers.set("Content-Type", MediaType.APPLICATION_JSON);
         HttpEntity<Request> entity = new HttpEntity<Request>(null, headers);
@@ -158,9 +159,10 @@ public class OrchestrationRequestsTest extends BaseTest {
 
     @Test
     public void testGetOrchestrationRequestNoRequestID() {
+       HttpHeaders headers = new HttpHeaders();
+       headers.set("Accept", "application/json; charset=UTF-8");
+        headers.set("Content-Type", "application/json; charset=UTF-8"); 
         HttpEntity<Request> entity = new HttpEntity<Request>(null, headers);
-        headers.set("Accept", MediaType.APPLICATION_JSON);
-
         UriComponentsBuilder builder = UriComponentsBuilder
                 .fromHttpUrl(createURLWithPort("/onap/so/infra/orchestrationRequests/v6/"));
 
@@ -185,9 +187,10 @@ public class OrchestrationRequestsTest extends BaseTest {
         List<GetOrchestrationResponse> testResponses = new ArrayList<>();
 
         List<InfraActiveRequests> requests = requestsDbClient.getOrchestrationFiltersFromInfraActive(orchestrationMap);
-        HttpEntity<Request> entity = new HttpEntity<Request>(null, headers);
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
-
+        HttpEntity<Request> entity = new HttpEntity<Request>(null, headers);
+        
         UriComponentsBuilder builder = UriComponentsBuilder
                 .fromHttpUrl(createURLWithPort("/onap/so/infra/orchestrationRequests/v6?filter=modelType:EQUALS:vfModule"));
 
@@ -206,7 +209,7 @@ public class OrchestrationRequestsTest extends BaseTest {
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
         String requestJSON = new String(Files.readAllBytes(Paths.get("src/test/resources/OrchestrationRequest/Request.json")));
-
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
         headers.set("Content-Type", MediaType.APPLICATION_JSON);
         HttpEntity<String> entity = new HttpEntity<String>(requestJSON, headers);
@@ -240,7 +243,7 @@ public class OrchestrationRequestsTest extends BaseTest {
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
         String requestJSON = new String(Files.readAllBytes(Paths.get("src/test/resources/OrchestrationRequest/Request.json")));
-
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
         headers.set("Content-Type", MediaType.APPLICATION_JSON);
         HttpEntity<String> entity = new HttpEntity<String>(requestJSON, headers);
@@ -274,7 +277,7 @@ public class OrchestrationRequestsTest extends BaseTest {
         setupTestUnlockOrchestrationRequest_Valid_Status("5ffbabd6-b793-4377-a1ab-082670fbc7ac", "PENDING");
         ObjectMapper mapper = new ObjectMapper();
         String requestJSON = new String(Files.readAllBytes(Paths.get("src/test/resources/OrchestrationRequest/Request.json")));
-
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
         headers.set("Content-Type", MediaType.APPLICATION_JSON);
         HttpEntity<String> entity = new HttpEntity<String>(requestJSON, headers);
@@ -305,7 +308,7 @@ public class OrchestrationRequestsTest extends BaseTest {
         String json = mapper.writeValueAsString(requests);
 
         requestsDbClient.save(requests);
-
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
         headers.set("Content-Type", MediaType.APPLICATION_JSON);
         HttpEntity<Request> entity = new HttpEntity<Request>(null, headers);
@@ -337,7 +340,7 @@ public class OrchestrationRequestsTest extends BaseTest {
         requests.setRequestScope("service");
         requests.setRequestType("createInstance");
 //        iar.save(requests);
-
+        HttpHeaders headers = new HttpHeaders();
         headers.set("Accept", MediaType.APPLICATION_JSON);
         headers.set("Content-Type", MediaType.APPLICATION_JSON);
         HttpEntity<Request> entity = new HttpEntity<Request>(null, headers);
index cdb4c40..f726194 100644 (file)
 package org.onap.so.apihandlerinfra;
 
 
-import ch.qos.logback.classic.spi.ILoggingEvent;
-import com.fasterxml.jackson.annotation.JsonInclude.Include;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.tomakehurst.wiremock.http.Fault;
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
+import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
 import org.apache.http.HttpStatus;
 import org.junit.Before;
 import org.junit.Test;
@@ -44,32 +61,18 @@ import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.util.ResourceUtils;
 import org.springframework.web.util.UriComponentsBuilder;
 
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.tomakehurst.wiremock.http.Fault;
 
-import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
-import static com.github.tomakehurst.wiremock.client.WireMock.get;
-import static com.github.tomakehurst.wiremock.client.WireMock.post;
-import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
-import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
-import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import ch.qos.logback.classic.spi.ILoggingEvent;
 
 
 public class ServiceInstancesTest extends BaseTest{
@@ -109,10 +112,14 @@ public class ServiceInstancesTest extends BaseTest{
 
        }
        
-       
-    public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod){                
-        headers.set("Accept", MediaType.APPLICATION_JSON);
-        headers.set(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON);
+       public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod, HttpHeaders headers){
+               
+               if (!headers.containsKey(HttpHeaders.ACCEPT)) {
+                       headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
+               }
+               if (!headers.containsKey(HttpHeaders.CONTENT_TYPE)) {
+                       headers.set(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON);
+               }
 
         UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(uriPath));
 
@@ -121,6 +128,10 @@ public class ServiceInstancesTest extends BaseTest{
         return restTemplate.exchange(builder.toUriString(),
                 reqMethod, request, String.class);
     }
+       
+    public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod){
+       return sendRequest(requestJson, uriPath, reqMethod, new HttpHeaders());
+    }
 
     @Test
     public void test_mapJSONtoMSOStyle() throws IOException{
@@ -163,7 +174,7 @@ public class ServiceInstancesTest extends BaseTest{
                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
                         .withBody(mapper.writeValueAsString(serviceRecipe))
                         .withStatus(HttpStatus.SC_OK)));
-                       
+        HttpHeaders headers = new HttpHeaders();
                headers.set(MsoLogger.TRANSACTION_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
         headers.set(MsoLogger.CLIENT_ID, "VID");
         //expect
@@ -172,7 +183,7 @@ public class ServiceInstancesTest extends BaseTest{
         requestReferences.setInstanceId("1882939");
         expectedResponse.setRequestReferences(requestReferences);
         uri = servInstanceuri + "v5/serviceInstances";
-        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -347,8 +358,9 @@ public class ServiceInstancesTest extends BaseTest{
     @Test
     public void activateServiceInstanceNoRecipeALaCarte() throws IOException{
         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/activate";
+        HttpHeaders headers = new HttpHeaders();
         headers.set("X-ECOMP-RequestID", "32807a28-1a14-4b88-b7b3-2950918aa76d");
-        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceALaCarteTrueNoRecipe.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceALaCarteTrueNoRecipe.json"), uri, HttpMethod.POST, headers);
 
         Service defaultService = new Service();
         defaultService.setModelUUID("d88da85c-d9e8-4f73-b837-3a72a431622a");
@@ -407,7 +419,7 @@ public class ServiceInstancesTest extends BaseTest{
                                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
                                                .withBody(mapper.writeValueAsString(serviceRecipe))
                                                .withStatus(HttpStatus.SC_OK)));
-
+               HttpHeaders headers = new HttpHeaders();
         headers.set("X-TransactionID", "32807a28-1a14-4b88-b7b3-2950918aa76d");
         //expected response
         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
@@ -415,7 +427,7 @@ public class ServiceInstancesTest extends BaseTest{
         requestReferences.setInstanceId("1882939");
         expectedResponse.setRequestReferences(requestReferences);
         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/activate";
-        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceActivate.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceActivate.json"), uri, HttpMethod.POST, headers);
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -608,6 +620,7 @@ public class ServiceInstancesTest extends BaseTest{
         stubFor(post(urlPathEqualTo("/mso/async/services/ALaCarteOrchestrator"))
                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+        HttpHeaders headers = new HttpHeaders();
         headers.set("X-TransactionID", "32807a28-1a14-4b88-b7b3-2950918aa76d");
         //expected response
         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
@@ -615,7 +628,7 @@ public class ServiceInstancesTest extends BaseTest{
         requestReferences.setInstanceId("1882939");
         expectedResponse.setRequestReferences(requestReferences);
         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations";
-        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstancePortConfiguration.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstancePortConfiguration.json"), uri, HttpMethod.POST, headers);
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -638,6 +651,7 @@ public class ServiceInstancesTest extends BaseTest{
                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
 
+        HttpHeaders headers = new HttpHeaders();
         headers.set("X-ECOMP-RequestID", "32807a28-1a14-4b88-b7b3-2950918aa76d");
         //expected response
         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
@@ -645,7 +659,7 @@ public class ServiceInstancesTest extends BaseTest{
         requestReferences.setInstanceId("1882939");
         expectedResponse.setRequestReferences(requestReferences);
         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/configurations/f7ce78bb-423b-11e7-93f8-0050569a7970";
-        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstance.json"), uri, HttpMethod.DELETE);
+        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstance.json"), uri, HttpMethod.DELETE, headers);
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -840,6 +854,7 @@ public class ServiceInstancesTest extends BaseTest{
                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
 
         String requestId = "b7a6b76f-2ee2-416c-971b-548472a8c5c3";
+        HttpHeaders headers = new HttpHeaders();
         headers.set(MsoLogger.ONAP_REQUEST_ID, requestId);
         //expected response
         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
@@ -847,7 +862,7 @@ public class ServiceInstancesTest extends BaseTest{
         requestReferences.setInstanceId("1882939");
         expectedResponse.setRequestReferences(requestReferences);
         uri = servInstanceuri + "v7" + "/serviceInstances/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs";
-        ResponseEntity<String> response = sendRequest(inputStream("/VnfWithServiceRelatedInstance.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/VnfWithServiceRelatedInstance.json"), uri, HttpMethod.POST, headers);
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -949,6 +964,42 @@ public class ServiceInstancesTest extends BaseTest{
         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));        
     }
     @Test
+    public void recreateVnfInstance() throws IOException {
+        stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+
+        stubFor(get(urlMatching(".*/vnfResourceCustomization/68dc9a92-214c-11e7-93ae-92361f002674"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(getWiremockResponseForCatalogdb("vnfResourceCustomization_Response"))
+                        .withStatus(org.apache.http.HttpStatus.SC_OK)));
+
+        stubFor(get(urlMatching(".*/vnfResourceCustomization/68dc9a92-214c-11e7-93ae-92361f002674/vnfResources"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(getWiremockResponseForCatalogdb("vnfResources_Response.json"))
+                        .withStatus(org.apache.http.HttpStatus.SC_OK)));
+               
+        stubFor(get(urlMatching(".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]nfRole=GR-API-DEFAULT&action=recreateInstance"))
+                               .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                                               .withBody(getWiremockResponseForCatalogdb("vnfRecipe_ResponseWorkflowAction.json"))
+                                               .withStatus(org.apache.http.HttpStatus.SC_OK)));
+               
+        //expected response
+        ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
+        RequestReferences requestReferences = new RequestReferences();
+        requestReferences.setInstanceId("1882939");
+        expectedResponse.setRequestReferences(requestReferences);
+        uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/recreate";
+        ResponseEntity<String> response = sendRequest(inputStream("/VnfRecreate.json"), uri, HttpMethod.POST);
+        logger.debug(response.getBody());
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+        assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
+        ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
+        assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));        
+    }
+    @Test
     public void updateVnfInstance() throws IOException {       
         stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
@@ -999,6 +1050,7 @@ public class ServiceInstancesTest extends BaseTest{
                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
         
         String requestId = "b7a6b76f-2ee2-416c-971b-548472a8c5c5";
+        HttpHeaders headers = new HttpHeaders();
         headers.set(MsoLogger.ONAP_REQUEST_ID, requestId);
         //expected response
         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
@@ -1006,7 +1058,7 @@ public class ServiceInstancesTest extends BaseTest{
         requestReferences.setInstanceId("1882939");
         expectedResponse.setRequestReferences(requestReferences);
         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/applyUpdatedConfig";
-        ResponseEntity<String> response = sendRequest(inputStream("/ApplyUpdatedConfig.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/ApplyUpdatedConfig.json"), uri, HttpMethod.POST, headers);
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -1307,6 +1359,7 @@ public class ServiceInstancesTest extends BaseTest{
     }
     @Test
     public void createVfModuleNoModelType() throws IOException{
+       HttpHeaders headers = new HttpHeaders();
         headers.set(MsoLogger.ONAP_REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
         InfraActiveRequests expectedRecord = new InfraActiveRequests();
         expectedRecord.setRequestStatus("FAILED");
@@ -1326,7 +1379,7 @@ public class ServiceInstancesTest extends BaseTest{
         expectedRecord.setVnfType("");
         uri = servInstanceuri + "v5/serviceInstances/32807a28-1a14-4b88-b7b3-2950918aa76d/vnfs/32807a28-1a14-4b88-b7b3-2950918aa76d/vfModules";
 
-        ResponseEntity<String> response = sendRequest(inputStream("/VfModuleNoModelType.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/VfModuleNoModelType.json"), uri, HttpMethod.POST, headers);
         //ActualRecord
         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
     }
@@ -1590,6 +1643,7 @@ public class ServiceInstancesTest extends BaseTest{
                         .withStatus(org.apache.http.HttpStatus.SC_OK)));
         
         String requestId = "b7a6b76f-2ee2-416c-971b-548472a8c5c4";
+        HttpHeaders headers = new HttpHeaders();
         headers.set(MsoLogger.ONAP_REQUEST_ID, requestId);
         //expected response
         ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
@@ -1597,7 +1651,7 @@ public class ServiceInstancesTest extends BaseTest{
         requestReferences.setInstanceId("1882939");
         expectedResponse.setRequestReferences(requestReferences);
         uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks";
-        ResponseEntity<String> response = sendRequest(inputStream("/NetworkCreate.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/NetworkCreate.json"), uri, HttpMethod.POST, headers);
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -1710,6 +1764,7 @@ public class ServiceInstancesTest extends BaseTest{
     }
     @Test
     public void convertJsonToServiceInstanceRequestFail() throws IOException {
+       HttpHeaders headers = new HttpHeaders();
         headers.set(MsoLogger.ONAP_REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
         //ExpectedRecord
         InfraActiveRequests expectedRecord = new InfraActiveRequests();
@@ -1723,7 +1778,7 @@ public class ServiceInstancesTest extends BaseTest{
         expectedRecord.setRequestId("32807a28-1a14-4b88-b7b3-2950918aa76d");
 
         uri = servInstanceuri + "v6" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7969/networks/1710966e-097c-4d63-afda-e0d3bb7015fb";
-        ResponseEntity<String> response = sendRequest(inputStream("/ConvertRequestFail.json"), uri, HttpMethod.DELETE);
+        ResponseEntity<String> response = sendRequest(inputStream("/ConvertRequestFail.json"), uri, HttpMethod.DELETE, headers);
 
         //ActualRecord
 
@@ -1931,6 +1986,7 @@ public class ServiceInstancesTest extends BaseTest{
            stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
                         .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+           HttpHeaders headers = new HttpHeaders();
         headers.set("X-ECOMP-RequestID", "32807a28-1a14-4b88-b7b3-2950918aa76d");
 
         stubFor(get(urlMatching(".*/service/.*"))
@@ -1949,7 +2005,7 @@ public class ServiceInstancesTest extends BaseTest{
         requestReferences.setInstanceId("1882939");
         expectedResponse.setRequestReferences(requestReferences);
         uri = servInstanceuri + "v5" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7999/activate";
-        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstancePrev8.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstancePrev8.json"), uri, HttpMethod.POST, headers);
 
         ObjectMapper mapper = new ObjectMapper();
         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
@@ -1962,10 +2018,11 @@ public class ServiceInstancesTest extends BaseTest{
     @Test
     public void invalidRequestId() throws IOException {
         String illegalRequestId = "1234";
+        HttpHeaders headers = new HttpHeaders();
         headers.set(ONAPLogConstants.Headers.REQUEST_ID, illegalRequestId);
 
         uri = servInstanceuri + "v5/serviceInstances";
-        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST);
+        ResponseEntity<String> response = sendRequest(inputStream("/ServiceInstanceDefault.json"), uri, HttpMethod.POST, headers);
 
         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
         assertTrue(response.getBody().contains("Request Id " + illegalRequestId + " is not a valid UUID"));
index 459214b..fa323a1 100644 (file)
@@ -34,7 +34,6 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
@@ -45,6 +44,7 @@ import org.onap.so.apihandlerinfra.tasksbeans.TaskList;
 import org.onap.so.apihandlerinfra.tasksbeans.TasksGetResponse;
 import org.onap.so.apihandlerinfra.tasksbeans.ValidResponses;
 import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.util.UriComponentsBuilder;
@@ -93,7 +93,7 @@ public class TasksHandlerTest extends BaseTest{
                taskList.add(taskList1);
        
                expectedResponse.setTaskList(taskList);
-                               
+               HttpHeaders headers = new HttpHeaders();
                headers.set("Accept", MediaType.APPLICATION_JSON);
                headers.set("Content-Type", MediaType.APPLICATION_JSON);
                HttpEntity<String> entity = new HttpEntity<String>(null, headers);
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/CloudConfiguration/VnfRecreateCloudConfig.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/CloudConfiguration/VnfRecreateCloudConfig.json
new file mode 100644 (file)
index 0000000..5d64500
--- /dev/null
@@ -0,0 +1,21 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelInvariantId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelInvariantId.json
new file mode 100644 (file)
index 0000000..15ec1a0
--- /dev/null
@@ -0,0 +1,24 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelName.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelName.json
new file mode 100644 (file)
index 0000000..caa7458
--- /dev/null
@@ -0,0 +1,24 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersion.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersion.json
new file mode 100644 (file)
index 0000000..5049be6
--- /dev/null
@@ -0,0 +1,24 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersionId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersionId.json
new file mode 100644 (file)
index 0000000..99ee762
--- /dev/null
@@ -0,0 +1,24 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateNoModelCustomizationId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateNoModelCustomizationId.json
new file mode 100644 (file)
index 0000000..d98a9bc
--- /dev/null
@@ -0,0 +1,23 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/VnfRecreate.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/VnfRecreate.json
new file mode 100644 (file)
index 0000000..7a76c6b
--- /dev/null
@@ -0,0 +1,25 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/catalogdb/vnfRecipe_ResponseWorkflowAction.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/catalogdb/vnfRecipe_ResponseWorkflowAction.json
new file mode 100644 (file)
index 0000000..c755714
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "id": 21,
+  "nfRole": "GR-API-DEFAULT",
+  "paramXsd": "",
+  "vfModuleId": "1882934",
+  "action": "recreateInstance",
+  "description": "gr-api-default for vnf recreate",
+  "orchestrationUri": "/mso/async/services/WorkflowActionBB",
+  "recipeTimeout": 180,
+  "serviceType": "GR-API-DEFAULT",
+  "created": "2016-06-03T04:44:10.000+0000",
+  "_links": {
+    "self": {
+      "href": "http://localhost:8090/vnfRecipe/21"
+    },
+    "vnfRecipe": {
+      "href": "http://localhost:8090/vnfRecipe/21"
+    }
+  }
+}
\ No newline at end of file
index 79efe64..d27dce1 100644 (file)
@@ -26,4 +26,7 @@ import org.springframework.data.rest.core.annotation.RepositoryRestResource;
 @RepositoryRestResource(collectionResourceRel = "collectionNetworkResourceCustomization", path = "collectionNetworkResourceCustomization")
 public interface CollectionNetworkResourceCustomizationRepository
                extends JpaRepository<CollectionNetworkResourceCustomization, String> {
+       
+       CollectionNetworkResourceCustomization findOneByModelCustomizationUUID(String modelCustomizationUUID);
+
 }
\ No newline at end of file
diff --git a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CollectionNetworkResourceCustomizationRepositoryTest.java b/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CollectionNetworkResourceCustomizationRepositoryTest.java
new file mode 100644 (file)
index 0000000..90ec07f
--- /dev/null
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.db.catalog.data.repository;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.onap.so.db.catalog.BaseTest;
+import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
+
+public class CollectionNetworkResourceCustomizationRepositoryTest extends BaseTest {
+    @Autowired
+    private CollectionNetworkResourceCustomizationRepository cnrcRepo;
+    
+    @Test
+    public void findAllTest() throws Exception {
+        List<CollectionNetworkResourceCustomization> cnrcList = cnrcRepo.findAll();
+        Assert.assertFalse(CollectionUtils.isEmpty(cnrcList));
+    }
+    
+    @Test
+    public void findOneByUuidTest() throws Exception {
+       CollectionNetworkResourceCustomization cnrc = cnrcRepo.findOneByModelCustomizationUUID("3bdbb104-ffff-483e-9f8b-c095b3d3068c");
+       Assert.assertTrue(cnrc != null);
+       Assert.assertTrue("ExtVL 01".equals(cnrc.getModelInstanceName()));
+    }
+}
index 097cd1e..3f3aabb 100644 (file)
@@ -88,6 +88,19 @@ insert into network_resource(model_uuid, model_name, model_invariant_uuid, descr
 insert into network_resource_customization(model_customization_uuid, model_instance_name, network_technology, network_type, network_role, network_scope, creation_timestamp, network_resource_model_uuid) values
 ('3bdbb104-476c-483e-9f8b-c095b3d308ac', 'CONTRAIL30_GNDIRECT 9', '', '', '', '', '2017-04-19 14:28:32', '10b36f65-f4e6-4be6-ae49-9596dc1c47fc');
 
+insert into instance_group(model_uuid, model_name, model_invariant_uuid, model_version, tosca_node_type, role, object_type, cr_model_uuid, instance_group_type) values
+('21e43a7c-d823-4f5b-a427-5235f63035ff', 'dror_cr_network_resource_1806..NetworkCollection..0', '81c94263-c01e-4046-b0c7-51878d658eab', '1', 'org.openecomp.groups.NetworkCollection', 'SUB_INTERFACE', 'L3_NETWORK', '5e3fca45-e2d8-4987-bef1-016d9bda1a8c', 'L3_NETWORK');
+
+insert into collection_resource(model_uuid, model_name, model_invariant_uuid, model_version, tosca_node_type, description) values
+('5e3fca45-e2d8-4987-bef1-016d9bda1a8c', 'Dror_CR_Network_Resource_1806', 'fe243154-ac18-405f-94c2-ef629d26b8bb', '2.0', 'org.openecomp.resource.cr.DrorCrNetworkResource1806', 'Creation date: 07/25/18');
+
+insert into collection_resource_customization(model_customization_uuid, model_instance_name, role, object_type, function, collection_resource_type, cr_model_uuid) values
+('c51096a4-6081-41f4-a540-3ed015a8064a', 'Dror_CR_Network_Resource_1806', 'Dror2', 'NetworkCollection', 'Dror1', 'Dror3', '5e3fca45-e2d8-4987-bef1-016d9bda1a8c');
+
+insert into collection_network_resource_customization(model_customization_uuid, model_instance_name, network_technology, network_type, network_role, network_scope, network_resource_model_uuid, instance_group_model_uuid, crc_model_customization_uuid) values
+('3bdbb104-ffff-483e-9f8b-c095b3d30844', 'ExtVL 0', 'CONTRAIL', 'L3-NETWORK', '', '', '10b36f65-f4e6-4be6-ae49-9596dc1c47fz', '21e43a7c-d823-4f5b-a427-5235f63035ff', 'c51096a4-6081-41f4-a540-3ed015a8064a'),
+('3bdbb104-ffff-483e-9f8b-c095b3d3068c', 'ExtVL 01', 'CONTRAIL', 'L3-NETWORK', '', '', '10b36f65-f4e6-4be6-ae49-9596dc1c47fz', '21e43a7c-d823-4f5b-a427-5235f63035ff', 'c51096a4-6081-41f4-a540-3ed015a8064a');
+
 insert into vnf_resource(orchestration_mode, description, creation_timestamp, model_uuid, aic_version_min, aic_version_max, model_invariant_uuid, model_version, model_name, tosca_node_type, heat_template_artifact_uuid) values
 ('HEAT', '1607 vSAMP10a - inherent network', '2017-04-14 21:46:28', 'ff2ae348-214a-11e7-93ae-92361f002672', '', '', '2fff5b20-214b-11e7-93ae-92361f002671', '2.0', 'vSAMP10a', 'VF', null);
 
index b1815b5..2515c8f 100644 (file)
@@ -35,21 +35,21 @@ import org.onap.so.montoring.model.ProcessDefinitionDetail;
 import org.onap.so.montoring.model.ProcessInstanceDetail;
 import org.onap.so.montoring.model.ProcessInstanceIdDetail;
 import org.onap.so.montoring.model.ProcessInstanceVariableDetail;
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import com.google.common.base.Optional;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * @author waqas.ikram@ericsson.com
  */
 @Service
 public class CamundaProcessDataServiceProviderImpl implements CamundaProcessDataServiceProvider {
-    private static final XLogger LOGGER = XLoggerFactory.getXLogger(CamundaProcessDataServiceProviderImpl.class);
-
+    private static final Logger LOGGER = LoggerFactory.getLogger(CamundaProcessDataServiceProviderImpl.class);
     private final CamundaRestUrlProvider urlProvider;
 
     private final HttpRestServiceProvider httpRestServiceProvider;
@@ -69,7 +69,9 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData
 
         if (processInstances.isPresent()) {
             final ProcessInstance[] instances = processInstances.get();
-            LOGGER.debug("found process instance for request id: {}, result size: {}", requestId, instances.length);
+            final String message = "found process instance for request id: " + requestId + 
+                ", result size: " + instances.length;
+            LOGGER.debug(message);
 
             if (instances.length > 0) {
                 for (int index = 0; index < instances.length; index++) {
@@ -77,12 +79,12 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData
                     if (processInstance.getSuperProcessInstanceId() == null) {
                         return Optional.of(new ProcessInstanceIdDetail(processInstance.getId()));
                     }
-                    LOGGER.debug("found sub process instance id with super process instanceId: {}",
+                    LOGGER.debug("found sub process instance id with super process instanceId: " +
                             processInstance.getSuperProcessInstanceId());
                 }
             }
         }
-        LOGGER.error("Unable to find process intance for request id: {}", requestId);
+        LOGGER.error("Unable to find process intance for request id: " + requestId);
         return Optional.absent();
     }
 
@@ -101,7 +103,7 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData
             return Optional.of(instanceDetail);
 
         }
-        LOGGER.error("Unable to find process intance for id: {}", processInstanceId);
+        LOGGER.error("Unable to find process intance for id: " + processInstanceId);
         return Optional.absent();
     }
 
@@ -118,7 +120,8 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData
                 return Optional.of(new ProcessDefinitionDetail(processDefinitionId, xmlDefinition));
             }
         }
-        LOGGER.error("Unable to find process definition for processDefinitionId: {}", processDefinitionId);
+        LOGGER.error("Unable to find process definition for processDefinitionId: " + 
+                     processDefinitionId);
         return Optional.absent();
     }
 
@@ -145,7 +148,8 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData
             }
             return activityInstanceDetails;
         }
-        LOGGER.error("Unable to find activity intance detail for process instance id: {}", processInstanceId);
+        LOGGER.error("Unable to find activity intance detail for process instance id: " + 
+                     processInstanceId);
         return Collections.emptyList();
     }
 
@@ -167,7 +171,8 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData
             }
             return instanceVariableDetails;
         }
-        LOGGER.error("Unable to find process intance variable details for process instance id: {}", processInstanceId);
+        LOGGER.error("Unable to find process intance variable details for process instance id: " 
+                     + processInstanceId);
         return Collections.emptyList();
     }
 
index 35e6038..b5cafcf 100644 (file)
@@ -21,8 +21,6 @@ package org.onap.so.montoring.rest.service;
 
 import org.onap.so.montoring.exception.InvalidRestRequestException;
 import org.onap.so.montoring.exception.RestProcessingException;
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLoggerFactory;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
@@ -33,13 +31,15 @@ import org.springframework.web.client.RestTemplate;
 
 import com.google.common.base.Optional;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * @author waqas.ikram@ericsson.com
  */
 public class HttpRestServiceProviderImpl implements HttpRestServiceProvider {
 
-    private static final XLogger LOGGER = XLoggerFactory.getXLogger(HttpRestServiceProviderImpl.class);
-
+    private static final Logger LOGGER = LoggerFactory.getLogger(HttpRestServiceProviderImpl.class);
     private final RestTemplate restTemplate;
 
     public HttpRestServiceProviderImpl(final RestTemplate restTemplate) {
@@ -48,12 +48,13 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider {
 
     @Override
     public <T> Optional<T> getHttpResponse(final String url, final Class<T> clazz) {
-        LOGGER.trace("Will invoke HTTP GET using URL: {}", url);
+        LOGGER.trace("Will invoke HTTP GET using URL: " + url);
         try {
             final ResponseEntity<T> response = restTemplate.exchange(url, HttpMethod.GET, null, clazz);
             if (!response.getStatusCode().equals(HttpStatus.OK)) {
-                LOGGER.error("Unable to invoke HTTP GET using URL: {}, Response Code: {}", url,
-                        response.getStatusCode());
+                final String message = "Unable to invoke HTTP GET using URL: " + url + 
+                    ", Response Code: " + response.getStatusCode();
+                LOGGER.error(message);
                 return Optional.absent();
             }
 
@@ -61,8 +62,9 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider {
                 return Optional.of(response.getBody());
             }
         } catch (final HttpClientErrorException httpClientErrorException) {
-            LOGGER.error("Unable to invoke HTTP GET using url: {}, Response: {}", url,
-                    httpClientErrorException.getRawStatusCode(), httpClientErrorException);
+            final String message = "Unable to invoke HTTP GET using url: " + url + ", Response: " +
+                    httpClientErrorException.getRawStatusCode();
+            LOGGER.error(message, httpClientErrorException);
             final int rawStatusCode = httpClientErrorException.getRawStatusCode();
             if (rawStatusCode == HttpStatus.BAD_REQUEST.value() || rawStatusCode == HttpStatus.NOT_FOUND.value()) {
                 throw new InvalidRestRequestException("No result found for given url: " + url);
@@ -70,8 +72,9 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider {
             throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url);
 
         } catch (final RestClientException restClientException) {
-            LOGGER.error("Unable to invoke HTTP GET using url: {}", url, restClientException);
-            throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url, restClientException);
+            LOGGER.error("Unable to invoke HTTP GET using url: " + url, restClientException);
+            throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + 
+                                              url, restClientException);
         }
 
         return Optional.absent();
@@ -83,8 +86,9 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider {
             final HttpEntity<?> request = new HttpEntity<>(object);
             final ResponseEntity<T> response = restTemplate.exchange(url, HttpMethod.POST, request, clazz);
             if (!response.getStatusCode().equals(HttpStatus.OK)) {
-                LOGGER.error("Unable to invoke HTTP GET using URL: {}, Response Code: {}", url,
-                        response.getStatusCode());
+                final String message = "Unable to invoke HTTP GET using URL: " + url + 
+                    ", Response Code: " + response.getStatusCode();
+                LOGGER.error(message);
                 return Optional.absent();
             }
 
@@ -93,8 +97,9 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider {
             }
 
         } catch (final HttpClientErrorException httpClientErrorException) {
-            LOGGER.error("Unable to invoke HTTP POST using url: {}, Response: {}", url,
-                    httpClientErrorException.getRawStatusCode(), httpClientErrorException);
+            final String message = "Unable to invoke HTTP POST using url: " + url + 
+                ", Response: " + httpClientErrorException.getRawStatusCode();
+            LOGGER.error(message, httpClientErrorException);
             final int rawStatusCode = httpClientErrorException.getRawStatusCode();
             if (rawStatusCode == HttpStatus.BAD_REQUEST.value() || rawStatusCode == HttpStatus.NOT_FOUND.value()) {
                 throw new InvalidRestRequestException("No result found for given url: " + url);
@@ -102,8 +107,9 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider {
             throw new RestProcessingException("Unable to invoke HTTP POST using URL: " + url);
 
         } catch (final RestClientException restClientException) {
-            LOGGER.error("Unable to invoke HTTP POST using url: {}", url, restClientException);
-            throw new RestProcessingException("Unable to invoke HTTP POST using URL: " + url, restClientException);
+            LOGGER.error("Unable to invoke HTTP POST using url: " + url, restClientException);
+            throw new RestProcessingException("Unable to invoke HTTP POST using URL: " 
+                                              + url, restClientException);
         }
 
         return Optional.absent();
index 913fb3f..de2263b 100644 (file)
@@ -42,13 +42,14 @@ import org.onap.so.montoring.model.ProcessInstanceIdDetail;
 import org.onap.so.montoring.model.ProcessInstanceVariableDetail;
 import org.onap.so.montoring.model.SoInfraRequest;
 import org.onap.so.montoring.rest.service.CamundaProcessDataServiceProvider;
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import com.google.common.base.Optional;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * @author waqas.ikram@ericsson.com
  */
@@ -58,7 +59,7 @@ public class SoMonitoringController {
 
     private static final String INVALID_PROCESS_INSTANCE_ERROR_MESSAGE = "Invalid process instance id: ";
 
-    private static final XLogger LOGGER = XLoggerFactory.getXLogger(SoMonitoringController.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(SoMonitoringController.class);
 
     private final DatabaseServiceProvider databaseServiceProvider;
 
@@ -85,7 +86,7 @@ public class SoMonitoringController {
                 return Response.status(Status.OK).entity(processInstanceId.get()).build();
             }
 
-            LOGGER.error("Unable to find process instance id for : {}", requestId);
+            LOGGER.error("Unable to find process instance id for : " + requestId);
             return Response.status(Status.NO_CONTENT).build();
 
         } catch (final InvalidRestRequestException extensions) {
@@ -114,7 +115,7 @@ public class SoMonitoringController {
                 return Response.status(Status.OK).entity(processInstanceDetail.get()).build();
             }
 
-            LOGGER.error("Unable to find process instance id for : {}", processInstanceId);
+            LOGGER.error("Unable to find process instance id for : " + processInstanceId);
             return Response.status(Status.NO_CONTENT).build();
 
         } catch (final InvalidRestRequestException extensions) {
@@ -133,7 +134,8 @@ public class SoMonitoringController {
     @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
     public Response getProcessDefinitionXml(final @PathParam("processDefinitionId") String processDefinitionId) {
         if (processDefinitionId == null || processDefinitionId.isEmpty()) {
-            return Response.status(Status.BAD_REQUEST).entity("Invalid process definition id: " + processDefinitionId)
+            return Response.status(Status.BAD_REQUEST).entity("Invalid process definition id: " + 
+                                                              processDefinitionId)
                     .build();
         }
         try {
@@ -143,15 +145,18 @@ public class SoMonitoringController {
                 final ProcessDefinitionDetail definitionDetail = response.get();
                 return Response.status(Status.OK).entity(definitionDetail).build();
             }
-            LOGGER.error("Unable to find process definition xml for processDefinitionId: {}", processDefinitionId);
+            LOGGER.error("Unable to find process definition xml for processDefinitionId: " + 
+                         processDefinitionId);
             return Response.status(Status.NO_CONTENT).build();
 
         } catch (final InvalidRestRequestException extensions) {
             final String message =
-                    "Unable to find process definition xml for processDefinitionId: {}" + processDefinitionId;
+                    "Unable to find process definition xml for processDefinitionId: {}" + 
+                processDefinitionId;
             return Response.status(Status.BAD_REQUEST).entity(message).build();
         } catch (final RestProcessingException restProcessingException) {
-            final String message = "Unable to get process definition xml for id: " + processDefinitionId;
+            final String message = "Unable to get process definition xml for id: " + 
+                processDefinitionId;
             LOGGER.error(message);
             return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
         }
@@ -170,11 +175,13 @@ public class SoMonitoringController {
                     camundaProcessDataServiceProvider.getActivityInstance(processInstanceId);
             return Response.status(Status.OK).entity(activityInstanceDetails).build();
         } catch (final InvalidRestRequestException extensions) {
-            final String message = "Unable to find activity instance for processInstanceId: " + processInstanceId;
+            final String message = "Unable to find activity instance for processInstanceId: " + 
+                processInstanceId;
             LOGGER.error(message);
             return Response.status(Status.BAD_REQUEST).entity(message).build();
         } catch (final RestProcessingException restProcessingException) {
-            final String message = "Unable to get activity instance detail for id: " + processInstanceId;
+            final String message = "Unable to get activity instance detail for id: " + 
+                processInstanceId;
             LOGGER.error(message);
             return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
         }
@@ -194,11 +201,13 @@ public class SoMonitoringController {
             return Response.status(Status.OK).entity(processInstanceVariable).build();
         } catch (final InvalidRestRequestException extensions) {
             final String message =
-                    "Unable to find process instance variables for processInstanceId: " + processInstanceId;
+                    "Unable to find process instance variables for processInstanceId: " + 
+                processInstanceId;
             LOGGER.error(message);
             return Response.status(Status.BAD_REQUEST).entity(message).build();
         } catch (final RestProcessingException restProcessingException) {
-            final String message = "Unable to get process instance variables for id: " + processInstanceId;
+            final String message = "Unable to get process instance variables for id: " + 
+                processInstanceId;
             LOGGER.error(message);
             return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
         }
@@ -217,17 +226,17 @@ public class SoMonitoringController {
         try {
             final List<SoInfraRequest> requests =
                     databaseServiceProvider.getSoInfraRequest(filters, startTime, endTime, maxResult);
-            LOGGER.info("result size: {}", requests.size());
+            LOGGER.info("result size: " + requests.size());
             return Response.status(Status.OK).entity(requests).build();
 
         } catch (final InvalidRestRequestException extensions) {
-            final String message = "Unable to search request for filters: " + filters + ", from: " + startTime
-                    + ", to: " + endTime + ", maxResult: " + maxResult;
+            final String message = "Unable to search request for filters: " + filters + ", from: " + 
+                startTime + ", to: " + endTime + ", maxResult: " + maxResult;
             LOGGER.error(message);
             return Response.status(Status.BAD_REQUEST).entity(message).build();
         } catch (final RestProcessingException restProcessingException) {
-            final String message = "Unable to search request for filters: " + filters + ", from: " + startTime
-                    + ", to: " + endTime + ", maxResult: " + maxResult;
+            final String message = "Unable to search request for filters: " + filters + ", from: " + 
+                startTime + ", to: " + endTime + ", maxResult: " + maxResult;
             LOGGER.error(message);
             return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
         }
index d9ec649..7864215 100644 (file)
       "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
       "dev": true
     },
+    "ngx-spinner": {
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/ngx-spinner/-/ngx-spinner-6.1.2.tgz",
+      "integrity": "sha512-j/R8T5vKvsLLib1pTxKLYK3GYAFXw5VoUJmaTlcocO6Yi4qIypfhmw9PX9triy7hWVGPu6cUzVs7g9cEG9OYBA==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
     "no-case": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
index c6f6f14..c793264 100644 (file)
@@ -26,6 +26,7 @@
     "bpmn-js": "^2.4.1",
     "core-js": "^2.5.4",
     "jquery": "^3.3.1",
+    "ngx-spinner": "^6.1.2",
     "rxjs": "^6.0.0",
     "toastr": "^2.1.4",
     "zone.js": "^0.8.26"
index c3a02b9..b9437cc 100644 (file)
@@ -40,6 +40,7 @@ import { MatFormFieldModule, MatInputModule } from '@angular/material';
 import { MatDatepickerModule } from '@angular/material/datepicker';\r
 import { MatNativeDateModule } from '@angular/material';\r
 import { MatCardModule } from '@angular/material/card';\r
+import { NgxSpinnerModule } from 'ngx-spinner';\r
 \r
 @NgModule({\r
   declarations: [\r
@@ -62,7 +63,8 @@ import { MatCardModule } from '@angular/material/card';
     MatInputModule,\r
     MatDatepickerModule,\r
     MatNativeDateModule,\r
-    MatCardModule\r
+    MatCardModule,\r
+    NgxSpinnerModule\r
   ],\r
   providers: [ToastrNotificationService],\r
   bootstrap: [AppComponent]\r
index fc682ac..45301c7 100644 (file)
@@ -97,3 +97,5 @@ SPDX-License-Identifier: Apache-2.0
     </mat-tab-group>\r
   </div>\r
 </div>\r
+\r
+<ngx-spinner bdColor="rgba(51, 51, 51, 0.8)" size="large" color="#00285f" type="ball-spin-clockwise-fade-rotating"></ngx-spinner>\r
index 9561e9a..4c19ba1 100644 (file)
@@ -33,6 +33,7 @@ import { ViewEncapsulation } from '@angular/core';
 import { MatTabsModule } from '@angular/material/tabs';\r
 import { VarInstance } from '../model/variableInstance.model';\r
 import { ToastrNotificationService } from '../toastr-notification-service.service';\r
+import { NgxSpinnerService } from 'ngx-spinner';\r
 \r
 @Component({\r
   selector: 'app-details',\r
@@ -63,7 +64,8 @@ export class DetailsComponent implements OnInit {
 \r
   displayedColumnsVariable = ['name', 'type', 'value'];\r
 \r
-  constructor(private route: ActivatedRoute, private data: DataService, private popup: ToastrNotificationService, private router: Router) { }\r
+  constructor(private route: ActivatedRoute, private data: DataService, private popup: ToastrNotificationService,\r
+    private router: Router, private spinner: NgxSpinnerService) { }\r
 \r
   getActInst(procInstId: string) {\r
     this.data.getActivityInstance(procInstId).subscribe(\r
@@ -104,12 +106,15 @@ export class DetailsComponent implements OnInit {
   }\r
 \r
   displayCamundaflow(bpmnXml, activities: ACTINST[], r: Router) {\r
+    this.spinner.show();\r
 \r
     this.bpmnViewer.importXML(bpmnXml, (error) => {\r
       if (error) {\r
         console.error('Unable to load BPMN flow ', error);\r
         this.popup.error('Unable to load BPMN flow ');\r
+        this.spinner.hide();\r
       } else {\r
+        this.spinner.hide();\r
         let canvas = this.bpmnViewer.get('canvas');\r
         var eventBus = this.bpmnViewer.get('eventBus');\r
         eventBus.on('element.click', function(e) {\r
@@ -118,6 +123,7 @@ export class DetailsComponent implements OnInit {
             if (a.activityId == e.element.id && a.calledProcessInstanceId !== null) {\r
               console.log("will drill down to : " + a.calledProcessInstanceId);\r
               r.navigate(['/details/' + a.calledProcessInstanceId]);\r
+              this.spinner.show();\r
             }\r
           });\r
         });\r
index 6adea3b..2b580e2 100644 (file)
@@ -50,26 +50,26 @@ SPDX-License-Identifier: Apache-2.0
         <input matInput #searchValueRI type="text" [(ngModel)]="searchData.requestId" placeholder="Request Id">\r
       </mat-form-field>\r
 \r
-      <!-- Angular Start Date Picker -->\r
-      <mat-form-field class="startDate">\r
-        <input matInput #startDate [matDatepicker]="picker" [(ngModel)]="searchData.startDate" placeholder="Choose a start date">\r
-        <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>\r
-        <mat-datepicker #picker></mat-datepicker>\r
-      </mat-form-field>\r
-\r
-      <!-- Dropdown box for Start Hour selection -->\r
-      <mat-form-field class="selectHour">\r
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedStartHour" name="hourFrom" placeholder="Select Hour">\r
-          <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option>\r
-        </mat-select>\r
-      </mat-form-field>\r
-\r
-      <!-- Dropdown box for Start Minute selection -->\r
-      <mat-form-field class="selectMinute">\r
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedStartMinute" name="minuteFrom" placeholder="Select Minute">\r
-          <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option>\r
-        </mat-select>\r
-      </mat-form-field>\r
+        <!-- Angular Start Date Picker -->\r
+        <mat-form-field class="startDate">\r
+          <input matInput #startDate [matDatepicker]="picker" [(ngModel)]="searchData.startDate" placeholder="Choose a start date">\r
+          <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>\r
+          <mat-datepicker #picker></mat-datepicker>\r
+        </mat-form-field>\r
+\r
+        <!-- Dropdown box for Start Hour selection -->\r
+        <mat-form-field class="selectHour">\r
+          <mat-select class="formatBox" [(ngModel)]="searchData.selectedStartHour" name="hourFrom" placeholder="Select Hour">\r
+            <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option>\r
+          </mat-select>\r
+        </mat-form-field>\r
+\r
+        <!-- Dropdown box for Start Minute selection -->\r
+        <mat-form-field class="selectMinute">\r
+          <mat-select class="formatBox" [(ngModel)]="searchData.selectedStartMinute" name="minuteFrom" placeholder="Select Minute">\r
+            <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option>\r
+          </mat-select>\r
+        </mat-form-field>\r
     </div>\r
 \r
     <!-- Dropdown Filter and TextBox for Service Name -->\r
@@ -83,26 +83,26 @@ SPDX-License-Identifier: Apache-2.0
         <input matInput #searchValueSN type="text" [(ngModel)]="searchData.serviceInstanceName" placeholder="Service Name">\r
       </mat-form-field>\r
 \r
-      <!-- Angular End Date Picker -->\r
-      <mat-form-field class="endDate">\r
-        <input matInput #endDate [matDatepicker]="endpicker" [(ngModel)]="searchData.endDate" placeholder="Choose an end date">\r
-        <mat-datepicker-toggle matSuffix [for]="endpicker"></mat-datepicker-toggle>\r
-        <mat-datepicker #endpicker></mat-datepicker>\r
-      </mat-form-field>\r
-\r
-      <!-- Dropdown box for End Hour selection -->\r
-      <mat-form-field class="selectHour">\r
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedEndHour" name="hourTo" placeholder="Select Hour">\r
-          <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option>\r
-        </mat-select>\r
-      </mat-form-field>\r
-\r
-      <!-- Dropdown box for End Minute selection -->\r
-      <mat-form-field class="selectMinute">\r
-        <mat-select class="formatBox" [(ngModel)]="searchData.selectedEndMinute" name="minuteTo" placeholder="Select Minute">\r
-          <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option>\r
-        </mat-select>\r
-      </mat-form-field>\r
+        <!-- Angular End Date Picker -->\r
+        <mat-form-field class="endDate">\r
+          <input matInput #endDate [matDatepicker]="endpicker" [(ngModel)]="searchData.endDate" placeholder="Choose an end date">\r
+          <mat-datepicker-toggle matSuffix [for]="endpicker"></mat-datepicker-toggle>\r
+          <mat-datepicker #endpicker></mat-datepicker>\r
+        </mat-form-field>\r
+\r
+        <!-- Dropdown box for End Hour selection -->\r
+        <mat-form-field class="selectHour">\r
+          <mat-select class="formatBox" [(ngModel)]="searchData.selectedEndHour" name="hourTo" placeholder="Select Hour">\r
+            <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option>\r
+          </mat-select>\r
+        </mat-form-field>\r
+\r
+        <!-- Dropdown box for End Minute selection -->\r
+        <mat-form-field class="selectMinute">\r
+          <mat-select class="formatBox" [(ngModel)]="searchData.selectedEndMinute" name="minuteTo" placeholder="Select Minute">\r
+            <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option>\r
+          </mat-select>\r
+        </mat-form-field>\r
     </div>\r
 \r
     <!-- Dropdown Filter for Status -->\r
@@ -165,23 +165,39 @@ SPDX-License-Identifier: Apache-2.0
 \r
       <mat-tab label="Service Statistics">\r
         <div id="servStats">\r
-          <p>Total: {{ totalVal }}</p>\r
-          <hr/>\r
-          <p>Complete: {{ completeVal }}</p>\r
-          <p><b> {{ percentageComplete }}%</b></p>\r
-          <hr/>\r
-          <p>Failed: {{ failedVal }}</p>\r
-          <p><b> {{ percentageFailed }}%</b></p>\r
-          <hr/>\r
-          <p>In Progress: {{ inProgressVal }}</p>\r
-          <hr/>\r
-          <p>Pending: {{ pendingVal }}</p>\r
-          <hr/>\r
-          <p>Unlocked: {{ unlockedVal }}</p>\r
+          <table class="statsTable">\r
+            <tbody>\r
+              <tr>\r
+                <td>Total: {{ totalVal }}</td>\r
+                <td></td>\r
+              </tr>\r
+              <tr>\r
+                <td>Complete: {{ completeVal }}</td>\r
+                <td> {{ percentageComplete }}%</td>\r
+              </tr>\r
+              <tr>\r
+                <td>Failed: {{ failedVal }}</td>\r
+                <td> {{ percentageFailed }}%</td>\r
+              </tr>\r
+              <tr>\r
+                <td>In Progress: {{ inProgressVal }}</td>\r
+                <td> {{ percentageInProg }}%</td>\r
+              </tr>\r
+              <tr>\r
+                <td>Pending: {{ pendingVal }}</td>\r
+                <td> {{ percentagePending }}%</td>\r
+              </tr>\r
+              <tr>\r
+                <td>Unlocked: {{ unlockedVal }}</td>\r
+                <td> {{ percentageUnlocked }}%</td>\r
+              </tr>\r
+            </tbody>\r
+          </table>\r
         </div>\r
       </mat-tab>\r
     </mat-tab-group>\r
   </div>\r
 </div>\r
 \r
+<ngx-spinner bdColor="rgba(51, 51, 51, 0.8)" size="large" color="#00285f" type="ball-spin-clockwise-fade-rotating"></ngx-spinner>\r
 <router-outlet></router-outlet>\r
index d475c52..923066f 100644 (file)
@@ -19,7 +19,6 @@ SPDX-License-Identifier: Apache-2.0
 \r
 @authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com\r
 */\r
-\r
 @import "~@angular/material/prebuilt-themes/indigo-pink.css";\r
 \r
 .searchArea {\r
@@ -77,7 +76,7 @@ SPDX-License-Identifier: Apache-2.0
 }\r
 \r
 .fa {\r
- float: left;\r
 float: left;\r
   width: 120px;\r
   padding: 10px;\r
   background: #2196F3;\r
@@ -103,28 +102,29 @@ form.example::after {
   display: inline-flex;\r
 }\r
 \r
-.startDate, .endDate{\r
+.endDate,\r
+.startDate {\r
   margin-left: 90px;\r
   width: 140px;\r
 }\r
 \r
-.selectHour, .selectMinute{\r
+.selectHour,\r
+.selectMinute {\r
   margin-left: 30px;\r
-  width: 100px\r
+  width: 100px;\r
 }\r
 \r
-#servStats{\r
+#servStats {\r
   background-color: white;\r
   padding: 10px;\r
   font-size: 17px;\r
   font-family: 'Montserrat', sans-serif;\r
 }\r
 \r
-hr {\r
-    display: block;\r
-    height: 1px;\r
-    border: 0;\r
-    border-top: 1px solid #ccc;\r
-    margin: 1em 0;\r
-    padding: 0;\r
+.statsTable {\r
+  td {\r
+    padding: 12px 80px 12px 12px;\r
+    text-align: left;\r
+    border-bottom: 1px solid #ccc;\r
+  }\r
 }\r
index dd08bb4..b8fac61 100644 (file)
@@ -35,9 +35,9 @@ import { SearchData } from '../model/searchData.model';
 import { MatDatepickerModule } from '@angular/material/datepicker';
 import { FormControl } from '@angular/forms';
 import { SearchRequest } from '../model/SearchRequest.model';
-import { ViewChild } from '@angular/core';
 import { ElementRef } from '@angular/core';
 import { Input } from '@angular/core';
+import { NgxSpinnerService } from 'ngx-spinner';
 
 @Component({
   selector: 'app-home',
@@ -56,6 +56,9 @@ export class HomeComponent implements OnInit {
   unlockedVal = 0;
   percentageComplete = 0;
   percentageFailed = 0;
+  percentageInProg = 0;
+  percentagePending = 0;
+  percentageUnlocked = 0;
 
   options = [{ name: "EQUAL", value: "EQ" }, { name: "NOT EQUAL", value: "NEQ" }, { name: "LIKE", value: "LIKE" }];
   statusOptions = [{ name: "ALL", value: "ALL" }, { name: "COMPLETE", value: "COMPLETE" }, { name: "IN_PROGRESS", value: "IN_PROGRESS" },
@@ -77,17 +80,22 @@ export class HomeComponent implements OnInit {
   displayedColumns = ['requestId', 'serviceInstanceId', 'serviceIstanceName', 'networkId', 'requestStatus', 'serviceType', 'startTime', 'endTime'];
 
   constructor(private route: ActivatedRoute, private data: DataService,
-    private router: Router, private popup: ToastrNotificationService) {
+    private router: Router, private popup: ToastrNotificationService,
+    private spinner: NgxSpinnerService) {
     this.searchData = new SearchData();
   }
 
   makeCall() {
+    this.spinner.show();
+
     var search = this.searchData.getSearchRequest().subscribe((result: SearchRequest) => {
 
       this.data.retrieveInstance(result.getFilters(), result.getStartTimeInMilliseconds(), result.getEndTimeInMilliseconds())
         .subscribe((data: Process[]) => {
+          this.spinner.hide();
           this.processData = data;
-          this.popup.info("Number of records found: " + data.length);
+          this.popup.info("Number of records found: " + data.length)
+
           // Calculate Statistics for Service Statistics tab
           this.completeVal = this.processData.filter(i => i.requestStatus === "COMPLETE").length;
           this.inProgressVal = this.processData.filter(i => i.requestStatus === "IN_PROGRESS").length;
@@ -95,28 +103,40 @@ export class HomeComponent implements OnInit {
           this.pendingVal = this.processData.filter(i => i.requestStatus === "PENDING").length;
           this.unlockedVal = this.processData.filter(i => i.requestStatus === "UNLOCKED").length;
           this.totalVal = this.processData.length;
-          this.percentageComplete = Math.round(((this.completeVal / this.totalVal) * 100) * 100) / 100;
-          this.percentageFailed = Math.round(((this.failedVal / this.totalVal) * 100) * 100) / 100;
 
+          // Calculate percentages to 2 decimal places and compare to 0 to avoid NaN error
+          if (this.totalVal != 0) {
+            this.percentageComplete = Math.round(((this.completeVal / this.totalVal) * 100) * 100) / 100;
+            this.percentageFailed = Math.round(((this.failedVal / this.totalVal) * 100) * 100) / 100;
+            this.percentageInProg = Math.round(((this.inProgressVal / this.totalVal) * 100) * 100) / 100;
+            this.percentagePending = Math.round(((this.pendingVal / this.totalVal) * 100) * 100) / 100;
+            this.percentageUnlocked = Math.round(((this.unlockedVal / this.totalVal) * 100) * 100) / 100;
+          }
           console.log("COMPLETE: " + this.completeVal);
           console.log("FAILED: " + this.failedVal);
         }, error => {
           console.log(error);
           this.popup.error("Unable to perform search Error code:" + error.status);
+          this.spinner.hide();
         });
     }, error => {
       console.log("Data validation error " + error);
       this.popup.error(error);
+      this.spinner.hide();
     });
   }
 
   getProcessIsntanceId(requestId: string) {
+    this.spinner.show();
+
     var response = this.data.getProcessInstanceId(requestId).subscribe((data) => {
       if (data.status == 200) {
+        this.spinner.hide();
         var processInstanceId = (data.body as ProcessInstanceId).processInstanceId;
         this.router.navigate(['/details/' + processInstanceId]);
       } else {
         this.popup.error('No process instance id found: ' + requestId);
+        this.spinner.hide();
         console.log('No process instance id found: ' + requestId);
       }
     });