diff options
author | Rachitha Ramappa <rachitha.ramappa@att.com> | 2020-09-23 12:42:19 +0530 |
---|---|---|
committer | Ikram Ikramullah <ikram@research.att.com> | 2020-10-08 10:53:16 +0000 |
commit | 226ef715d7afe3758fbc88c05cf4d752c6bed51b (patch) | |
tree | 26915a243c02d977cd906937330234860cbed6dd | |
parent | 30eb0655f49fd3565d737b91146baf9ce4e02f9d (diff) |
New audit info screen changes7.0.0
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, 1185 insertions, 159 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java b/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java index 012db5a31..3f25b8012 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java @@ -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; diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/AsyncRequestStatus.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/AsyncRequestStatus.java index 61e0d3af6..09c571c29 100644 --- a/vid-app-common/src/main/java/org/onap/vid/mso/rest/AsyncRequestStatus.java +++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/AsyncRequestStatus.java @@ -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; } - - - } diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestStatus.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestStatus.java index 29356aa4d..c574e5ae5 100644 --- a/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestStatus.java +++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestStatus.java @@ -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(); } } diff --git a/vid-app-common/src/main/java/org/onap/vid/properties/Features.java b/vid-app-common/src/main/java/org/onap/vid/properties/Features.java index 9d3faa062..6ff6157ff 100644 --- a/vid-app-common/src/main/java/org/onap/vid/properties/Features.java +++ b/vid-app-common/src/main/java/org/onap/vid/properties/Features.java @@ -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() { diff --git a/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java index 287a771d3..4f32eca85 100644 --- a/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java +++ b/vid-app-common/src/main/java/org/onap/vid/services/AuditServiceImpl.java @@ -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; diff --git a/vid-app-common/src/main/webapp/app/vid/styles/common.css b/vid-app-common/src/main/webapp/app/vid/styles/common.css index f941034a3..8a8af5d9b 100644 --- a/vid-app-common/src/main/webapp/app/vid/styles/common.css +++ b/vid-app-common/src/main/webapp/app/vid/styles/common.css @@ -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 index 000000000..ee52ea271 --- /dev/null +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestsGetByRequestIdNew.java @@ -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 index 000000000..d2baaceba --- /dev/null +++ b/vid-automation/src/main/java/org/onap/simulator/presetGenerator/presets/mso/PresetMSOOrchestrationRequestsGetByServiceInstanceIdExtraInfo.java @@ -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; + + + } +} diff --git a/vid-automation/src/main/java/org/onap/vid/model/asyncInstantiation/JobAuditStatus.java b/vid-automation/src/main/java/org/onap/vid/model/asyncInstantiation/JobAuditStatus.java index b012628e0..df9d505c0 100644 --- a/vid-automation/src/main/java/org/onap/vid/model/asyncInstantiation/JobAuditStatus.java +++ b/vid-automation/src/main/java/org/onap/vid/model/asyncInstantiation/JobAuditStatus.java @@ -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(); } diff --git a/vid-automation/src/main/java/vid/automation/test/infra/Features.java b/vid-automation/src/main/java/vid/automation/test/infra/Features.java index ba7ebdf0e..b6afed582 100644 --- a/vid-automation/src/main/java/vid/automation/test/infra/Features.java +++ b/vid-automation/src/main/java/vid/automation/test/infra/Features.java @@ -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); diff --git a/vid-automation/src/main/java/vid/automation/test/test/InstantiationStatusTest.java b/vid-automation/src/main/java/vid/automation/test/test/InstantiationStatusTest.java index 70fe620fa..18d8a0453 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/InstantiationStatusTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/InstantiationStatusTest.java @@ -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"); diff --git a/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java b/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java index 07fd37826..32649c118 100644 --- a/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java +++ b/vid-automation/src/main/java/vid/automation/test/test/NewServiceInstanceTest.java @@ -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"); diff --git a/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest2.java b/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest2.java index b38d3da91..802b3426b 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest2.java +++ b/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationALaCarteApiTest2.java @@ -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)); } diff --git a/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationMacroApiTest.java b/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationMacroApiTest.java index 00aa69120..a8c186a1d 100644 --- a/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationMacroApiTest.java +++ b/vid-automation/src/test/java/org/onap/vid/api/AsyncInstantiationMacroApiTest.java @@ -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 index 000000000..0f13a4db3 --- /dev/null +++ b/vid-automation/src/test/resources/a-la-carte/auditInfoMSOALaCarteNew.json @@ -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>" + } +] diff --git a/vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts index 16ed21935..c28d77b79 100644 --- a/vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts +++ b/vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts @@ -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 index 000000000..a9ade182c --- /dev/null +++ b/vid-webpack-master/cypress/integration/iFrames/exportMSOStatusToCSV.e2e.ts @@ -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(); + }); + + + }); + }) +}) diff --git a/vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/flags.cypress.json b/vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/flags.cypress.json index 2a4e88210..41f65ff65 100644 --- a/vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/flags.cypress.json +++ b/vid-webpack-master/cypress/support/jsonBuilders/mocks/jsons/flags.cypress.json @@ -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 } diff --git a/vid-webpack-master/package.json b/vid-webpack-master/package.json index 25b4b4ddb..ffe630bd2 100755 --- a/vid-webpack-master/package.json +++ b/vid-webpack-master/package.json @@ -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": { diff --git a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.scss b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.scss index 352a7db10..fd826fba7 100644 --- a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.scss +++ b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.scss @@ -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; diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html index 086669091..038477d25 100644 --- a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html +++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.html @@ -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()">×</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> + + <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> diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss index f36b8b41d..6b1a70486 100644 --- a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss +++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.scss @@ -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; @@ -78,79 +91,59 @@ 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; } diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts index 5e39ee3ab..5703c67bd 100644 --- a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts +++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.spec.ts @@ -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); + }); }); diff --git a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts index 3a7f4ecfa..d8d3c32ac 100644 --- a/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts +++ b/vid-webpack-master/src/app/shared/components/auditInfoModal/auditInfoModal.component.ts @@ -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 index 000000000..96e9b6cc6 --- /dev/null +++ b/vid-webpack-master/src/app/shared/pipes/spaceToUnderscore/space-to-underscore.pipe.spec.ts @@ -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 index 000000000..b82b28bc1 --- /dev/null +++ b/vid-webpack-master/src/app/shared/pipes/spaceToUnderscore/space-to-underscore.pipe.ts @@ -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; + } + +} diff --git a/vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts b/vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts index a0920a902..0f4623f59 100644 --- a/vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts +++ b/vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts @@ -9,4 +9,7 @@ export class AuditStatus{ additionalInfo :any; instanceName: string; instanceType : string; + modelType: string; + startTime: string; + finishTime: string; } diff --git a/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts b/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts index 758aa4b15..a950653c6 100644 --- a/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts +++ b/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts @@ -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() diff --git a/vid-webpack-master/src/app/shared/shared.module.ts b/vid-webpack-master/src/app/shared/shared.module.ts index bae7c11f9..d16d68cb2 100644 --- a/vid-webpack-master/src/app/shared/shared.module.ts +++ b/vid-webpack-master/src/app/shared/shared.module.ts @@ -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] }; } } |