New audit info screen changes 18/113018/11 7.0.0
authorRachitha Ramappa <rachitha.ramappa@att.com>
Wed, 23 Sep 2020 07:12:19 +0000 (12:42 +0530)
committerIkram Ikramullah <ikram@research.att.com>
Thu, 8 Oct 2020 10:53:16 +0000 (10:53 +0000)
Audit screen css changes and export mso status to external file

Change-Id: I71d577121e18090eab7a388ed01707823e45ac82
Issue-ID: VID-901
Signed-off-by: rachitha.ramappa@att.com
29 files changed:
vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java
vid-app-common/src/main/java/org/onap/vid/mso/rest/AsyncRequestStatus.java
vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestStatus.java
vid-app-common/src/main/java/org/onap/vid/properties/Features.java
vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java
vid-app-common/src/main/webapp/app/vid/styles/common.css
vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestsGetByRequestIdNew.java [new file with mode: 0644]
vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo.java [new file with mode: 0644]
vid-automation/src/main/java/org/onap/vid/model/asyncInstantiation/JobAuditStatus.java
vid-automation/src/main/java/vid/automation/test/infra/Features.java
vid-automation/src/main/java/vid/automation/test/test/InstantiationStatusTest.java
vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java
vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest2.java
vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationMacroApiTest.java
vid-automation/src/test/resources/a-la-carte/auditInfoMSOALaCarteNew.json [new file with mode: 0644]
vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts
vid-webpack-master/cypress/integration/iFrames/exportMSOStatusToCSV.e2e.ts [new file with mode: 0644]
vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/flags.cypress.json
vid-webpack-master/package.json
vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.scss
vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html
vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss
vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts
vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts
vid-webpack-master/src/app/shared/pipes/spaceToUnderscore/space-to-underscore.pipe.spec.ts [new file with mode: 0644]
vid-webpack-master/src/app/shared/pipes/spaceToUnderscore/space-to-underscore.pipe.ts [new file with mode: 0644]
vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts
vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts
vid-webpack-master/src/app/shared/shared.module.ts

index 012db5a..3f25b80 100644 (file)
@@ -126,6 +126,7 @@ public class JobAuditStatus extends VidBaseEntity {
                 .append(source, that.source)
                 .append(requestId, that.requestId)
                 .append(additionalInfo, that.additionalInfo)
+                .append(modelType, that.modelType)
                 // ordinal is not part of equality (similarly to "created" field)
                 .isEquals();
     }
@@ -138,6 +139,7 @@ public class JobAuditStatus extends VidBaseEntity {
                 .append(source)
                 .append(requestId)
                 .append(additionalInfo)
+                
                 // ordinal is not part of equality (similarly to "created" field)
                 .toHashCode();
     }
@@ -165,6 +167,52 @@ public class JobAuditStatus extends VidBaseEntity {
         }
     }
 
+    public JobAuditStatus(UUID requestId, String instanceName,
+                String modelType, String instanceType, String startTime,
+                String finishTime, String jobStatus, String additionalInfo) {
+         this.requestId = requestId;
+         this.instanceName = instanceName;
+         this.modelType = modelType;
+         this.instanceType = instanceType;
+
+         this.startTime = startTime;
+         this.finishTime = finishTime;
+
+         this.jobStatus = jobStatus;
+         this.additionalInfo = additionalInfo;
+         this.created = dateStringToDate(finishTime);
+    }
+    private String modelType;
+    private String startTime;
+    private String finishTime;
+
+    @Transient
+    public String getModelType() {
+        return modelType;
+    }
+
+    public void setModelType(String modelType) {
+        this.modelType = modelType;
+    }
+
+    @Transient
+    public String getFinishTime() {
+        return finishTime;
+    }
+
+    public void setFinishTime(String finishTime) {
+        this.finishTime = finishTime;
+    }
+
+    @Transient
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
 
     private UUID jobId;
     private String instanceName;
index 61e0d3a..09c571c 100644 (file)
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class AsyncRequestStatus  {
 
+
     public Request request;
 
     public AsyncRequestStatus(Request request) {
@@ -88,14 +89,61 @@ public class AsyncRequestStatus  {
     public static class RequestDetails {
 
         public RequestInfo requestInfo;
+        public ModelInfo modelInfo;
+        public RequestParameters requestParameters;
+        public Project project;
+        public OwningEntity owningEntity;
+        public CloudConfiguration cloudConfiguration;
+        public LineOfBusiness lineOfBusiness;
+        public Platform platform;
+
+    }
+
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class LineOfBusiness {
+        public String lineOfBusinessName;
+    }
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class CloudConfiguration {
+        public String tenantId;
+        public String tenantName;
+        public String cloudOwner;
+        public String lcpCloudRegionId;
+    }
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class Platform {
+        public String platformName;
     }
 
     @JsonIgnoreProperties(ignoreUnknown = true)
     public static class RequestInfo {
 
         public String instanceName;
+        public String source;
+    }
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class ModelInfo {
+        public String modelInvariantId;
+        public String modelType;
+        public String modelName;
+        public String modelVersion;
+        public String modelVersionId;
+        public String modelUuid;
+        public String modelInvariantUuid;
+    }
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class RequestParameters {
+        public String subscriptionServiceType;
+        public String aLaCarte;
+        public String testApi;
+    }
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class Project {
+        public String projectName;
+    }
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class OwningEntity {
+        public String owningEntityId;
+        public String owningEntityName;
     }
-
-
-
 }
index 29356aa..c574e5a 100644 (file)
@@ -50,6 +50,21 @@ public class RequestStatus {
         this.statusMessage = statusMessage;
         this.timestamp = timestamp;
     }
+    public RequestStatus(String requestState, String statusMessage, String timestamp, String flowStatus) {
+        this.requestState = requestState;
+        this.statusMessage = statusMessage;
+        this.timestamp = timestamp;
+        this.flowStatus = flowStatus;
+    }
+
+    /**
+      * short description of the flow status
+      * (Required)
+      *
+      */
+    @JsonProperty("flowStatus")
+    private String flowStatus;
+
 
     /**
      * percentage complete estimate from 0 to 100
@@ -215,6 +230,28 @@ public class RequestStatus {
         this.additionalProperties.put(name, value);
     }
 
+    /**
+      * additional descriptive information about the status
+      *
+      * @return
+      *     The flowStatus
+      */
+    @JsonProperty("flowStatus")
+    public String getFlowStatus() {
+        return flowStatus;
+    }
+
+    /**
+      * additional descriptive information about the status
+      *
+      * @param flowStatus
+      *     The flowStatus
+      */
+    @JsonProperty("flowStatus")
+    public void setFlowStatus(String flowStatus) {
+        this.flowStatus = flowStatus;
+    }
+
     @Override
     public int hashCode() {
         return new HashCodeBuilder().append(percentProgress).append(requestState).append(statusMessage).append(timestamp).append(wasRolledBack).append(additionalProperties).toHashCode();
@@ -229,7 +266,7 @@ public class RequestStatus {
             return false;
         }
         RequestStatus rhs = ((RequestStatus) other);
-        return new EqualsBuilder().append(percentProgress, rhs.percentProgress).append(requestState, rhs.requestState).append(statusMessage, rhs.statusMessage).append(timestamp, rhs.timestamp).append(wasRolledBack, rhs.wasRolledBack).append(additionalProperties, rhs.additionalProperties).isEquals();
+        return new EqualsBuilder().append(percentProgress, rhs.percentProgress).append(requestState, rhs.requestState).append(statusMessage, rhs.statusMessage).append(timestamp, rhs.timestamp).append(wasRolledBack, rhs.wasRolledBack).append(flowStatus, rhs.flowStatus).append(additionalProperties, rhs.additionalProperties).isEquals();
     }
 
 }
index 9d3faa0..6ff6157 100644 (file)
@@ -103,6 +103,7 @@ public enum Features implements Feature {
     FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP,
     FLAG_2008_REMOVE_PAUSE_INSTANTIATION,
     FLAG_2008_PAUSE_VFMODULE_INSTANTIATION_FAILURE,
+    FLAG_2011_EXPORT_MSO_STATUS,
     ;
 
     public boolean isActive() {
index 287a771..4f32eca 100644 (file)
@@ -30,7 +30,8 @@ import org.onap.vid.mso.*;
 import org.onap.vid.mso.rest.AsyncRequestStatus;
 import org.onap.vid.mso.rest.AsyncRequestStatusList;
 import org.springframework.stereotype.Service;
-
+import java.text.MessageFormat;
+import org.apache.commons.lang3.StringUtils;
 import javax.inject.Inject;
 import java.util.List;
 import java.util.Objects;
@@ -59,13 +60,13 @@ public class AuditServiceImpl implements AuditService{
 
     @Override
     public List<JobAuditStatus> getAuditStatusFromMsoByRequestId(UUID jobId, UUID requestId) {
-        String filter = "requestId:EQUALS:" + requestId;
+        String filter = "requestId:EQUALS:" + requestId + "&format=statusDetail";
         return getAuditStatusFromMso(jobId, filter, null);
     }
 
     @Override
     public List<JobAuditStatus> getAuditStatusFromMsoByInstanceId(JobAuditStatus.ResourceTypeFilter resourceTypeFilter, UUID instanceId, UUID jobId) {
-        String filter = resourceTypeFilter.getFilterBy() + ":EQUALS:" + instanceId;
+        String filter = resourceTypeFilter.getFilterBy() + ":EQUALS:" + instanceId + "&format=statusDetail";
         return getAuditStatusFromMso(jobId, filter, instanceId);
     }
 
@@ -156,10 +157,131 @@ public class AuditServiceImpl implements AuditService{
 
     protected List<JobAuditStatus> convertMsoResponseStatusToJobAuditStatus(List<AsyncRequestStatus> msoStatuses, String defaultName){
         return msoStatuses.stream().map(status ->
-                convertAsyncRequestStatusToJobAuditStatus(status, defaultName)
+                convertAsyncRequestStatusToJobAuditStatusAdditionalInfo(status, defaultName)
         ).collect(Collectors.toList());
     }
+    private JobAuditStatus convertAsyncRequestStatusToJobAuditStatusAdditionalInfo(AsyncRequestStatus status, String defaultName) {
+        if (status == null) {
+            return null;
+        }
+        UUID requestId = null;
+        String instanceName = defaultName;
+        String jobStatus = null;
+        String additionalInfo = null;
+        String finishTime = null;
+        String instanceType = null;
+        String modelType = "";
+        String startTime = null;
+        AsyncRequestStatus.Request request = status.request;
+        if (request != null) {
+            if (request.requestId != null) {
+                requestId = UUID.fromString(request.requestId);
+            }
+            instanceName = extractInstanceName(instanceName, request);
+            instanceType = request.requestType;
+            if (request.requestDetails != null && request.requestDetails.modelInfo != null) {
+                modelType = request.requestDetails.modelInfo.modelType;
+            }
+            startTime = request.startTime;
 
+            if (request.requestStatus != null) {
+                jobStatus = request.requestStatus.getRequestState();
+                additionalInfo = buildAdditionalInfo(request);
+
+                if (!request.requestStatus.getAdditionalProperties().isEmpty() &&
+                    request.requestStatus.getAdditionalProperties().get("finishTime") != null) {
+                    finishTime = request.requestStatus.getAdditionalProperties().get("finishTime").toString();
+                } else {
+                    finishTime = request.requestStatus.getTimestamp();
+                }
+            }
+        }
+        return new JobAuditStatus(requestId, instanceName, modelType, instanceType, startTime, finishTime,
+            jobStatus, additionalInfo);
+    }
+    private String buildAdditionalInfo(AsyncRequestStatus.Request request) {
+        String source = "";
+        String statusMessage = "";
+        String flowStatus = "";
+        String subscriptionServiceType = "";
+        String alacarte = "";
+        String testApi = "";
+        String projectName = "";
+        String owningEntityId = "";
+        String owningEntityName = "";
+        String requestScope = "";
+        String tenantId = "";
+        String tenantName = "";
+        String cloudOwner = "";
+        String platformName = "";
+        String lineOfBusiness = "";
+        MessageFormat mfBasedOnService = null;
+        String otherInfo = "";
+        MessageFormat mf = new MessageFormat("{0}" +
+            "{1}" +
+            "{2}" +
+            "{3}" +
+            "{4}" +
+            "{5}"+
+            "{6}");
+        requestScope = request.requestScope;
+        statusMessage = request.requestStatus != null ? "<b>StatusMessage:</b>"+request.requestStatus.getStatusMessage()+ "</br>": "";
+        if(request.requestDetails != null && request.requestDetails.requestInfo != null) {
+            source = "<b>Source:</b> "+request.requestDetails.requestInfo.source + "</br>";
+        }
+        if(request.requestStatus != null && request.requestStatus.getFlowStatus() != null) {
+            flowStatus = "<b>FlowStatus:</b> "+request.requestStatus.getFlowStatus()+ "</br>";
+        }
+        if(request.requestDetails != null && request.requestDetails.requestParameters != null &&
+            request.requestDetails.requestParameters.subscriptionServiceType != null) {
+            subscriptionServiceType = "<b>SubscriptionServiceType:</b> "+request.requestDetails.requestParameters.subscriptionServiceType+ "</br>";
+        }
+        if(request.requestDetails != null && request.requestDetails.requestParameters != null &&
+            request.requestDetails.requestParameters.aLaCarte != null) {
+            alacarte = "<b>Alacarte:</b> "+request.requestDetails.requestParameters.aLaCarte+ "</br>";
+        }
+        if(request.requestDetails != null && request.requestDetails.requestParameters != null &&
+            request.requestDetails.requestParameters.testApi != null) {
+            testApi = "<b>TestAPI:</b> "+request.requestDetails.requestParameters.testApi+ "</br>";
+        }
+
+        if(request.requestDetails != null) {
+            if("service".equals(requestScope)) {
+                mfBasedOnService = new MessageFormat("<b>ProjectName: {0}</br>" +
+                    "<b>OwningEntityId:</b> {1}</br>" +
+                    "<b>OwningEntityName:</b> {2}</br>");
+                projectName = request.requestDetails.project != null ? request.requestDetails.project.projectName : "";
+                owningEntityId = request.requestDetails.owningEntity != null ? request.requestDetails.owningEntity.owningEntityId : "";
+                owningEntityName = request.requestDetails.owningEntity != null ? request.requestDetails.owningEntity.owningEntityName : "";
+                Object[] arr1 = new Object[]{projectName, owningEntityId, owningEntityName};
+                otherInfo = mfBasedOnService.format(arr1);
+            } else if("vnf".equals(requestScope)) {
+                mfBasedOnService = new MessageFormat("<b>TenantId:</b> {0}</br>" +
+                    "<b>TenantName:</b> {1}</br>" +
+                    "<b>CloudOwner:</b> {2}</br>" +
+                    "<b>PlatformName:</b> {3}</br>" +
+                    "<b>LineOfBusiness:</b> {4}</br>");
+                tenantId = request.requestDetails.cloudConfiguration != null ? request.requestDetails.cloudConfiguration.tenantId : "";
+                tenantName= request.requestDetails.cloudConfiguration != null ? request.requestDetails.cloudConfiguration.tenantName : "";
+                cloudOwner= request.requestDetails.cloudConfiguration != null ? request.requestDetails.cloudConfiguration.cloudOwner : "";
+                platformName= request.requestDetails.platform != null ? request.requestDetails.platform.platformName : "";
+                lineOfBusiness= request.requestDetails.lineOfBusiness != null ? request.requestDetails.lineOfBusiness.lineOfBusinessName : "";
+                Object[] arr2 = new Object[]{tenantId, tenantName, cloudOwner,platformName,lineOfBusiness};
+                otherInfo = mfBasedOnService.format(arr2);
+            } else if("vfModule".equals(requestScope)) {
+                mfBasedOnService = new MessageFormat("<b>TenantId:</b> {0}</br>" +
+                    "<b>TenantName:</b> {1}</br>" +
+                    "<b>CloudOwner:</b> {2}</br>");
+                tenantId = request.requestDetails.cloudConfiguration != null ? request.requestDetails.cloudConfiguration.tenantId : "";
+                tenantName= request.requestDetails.cloudConfiguration != null ? request.requestDetails.cloudConfiguration.tenantName : "";
+                cloudOwner= request.requestDetails.cloudConfiguration != null ? request.requestDetails.cloudConfiguration.cloudOwner : "";
+                Object[] arr2 = new Object[]{tenantId, tenantName, cloudOwner};
+                otherInfo = mfBasedOnService.format(arr2);
+            }
+        }
+        Object[] objArray = {source, statusMessage, flowStatus, subscriptionServiceType, alacarte, testApi, otherInfo};
+        return StringUtils.chomp(mf.format(objArray));
+    }
     private JobAuditStatus convertAsyncRequestStatusToJobAuditStatus(AsyncRequestStatus status, String defaultName){
         if (status == null) {
             return null;
index f941034..8a8af5d 100644 (file)
@@ -106,7 +106,9 @@ body {
     flex: 1;
 }
 .content.modal-open .body-content-jsp{
-    margin: 0 auto;
+    margin-left: 3%;
+    margin-right: 3%;
+    margin-top: 0%;
 }
 .content .body-content-jsp > div.ng-scope > div.overlay{
     display: none;
@@ -125,9 +127,8 @@ body {
 
 .content.modal-open .body-content-jsp  .service-models-page  .service-model-content{
     z-index: 3005;
-    margin: 0 auto;
     flex: none;
-    width: 1100px;
+    width: 100%;
     padding: 10px;
 }
 .content.modal-open{
@@ -136,6 +137,8 @@ body {
 
 .body-content-jsp {
     flex: 1;
+    margin-left: 14%;
+    margin-right: 2%;
 }
 
 .button--inactive {
diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestsGetByRequestIdNew.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestsGetByRequestIdNew.java
new file mode 100644 (file)
index 0000000..ee52ea2
--- /dev/null
@@ -0,0 +1,92 @@
+package org.onap.simulator.presetGenerator.presets.mso;
+
+import static java.util.Collections.singletonList;
+
+import com.google.common.collect.ImmutableMap;
+import java.util.List;
+import java.util.Map;
+import org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset;
+import org.springframework.http.HttpMethod;
+
+public class PresetMSOOrchestrationRequestsGetByRequestIdNew extends BaseMSOPreset {
+
+    @Override
+    public HttpMethod getReqMethod() {
+        return HttpMethod.GET;
+    }
+
+    @Override
+    public String getReqPath() {
+        return getRootPath() + "/orchestrationRequests/v.";
+    }
+
+    @Override
+    public Map<String, List> getQueryParams() {
+        return ImmutableMap.of("filter", singletonList("requestId:EQUALS:7ba7900c-3e51-4d87-b1b4-3c53bdfaaa7d"),"format",singletonList("statusDetail"));
+    }
+
+    @Override
+    public Object getResponseBody() {
+        return "{\n"
+            + "    \"requestList\": [\n"
+            + "        {\n"
+            + "            \"request\": {\n"
+            + "                \"requestId\": \"7ba7900c-3e51-4d87-b1b4-3c53bdfaaa7d\",\n"
+            + "                \"startTime\": \"Mon, 24 Aug 2020 22:37:53 GMT\",\n"
+            + "                \"finishTime\": \"Mon, 24 Aug 2020 22:38:10 GMT\",\n"
+            + "                \"requestScope\": \"service\",\n"
+            + "                \"requestType\": \"createInstance\",\n"
+            + "                \"requestDetails\": {\n"
+            + "                    \"modelInfo\": {\n"
+            + "                        \"modelInvariantId\": \"2da904be-d12b-455c-8951-59ec7d207371\",\n"
+            + "                        \"modelType\": \"service\",\n"
+            + "                        \"modelName\": \"FMGW-NC2-507-SVC\",\n"
+            + "                        \"modelVersion\": \"12.0\",\n"
+            + "                        \"modelVersionId\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n"
+            + "                        \"modelUuid\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n"
+            + "                        \"modelInvariantUuid\": \"2da904be-d12b-455c-8951-59ec7d207371\"\n"
+            + "                    },\n"
+            + "                    \"requestInfo\": {\n"
+            + "                        \"source\": \"VID\",\n"
+            + "                        \"instanceName\": \"zrdm54cfmgw01_svc\",\n"
+            + "                        \"suppressRollback\": false,\n"
+            + "                        \"requestorId\": \"cb4449\"\n"
+            + "                    },\n"
+            + "                    \"subscriberInfo\": {\n"
+            + "                        \"globalSubscriberId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\"\n"
+            + "                    },\n"
+            + "                    \"requestParameters\": {\n"
+            + "                        \"subscriptionServiceType\": \"FIRSTNET\",\n"
+            + "                        \"aLaCarte\": true,\n"
+            + "                        \"testApi\": \"GR_API\"\n"
+            + "                    },\n"
+            + "                    \"project\": {\n"
+            + "                        \"projectName\": \"FIRSTNET\"\n"
+            + "                    },\n"
+            + "                    \"owningEntity\": {\n"
+            + "                        \"owningEntityId\": \"10c645f5-9924-4b89-bec0-b17cf49d3cad\",\n"
+            + "                        \"owningEntityName\": \"MOBILITY-CORE\"\n"
+            + "                    }\n"
+            + "                },\n"
+            + "                \"instanceReferences\": {\n"
+            + "                    \"serviceInstanceId\": \"937d9e51-03b9-416b-bccd-aa898a85d711\",\n"
+            + "                    \"serviceInstanceName\": \"zrdm54cfmgw01_svc\"\n"
+            + "                },\n"
+            + "                \"requestStatus\": {\n"
+            + "                    \"requestState\": \"COMPLETE\",\n"
+            + "                    \"statusMessage\": \"STATUS: ALaCarte-Service-createInstance request was executed correctly.\",\n"
+            + "                    \"percentProgress\": 100,\n"
+            + "                    \"timestamp\": \"Mon, 24 Aug 2020 22:38:10 GMT\",\n"
+            + "                    \"flowStatus\": \"Successfully completed all Building Blocks\"\n"
+            + "                },\n"
+            + "                \"requestProcessingData\": [\n"
+            + "                    {}\n"
+            + "                ]\n"
+            + "            }\n"
+            + "        }\n"
+            + "    ]\n"
+            + "}";
+        
+        
+    }
+}
diff --git a/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo.java b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo.java
new file mode 100644 (file)
index 0000000..d2baace
--- /dev/null
@@ -0,0 +1,445 @@
+package org.onap.simulator.presetGenerator.presets.mso;
+
+import com.google.common.collect.ImmutableMap;
+import org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset;
+import org.springframework.http.HttpMethod;
+
+import java.util.List;
+import java.util.Map;
+
+import static java.util.Collections.singletonList;
+
+public class PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo extends BaseMSOPreset {
+
+    private final String instanceId;
+
+    public PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo() {
+        this.instanceId = "937d9e51-03b9-416b-bccd-aa898a85d711";
+    }
+
+    public PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo(String instanceId) {
+        this.instanceId = instanceId;
+    }
+
+    @Override
+    public HttpMethod getReqMethod() {
+        return HttpMethod.GET;
+    }
+
+    @Override
+    public String getReqPath() {
+        return getRootPath() + "/orchestrationRequests/v.";
+    }
+
+    @Override
+    public Map<String, List> getQueryParams() {
+        return ImmutableMap.of("filter", singletonList("serviceInstanceId:EQUALS:" + instanceId ), "format",singletonList("statusDetail"));
+    }
+
+    @Override
+    public Object getResponseBody() {
+        String json = "{\n" +
+                "  \"requestList\": [\n" +
+                "    {\n" +
+                "      \"request\": {\n" +
+                "        \"requestId\": \"7ba7900c-3e51-4d87-b1b4-3c53bdfaaa7d\",\n" +
+                "        \"startTime\": \"Mon, 24 Aug 2020 22:37:53 GMT\",\n" +
+                "        \"finishTime\": \"Mon, 24 Aug 2020 22:38:10 GMT\",\n" +
+                "        \"requestScope\": \"service\",\n" +
+                "        \"requestType\": \"createInstance\",\n" +
+                "        \"requestDetails\": {\n" +
+                "          \"modelInfo\": {\n" +
+                "            \"modelInvariantId\": \"2da904be-d12b-455c-8951-59ec7d207371\",\n" +
+                "            \"modelType\": \"service\",\n" +
+                "            \"modelName\": \"FMGW-NC2-507-SVC\",\n" +
+                "            \"modelVersion\": \"12.0\",\n" +
+                "            \"modelVersionId\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n" +
+                "            \"modelUuid\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n" +
+                "            \"modelInvariantUuid\": \"2da904be-d12b-455c-8951-59ec7d207371\"\n" +
+                "          },\n" +
+                "          \"requestInfo\": {\n" +
+                "            \"source\": \"VID\",\n" +
+                "            \"instanceName\": \"zrdm54cfmgw01_svc\",\n" +
+                "            \"suppressRollback\": false,\n" +
+                "            \"requestorId\": \"cb4449\"\n" +
+                "          },\n" +
+                "          \"subscriberInfo\": {\n" +
+                "            \"globalSubscriberId\": \"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\"\n" +
+                "          },\n" +
+                "          \"requestParameters\": {\n" +
+                "            \"subscriptionServiceType\": \"FIRSTNET\",\n" +
+                "            \"aLaCarte\": true,\n" +
+                "            \"testApi\": \"GR_API\"\n" +
+                "          },\n" +
+                "          \"project\": {\n" +
+                "            \"projectName\": \"FIRSTNET\"\n" +
+                "          },\n" +
+                "          \"owningEntity\": {\n" +
+                "            \"owningEntityId\": \"10c645f5-9924-4b89-bec0-b17cf49d3cad\",\n" +
+                "            \"owningEntityName\": \"MOBILITY-CORE\"\n" +
+                "          }\n" +
+                "        },\n" +
+                "        \"instanceReferences\": {\n" +
+                "          \"serviceInstanceId\": \"937d9e51-03b9-416b-bccd-aa898a85d711\",\n" +
+                "          \"serviceInstanceName\": \"zrdm54cfmgw01_svc\"\n" +
+                "        },\n" +
+                "        \"requestStatus\": {\n" +
+                "          \"requestState\": \"COMPLETE\",\n" +
+                "          \"statusMessage\": \"STATUS: ALaCarte-Service-createInstance request was executed correctly.\",\n" +
+                "          \"percentProgress\": 100,\n" +
+                "          \"timestamp\": \"Mon, 24 Aug 2020 22:38:10 GMT\",\n" +
+                "          \"flowStatus\": \"Successfully completed all Building Blocks\"\n" +
+                "        },\n" +
+                "        \"requestProcessingData\": [\n" +
+                "          {\n" +
+                "            \"tag\": \"BPMNExecutionData\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"flowExecutionPath\": \"[{\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"3ae0a9af-08ac-4674-ac76-e53335bf3b10\\\",\\\"bpmn-flow-name\\\":\\\"AssignServiceInstanceATTBB\\\",\\\"key\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"7ba7900c-3e51-4d87-b1b4-3c53bdfaaa7d\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"},\\\"requestInfo\\\":{\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01_svc\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\"},\\\"subscriberInfo\\\":{\\\"globalSubscriberId\\\":\\\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\\\"},\\\"requestParameters\\\":{\\\"subscriptionServiceType\\\":\\\"FIRSTNET\\\",\\\"aLaCarte\\\":true,\\\"usePreload\\\":true,\\\"testApi\\\":\\\"GR_API\\\"},\\\"project\\\":{\\\"projectName\\\":\\\"FIRSTNET\\\"},\\\"owningEntity\\\":{\\\"owningEntityId\\\":\\\"10c645f5-9924-4b89-bec0-b17cf49d3cad\\\",\\\"owningEntityName\\\":\\\"MOBILITY-CORE\\\"}},\\\"configurationResourceKeys\\\":null}, {\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"c80fcbcc-f1e8-4908-abd2-9014df93a36b\\\",\\\"bpmn-flow-name\\\":\\\"ActivateServiceInstanceATTBB\\\",\\\"key\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"7ba7900c-3e51-4d87-b1b4-3c53bdfaaa7d\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"},\\\"requestInfo\\\":{\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01_svc\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\"},\\\"subscriberInfo\\\":{\\\"globalSubscriberId\\\":\\\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\\\"},\\\"requestParameters\\\":{\\\"subscriptionServiceType\\\":\\\"FIRSTNET\\\",\\\"aLaCarte\\\":true,\\\"usePreload\\\":true,\\\"testApi\\\":\\\"GR_API\\\"},\\\"project\\\":{\\\"projectName\\\":\\\"FIRSTNET\\\"},\\\"owningEntity\\\":{\\\"owningEntityId\\\":\\\"10c645f5-9924-4b89-bec0-b17cf49d3cad\\\",\\\"owningEntityName\\\":\\\"MOBILITY-CORE\\\"}},\\\"configurationResourceKeys\\\":null}]\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          }\n" +
+                "        ]\n" +
+                "      }\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"request\": {\n" +
+                "        \"requestId\": \"f1aa7175-c237-4b56-ba64-7cb728a38ff2\",\n" +
+                "        \"startTime\": \"Mon, 24 Aug 2020 22:38:18 GMT\",\n" +
+                "        \"finishTime\": \"Mon, 24 Aug 2020 22:44:24 GMT\",\n" +
+                "        \"requestScope\": \"vnf\",\n" +
+                "        \"requestType\": \"createInstance\",\n" +
+                "        \"requestDetails\": {\n" +
+                "          \"modelInfo\": {\n" +
+                "            \"modelCustomizationName\": \"FMGW-NC2-507 0\",\n" +
+                "            \"modelInvariantId\": \"bb32f2eb-8880-4993-b866-20835836fbf6\",\n" +
+                "            \"modelType\": \"vnf\",\n" +
+                "            \"modelName\": \"FMGW-NC2-507\",\n" +
+                "            \"modelVersion\": \"12.0\",\n" +
+                "            \"modelCustomizationUuid\": \"9b649dde-872b-417d-99bc-1f28916ebe50\",\n" +
+                "            \"modelVersionId\": \"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\",\n" +
+                "            \"modelCustomizationId\": \"9b649dde-872b-417d-99bc-1f28916ebe50\",\n" +
+                "            \"modelUuid\": \"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\",\n" +
+                "            \"modelInvariantUuid\": \"bb32f2eb-8880-4993-b866-20835836fbf6\",\n" +
+                "            \"modelInstanceName\": \"FMGW-NC2-507 0\"\n" +
+                "          },\n" +
+                "          \"requestInfo\": {\n" +
+                "            \"productFamilyId\": \"db171b8f-115c-4992-a2e3-ee04cae357e0\",\n" +
+                "            \"productFamilyName\": \"FIRSTNET\",\n" +
+                "            \"source\": \"VID\",\n" +
+                "            \"instanceName\": \"zrdm54cfmgw01\",\n" +
+                "            \"suppressRollback\": false,\n" +
+                "            \"requestorId\": \"cb4449\"\n" +
+                "          },\n" +
+                "          \"relatedInstanceList\": [\n" +
+                "            {\n" +
+                "              \"relatedInstance\": {\n" +
+                "                \"instanceId\": \"937d9e51-03b9-416b-bccd-aa898a85d711\",\n" +
+                "                \"modelInfo\": {\n" +
+                "                  \"modelInvariantId\": \"2da904be-d12b-455c-8951-59ec7d207371\",\n" +
+                "                  \"modelType\": \"service\",\n" +
+                "                  \"modelName\": \"FMGW-NC2-507-SVC\",\n" +
+                "                  \"modelVersion\": \"12.0\",\n" +
+                "                  \"modelVersionId\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n" +
+                "                  \"modelUuid\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n" +
+                "                  \"modelInvariantUuid\": \"2da904be-d12b-455c-8951-59ec7d207371\"\n" +
+                "                }\n" +
+                "              }\n" +
+                "            }\n" +
+                "          ],\n" +
+                "          \"cloudConfiguration\": {\n" +
+                "            \"tenantId\": \"ad299b37da30413391e9c28138f0b0cd\",\n" +
+                "            \"tenantName\": \"FNCORE-30052-D-MC-RDM54c\",\n" +
+                "            \"cloudOwner\": \"att-nc\",\n" +
+                "            \"lcpCloudRegionId\": \"rdm54c\"\n" +
+                "          },\n" +
+                "          \"requestParameters\": {\n" +
+                "            \"testApi\": \"GR_API\"\n" +
+                "          },\n" +
+                "          \"platform\": {\n" +
+                "            \"platformName\": \"FIRSTNET-DEDICATED,NETWORK-CLOUD\"\n" +
+                "          },\n" +
+                "          \"lineOfBusiness\": {\n" +
+                "            \"lineOfBusinessName\": \"FIRSTNET\"\n" +
+                "          }\n" +
+                "        },\n" +
+                "        \"instanceReferences\": {\n" +
+                "          \"serviceInstanceId\": \"937d9e51-03b9-416b-bccd-aa898a85d711\",\n" +
+                "          \"vnfInstanceId\": \"7a7387d0-f020-4297-9459-dfbf8869752e\",\n" +
+                "          \"vnfInstanceName\": \"zrdm54cfmgw01\"\n" +
+                "        },\n" +
+                "        \"requestStatus\": {\n" +
+                "          \"requestState\": \"COMPLETE\",\n" +
+                "          \"statusMessage\": \"STATUS: ALaCarte-Vnf-createInstance request was executed correctly.\",\n" +
+                "          \"percentProgress\": 100,\n" +
+                "          \"timestamp\": \"Mon, 24 Aug 2020 22:44:24 GMT\",\n" +
+                "          \"flowStatus\": \"Successfully completed all Building Blocks\"\n" +
+                "        },\n" +
+                "        \"requestProcessingData\": [\n" +
+                "          {\n" +
+                "            \"tag\": \"BPMNExecutionData\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"flowExecutionPath\": \"[{\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"c7586ffc-3955-4a09-a3f3-831abcaa8c89\\\",\\\"bpmn-flow-name\\\":\\\"AssignVnfBB\\\",\\\"key\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"f1aa7175-c237-4b56-ba64-7cb728a38ff2\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"FMGW-NC2-507-SVC/FMGW-NC2-507 0\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FMGW-NC2-507 0\\\",\\\"modelInvariantId\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelType\\\":\\\"vnf\\\",\\\"modelId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelName\\\":\\\"FMGW-NC2-507\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelCustomizationUuid\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelVersionId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelCustomizationId\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelUuid\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelInvariantUuid\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelInstanceName\\\":\\\"FMGW-NC2-507 0\\\"},\\\"requestInfo\\\":{\\\"productFamilyId\\\":\\\"db171b8f-115c-4992-a2e3-ee04cae357e0\\\",\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\",\\\"applicationId\\\":\\\"30626\\\"},\\\"relatedInstanceList\\\":[{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"}}}],\\\"cloudConfiguration\\\":{\\\"tenantId\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"cloudOwner\\\":\\\"att-nc\\\",\\\"lcpCloudRegionId\\\":\\\"rdm54c\\\"},\\\"requestParameters\\\":{\\\"testApi\\\":\\\"GR_API\\\"},\\\"platform\\\":{\\\"platformName\\\":\\\"FIRSTNET-DEDICATED,NETWORK-CLOUD\\\"},\\\"lineOfBusiness\\\":{\\\"lineOfBusinessName\\\":\\\"FIRSTNET\\\"}},\\\"configurationResourceKeys\\\":null}, {\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"389b67e7-3086-4f15-a718-67a0f0f8892c\\\",\\\"bpmn-flow-name\\\":\\\"ActivateVnfBB\\\",\\\"key\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"f1aa7175-c237-4b56-ba64-7cb728a38ff2\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"FMGW-NC2-507-SVC/FMGW-NC2-507 0\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FMGW-NC2-507 0\\\",\\\"modelInvariantId\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelType\\\":\\\"vnf\\\",\\\"modelId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelName\\\":\\\"FMGW-NC2-507\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelCustomizationUuid\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelVersionId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelCustomizationId\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelUuid\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelInvariantUuid\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelInstanceName\\\":\\\"FMGW-NC2-507 0\\\"},\\\"requestInfo\\\":{\\\"productFamilyId\\\":\\\"db171b8f-115c-4992-a2e3-ee04cae357e0\\\",\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\",\\\"applicationId\\\":\\\"30626\\\"},\\\"relatedInstanceList\\\":[{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"}}}],\\\"cloudConfiguration\\\":{\\\"tenantId\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"cloudOwner\\\":\\\"att-nc\\\",\\\"lcpCloudRegionId\\\":\\\"rdm54c\\\"},\\\"requestParameters\\\":{\\\"testApi\\\":\\\"GR_API\\\"},\\\"platform\\\":{\\\"platformName\\\":\\\"FIRSTNET-DEDICATED,NETWORK-CLOUD\\\"},\\\"lineOfBusiness\\\":{\\\"lineOfBusinessName\\\":\\\"FIRSTNET\\\"}},\\\"configurationResourceKeys\\\":null}]\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          }\n" +
+                "        ]\n" +
+                "      }\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"request\": {\n" +
+                "        \"requestId\": \"a4e43d9e-4813-42e4-94bf-c5c6f22ed0bc\",\n" +
+                "        \"startTime\": \"Mon, 24 Aug 2020 22:44:42 GMT\",\n" +
+                "        \"finishTime\": \"Mon, 24 Aug 2020 22:54:17 GMT\",\n" +
+                "        \"requestScope\": \"vfModule\",\n" +
+                "        \"requestType\": \"createInstance\",\n" +
+                "        \"requestDetails\": {\n" +
+                "          \"modelInfo\": {\n" +
+                "            \"modelCustomizationName\": \"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\",\n" +
+                "            \"modelInvariantId\": \"b5aa4157-b6dd-4f7c-86c0-468831bd2daa\",\n" +
+                "            \"modelType\": \"vfModule\",\n" +
+                "            \"modelName\": \"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\",\n" +
+                "            \"modelVersion\": \"1\",\n" +
+                "            \"modelCustomizationUuid\": \"d4887caf-1efc-4d89-8d95-fbad350a3b05\",\n" +
+                "            \"modelVersionId\": \"646ec275-e3c0-4a18-8ad4-c4ac41747d28\",\n" +
+                "            \"modelCustomizationId\": \"d4887caf-1efc-4d89-8d95-fbad350a3b05\",\n" +
+                "            \"modelUuid\": \"646ec275-e3c0-4a18-8ad4-c4ac41747d28\",\n" +
+                "            \"modelInvariantUuid\": \"b5aa4157-b6dd-4f7c-86c0-468831bd2daa\",\n" +
+                "            \"modelInstanceName\": \"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\"\n" +
+                "          },\n" +
+                "          \"requestInfo\": {\n" +
+                "            \"source\": \"VID\",\n" +
+                "            \"instanceName\": \"zrdm54cfmgw01_base\",\n" +
+                "            \"suppressRollback\": false,\n" +
+                "            \"requestorId\": \"cb4449\"\n" +
+                "          },\n" +
+                "          \"relatedInstanceList\": [\n" +
+                "            {\n" +
+                "              \"relatedInstance\": {\n" +
+                "                \"instanceId\": \"937d9e51-03b9-416b-bccd-aa898a85d711\",\n" +
+                "                \"modelInfo\": {\n" +
+                "                  \"modelInvariantId\": \"2da904be-d12b-455c-8951-59ec7d207371\",\n" +
+                "                  \"modelType\": \"service\",\n" +
+                "                  \"modelName\": \"FMGW-NC2-507-SVC\",\n" +
+                "                  \"modelVersion\": \"12.0\",\n" +
+                "                  \"modelVersionId\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n" +
+                "                  \"modelUuid\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n" +
+                "                  \"modelInvariantUuid\": \"2da904be-d12b-455c-8951-59ec7d207371\"\n" +
+                "                }\n" +
+                "              }\n" +
+                "            },\n" +
+                "            {\n" +
+                "              \"relatedInstance\": {\n" +
+                "                \"instanceId\": \"7a7387d0-f020-4297-9459-dfbf8869752e\",\n" +
+                "                \"modelInfo\": {\n" +
+                "                  \"modelCustomizationName\": \"FMGW-NC2-507 0\",\n" +
+                "                  \"modelInvariantId\": \"bb32f2eb-8880-4993-b866-20835836fbf6\",\n" +
+                "                  \"modelType\": \"vnf\",\n" +
+                "                  \"modelName\": \"FMGW-NC2-507\",\n" +
+                "                  \"modelVersion\": \"12.0\",\n" +
+                "                  \"modelCustomizationUuid\": \"9b649dde-872b-417d-99bc-1f28916ebe50\",\n" +
+                "                  \"modelVersionId\": \"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\",\n" +
+                "                  \"modelCustomizationId\": \"9b649dde-872b-417d-99bc-1f28916ebe50\",\n" +
+                "                  \"modelUuid\": \"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\",\n" +
+                "                  \"modelInvariantUuid\": \"bb32f2eb-8880-4993-b866-20835836fbf6\",\n" +
+                "                  \"modelInstanceName\": \"FMGW-NC2-507 0\"\n" +
+                "                }\n" +
+                "              }\n" +
+                "            }\n" +
+                "          ],\n" +
+                "          \"cloudConfiguration\": {\n" +
+                "            \"tenantId\": \"ad299b37da30413391e9c28138f0b0cd\",\n" +
+                "            \"tenantName\": \"FNCORE-30052-D-MC-RDM54c\",\n" +
+                "            \"cloudOwner\": \"att-nc\",\n" +
+                "            \"lcpCloudRegionId\": \"rdm54c\"\n" +
+                "          },\n" +
+                "          \"requestParameters\": {\n" +
+                "            \"usePreload\": true,\n" +
+                "            \"testApi\": \"GR_API\"\n" +
+                "          }\n" +
+                "        },\n" +
+                "        \"instanceReferences\": {\n" +
+                "          \"serviceInstanceId\": \"937d9e51-03b9-416b-bccd-aa898a85d711\",\n" +
+                "          \"vnfInstanceId\": \"7a7387d0-f020-4297-9459-dfbf8869752e\",\n" +
+                "          \"vfModuleInstanceId\": \"f6793e0d-b639-4d57-a16f-7c8c92e7f682\",\n" +
+                "          \"vfModuleInstanceName\": \"zrdm54cfmgw01_base\"\n" +
+                "        },\n" +
+                "        \"requestStatus\": {\n" +
+                "          \"requestState\": \"COMPLETE\",\n" +
+                "          \"statusMessage\": \"STATUS: ALaCarte-VfModule-createInstance request was executed correctly.\",\n" +
+                "          \"percentProgress\": 100,\n" +
+                "          \"timestamp\": \"Mon, 24 Aug 2020 22:54:17 GMT\",\n" +
+                "          \"flowStatus\": \"Successfully completed all Building Blocks\"\n" +
+                "        },\n" +
+                "        \"requestProcessingData\": [\n" +
+                "          {\n" +
+                "            \"groupingId\": \"fab36297-284c-4068-8382-480b8d1b46dc\",\n" +
+                "            \"tag\": \"pincFabricConfigRequest\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"requestAction\": \"activate\",\n" +
+                "                \"pincRequestId\": \"9a2ba39b-6695-4815-a332-e2aa570a6aa8\",\n" +
+                "                \"configurationId\": \"7df8e686-a7ad-412d-b92b-0855a1f25c10\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          },\n" +
+                "          {\n" +
+                "            \"groupingId\": \"71e99ecd-59e3-4809-8dc2-29e03074f5c7\",\n" +
+                "            \"tag\": \"pincFabricConfigRequest\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"requestAction\": \"activate\",\n" +
+                "                \"pincRequestId\": \"f36030d1-5e50-4cb9-b843-4beb1c052245\",\n" +
+                "                \"configurationId\": \"6f997f52-354f-4a37-a13c-38c6bc34fe29\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          },\n" +
+                "          {\n" +
+                "            \"groupingId\": \"599389a8-5243-45fd-94b6-e86cf1630574\",\n" +
+                "            \"tag\": \"pincFabricConfigRequest\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"requestAction\": \"assign\",\n" +
+                "                \"pincRequestId\": \"47ace6d9-a0c2-4151-b325-1138073a5c2d\",\n" +
+                "                \"configurationId\": \"6f997f52-354f-4a37-a13c-38c6bc34fe29\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          },\n" +
+                "          {\n" +
+                "            \"groupingId\": \"588263b8-4647-446c-977a-6e6e1f7359d5\",\n" +
+                "            \"tag\": \"pincFabricConfigRequest\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"requestAction\": \"assign\",\n" +
+                "                \"pincRequestId\": \"6161e5e2-9068-4ac4-bfef-696435b9353a\",\n" +
+                "                \"configurationId\": \"7df8e686-a7ad-412d-b92b-0855a1f25c10\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          },\n" +
+                "          {\n" +
+                "            \"groupingId\": \"0748f4b5-9332-4036-a9f3-87344665cc58\",\n" +
+                "            \"tag\": \"StackInformation\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"zrdm54cfmgw01_base\": \"{\\\"outputs\\\":[{\\\"description\\\":\\\"No description given\\\",\\\"output_value\\\":\\\"107.124.250.27\\\",\\\"output_key\\\":\\\"oam_management_v4_address\\\"}],\\\"description\\\":\\\"vEPG - virtio HOT Package without HOT ResourceGroups - EPG_cxp9026845_embms_155r21a115\\\",\\\"links\\\":[{\\\"href\\\":\\\"https://orchestration-nc.rdm54c.cci.att.com/v1/ad299b37da30413391e9c28138f0b0cd/stacks/zrdm54cfmgw01_base/0748f4b5-9332-4036-a9f3-87344665cc58\\\",\\\"rel\\\":\\\"self\\\"}],\\\"stack_status_reason\\\":\\\"Stack CREATE completed successfully\\\",\\\"stack_name\\\":\\\"zrdm54cfmgw01_base\\\",\\\"updated_time\\\":null,\\\"creation_time\\\":1598309163000,\\\"stack_status\\\":\\\"CREATE_COMPLETE\\\",\\\"id\\\":\\\"0748f4b5-9332-4036-a9f3-87344665cc58\\\",\\\"template_description\\\":\\\"vEPG - virtio HOT Package without HOT ResourceGroups - EPG_cxp9026845_embms_155r21a115\\\",\\\"stack_owner\\\":null,\\\"disable_rollback\\\":true,\\\"stack_user_project_id\\\":\\\"9ae57a367788477d9d989907078763e3\\\",\\\"timeout_mins\\\":30,\\\"project\\\":null,\\\"files\\\":null,\\\"parameters\\\":{\\\"OS::stack_id\\\":\\\"0748f4b5-9332-4036-a9f3-87344665cc58\\\",\\\"OS::project_id\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"OS::stack_name\\\":\\\"zrdm54cfmgw01_base\\\",\\\"availability_zone_0\\\":\\\"rdm54c-kvm-az01\\\",\\\"availability_zone_1\\\":\\\"rdm54c-kvm-az03\\\",\\\"VRP_compute_node_0\\\":\\\"rdm54r11c001.rdm54c.cci.att.com\\\",\\\"VRP_compute_node_1\\\":\\\"rdm54r13c001.rdm54c.cci.att.com\\\",\\\"VRP_flavor_name\\\":\\\"p1.c2r16d40.i2\\\",\\\"VRP_image_name\\\":\\\"FIRSTNET_EMBMS_epg_vrp_cxp9029285_155r21a122.qcow2\\\",\\\"VRP_names\\\":\\\"zrdm54cfmgw01vrp001,zrdm54cfmgw01vrp002\\\",\\\"vnf_id\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"vnf_name\\\":\\\"zrdm54cfmgw01\\\",\\\"vf_module_id\\\":\\\"f6793e0d-b639-4d57-a16f-7c8c92e7f682\\\",\\\"workload_context\\\":\\\"Production\\\",\\\"environment_context\\\":\\\"General_Revenue-Bearing\\\",\\\"VRP_oam_protected1_floating_ip\\\":\\\"107.124.250.27\\\",\\\"VRP_0_mate1_ip_0\\\":\\\"172.26.42.1\\\",\\\"VRP_1_mate1_ip_0\\\":\\\"172.26.42.2\\\",\\\"VRP_0_bp1_ip_0\\\":\\\"172.26.43.5\\\",\\\"VRP_1_bp1_ip_0\\\":\\\"172.26.43.6\\\",\\\"VRP_0_bp1_mac\\\":\\\"02:00:00:01:fc:01\\\",\\\"VRP_1_bp1_mac\\\":\\\"02:00:00:01:fd:01\\\",\\\"VRP_0_mate1_mac\\\":\\\"02:00:00:02:fc:fc\\\",\\\"VRP_1_mate1_mac\\\":\\\"02:00:00:02:fd:fc\\\",\\\"oam_protected1_net_name\\\":\\\"FNCORE-30052-D-MC-RDM54c_oam_protected_net_1\\\",\\\"VRP_oam_protected1_vlan_filter\\\":\\\"167\\\",\\\"VRP_oam_protected1_public_vlans\\\":\\\"167\\\",\\\"VRP_oam_protected1_private_vlans\\\":\\\"\\\",\\\"mate1_net_name\\\":\\\"FNCORE-30052-D-MC-RDM54c_int_mate_net_1\\\",\\\"VRP_mate1_vlan_filter\\\":\\\"616\\\",\\\"VRP_mate1_public_vlans\\\":\\\"616\\\",\\\"VRP_mate1_private_vlans\\\":\\\"\\\",\\\"bp1_net_name\\\":\\\"FNCORE-30052-D-MC-RDM54c_int_bp_net_1\\\",\\\"VRP_bp1_vlan_filter\\\":\\\"617\\\",\\\"VRP_bp1_public_vlans\\\":\\\"617\\\",\\\"VRP_bp1_private_vlans\\\":\\\"\\\"}}\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          },\n" +
+                "          {\n" +
+                "            \"tag\": \"BPMNExecutionData\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"flowExecutionPath\": \"[{\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"da597c7d-fbf7-4ef7-926b-4db4fca43022\\\",\\\"bpmn-flow-name\\\":\\\"AssignVfModuleBB\\\",\\\"key\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"a4e43d9e-4813-42e4-94bf-c5c6f22ed0bc\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"f6793e0d-b639-4d57-a16f-7c8c92e7f682\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"FMGW-NC2-507-SVC/FMGW-NC2-507 0\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\",\\\"modelInvariantId\\\":\\\"b5aa4157-b6dd-4f7c-86c0-468831bd2daa\\\",\\\"modelType\\\":\\\"vfModule\\\",\\\"modelId\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\",\\\"modelVersion\\\":\\\"1\\\",\\\"modelCustomizationUuid\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"modelVersionId\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelCustomizationId\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"modelUuid\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelInvariantUuid\\\":\\\"b5aa4157-b6dd-4f7c-86c0-468831bd2daa\\\",\\\"modelInstanceName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\"},\\\"requestInfo\\\":{\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01_base\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\"},\\\"relatedInstanceList\\\":[{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"}}},{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FMGW-NC2-507 0\\\",\\\"modelInvariantId\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelType\\\":\\\"vnf\\\",\\\"modelId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelName\\\":\\\"FMGW-NC2-507\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelCustomizationUuid\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelVersionId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelCustomizationId\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelUuid\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelInvariantUuid\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelInstanceName\\\":\\\"FMGW-NC2-507 0\\\"}}}],\\\"cloudConfiguration\\\":{\\\"tenantId\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"cloudOwner\\\":\\\"att-nc\\\",\\\"lcpCloudRegionId\\\":\\\"rdm54c\\\"},\\\"requestParameters\\\":{\\\"usePreload\\\":true,\\\"testApi\\\":\\\"GR_API\\\"}},\\\"configurationResourceKeys\\\":null}, {\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"8ca86f17-a20c-4507-9111-f5254c5a41e0\\\",\\\"bpmn-flow-name\\\":\\\"CreateVfModuleATTBB\\\",\\\"key\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"a4e43d9e-4813-42e4-94bf-c5c6f22ed0bc\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"f6793e0d-b639-4d57-a16f-7c8c92e7f682\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"FMGW-NC2-507-SVC/FMGW-NC2-507 0\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\",\\\"modelInvariantId\\\":\\\"b5aa4157-b6dd-4f7c-86c0-468831bd2daa\\\",\\\"modelType\\\":\\\"vfModule\\\",\\\"modelId\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\",\\\"modelVersion\\\":\\\"1\\\",\\\"modelCustomizationUuid\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"modelVersionId\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelCustomizationId\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"modelUuid\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelInvariantUuid\\\":\\\"b5aa4157-b6dd-4f7c-86c0-468831bd2daa\\\",\\\"modelInstanceName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\"},\\\"requestInfo\\\":{\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01_base\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\"},\\\"relatedInstanceList\\\":[{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"}}},{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FMGW-NC2-507 0\\\",\\\"modelInvariantId\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelType\\\":\\\"vnf\\\",\\\"modelId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelName\\\":\\\"FMGW-NC2-507\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelCustomizationUuid\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelVersionId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelCustomizationId\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelUuid\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelInvariantUuid\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelInstanceName\\\":\\\"FMGW-NC2-507 0\\\"}}}],\\\"cloudConfiguration\\\":{\\\"tenantId\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"cloudOwner\\\":\\\"att-nc\\\",\\\"lcpCloudRegionId\\\":\\\"rdm54c\\\"},\\\"requestParameters\\\":{\\\"usePreload\\\":true,\\\"testApi\\\":\\\"GR_API\\\"}},\\\"configurationResourceKeys\\\":null}, {\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"858d9a30-8ed2-477b-a8a4-23d5627d0e85\\\",\\\"bpmn-flow-name\\\":\\\"ActivateVfModuleBB\\\",\\\"key\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"a4e43d9e-4813-42e4-94bf-c5c6f22ed0bc\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"f6793e0d-b639-4d57-a16f-7c8c92e7f682\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"FMGW-NC2-507-SVC/FMGW-NC2-507 0\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\",\\\"modelInvariantId\\\":\\\"b5aa4157-b6dd-4f7c-86c0-468831bd2daa\\\",\\\"modelType\\\":\\\"vfModule\\\",\\\"modelId\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\",\\\"modelVersion\\\":\\\"1\\\",\\\"modelCustomizationUuid\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"modelVersionId\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelCustomizationId\\\":\\\"d4887caf-1efc-4d89-8d95-fbad350a3b05\\\",\\\"modelUuid\\\":\\\"646ec275-e3c0-4a18-8ad4-c4ac41747d28\\\",\\\"modelInvariantUuid\\\":\\\"b5aa4157-b6dd-4f7c-86c0-468831bd2daa\\\",\\\"modelInstanceName\\\":\\\"FmgwNc2507..mbmsgw_vrp_v2_54c_base_0824..module-14\\\"},\\\"requestInfo\\\":{\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01_base\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\"},\\\"relatedInstanceList\\\":[{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"}}},{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FMGW-NC2-507 0\\\",\\\"modelInvariantId\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelType\\\":\\\"vnf\\\",\\\"modelId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelName\\\":\\\"FMGW-NC2-507\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelCustomizationUuid\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelVersionId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelCustomizationId\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelUuid\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelInvariantUuid\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelInstanceName\\\":\\\"FMGW-NC2-507 0\\\"}}}],\\\"cloudConfiguration\\\":{\\\"tenantId\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"cloudOwner\\\":\\\"att-nc\\\",\\\"lcpCloudRegionId\\\":\\\"rdm54c\\\"},\\\"requestParameters\\\":{\\\"usePreload\\\":true,\\\"testApi\\\":\\\"GR_API\\\"}},\\\"configurationResourceKeys\\\":null}]\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          }\n" +
+                "        ]\n" +
+                "      }\n" +
+                "    },\n" +
+                "    {\n" +
+                "      \"request\": {\n" +
+                "        \"requestId\": \"1fc2ef3b-26f0-4e62-a00a-6a31502d39e2\",\n" +
+                "        \"startTime\": \"Mon, 24 Aug 2020 22:54:29 GMT\",\n" +
+                "        \"finishTime\": \"Mon, 24 Aug 2020 22:56:35 GMT\",\n" +
+                "        \"requestScope\": \"vfModule\",\n" +
+                "        \"requestType\": \"createInstance\",\n" +
+                "        \"requestDetails\": {\n" +
+                "          \"modelInfo\": {\n" +
+                "            \"modelCustomizationName\": \"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\",\n" +
+                "            \"modelInvariantId\": \"19ad8bd1-9d83-43a1-94fa-bc5ee0bdd52a\",\n" +
+                "            \"modelType\": \"vfModule\",\n" +
+                "            \"modelName\": \"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\",\n" +
+                "            \"modelVersion\": \"2\",\n" +
+                "            \"modelCustomizationUuid\": \"15bd6af8-aff5-4538-8b14-c92986ea2d4b\",\n" +
+                "            \"modelVersionId\": \"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\",\n" +
+                "            \"modelCustomizationId\": \"15bd6af8-aff5-4538-8b14-c92986ea2d4b\",\n" +
+                "            \"modelUuid\": \"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\",\n" +
+                "            \"modelInvariantUuid\": \"19ad8bd1-9d83-43a1-94fa-bc5ee0bdd52a\",\n" +
+                "            \"modelInstanceName\": \"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\"\n" +
+                "          },\n" +
+                "          \"requestInfo\": {\n" +
+                "            \"source\": \"VID\",\n" +
+                "            \"instanceName\": \"zrdm54cfmgw01_sup_1\",\n" +
+                "            \"suppressRollback\": false,\n" +
+                "            \"requestorId\": \"cb4449\"\n" +
+                "          },\n" +
+                "          \"relatedInstanceList\": [\n" +
+                "            {\n" +
+                "              \"relatedInstance\": {\n" +
+                "                \"instanceId\": \"937d9e51-03b9-416b-bccd-aa898a85d711\",\n" +
+                "                \"modelInfo\": {\n" +
+                "                  \"modelInvariantId\": \"2da904be-d12b-455c-8951-59ec7d207371\",\n" +
+                "                  \"modelType\": \"service\",\n" +
+                "                  \"modelName\": \"FMGW-NC2-507-SVC\",\n" +
+                "                  \"modelVersion\": \"12.0\",\n" +
+                "                  \"modelVersionId\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n" +
+                "                  \"modelUuid\": \"c40d56a6-310c-4db9-8455-0aa723d36d53\",\n" +
+                "                  \"modelInvariantUuid\": \"2da904be-d12b-455c-8951-59ec7d207371\"\n" +
+                "                }\n" +
+                "              }\n" +
+                "            },\n" +
+                "            {\n" +
+                "              \"relatedInstance\": {\n" +
+                "                \"instanceId\": \"7a7387d0-f020-4297-9459-dfbf8869752e\",\n" +
+                "                \"modelInfo\": {\n" +
+                "                  \"modelCustomizationName\": \"FMGW-NC2-507 0\",\n" +
+                "                  \"modelInvariantId\": \"bb32f2eb-8880-4993-b866-20835836fbf6\",\n" +
+                "                  \"modelType\": \"vnf\",\n" +
+                "                  \"modelName\": \"FMGW-NC2-507\",\n" +
+                "                  \"modelVersion\": \"12.0\",\n" +
+                "                  \"modelCustomizationUuid\": \"9b649dde-872b-417d-99bc-1f28916ebe50\",\n" +
+                "                  \"modelVersionId\": \"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\",\n" +
+                "                  \"modelCustomizationId\": \"9b649dde-872b-417d-99bc-1f28916ebe50\",\n" +
+                "                  \"modelUuid\": \"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\",\n" +
+                "                  \"modelInvariantUuid\": \"bb32f2eb-8880-4993-b866-20835836fbf6\",\n" +
+                "                  \"modelInstanceName\": \"FMGW-NC2-507 0\"\n" +
+                "                }\n" +
+                "              }\n" +
+                "            }\n" +
+                "          ],\n" +
+                "          \"cloudConfiguration\": {\n" +
+                "            \"tenantId\": \"ad299b37da30413391e9c28138f0b0cd\",\n" +
+                "            \"tenantName\": \"FNCORE-30052-D-MC-RDM54c\",\n" +
+                "            \"cloudOwner\": \"att-nc\",\n" +
+                "            \"lcpCloudRegionId\": \"rdm54c\"\n" +
+                "          },\n" +
+                "          \"requestParameters\": {\n" +
+                "            \"usePreload\": true,\n" +
+                "            \"testApi\": \"GR_API\"\n" +
+                "          }\n" +
+                "        },\n" +
+                "        \"instanceReferences\": {\n" +
+                "          \"serviceInstanceId\": \"937d9e51-03b9-416b-bccd-aa898a85d711\",\n" +
+                "          \"vnfInstanceId\": \"7a7387d0-f020-4297-9459-dfbf8869752e\",\n" +
+                "          \"vfModuleInstanceId\": \"fde94d73-6fab-4b9e-9d48-01ca0840ca88\",\n" +
+                "          \"vfModuleInstanceName\": \"zrdm54cfmgw01_sup_1\"\n" +
+                "        },\n" +
+                "        \"requestStatus\": {\n" +
+                "          \"requestState\": \"ROLLED_BACK_TO_ASSIGNED\",\n" +
+                "          \"statusMessage\": \"STATUS: Error Source: OPENSTACK, Error Message: Received vfModuleException from VnfAdapter: category='INTERNAL' message='Exception during create VF 400 Bad Request: The server could not comply with the request since it is either malformed or otherwise incorrect., error.type=UserParameterMissing, error.message=The Parameter (VSFO_CP0_compute_node) was not provided.' rolledBack='true'\",\n" +
+                "          \"percentProgress\": 100,\n" +
+                "          \"timestamp\": \"Mon, 24 Aug 2020 22:56:35 GMT\",\n" +
+                "          \"extSystemErrorSource\": \"OPENSTACK\",\n" +
+                "          \"flowStatus\": \"All Rollback flows have completed successfully\",\n" +
+                "          \"rollbackStatusMessage\": \"Rollback has been completed successfully.\"\n" +
+                "        },\n" +
+                "        \"requestProcessingData\": [\n" +
+                "          {\n" +
+                "            \"tag\": \"BPMNExecutionData\",\n" +
+                "            \"dataPairs\": [\n" +
+                "              {\n" +
+                "                \"flowExecutionPath\": \"[{\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"32818ded-88da-43d9-b687-ef2de6c9c809\\\",\\\"bpmn-flow-name\\\":\\\"AssignVfModuleBB\\\",\\\"key\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"1fc2ef3b-26f0-4e62-a00a-6a31502d39e2\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"fde94d73-6fab-4b9e-9d48-01ca0840ca88\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"FMGW-NC2-507-SVC/FMGW-NC2-507 0\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\",\\\"modelInvariantId\\\":\\\"19ad8bd1-9d83-43a1-94fa-bc5ee0bdd52a\\\",\\\"modelType\\\":\\\"vfModule\\\",\\\"modelId\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\",\\\"modelVersion\\\":\\\"2\\\",\\\"modelCustomizationUuid\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"modelVersionId\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelCustomizationId\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"modelUuid\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelInvariantUuid\\\":\\\"19ad8bd1-9d83-43a1-94fa-bc5ee0bdd52a\\\",\\\"modelInstanceName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\"},\\\"requestInfo\\\":{\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01_sup_1\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\"},\\\"relatedInstanceList\\\":[{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"}}},{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FMGW-NC2-507 0\\\",\\\"modelInvariantId\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelType\\\":\\\"vnf\\\",\\\"modelId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelName\\\":\\\"FMGW-NC2-507\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelCustomizationUuid\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelVersionId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelCustomizationId\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelUuid\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelInvariantUuid\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelInstanceName\\\":\\\"FMGW-NC2-507 0\\\"}}}],\\\"cloudConfiguration\\\":{\\\"tenantId\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"cloudOwner\\\":\\\"att-nc\\\",\\\"lcpCloudRegionId\\\":\\\"rdm54c\\\"},\\\"requestParameters\\\":{\\\"usePreload\\\":true,\\\"testApi\\\":\\\"GR_API\\\"}},\\\"configurationResourceKeys\\\":null}, {\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"7954dc2e-f0fc-44f2-b34c-af1d131d2e6c\\\",\\\"bpmn-flow-name\\\":\\\"CreateVfModuleATTBB\\\",\\\"key\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"1fc2ef3b-26f0-4e62-a00a-6a31502d39e2\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"fde94d73-6fab-4b9e-9d48-01ca0840ca88\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"FMGW-NC2-507-SVC/FMGW-NC2-507 0\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\",\\\"modelInvariantId\\\":\\\"19ad8bd1-9d83-43a1-94fa-bc5ee0bdd52a\\\",\\\"modelType\\\":\\\"vfModule\\\",\\\"modelId\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\",\\\"modelVersion\\\":\\\"2\\\",\\\"modelCustomizationUuid\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"modelVersionId\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelCustomizationId\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"modelUuid\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelInvariantUuid\\\":\\\"19ad8bd1-9d83-43a1-94fa-bc5ee0bdd52a\\\",\\\"modelInstanceName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\"},\\\"requestInfo\\\":{\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01_sup_1\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\"},\\\"relatedInstanceList\\\":[{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"}}},{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FMGW-NC2-507 0\\\",\\\"modelInvariantId\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelType\\\":\\\"vnf\\\",\\\"modelId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelName\\\":\\\"FMGW-NC2-507\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelCustomizationUuid\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelVersionId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelCustomizationId\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelUuid\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelInvariantUuid\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelInstanceName\\\":\\\"FMGW-NC2-507 0\\\"}}}],\\\"cloudConfiguration\\\":{\\\"tenantId\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"cloudOwner\\\":\\\"att-nc\\\",\\\"lcpCloudRegionId\\\":\\\"rdm54c\\\"},\\\"requestParameters\\\":{\\\"usePreload\\\":true,\\\"testApi\\\":\\\"GR_API\\\"}},\\\"configurationResourceKeys\\\":null}, {\\\"buildingBlock\\\":{\\\"mso-id\\\":\\\"b5885412-8ecf-47fc-80d5-c4de8b4913f8\\\",\\\"bpmn-flow-name\\\":\\\"ActivateVfModuleBB\\\",\\\"key\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"is-virtual-link\\\":false,\\\"virtual-link-key\\\":null,\\\"scope\\\":null,\\\"action\\\":null},\\\"requestId\\\":\\\"1fc2ef3b-26f0-4e62-a00a-6a31502d39e2\\\",\\\"apiVersion\\\":\\\"7\\\",\\\"resourceId\\\":\\\"fde94d73-6fab-4b9e-9d48-01ca0840ca88\\\",\\\"requestAction\\\":\\\"createInstance\\\",\\\"vnfType\\\":\\\"FMGW-NC2-507-SVC/FMGW-NC2-507 0\\\",\\\"oldVolumeGroupName\\\":null,\\\"aLaCarte\\\":true,\\\"homing\\\":false,\\\"workflowResourceIds\\\":{\\\"serviceInstanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"pnfId\\\":null,\\\"vnfId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"networkId\\\":\\\"\\\",\\\"volumeGroupId\\\":\\\"\\\",\\\"vfModuleId\\\":\\\"\\\",\\\"networkCollectionId\\\":null,\\\"configurationId\\\":null,\\\"instanceGroupId\\\":\\\"\\\"},\\\"requestDetails\\\":{\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\",\\\"modelInvariantId\\\":\\\"19ad8bd1-9d83-43a1-94fa-bc5ee0bdd52a\\\",\\\"modelType\\\":\\\"vfModule\\\",\\\"modelId\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\",\\\"modelVersion\\\":\\\"2\\\",\\\"modelCustomizationUuid\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"modelVersionId\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelCustomizationId\\\":\\\"15bd6af8-aff5-4538-8b14-c92986ea2d4b\\\",\\\"modelUuid\\\":\\\"8c7aa631-d5e2-49ae-832b-d5b1b5c8cd36\\\",\\\"modelInvariantUuid\\\":\\\"19ad8bd1-9d83-43a1-94fa-bc5ee0bdd52a\\\",\\\"modelInstanceName\\\":\\\"FmgwNc2507..mbmsgw_scp_v2_54c_0820..module-13\\\"},\\\"requestInfo\\\":{\\\"source\\\":\\\"VID\\\",\\\"instanceName\\\":\\\"zrdm54cfmgw01_sup_1\\\",\\\"suppressRollback\\\":false,\\\"requestorId\\\":\\\"cb4449\\\"},\\\"relatedInstanceList\\\":[{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"937d9e51-03b9-416b-bccd-aa898a85d711\\\",\\\"modelInfo\\\":{\\\"modelInvariantId\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\",\\\"modelType\\\":\\\"service\\\",\\\"modelId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelName\\\":\\\"FMGW-NC2-507-SVC\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelVersionId\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelUuid\\\":\\\"c40d56a6-310c-4db9-8455-0aa723d36d53\\\",\\\"modelInvariantUuid\\\":\\\"2da904be-d12b-455c-8951-59ec7d207371\\\"}}},{\\\"relatedInstance\\\":{\\\"instanceId\\\":\\\"7a7387d0-f020-4297-9459-dfbf8869752e\\\",\\\"modelInfo\\\":{\\\"modelCustomizationName\\\":\\\"FMGW-NC2-507 0\\\",\\\"modelInvariantId\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelType\\\":\\\"vnf\\\",\\\"modelId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelName\\\":\\\"FMGW-NC2-507\\\",\\\"modelVersion\\\":\\\"12.0\\\",\\\"modelCustomizationUuid\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelVersionId\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelCustomizationId\\\":\\\"9b649dde-872b-417d-99bc-1f28916ebe50\\\",\\\"modelUuid\\\":\\\"94102fa8-6c0a-44ad-95ef-3a994e2aaf07\\\",\\\"modelInvariantUuid\\\":\\\"bb32f2eb-8880-4993-b866-20835836fbf6\\\",\\\"modelInstanceName\\\":\\\"FMGW-NC2-507 0\\\"}}}],\\\"cloudConfiguration\\\":{\\\"tenantId\\\":\\\"ad299b37da30413391e9c28138f0b0cd\\\",\\\"cloudOwner\\\":\\\"att-nc\\\",\\\"lcpCloudRegionId\\\":\\\"rdm54c\\\"},\\\"requestParameters\\\":{\\\"usePreload\\\":true,\\\"testApi\\\":\\\"GR_API\\\"}},\\\"configurationResourceKeys\\\":null}]\"\n" +
+                "              }\n" +
+                "            ]\n" +
+                "          }\n" +
+                "        ]\n" +
+                "      }\n" +
+                "    }\n" +
+                "  ]\n" +
+                "}";
+        return json;
+        
+        
+    }
+}
index b012628..df9d505 100644 (file)
@@ -39,7 +39,16 @@ public class JobAuditStatus {
         this.isFinal = isFinal;
     }
 
-
+    public JobAuditStatus(UUID requestId, String instanceName, String modelType, String instanceType, String startTime, String finishTime, String jobStatus, String additionalInfo) {
+        this.requestId = requestId;
+        this.instanceName = instanceName;
+        this.modelType = modelType;
+        this.instanceType = instanceType;
+        this.startTime = startTime;
+        this.finishTime = finishTime;
+        this.jobStatus = jobStatus;
+        this.additionalInfo = additionalInfo;
+    }
 
 
 
@@ -93,6 +102,34 @@ public class JobAuditStatus {
     public void setFinal(Boolean aFinal) {
         isFinal = aFinal;
     }
+    private String startTime;
+    private String finishTime;
+
+    public void setStartTime(String startTime) {
+            this.startTime = startTime;
+    }
+
+    public void setFinishTime(String finishTime) {
+            this.finishTime = finishTime;
+    }
+
+    public void setModelType(String modelType) {
+            this.modelType = modelType;
+    }
+
+    private String modelType;
+
+    public String getStartTime() {
+            return startTime;
+    }
+
+    public String getFinishTime() {
+            return finishTime;
+    }
+
+    public String getModelType() {
+            return modelType;
+    }
 
     @Override
     public String toString() {
@@ -122,7 +159,8 @@ public class JobAuditStatus {
                 .append(requestId, that.requestId)
                 .append(additionalInfo, that.additionalInfo)
                 .append(instanceName, that.instanceName)
-                .append(isFinal, that.isFinal)
+                .append(modelType, that.modelType)
+                //.append(isFinal, that.isFinal)
                 .isEquals();
     }
 
index ba7ebdf..b6afed5 100644 (file)
@@ -72,6 +72,7 @@ public enum Features implements Feature {
     FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP,
     FLAG_2008_REMOVE_PAUSE_INSTANTIATION,
     FLAG_2008_PAUSE_VFMODULE_INSTANTIATION_FAILURE,
+    FLAG_2011_EXPORT_MSO_STATUS,
     ;
     public boolean isActive() {
         return FeatureContext.getFeatureManager().isActive(this);
index 70fe620..18d8a04 100644 (file)
@@ -131,11 +131,8 @@ public class InstantiationStatusTest extends VidBaseTestCase {
     private void checkFailedAuditInfoOnRetry(String instanceName, String requestId, String message) {
         GeneralUIUtils.ultimateWait();
 
-        WebElement webElement = Get.byTestId("model-item-value-instance_name");
-        assertEquals(webElement.getText(), instanceName, "Instance Name must be equal");
-
         WebElement msoTableElement = Get.byId("service-instantiation-audit-info-mso");
-        assertEquals(3, msoTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "Audit info MSO table must contain 3 columns");
+        assertEquals(7, msoTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "Audit info MSO table must contain 7 columns");
         assertEquals(requestId, msoTableElement.findElement(By.id("msoRequestId")).getText(), "Audit info Request Id is not equal");
         assertEquals("Failed", msoTableElement.findElement(By.id("msoJobStatus")).getText(), "Audit info Job Status is not equal");
         assertEquals(message, msoTableElement.findElement(By.id("msoAdditionalInfo")).getText(), "Audit info AdditionalInfo is not equal");
index 07fd378..32649c1 100644 (file)
@@ -872,27 +872,8 @@ public class NewServiceInstanceTest extends ModernUITestBase {
 
     private void checkAuditInfoModal(String actualInstanceName, Integer i, String[] statuses) {
 
-        Wait.waitByTestId("vidJobStatus", 10);
-
-        WebElement webElement = Get.byTestId("model-item-value-serviceInstanceName");
-        assertEquals(webElement.getText(), actualInstanceName, "Service Instance Name must be equal");
-
-        WebElement vidTableElement = Get.byId("service-instantiation-audit-info-vid");
-        assertEquals(3, vidTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "VID table must contain 3 columns");
-
-        List<WebElement> vidStatusesElements = vidTableElement.findElements(By.id("vidJobStatus"));
-        List<String> vidStatuses = vidStatusesElements.stream()
-                .map(s ->
-                        convertUITextCapitalizeAndFormatPipe(s.getText()))
-                .collect(Collectors.toList());
-
-        List<String> serviceStatus = Arrays.asList(Arrays.copyOfRange(statuses, i, statuses.length));
-        assertThat("statuses for " + actualInstanceName + " must be as expected", vidStatuses, containsInAnyOrder(serviceStatus.toArray()));
-        String dateString = vidTableElement.findElements(By.id("vidStatusTime")).get(0).getText();
-        assertTrue("vid Status Time column must contains valid date in format : MMM dd, yyyy HH:mm", isDateValid(dateString, "MMM dd, yyyy HH:mm"));
-
         WebElement MSOTableElement = Get.byId("service-instantiation-audit-info-mso");
-        assertEquals(3, MSOTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "MSO table must contain 3 columns");
+        assertEquals(7, MSOTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "MSO table must contain 7 columns");
 
         if (statuses[i].equals(PENDING)) {
             assertEquals(0, MSOTableElement.findElement(By.tagName("tbody")).findElements(By.tagName("tr")).size(), "When status is PENDING MSO table is empty");
index b38d3da..802b342 100644 (file)
@@ -21,6 +21,9 @@ import vid.automation.test.model.ServiceAction;
 import vid.automation.test.services.AsyncJobsService;
 import vid.automation.test.services.SimulatorApi;
 import vid.automation.test.services.SimulatorApi.RegistrationStrategy;
+import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestsGetByRequestIdNew;
+import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo;
+
 
 import java.io.IOException;
 import java.util.List;
@@ -124,11 +127,11 @@ public class AsyncInstantiationALaCarteApiTest2 extends AsyncInstantiationBase {
 
     @Test
     public void getAuditInfoForALaCarteByServiceInstanceId() throws IOException {
-        final String expectedMsoAuditInfo = "a-la-carte/auditInfoMSOALaCarte.json";
+        final String expectedMsoAuditInfo = "a-la-carte/auditInfoMSOALaCarteNew.json";
         registerExpectationFromPreset(
-                new PresetMSOOrchestrationRequestsGetByServiceInstanceId(),
+                new PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo(),
                 RegistrationStrategy.CLEAR_THEN_SET);
-        List<JobAuditStatus> actualMsoAudits = getJobMsoAuditStatusForAlaCarte(UUID.randomUUID().toString(), "aa1234d1-5a33-55df-13ab-12abad84e333", "bc305d54-75b4-431b-adb2-eb6b9e546014");
+        List<JobAuditStatus> actualMsoAudits = getJobMsoAuditStatusForAlaCarte(UUID.randomUUID().toString(), "aa1234d1-5a33-55df-13ab-12abad84e333", "937d9e51-03b9-416b-bccd-aa898a85d711");
         List<JobAuditStatus> expectedMsoAudits = getExpectedAuditFromFile(expectedMsoAuditInfo);
         assertThat(actualMsoAudits, is(expectedMsoAudits));
 
@@ -137,13 +140,20 @@ public class AsyncInstantiationALaCarteApiTest2 extends AsyncInstantiationBase {
     @Test
     public void getAuditInfoForALaCarteByRequestId() {
         registerExpectationFromPreset(
-                new PresetMSOOrchestrationRequestsGetByRequestId(),
+                new PresetMSOOrchestrationRequestsGetByRequestIdNew(),
                 RegistrationStrategy.CLEAR_THEN_SET);
         final ImmutableMap<PresetMSOServiceInstanceGen2WithNames.Keys, String> names = ImmutableMap.of(SERVICE_NAME, "serviceInstanceName");
         String uuid = createBulkOfInstances(false, 1, names, CREATE_BULK_OF_ALACARTE_MULTIPLE_VNF_NETWORK_REQUEST_CYPRESS).get(0);
-        List<JobAuditStatus> actualMsoAudits = getJobMsoAuditStatusForAlaCarte( uuid, "405652f4-ceb3-4a75-9474-8aea71480a77", null);
-        List<JobAuditStatus> expectedMsoAudits =  ImmutableList.of(
-                new JobAuditStatus("serviceInstanceName", "FAILED", UUID.fromString("405652f4-ceb3-4a75-9474-8aea71480a77"),"Service Instance was failed.",false, "service"));
+        List<JobAuditStatus> actualMsoAudits = getJobMsoAuditStatusForAlaCarte( uuid, "7ba7900c-3e51-4d87-b1b4-3c53bdfaaa7d", null);
+        List<JobAuditStatus> expectedMsoAudits =  ImmutableList.of(new JobAuditStatus(UUID.fromString("7ba7900c-3e51-4d87-b1b4-3c53bdfaaa7d"),
+                                    "zrdm54cfmgw01_svc",
+                                    "service",
+                                    "createInstance",
+                                    "Mon, 24 Aug 2020 22:37:53 GMT",
+                                    "Mon, 24 Aug 2020 22:38:10 GMT",
+                                    "COMPLETE",
+                                    "<b>Source:</b> VID</br><b>StatusMessage:</b>STATUS: ALaCarte-Service-createInstance request was executed correctly.</br><b>FlowStatus:</b> Successfully completed all Building Blocks</br><b>SubscriptionServiceType:</b> FIRSTNET</br><b>Alacarte:</b> true</br><b>TestAPI:</b> GR_API</br><b>ProjectName: FIRSTNET</br><b>OwningEntityId:</b> 10c645f5-9924-4b89-bec0-b17cf49d3cad</br><b>OwningEntityName:</b> MOBILITY-CORE</br>"
+                                    ));
         assertThat(actualMsoAudits, is(expectedMsoAudits));
 
     }
index 00aa691..a8c186a 100644 (file)
@@ -344,10 +344,10 @@ public class AsyncInstantiationMacroApiTest extends AsyncInstantiationBase {
         SimulatorApi.registerExpectationFromPreset(new PresetMSOOrchestrationRequestsManyInstanceStatusesGet(INSTANCE_GROUP_ID_LABEL, INSTANCE_GROUP_LABEL), SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET);
         final List<JobAuditStatus> expectedAuditStatusList = getAuditStatusesForInstance("VNFGROUP", "df305d54-75b4-431b-adb2-eb6b9e5460df");
         verifyInstanceAuditStatuses(Arrays.asList(
-                new JobAuditStatus("groupTestName", "IN_PROGRESS", UUID.fromString("28502bd2-3aff-4a03-9f2b-5a0d1cb1ca24") , INSTANCE_GROUP_LABEL+" instance creation", null, INSTANCE_GROUP_LABEL),
-                new JobAuditStatus("groupTestName", "COMPLETE",UUID.fromString("28502bd2-3aff-4a03-9f2b-5a0d1cb1ca24") , INSTANCE_GROUP_LABEL+" instance creation", null, INSTANCE_GROUP_LABEL),
-                new JobAuditStatus("groupTestName", "IN_PROGRESS", UUID.fromString("f711f0ff-24b6-4d7f-9314-4b4eae15f48c") , INSTANCE_GROUP_LABEL+" instance deletion", null, INSTANCE_GROUP_LABEL),
-                new JobAuditStatus("groupTestName", "COMPLETE",UUID.fromString("f711f0ff-24b6-4d7f-9314-4b4eae15f48c")  , INSTANCE_GROUP_LABEL+" instance deletion", null, INSTANCE_GROUP_LABEL)),
+                            new JobAuditStatus("groupTestName", "IN_PROGRESS", UUID.fromString("28502bd2-3aff-4a03-9f2b-5a0d1cb1ca24") , "<b>Source:</b> VID</br><b>StatusMessage:</b>"+INSTANCE_GROUP_LABEL+" instance creation</br>", null, "createInstance"),
+                            new JobAuditStatus("groupTestName", "COMPLETE",UUID.fromString("28502bd2-3aff-4a03-9f2b-5a0d1cb1ca24") , "<b>Source:</b> VID</br><b>StatusMessage:</b>"+INSTANCE_GROUP_LABEL+" instance creation</br>", null, "createInstance"),
+                            new JobAuditStatus("groupTestName", "IN_PROGRESS", UUID.fromString("f711f0ff-24b6-4d7f-9314-4b4eae15f48c") , "<b>Source:</b> VID</br><b>StatusMessage:</b>"+INSTANCE_GROUP_LABEL+" instance deletion</br>", null, "deleteInstance"),
+                            new JobAuditStatus("groupTestName", "COMPLETE",UUID.fromString("f711f0ff-24b6-4d7f-9314-4b4eae15f48c")  , "<b>Source:</b> VID</br><b>StatusMessage:</b>"+INSTANCE_GROUP_LABEL+" instance deletion</br>", null, "deleteInstance")),
                 expectedAuditStatusList);
     }
 
diff --git a/vid-automation/src/test/resources/a-la-carte/auditInfoMSOALaCarteNew.json b/vid-automation/src/test/resources/a-la-carte/auditInfoMSOALaCarteNew.json
new file mode 100644 (file)
index 0000000..0f13a4d
--- /dev/null
@@ -0,0 +1,42 @@
+[
+  {
+    "requestId": "7ba7900c-3e51-4d87-b1b4-3c53bdfaaa7d",
+    "instanceName" : "zrdm54cfmgw01_svc",
+    "modelType": "service",
+    "instanceType": "createInstance",
+    "startTime": "Mon, 24 Aug 2020 22:37:53 GMT",
+    "finishTime": "Mon, 24 Aug 2020 22:38:10 GMT",
+    "jobStatus": "COMPLETE",
+    "additionalInfo": "<b>Source:</b> VID</br><b>StatusMessage:</b>STATUS: ALaCarte-Service-createInstance request was executed correctly.</br><b>FlowStatus:</b> Successfully completed all Building Blocks</br><b>SubscriptionServiceType:</b> FIRSTNET</br><b>Alacarte:</b> true</br><b>TestAPI:</b> GR_API</br><b>ProjectName: FIRSTNET</br><b>OwningEntityId:</b> 10c645f5-9924-4b89-bec0-b17cf49d3cad</br><b>OwningEntityName:</b> MOBILITY-CORE</br>"
+  },
+  {
+    "requestId": "f1aa7175-c237-4b56-ba64-7cb728a38ff2",
+    "instanceName" : "zrdm54cfmgw01",
+    "modelType": "vnf",
+    "instanceType": "createInstance",
+    "startTime": "Mon, 24 Aug 2020 22:38:18 GMT",
+    "finishTime": "Mon, 24 Aug 2020 22:44:24 GMT",
+    "jobStatus": "COMPLETE",
+    "additionalInfo": "<b>Source:</b> VID</br><b>StatusMessage:</b>STATUS: ALaCarte-Vnf-createInstance request was executed correctly.</br><b>FlowStatus:</b> Successfully completed all Building Blocks</br><b>TestAPI:</b> GR_API</br><b>TenantId:</b> ad299b37da30413391e9c28138f0b0cd</br><b>TenantName:</b> FNCORE-30052-D-MC-RDM54c</br><b>CloudOwner:</b> att-nc</br><b>PlatformName:</b> FIRSTNET-DEDICATED,NETWORK-CLOUD</br><b>LineOfBusiness:</b> FIRSTNET</br>"
+  },
+  {
+    "requestId": "a4e43d9e-4813-42e4-94bf-c5c6f22ed0bc",
+    "instanceName" : "zrdm54cfmgw01_base",
+    "modelType": "vfModule",
+    "instanceType": "createInstance",
+    "startTime": "Mon, 24 Aug 2020 22:44:42 GMT",
+    "finishTime": "Mon, 24 Aug 2020 22:54:17 GMT",
+    "jobStatus": "COMPLETE",
+    "additionalInfo": "<b>Source:</b> VID</br><b>StatusMessage:</b>STATUS: ALaCarte-VfModule-createInstance request was executed correctly.</br><b>FlowStatus:</b> Successfully completed all Building Blocks</br><b>TestAPI:</b> GR_API</br><b>TenantId:</b> ad299b37da30413391e9c28138f0b0cd</br><b>TenantName:</b> FNCORE-30052-D-MC-RDM54c</br><b>CloudOwner:</b> att-nc</br>"
+  },
+  {
+    "requestId": "1fc2ef3b-26f0-4e62-a00a-6a31502d39e2",
+    "instanceName" : "zrdm54cfmgw01_sup_1",
+    "modelType": "vfModule",
+    "instanceType": "createInstance",
+    "startTime": "Mon, 24 Aug 2020 22:54:29 GMT",
+    "finishTime": "Mon, 24 Aug 2020 22:56:35 GMT",
+    "jobStatus": "ROLLED_BACK_TO_ASSIGNED",
+    "additionalInfo": "<b>Source:</b> VID</br><b>StatusMessage:</b>STATUS: Error Source: OPENSTACK, Error Message: Received vfModuleException from VnfAdapter: category='INTERNAL' message='Exception during create VF 400 Bad Request: The server could not comply with the request since it is either malformed or otherwise incorrect., error.type=UserParameterMissing, error.message=The Parameter (VSFO_CP0_compute_node) was not provided.' rolledBack='true'</br><b>FlowStatus:</b> All Rollback flows have completed successfully</br><b>TestAPI:</b> GR_API</br><b>TenantId:</b> ad299b37da30413391e9c28138f0b0cd</br><b>TenantName:</b> FNCORE-30052-D-MC-RDM54c</br><b>CloudOwner:</b> att-nc</br>"
+  }
+]
index 16ed219..c28d77b 100644 (file)
@@ -31,11 +31,7 @@ describe('Audit information modal', function () {
         cy.get('.icon-menu').eq(index).click({force: true}).then(()=>{
           cy.getElementByDataTestsId('context-menu-audit-info').click({force:true}).then(()=>{
             cy.setViewportToSmallPopup();
-            cy.get('#service-model-name').should('contain', row.find('#serviceModelName').text().trim())
-              .getElementByDataTestsId('model-item-value-userId').should('contain', row.find('#userId').text().trim())
-              .get('#service-instantiation-audit-info-vid').should('be.visible')
-              .get('#service-instantiation-audit-info-vid').find('#vidJobStatus').should('be.visible')
-              .get('#service-instantiation-audit-info-mso').should('be.visible')
+              cy.get('#service-instantiation-audit-info-mso').should('be.visible')
               .get('#service-instantiation-audit-info-mso').find('#msoJobStatus').should('be.visible')
               .get('#cancelButton').click({force: true})
               .setViewportToDefault();
@@ -64,8 +60,8 @@ describe('Audit information modal', function () {
             cy.setViewportToSmallPopup();
             cy.get('#service-instantiation-audit-info-mso thead tr th#instanceName').should("be.visible")
               .get('#service-instantiation-audit-info-mso tbody tr').each(function (row, index) {
-              assert.equal(row.find('.request-id').text().trim(), res[index]['requestId']);
-              assert.equal(row.find('.msoInstanceName').text().trim(), 'service: ' + res[index]['instanceName']);
+              assert.equal(row.find('#msoRequestId').text().trim(), res[index]['requestId']);
+              assert.equal(row.find('.msoInstanceName').text().trim(), res[index]['instanceName']);
               assert.equal(row.find('#msoJobStatus').text().trim(), _.capitalize(res[index]['jobStatus']));
               assert.equal(row.find('#msoAdditionalInfo span').text().trim(), res[index]['additionalInfo']);
             });
@@ -84,5 +80,19 @@ describe('Audit information modal', function () {
       })
     });
 
+    it('Refresh link should be visible and clicking refresh should fetch latest data', function () {
+      cy.initAuditInfoMSOALaCarte();
+      cy.openIframe('app/ui/#/instantiationStatus');
+      cy.get('.instantiation-status-data tbody tr').each(function (row, index) {
+        cy.get('.icon-menu').eq(index).click({force: true}).then(()=>{
+          cy.getElementByDataTestsId('context-menu-audit-info').click({force:true}).then(()=>{
+            cy.setViewportToSmallPopup();
+            cy.get('#refreshButton').should('be.visible');
+          })
+
+          })
+        });
+      });
+
   });
 });
diff --git a/vid-webpack-master/cypress/integration/iFrames/exportMSOStatusToCSV.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/exportMSOStatusToCSV.e2e.ts
new file mode 100644 (file)
index 0000000..a9ade18
--- /dev/null
@@ -0,0 +1,38 @@
+import {JsonBuilder} from "../../support/jsonBuilders/jsonBuilder";
+import {AsyncInstantiationModel} from "../../support/jsonBuilders/models/asyncInstantiation.model";
+import {ServiceModel} from "../../support/jsonBuilders/models/service.model";
+
+describe('Audit Information model', function () {
+  describe('Export MSO status', function (){
+    var jsonBuilderInstantiationBuilder: JsonBuilder<AsyncInstantiationModel> = new JsonBuilder<AsyncInstantiationModel>();
+    var jsonBuilderAndMock: JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
+    beforeEach(() => {
+      cy.clearSessionStorage();
+      cy.setReduxState();
+      cy.preventErrorsOnLoading();
+      jsonBuilderInstantiationBuilder.basicMock('cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json',
+        Cypress.config('baseUrl') + "/asyncInstantiation**");
+      cy.initAAIMock();
+      cy.initVidMock();
+      cy.initAsyncInstantiation();
+      cy.login();
+    });
+
+    afterEach(() => {
+      cy.screenshot();
+    });
+
+    it(`should display 2 tables with information's`, function () {
+      cy.initAuditInfoMSOALaCarte();
+      cy.openIframe('app/ui/#/instantiationStatus');
+
+      cy.get('#b1ff271b-829a-43f9-a2e3-23987a34f261 > #jobStatus > .menu-div > .icon-menu').click({force: true}).then(() =>{
+        cy.getElementByDataTestsId('context-menu-audit-info').click();
+        cy.wait(1000);
+        cy.getElementByDataTestsId('export-button').click();
+      });
+
+
+    });
+  })
+})
index 2a4e882..41f65ff 100644 (file)
@@ -32,5 +32,6 @@
   "FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP" : true,
   "FLAG_2008_REMOVE_PAUSE_INSTANTIATION" : true,
   "FLAG_2008_DISABLE_DRAG_FOR_BASE_MODULE" : true,
-  "FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER": true
+  "FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER": true,
+  "FLAG_2011_EXPORT_MSO_STATUS": true
 }
index 25b4b4d..ffe630b 100755 (executable)
@@ -45,6 +45,7 @@
     "@nicky-lenaers/ngx-scroll-to": "3.0.1",
     "@turf/turf": "5.1.6",
     "@types/lodash": "4.14.121",
+    "angular-resizable-element": "^3.3.3",
     "angular-svg-icon": "5.0.0",
     "angular-tree-component": "8.5.2",
     "angular2-datatable": "0.6.0",
@@ -73,6 +74,7 @@
     "rxjs-compat": "^6.3.3",
     "slnodejs": "^2.1.124",
     "tslib": "1.9.x",
+    "xlsx": "^0.16.6",
     "zone.js": "~0.9.1"
   },
   "devDependencies": {
index 352a7db..fd826fb 100644 (file)
@@ -1,3 +1,16 @@
+.content.modal-open .body-content-jsp{
+  margin-left: 3% !important;
+  //margin-right: 3% !important;
+  margin-top: 0% !important;
+}
+.content.modal-open .body-content-jsp  .service-models-page  .service-model-content{
+  margin-left: 0% !important;
+  width: 100% !important;
+}
+.body-content-jsp {
+  margin-left: 14% !important;
+  margin-right: 2% !important;
+}
 
 .last {
   position: sticky;
index 0866690..038477d 100644 (file)
@@ -1,93 +1,95 @@
 <div class="modal fade" bsModal #auditInfoModal="bs-modal" [config]="{backdrop: 'static'}"
      tabindex="-1" role="dialog" aria-labelledby="dialog-static-name">
-  <div id="audit-info-modal" class="">
+  <div style="width: 100%; height: 100%" id="audit-info-modal" class=""
+       [ngStyle]="style" mwlResizable [enableGhostResize]="true"
+       [resizeEdges]="{ bottom: true, right: true, top: true, left: true }" (resizeEnd)="onResizeEnd($event)"
+       [validateResize]="validate">
     <div class="modal-content">
       <div class="modal-header">
         <button type="button" class="close" (click)="onCancelClick()">&times;</button>
         <span [attr.data-tests-id]="'audit-info-title'" class="modal-title">{{title}}</span>
+        <br>
+        <span style="font-size: 16px;">
+          <!-- ServiceInstanceName(ServiceModelName/ServiceModelId) -->
+          <span title="Service Instance name">{{serviceInstanceName }}</span><span title="Service Model name"> ({{serviceModelName}}/</span>
+          <span title="Service Model version">{{serviceModelVersion}})</span>
+        </span>
       </div>
-      <div class="modal-body row">
-        <div class="col-md-4 left-panel">
-          <div id="service-model-name" class="row">{{type | uppercase}} MODEL: <span>{{serviceModelName}}</span></div>
-          <div class="row service-model">
-            <model-information [modelInformationItems]="modelInfoItems"></model-information>
-          </div>
-        </div>
+      <div class="modal-body row" style="height: 515px">
+
         <div class="col-md-8 right-panel">
-          <div class="row" *ngIf="showVidStatus">
-            <div class="col-md-6 leftColumn"><span class="table-title">VID status</span></div>
-            <div class="col-md-6 rightColumn"><span *ngIf="showMoreAuditInfoLink">
-                <a id="full_screen_link" target="_parent" title="Full-screen audit info" [href]="readOnlyRetryUrl()">
+
+          <div class="row">
+            <div class="col-md-6 leftColumn"><span class="table-title">MSO status</span></div>
+            <div class="col-md-6 rightColumn">
+              <span>
+                <a id="glossary_link" target="_blank" href="#" (click)="onNavigate()">Building Block (BB) glossary</a>
+              </span>
+              &nbsp;
+              <span>
+                <a id="full_screen_link" target="_parent" title="Go to drawing board" [href]="readOnlyRetryUrl()">
                   <i class="fa fa-external-link"></i>
                 </a>
-            </span></div>
+            </span>
+            </div>
           </div>
-          <div class="row" *ngIf="showVidStatus">
-            <table id="service-instantiation-audit-info-vid"  class="table table-bordered">
-              <thead class="thead-dark">
+          <div style="max-height: 90%;overflow-y: scroll; max-width: 100%;overflow-x: scroll;">
+            <table id="service-instantiation-audit-info-mso" class="table table-bordered"  style="min-width: 950px;overflow-x: auto;">
+              <thead class="thead-dark row">
               <tr class="row">
-                <th class="col-md-4" scope="col">Status</th>
-                <th class="col-md-4" scope="col">Status time</th>
-                <th class="col-md-4" scope="col">Final</th>
+                <th scope="col" class="request-id">Request ID</th>
+                <th *ngIf="isAlaCarte&&isALaCarteFlagOn" id="instanceName" class="col-md-2" scope="col" >Instance Name</th>
+                <th>Model Type</th>
+                <th>Request Type</th>
+                <th>Start Time</th>
+                <th>Finish Time</th>
+                <th scope="col">Request Status</th>
+                <th class="col-md-2" scope="col">Additional info</th>
               </tr>
               </thead>
               <tbody>
-              <tr class="row" *ngFor="let data of vidInfoData">
-                <td class="col-md-4" id="vidJobStatus" [attr.data-tests-id]="'vidJobStatus'">
-                  <custom-ellipsis [id]="data?.jobStatus" [value]="data?.jobStatus | capitalizeAndFormat"></custom-ellipsis>
+              <tr class="row" *ngFor="let data of msoInfoData">
+                <td id="msoRequestId" class="col-md-2" style="width: 22%">
+                  <custom-ellipsis [id]="data?.requestId" [value]="data?.requestId" [attr.data-tests-id]="'requestId'"></custom-ellipsis>
+                </td>
+                <td *ngIf="isAlaCarte && isALaCarteFlagOn" class="msoInstanceName col-md-2" style="width: 10%">
+                  <custom-ellipsis [id]="data?.instanceName" [value]="data?.instanceName"></custom-ellipsis>
+                </td>
+                <td id="msoModelType" style="width: 7%">
+                  <custom-ellipsis [value]="data?.modelType"></custom-ellipsis>
+                </td>
+                <td id="msoInstanceType" style="width: 10%">
+                  <custom-ellipsis [value]="data?.instanceType"></custom-ellipsis>
+                </td>
+                <td id="msostartTime" style="width: 10%">
+                  <custom-ellipsis [value]="data?.startTime"></custom-ellipsis>
                 </td>
-                <td class="col-md-4" id="vidStatusTime">
-                  <custom-ellipsis [id]="data?.vidCreated"
-                                   [value]="data?.createdDate | date:'MMM dd, yyyy HH:mm'"></custom-ellipsis>
+                <td id="msoFinishTime" style="width: 10%">
+                  <custom-ellipsis [value]="data?.finishTime"></custom-ellipsis>
+                </td >
+                <td id="msoJobStatus" style="width: 8%">
+                  <custom-ellipsis [id]="data?.jobStatus" [value]="data?.jobStatus | capitalizeAndFormat" [attr.data-tests-id]="'jobStatus'"></custom-ellipsis>
                 </td>
-                <td class="col-md-4" id="vidFinalStatus">
-                  <custom-ellipsis [id]="data?.final"
-                                   [value]="data?.final ? 'Yes' : 'No'"></custom-ellipsis>
+                <td class="col-md-2" id="msoAdditionalInfo" style="width: 33%">
+                  <custom-ellipsis [id]="data?.additionalInfo" [value]="data?.additionalInfo" [attr.data-tests-id]="'additionalInfo'"></custom-ellipsis>
                 </td>
               </tr>
               </tbody>
             </table>
-            <div class="no-result" *ngIf="!isLoading && vidInfoData?.length == 0">There is no data.</div>
+            <div class="no-result" *ngIf="!isLoading && msoInfoData?.length == 0">There is no data.</div>
           </div>
-
-          <div class="row">
-            <div class="col-md-6 leftColumn"><span class="table-title">MSO status</span></div>
-                       <!-- -->
-            <div class="col-md-6 rightColumn"><span><a id="glossary_link" target="_blank" href="#" (click)="onNavigate()">Building Block (BB) glossary</a></span></div>
-          </div>
-          <table id="service-instantiation-audit-info-mso" class="table table-bordered">
-            <thead class="thead-dark row">
-            <tr class="row">
-              <th scope="col" class="request-id" style="min-width: 275px;max-width: 275px;">Request ID</th>
-              <th scope="col" style="min-width: 100px;max-width: 100px;">Status</th>
-              <th *ngIf="isAlaCarte&&isALaCarteFlagOn" id="instanceName" class="col-md-2" scope="col" style="max-width: 350px;">Instance Name</th>
-
-              <th class="col-md-2" scope="col" style="min-width: 300px;max-width: 300px;">Additional info</th>
-            </tr>
-            </thead>
-            <tbody>
-            <tr class="row" *ngFor="let data of msoInfoData">
-              <td id="msoRequestId" class="request-id" style="min-width: 275px;max-width: 275px;">
-                <custom-ellipsis [id]="data?.requestId" [value]="data?.requestId" [attr.data-tests-id]="'requestId'"></custom-ellipsis>
-              </td>
-              <td id="msoJobStatus" style="min-width: 100px;max-width: 100px;">
-                <custom-ellipsis [id]="data?.jobStatus" [value]="data?.jobStatus | capitalizeAndFormat" [attr.data-tests-id]="'jobStatus'"></custom-ellipsis>
-              </td>
-              <td *ngIf="isAlaCarte && isALaCarteFlagOn" class="msoInstanceName col-md-2" style="max-width: 350px;">
-                <custom-ellipsis [id]="data?.instanceName" [value]="data?.instanceType + ': ' + data?.instanceName"></custom-ellipsis>
-              </td>
-
-              <td class="col-md-2" id="msoAdditionalInfo" style="min-width: 300px;max-width: 300px;">
-                <custom-ellipsis [id]="data?.additionalInfo" [value]="data?.additionalInfo" [attr.data-tests-id]="'additionalInfo'"></custom-ellipsis>
-              </td>
-            </tr>
-            </tbody>
-          </table>
-          <div class="no-result" *ngIf="!isLoading && msoInfoData?.length == 0">There is no data.</div>
         </div>
-
       </div>
       <div class="modal-footer row">
+        <button *ngIf="exportMSOStatusFeatureEnabled" style= "font-size: 12px" id="exportButton" type="button" class="btn btn-default cancel"
+                (click)="exportMsoStatusTable()" [attr.data-tests-id]="'export-button'">
+          Export
+        </button>
+        <button style= "font-size: 12px" id="refreshButton" type="button" class="btn btn-default cancel"
+                 [attr.data-tests-id]="'refresh-button'"
+                 [ngClass]="{'spin' : !dataIsReady}" (click)="refreshData();">
+          Refresh
+        </button>
         <button style= "font-size: 12px" id="cancelButton" type="button" class="btn btn-default cancel" (click)="onCancelClick()" [attr.data-tests-id]="'close-button'">
           Close
         </button>
index f36b8b4..6b1a704 100644 (file)
@@ -8,7 +8,16 @@
   background-color: #000;
   opacity: 0.5;
 }
+mwlResizable {
+  box-sizing: border-box;
+}
+.modal-dialog{
+  width: 100% !important;
+}
 .modal{
+  width: 100% !important;
+  margin-right: 0%;
+  margin-left: 0%;
 
   #audit-info-modal {
     .leftColumn {
@@ -23,6 +32,8 @@
       border-radius: 0px;
       border: none;
       .modal-header{
+        padding: 5px !important;
+        padding-left: 23px !important;
         background: #009FDB;
         font-size: 24px;
         color: #ffffff;
@@ -49,6 +60,7 @@
           background: #f2f2f2;
           border-right: 1px solid #D2D2D2;
           padding-right: 0px;
+          width: 20%;
           .row:first-child{
             border-bottom: 1px solid #D2D2D2;
             height: 50px;
@@ -64,6 +76,7 @@
           }
         }
         .right-panel{
+          width: 100% !important;
           padding: 30px 30px 15px 30px;
           .row{
             margin: 0px;
             text-align: center;
             border: 1px solid #d2d2d2;
             padding: 20px;
-            margin-top: -23px;
+            margin-top: 0px;
           }
 
-          .table-bordered{
-            width: 100%;
+          .table-bordered {
             margin-top: 10px;
             font-family: OpenSans-Semibold;
             font-size: 12px;
             overflow-x: auto;
-            display: block;
+            overflow-y: auto;
+            //display: block;
             color: #5A5A5A;
-            .request-id {
-              width: 85px;
-            }
+            position: relative;
             thead {
-              position: sticky;
-              top: 0;
               z-index: 100;
-              display: block;
               background: rgb(242, 242, 242);
               border-bottom: 1px solid #d2d2d2;
               tr {
-                display: flex;
                 th {
-                  flex-grow: 1;
                   border-right: 1px solid #d2d2d2;
-                  &:last-child{
+                  &:last-child {
                     border-right: none;
                   }
-                  &.request-id {
-                    flex-grow: 0;
-                  }
                 }
               }
             }
-
-            tbody {
+            tbody{
               border: none !important;
               max-height: 152px;
-              display: block;
-
-              tr {
-                display: flex;
+              tr{
                 border-bottom: 1px solid #d2d2d2;
                 &:last-child{
                   border-bottom: none;
                 }
-                td {
-                  border: none;
+                td{
                   border-right: 1px solid #d2d2d2;
-                  flex-grow: 1;
                   &:last-child{
                     border-right: none;
                   }
-                  &.request-id {
-                    flex-grow: 0;
-                  }
                 }
               }
             }
-
             th {
               background: #f2f2f2;
               font-family: OpenSans-Semibold;
               color: #000000;
               font-weight: bold;
               border: none;
+              position: sticky;
+              top: 0;
             }
-
             tr.odd {
               background-color: rgb(242, 242, 242);
             }
-
             tr:hover {
               background: #e1e1e1;
             }
index 5e39ee3..5703c67 100644 (file)
@@ -18,6 +18,9 @@ import {HttpClient} from '@angular/common/http';
 import {getTestBed} from "@angular/core/testing";
 import {of} from 'rxjs';
 import {NodeInstance} from "../../models/nodeInstance";
+import {DatePipe} from "@angular/common";
+import {SpaceToUnderscorePipe} from "../../pipes/spaceToUnderscore/space-to-underscore.pipe";
+import {ResizableModule} from "angular-resizable-element";
 
 class MockAppStore<T> {
   getState() {
@@ -52,6 +55,7 @@ describe('Audit Info Modal Component_serviceInfoService', () => {
         ContextMenuModule,
         ScrollToModule.forRoot(),
         RouterTestingModule,
+        ResizableModule,
         ModalModule.forRoot()
       ],
       providers: [
@@ -61,6 +65,8 @@ describe('Audit Info Modal Component_serviceInfoService', () => {
         AuditInfoModalComponentService,
         ContextMenuService,
         FeatureFlagsService,
+        DatePipe,
+        SpaceToUnderscorePipe,
         {provide: NgRedux, useClass: MockAppStore}
       ],
       declarations: [AuditInfoModalComponent, CapitalizeAndFormatPipe],
@@ -195,4 +201,9 @@ describe('Audit Info Modal Component_serviceInfoService', () => {
     AuditInfoModalComponent.openModal.next(jobData);
     expect(component.auditInfoModal.hide).toHaveBeenCalled();
   });
+
+test('msoStatus table columns count', () =>{
+    let tableHeader = document.querySelector('table thead tr');
+    expect(tableHeader.querySelectorAll('th').length).toEqual(7);
+   });
 });
index 3a7f4ec..d8d3c32 100644 (file)
@@ -11,6 +11,10 @@ import {NgRedux} from "@angular-redux/store";
 import {AppState} from "../../store/reducers";
 import {AuditInfoModalComponentService} from "./auditInfoModal.component.service";
 import {FeatureFlagsService, Features} from "../../services/featureFlag/feature-flags.service";
+import * as XLSX from 'xlsx';
+import {DatePipe} from "@angular/common";
+import {SpaceToUnderscorePipe} from "../../pipes/spaceToUnderscore/space-to-underscore.pipe";
+import {ResizeEvent} from "angular-resizable-element";
 
 @Component({
   selector: 'audit-info-modal',
@@ -21,7 +25,7 @@ export class AuditInfoModalComponent {
   static openModal: Subject<ServiceInfoModel> = new Subject<ServiceInfoModel>();
   static openInstanceAuditInfoModal: Subject<{instanceId , type, model, instance}> = new Subject<{instanceId , type, model, instance}>();
   @ViewChild('auditInfoModal', {static: false}) public auditInfoModal: ModalDirective;
-  title: string = 'Service Instantiation Information';
+  title: string = 'Service Information';
   modelInfoItems: ModelInformationItem[] = [];
   serviceModel: ServiceModel;
   serviceModelName: string;
@@ -39,17 +43,26 @@ export class AuditInfoModalComponent {
   type : string = "Service";
   showVidStatus : boolean = true;
   auditInfoModalComponentService : AuditInfoModalComponentService;
+  serviceInstanceName : string;
+  serviceModelVersion : any;
+  exportMSOStatusFeatureEnabled: boolean;
+  dataIsReady : boolean = false;
+  jobDataLocal : any;
   constructor(private _serviceInfoService: ServiceInfoService, private _iframeService : IframeService,
               private _auditInfoModalComponentService : AuditInfoModalComponentService,
               private _featureFlagsService: FeatureFlagsService,
+              private datePipe: DatePipe,
+              private spacetoUnderscore: SpaceToUnderscorePipe,
               private store: NgRedux<AppState>) {
     this.auditInfoModalComponentService = this._auditInfoModalComponentService;
     AuditInfoModalComponent.openModal.subscribe((jobData: ServiceInfoModel) => {
       this.isALaCarteFlagOn = this.store.getState().global.flags['FLAG_A_LA_CARTE_AUDIT_INFO'];
       this.showMoreAuditInfoLink = _featureFlagsService.getFlagState(Features.FLAG_MORE_AUDIT_INFO_LINK_ON_AUDIT_INFO);
+      this.exportMSOStatusFeatureEnabled = _featureFlagsService.getFlagState(Features.FLAG_2011_EXPORT_MSO_STATUS);
       this.initializeProperties();
       this.showVidStatus = true;
       if (jobData) {
+        this.jobDataLocal = jobData;
         this.isAlaCarte = jobData.aLaCarte;
         this.openAuditInfoModal(jobData);
         _iframeService.addClassOpenModal(this.parentElementClassName);
@@ -57,6 +70,8 @@ export class AuditInfoModalComponent {
         this.serviceModelId = jobData.serviceModelId;
         this.jobId = jobData.jobId;
         this.auditInfoModal.show();
+        this.serviceInstanceName = jobData.serviceInstanceName;
+        this.serviceModelVersion = jobData.serviceModelVersion;
       } else {
         _iframeService.removeClassCloseModal(this.parentElementClassName);
         this.auditInfoModal.hide();
@@ -85,6 +100,29 @@ export class AuditInfoModalComponent {
     });
   }
 
+  public style: object = {};
+  validate(event: ResizeEvent): boolean {
+    console.log("event : ", event);
+    if(event.rectangle.width && event.rectangle.height &&
+      ( event.rectangle.width < 800 || event.rectangle.width > 1240)
+    ){
+      return false;
+    } else{
+      return true;
+    }
+  }
+  onResizeEnd(event: ResizeEvent): void {
+    console.log('Element was resized', event);
+    this.style = {
+      position: 'fixed',
+      left: `${event.rectangle.left}px`,
+      top: `${event.rectangle.top}px`,
+      width: `${event.rectangle.width}px`,
+      height: `${event.rectangle.height}px`
+    };
+    console.log("stle : ", this.style);
+  }
+
 
   setModalTitles(type : string) : void{
     this.type = AuditInfoModalComponentService.setModalTitlesType(type) ;
@@ -117,6 +155,20 @@ export class AuditInfoModalComponent {
       });
   }
 
+  exportMsoStatusTable(){
+    let currentTime = new Date();
+    let timestamp = this.datePipe.transform(currentTime, "MMMddyyyy")+'_'
+      +currentTime.getHours()+":"+currentTime.getMinutes()+":"+currentTime.getSeconds()
+    let fileName = this.spacetoUnderscore.transform(this.serviceInstanceName)+'_'+timestamp;
+    let msoStatusTableElement = document.getElementById('service-instantiation-audit-info-mso');
+    const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(msoStatusTableElement);
+    const wb: XLSX.WorkBook = XLSX.utils.book_new();
+    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
+    /* save to file */
+    XLSX.writeFile(wb, fileName+'.csv');
+    this._iframeService.addClassOpenModal(this.parentElementClassName);
+  }
+
   onCancelClick() {
     this._iframeService.removeClassCloseModal(this.parentElementClassName);
     this.initializeProperties();
@@ -128,6 +180,13 @@ export class AuditInfoModalComponent {
     window.open("http://ecompguide.web.att.com:8000/#ecomp_ug/c_ecomp_ops_vid.htmll#r_ecomp_ops_vid_bbglossary", "_blank");
   }
 
+  refreshData(): void {
+    this.dataIsReady = false;
+    this.initAuditInfoData(this.jobDataLocal);
+    this.dataIsReady = true;
+
+  }
+
   readOnlyRetryUrl = (): string =>
     `../../serviceModels.htm?more#/servicePlanning/RETRY?serviceModelId=${this.serviceModelId}&jobId=${this.jobId}`
 }
diff --git a/vid-webpack-master/src/app/shared/pipes/spaceToUnderscore/space-to-underscore.pipe.spec.ts b/vid-webpack-master/src/app/shared/pipes/spaceToUnderscore/space-to-underscore.pipe.spec.ts
new file mode 100644 (file)
index 0000000..96e9b6c
--- /dev/null
@@ -0,0 +1,8 @@
+import { SpaceToUnderscorePipe } from './space-to-underscore.pipe';
+
+describe('SpaceToUnderscorePipe', () => {
+  it('create an instance', () => {
+    const pipe = new SpaceToUnderscorePipe();
+    expect(pipe).toBeTruthy();
+  });
+});
diff --git a/vid-webpack-master/src/app/shared/pipes/spaceToUnderscore/space-to-underscore.pipe.ts b/vid-webpack-master/src/app/shared/pipes/spaceToUnderscore/space-to-underscore.pipe.ts
new file mode 100644 (file)
index 0000000..b82b28b
--- /dev/null
@@ -0,0 +1,17 @@
+import { Pipe, PipeTransform } from '@angular/core';
+
+@Pipe({
+  name: 'spaceToUnderscore'
+})
+export class SpaceToUnderscorePipe implements PipeTransform {
+
+  transform(text: string): string {
+    if (text) {
+      // @ts-ignore
+      text = text.replaceAll(' ', '_');
+      return text;
+    }
+    return text;
+  }
+
+}
index a0920a9..0f4623f 100644 (file)
@@ -9,4 +9,7 @@ export class AuditStatus{
   additionalInfo :any;
   instanceName: string;
   instanceType : string;
+  modelType: string;
+  startTime: string;
+  finishTime: string;
 }
index 758aa4b..a950653 100644 (file)
@@ -26,7 +26,8 @@ export enum Features {
   FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP = 'FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP',
   FLAG_2008_REMOVE_PAUSE_INSTANTIATION = 'FLAG_2008_REMOVE_PAUSE_INSTANTIATION',
   FLAG_2008_DISABLE_DRAG_FOR_BASE_MODULE ='FLAG_2008_DISABLE_DRAG_FOR_BASE_MODULE',
-  FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER ='FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER'
+  FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER ='FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER',
+  FLAG_2011_EXPORT_MSO_STATUS = 'FLAG_2011_EXPORT_MSO_STATUS'
 }
 
 @Injectable()
index bae7c11..d16d68c 100644 (file)
@@ -1,5 +1,5 @@
 import {ModuleWithProviders, NgModule} from '@angular/core';
-import {CommonModule} from '@angular/common';
+import {CommonModule, DatePipe} from '@angular/common';
 import {RouterModule} from '@angular/router';
 import {BrowserModule} from '@angular/platform-browser';
 import {HttpClientModule} from '@angular/common/http';
@@ -96,8 +96,8 @@ import {SdcUiComponentsModule} from "onap-ui-angular";
 import {UploadFilesLinkComponent} from "./components/genericForm/genericFormSharedComponent/uploadFiles/upload-files-link.component";
 import { FileUploadModule } from 'ng2-file-upload';
 import {MessageModal} from "./components/messageModal/message-modal.service";
-
-
+import {SpaceToUnderscorePipe} from "./pipes/spaceToUnderscore/space-to-underscore.pipe";
+import {ResizableModule} from 'angular-resizable-element';
 
 @NgModule({
   imports: [
@@ -115,7 +115,8 @@ import {MessageModal} from "./components/messageModal/message-modal.service";
     BootstrapModalModule,
     DataTableModule,
     ModalModule.forRoot(),
-    FileUploadModule
+    FileUploadModule,
+    ResizableModule
   ],
   declarations: [
     PopoverComponent,
@@ -135,6 +136,7 @@ import {MessageModal} from "./components/messageModal/message-modal.service";
     NoContentMessageAndIconComponent,
     ModelInformationComponent,
     CapitalizeAndFormatPipe,
+    SpaceToUnderscorePipe,
     ServiceInfoPipe,
     OrderByPipe,
     SafePipe,
@@ -178,6 +180,7 @@ import {MessageModal} from "./components/messageModal/message-modal.service";
     NoContentMessageAndIconComponent,
     ModelInformationComponent,
     CapitalizeAndFormatPipe,
+    SpaceToUnderscorePipe,
     ServiceInfoPipe,
     OrderByPipe,
     SafePipe,
@@ -262,7 +265,7 @@ export class SharedModule {
   static forRoot(): ModuleWithProviders {
     return {
       ngModule: SharedModule,
-      providers: [MessageBoxService]
+      providers: [MessageBoxService, DatePipe, SpaceToUnderscorePipe]
     };
   }
 }