From 4dbd4fc629c4c3e8c491ed7fdd904e2ecfa4c0e0 Mon Sep 17 00:00:00 2001 From: aleemraja Date: Thu, 16 Jul 2020 21:46:19 +0530 Subject: [PATCH] Preparing the request payload for calling SO macro flow. - Added JUnit Test cases and Kararte test for service catalog. - Added test case for Execution Task for Macro Flow. - Modified RequestDetails and RequestInfo to match with SO Macro request payload. - Added k8s configuration in application.properties. Issue-ID: EXTAPI-368 Signed-off-by: aleemraja Change-Id: Ibbbbbd2d7021c16ea6291cc899e310ae26200833 Signed-off-by: aleemraja --- .../ServiceSpecificationResource.java | 13 +- .../apis/servicecatalog/ToscaInfosProcessor.java | 207 +- .../org/onap/nbi/apis/serviceorder/SoClient.java | 36 +- .../CreateMacroServiceInstanceResponse.java | 34 + .../serviceorder/model/consumer/ModelInfo.java | 4 + .../model/consumer/RequestDetails.java | 6 +- .../serviceorder/model/consumer/RequestInfo.java | 15 +- .../serviceorder/model/consumer/VFModelInfo.java | 95 + .../serviceorder/workflow/PostSoProcessor.java | 248 +- .../serviceorder/workflow/SOTaskProcessor.java | 38 +- src/main/resources/application-test.properties | 7 +- src/main/resources/application.properties | 5 + .../ServiceOrderExecutionTaskAssertions.java | 303 ++- .../servicecatalog/ToscaInfosProcessorTest.java | 142 ++ .../java/org/onap/nbi/test/ExecutionTaskTest.java | 35 + .../__files/toscafile/service-VlbService-csar.csar | Bin 0 -> 123775 bytes .../karatetest/features/00--ServiceCatalog.feature | 19 + ...c_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f.json | 117 + ...82c9fbb4-656c-4973-8c7f-172b22b5fa8f_tosca.json | 10 + .../toscafile/service-VlbService-csar.csar | Bin 0 -> 123775 bytes .../toscafile/service-VlbService-template.yml | 2449 ++++++++++++++++++++ 21 files changed, 3706 insertions(+), 77 deletions(-) create mode 100644 src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/CreateMacroServiceInstanceResponse.java create mode 100644 src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/VFModelInfo.java create mode 100644 src/test/resources/__files/toscafile/service-VlbService-csar.csar create mode 100644 src/test/resources/mappings/sdc/sdc_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f.json create mode 100644 src/test/resources/mappings/sdc/sdc_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f_tosca.json create mode 100644 src/test/resources/toscafile/service-VlbService-csar.csar create mode 100644 src/test/resources/toscafile/service-VlbService-template.yml diff --git a/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java b/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java index 3651ec8..f9f5e07 100644 --- a/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java +++ b/src/main/java/org/onap/nbi/apis/servicecatalog/ServiceSpecificationResource.java @@ -16,6 +16,7 @@ package org.onap.nbi.apis.servicecatalog; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -43,6 +44,16 @@ public class ServiceSpecificationResource extends ResourceManagement { public ResponseEntity getServiceSpecification(@PathVariable String serviceSpecId, @RequestParam MultiValueMap params) { Map response = serviceSpecificationService.get(serviceSpecId); + + if (response != null) { + ArrayList> resourseSpecificationMap= (ArrayList>) response.get("resourceSpecification"); + for (Map map : resourseSpecificationMap) { + map.remove("childResourceSpecification"); + map.remove("InstanceSpecification"); + } + response.put("resourceSpecification", resourseSpecificationMap); + } + JsonRepresentation filter = new JsonRepresentation(params); if (response.get("serviceSpecCharacteristic") != null) { return this.getResponse(response, filter); @@ -67,4 +78,4 @@ public class ServiceSpecificationResource extends ResourceManagement { return this.getResponse(response, filter); } -} +} \ No newline at end of file diff --git a/src/main/java/org/onap/nbi/apis/servicecatalog/ToscaInfosProcessor.java b/src/main/java/org/onap/nbi/apis/servicecatalog/ToscaInfosProcessor.java index 2153b84..586d0b5 100644 --- a/src/main/java/org/onap/nbi/apis/servicecatalog/ToscaInfosProcessor.java +++ b/src/main/java/org/onap/nbi/apis/servicecatalog/ToscaInfosProcessor.java @@ -16,12 +16,22 @@ package org.onap.nbi.apis.servicecatalog; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; + +import org.onap.nbi.apis.serviceorder.model.consumer.VFModelInfo; +import org.onap.sdc.tosca.parser.api.IEntityDetails; import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; +import org.onap.sdc.tosca.parser.elements.queries.EntityQuery; +import org.onap.sdc.tosca.parser.elements.queries.TopologyTemplateQuery; +import org.onap.sdc.tosca.parser.enums.SdcTypes; import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; +import org.onap.sdc.tosca.parser.impl.SdcPropertyNames; import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; import org.onap.sdc.toscaparser.api.NodeTemplate; import org.onap.sdc.toscaparser.api.elements.Metadata; @@ -47,6 +57,10 @@ public class ToscaInfosProcessor { @Autowired private ServiceSpecificationDBManager serviceSpecificationDBManager; + private Set vnfInstanceParams = new HashSet(Arrays.asList("onap_private_net_id", + "onap_private_subnet_id", "pub_key", "sec_group", "install_script_version", "demo_artifacts_version", + "cloud_env", "public_net_id", "aic-cloud-region", "image_name", "flavor_name")); + final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); // jackson databind private static final Logger LOGGER = LoggerFactory.getLogger(ToscaInfosProcessor.class); @@ -114,81 +128,148 @@ public class ToscaInfosProcessor { } public void buildAndSaveResponseWithSdcToscaParser(Path path, Map serviceCatalogResponse) - throws SdcToscaParserException { + throws SdcToscaParserException { - SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance(); - ISdcCsarHelper sdcCsarHelper = factory.getSdcCsarHelper(path.toFile().getAbsolutePath(), false); - List inputs = sdcCsarHelper.getServiceInputs(); + SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance(); + ISdcCsarHelper sdcCsarHelper = factory.getSdcCsarHelper(path.toFile().getAbsolutePath(), false); + List inputs = sdcCsarHelper.getServiceInputs(); - Map definitions = new HashMap(); - Model model = new ModelImpl(); + List vfEntityList = sdcCsarHelper.getEntity(EntityQuery.newBuilder(SdcTypes.VF).build(), + TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE).build(), false); - if (inputs != null && inputs.size() > 0) { - for (Input input : inputs) { - Property property = null; - if (input.getType().equals("list") || input.getType().equals("map")) - property = PropertyBuilder.build("array", null, null); - else - property = PropertyBuilder.build(input.getType(), null, null); + Map listOfInstanceParameters = new HashMap<>(); + if (!vfEntityList.isEmpty()) { - property.setDescription(input.getDescription()); - property.setRequired(input.isRequired()); + IEntityDetails iEntityDetails = vfEntityList.get(0); + Map groupProperties = iEntityDetails.getProperties(); - if (input.getDefault() != null) { - property.setDefault(input.getDefault().toString()); - } - ((ModelImpl) model).addProperty(input.getName(), property); - } - definitions.put("ServiceCharacteristics", model); + for (String key : groupProperties.keySet()) { + org.onap.sdc.toscaparser.api.Property property = groupProperties.get(key); + String paramName = property.getName(); + if (paramName != null) { + if (vnfInstanceParams.stream() + .filter(vnfInstanceParam -> vnfInstanceParam.equalsIgnoreCase(paramName)).findFirst() + .isPresent()) { + listOfInstanceParameters.put(paramName, property.getValue().toString()); + } + } + } - } + } - String svcCharacteristicsJson = Json.pretty(definitions); - serviceSpecificationDBManager.saveSpecificationInputSchema(svcCharacteristicsJson, serviceCatalogResponse); + // it will build Entity as VfModules + List vfModuleEntityList = sdcCsarHelper.getEntity( + EntityQuery.newBuilder("org.openecomp.groups.VfModule").build(), + TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE) + .customizationUUID(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).build(), + false); + List listOfVfModelInfo = new ArrayList<>(); - Metadata serviceMetadata = sdcCsarHelper.getServiceMetadata(); - String instantationType = serviceMetadata.getValue("instantiationType"); - serviceCatalogResponse.put("instantiationType", instantationType); + if (!vfModuleEntityList.isEmpty()) { + // Fetching vfModule metadata in a loop + for (IEntityDetails vfModuleEntity : vfModuleEntityList) { + VFModelInfo vfModel = new VFModelInfo(); + Metadata vfMetadata = vfModuleEntity.getMetadata(); + // Preparing VFModel + vfModel.setModelInvariantUuid( + testNull(vfMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID))); + vfModel.setModelName(testNull(vfMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELNAME))); + vfModel.setModelUuid(testNull(vfMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID))); + vfModel.setModelVersion( + testNull(vfMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELVERSION))); + vfModel.setModelCustomizationUuid(testNull(vfMetadata.getValue("vfModuleModelCustomizationUUID"))); - LinkedHashMap inputSchemaRef = new LinkedHashMap(); - // use object to match examples in Specifications - inputSchemaRef.put("valueType", "object"); - inputSchemaRef.put("@schemaLocation", - "/serviceSpecification/" + serviceCatalogResponse.get("id") + "/specificationInputSchema"); - inputSchemaRef.put("@type", serviceCatalogResponse.get("name") + "_ServiceCharacteristic"); + // Adding it to the list + listOfVfModelInfo.add(vfModel); + } + } - LinkedHashMap serviceSpecCharacteristic = new LinkedHashMap(); - serviceSpecCharacteristic.put("name", serviceCatalogResponse.get("name") + "_ServiceCharacteristics"); - serviceSpecCharacteristic.put("description", - "This object describes all the inputs needed from the client to interact with the " - + serviceCatalogResponse.get("name") + " Service Topology"); - serviceSpecCharacteristic.put("valueType", "object"); - serviceSpecCharacteristic.put("@type", "ONAPServiceCharacteristic"); - serviceSpecCharacteristic.put("@schemaLocation", "null"); - serviceSpecCharacteristic.put("serviceSpecCharacteristicValue", inputSchemaRef); + Map definitions = new HashMap(); + Model model = new ModelImpl(); - serviceCatalogResponse.put("serviceSpecCharacteristic", serviceSpecCharacteristic); + if (!inputs.isEmpty() && inputs.size() > 0) { + for (Input input : inputs) { + Property property = null; + if (input.getType().equals("list") || input.getType().equals("map")) + property = PropertyBuilder.build("array", null, null); + else + property = PropertyBuilder.build(input.getType(), null, null); - List nodeTemplates = sdcCsarHelper.getServiceNodeTemplates(); - List resourceSpecifications = - (List) serviceCatalogResponse.get("resourceSpecification"); - for (LinkedHashMap resourceSpecification : resourceSpecifications) { - if (resourceSpecification.get("id") != null) { - String id = (String) resourceSpecification.get("id"); - LOGGER.debug("get tosca infos for service id: {}", id); - NodeTemplate nodeTemplate = null; - for (NodeTemplate node : nodeTemplates) { - if (node.getMetaData().getValue("UUID").equals(id)) { - nodeTemplate = node; - break; - } - } - if (nodeTemplate == null) - continue; - resourceSpecification.put("modelCustomizationId", - sdcCsarHelper.getNodeTemplateCustomizationUuid(nodeTemplate)); - } + property.setDescription(input.getDescription()); + property.setRequired(input.isRequired()); + + if (input.getDefault() != null) { + property.setDefault(input.getDefault().toString()); + } + ((ModelImpl) model).addProperty(input.getName(), property); + } + definitions.put("ServiceCharacteristics", model); + + } + + String svcCharacteristicsJson = Json.pretty(definitions); + serviceSpecificationDBManager.saveSpecificationInputSchema(svcCharacteristicsJson, serviceCatalogResponse); + + Metadata serviceMetadata = sdcCsarHelper.getServiceMetadata(); + String instantationType = serviceMetadata.getValue("instantiationType"); + serviceCatalogResponse.put("instantiationType", instantationType); + + LinkedHashMap inputSchemaRef = new LinkedHashMap(); + // use object to match examples in Specifications + inputSchemaRef.put("valueType", "object"); + inputSchemaRef.put("@schemaLocation", + "/serviceSpecification/" + serviceCatalogResponse.get("id") + "/specificationInputSchema"); + inputSchemaRef.put("@type", serviceCatalogResponse.get("name") + "_ServiceCharacteristic"); + + LinkedHashMap serviceSpecCharacteristic = new LinkedHashMap(); + serviceSpecCharacteristic.put("name", serviceCatalogResponse.get("name") + "_ServiceCharacteristics"); + serviceSpecCharacteristic.put("description", + "This object describes all the inputs needed from the client to interact with the " + + serviceCatalogResponse.get("name") + " Service Topology"); + serviceSpecCharacteristic.put("valueType", "object"); + serviceSpecCharacteristic.put("@type", "ONAPServiceCharacteristic"); + serviceSpecCharacteristic.put("@schemaLocation", "null"); + serviceSpecCharacteristic.put("serviceSpecCharacteristicValue", inputSchemaRef); + + serviceCatalogResponse.put("serviceSpecCharacteristic", serviceSpecCharacteristic); + + List nodeTemplates = sdcCsarHelper.getServiceNodeTemplates(); + List resourceSpecifications = (List) serviceCatalogResponse + .get("resourceSpecification"); + for (LinkedHashMap resourceSpecification : resourceSpecifications) { + if (resourceSpecification.get("id") != null) { + String id = (String) resourceSpecification.get("id"); + LOGGER.debug("get tosca infos for service id: {}", id); + NodeTemplate nodeTemplate = null; + for (NodeTemplate node : nodeTemplates) { + if (node.getMetaData().getValue("UUID").equals(id)) { + nodeTemplate = node; + break; + } + } + if (nodeTemplate == null) + continue; + resourceSpecification.put("modelCustomizationId", + sdcCsarHelper.getNodeTemplateCustomizationUuid(nodeTemplate)); + if (!vfModuleEntityList.isEmpty()) { + resourceSpecification.put("childResourceSpecification", listOfVfModelInfo); + } + resourceSpecification.put("InstanceSpecification", listOfInstanceParameters); + + } + } + } + + private static String testNull(Object object) { + if (object == null) { + return "NULL"; + } else if (object instanceof Integer) { + return object.toString(); + } else if (object instanceof String) { + return (String) object; + } else { + return "Type not recognized"; } } -} +} \ No newline at end of file diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java b/src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java index c286d60..95009b8 100644 --- a/src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java +++ b/src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java @@ -17,6 +17,7 @@ package org.onap.nbi.apis.serviceorder; import javax.annotation.PostConstruct; import org.onap.nbi.OnapComponentsUrlPaths; import org.onap.nbi.apis.serviceorder.model.consumer.CreateE2EServiceInstanceResponse; +import org.onap.nbi.apis.serviceorder.model.consumer.CreateMacroServiceInstanceResponse; import org.onap.nbi.apis.serviceorder.model.consumer.CreateServiceInstanceResponse; import org.onap.nbi.apis.serviceorder.model.consumer.DeleteE2EServiceInstanceResponse; import org.onap.nbi.apis.serviceorder.model.consumer.GetE2ERequestStatusResponse; @@ -119,6 +120,27 @@ public class SoClient { } } + public ResponseEntity callMacroCreateServiceInstance(MSOPayload msoPayload) { + + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Calling SO CreateServiceInstance with msoPayload : " + msoPayload.toString()); + } + + try { + ResponseEntity response = restTemplate.exchange(createSoUrl, + HttpMethod.POST, new HttpEntity<>(msoPayload, buildRequestHeader()),CreateMacroServiceInstanceResponse.class); + + logMacroResponsePost(createSoUrl, response); + return response; + } catch (BackendFunctionalException e) { + LOGGER.error(ERROR_ON_CALLING + createSoUrl + " ," + e.getHttpStatus() + " , " + e.getBodyResponse()); + return new ResponseEntity(e.getBodyResponse(), e.getHttpStatus()); + } catch (ResourceAccessException e) { + LOGGER.error(ERROR_ON_CALLING + createSoUrl + " ," + e.getMessage()); + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + public ResponseEntity callE2ECreateServiceInstance(MSOE2EPayload msoPayloadE2E) { if (LOGGER.isDebugEnabled()) { @@ -221,6 +243,18 @@ public class SoClient { } } + private void logMacroResponsePost(String url, ResponseEntity response) { + LOGGER.info(RESPONSE_STATUS + response.getStatusCodeValue()); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("response body : {}", response.getBody().toString()); + } + + if (LOGGER.isWarnEnabled() && !response.getStatusCode().equals(HttpStatus.CREATED)) { + LOGGER.warn("HTTP call SO on {} returns {} , {}", url, response.getStatusCodeValue(), + response.getBody().toString()); + } + } + private void logE2EResponsePost(String url, ResponseEntity response) { LOGGER.info(RESPONSE_STATUS + response.getStatusCodeValue()); if (LOGGER.isDebugEnabled()) { @@ -328,4 +362,4 @@ public class SoClient { return httpHeaders; } -} +} \ No newline at end of file diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/CreateMacroServiceInstanceResponse.java b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/CreateMacroServiceInstanceResponse.java new file mode 100644 index 0000000..bdd7f29 --- /dev/null +++ b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/CreateMacroServiceInstanceResponse.java @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2020 TechMahindra + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.nbi.apis.serviceorder.model.consumer; + +public class CreateMacroServiceInstanceResponse { + + private RequestReferences requestReferences; + + public RequestReferences getRequestReferences() { + return requestReferences; + } + + public void setRequestReferences(RequestReferences requestReferences) { + this.requestReferences = requestReferences; + } + + @Override + public String toString() { + return "CreateMacroServiceInstanceResponse{" + "requestReferences=" + requestReferences + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/ModelInfo.java b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/ModelInfo.java index 1d5cc6e..477770a 100644 --- a/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/ModelInfo.java +++ b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/ModelInfo.java @@ -16,6 +16,10 @@ package org.onap.nbi.apis.serviceorder.model.consumer; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +@JsonInclude(Include.NON_NULL) public class ModelInfo { private String modelType; diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/RequestDetails.java b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/RequestDetails.java index 4a38369..4e361b4 100644 --- a/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/RequestDetails.java +++ b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/RequestDetails.java @@ -24,7 +24,7 @@ public class RequestDetails { private RequestInfo requestInfo; - private RequestParameters requestParameters; + private Object requestParameters; private CloudConfiguration cloudConfiguration; @@ -80,11 +80,11 @@ public class RequestDetails { this.requestInfo = requestInfo; } - public RequestParameters getRequestParameters() { + public Object getRequestParameters() { return requestParameters; } - public void setRequestParameters(RequestParameters requestParameters) { + public void setRequestParameters(Object requestParameters) { this.requestParameters = requestParameters; } diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/RequestInfo.java b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/RequestInfo.java index 3aa54cc..6347a18 100644 --- a/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/RequestInfo.java +++ b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/RequestInfo.java @@ -26,6 +26,8 @@ public class RequestInfo { private String requestorId; + private String productFamilyId; + public String getInstanceName() { return instanceName; } @@ -58,9 +60,18 @@ public class RequestInfo { this.requestorId = requestorId; } + public String getProductFamilyId() { + return productFamilyId; + } + + public void setProductFamilyId(String productFamilyId) { + this.productFamilyId = productFamilyId; + } + @Override public String toString() { return "RequestInfo{" + "instanceName='" + instanceName + '\'' + ", source='" + source + '\'' - + ", suppressRollback=" + suppressRollback + ", requestorId='" + requestorId + '\'' + '}'; + + ", suppressRollback=" + suppressRollback + ", requestorId='" + requestorId + '\'' + + ", productFamilyId='" + productFamilyId + '\'' +'}'; } -} +} \ No newline at end of file diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/VFModelInfo.java b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/VFModelInfo.java new file mode 100644 index 0000000..7dc24c5 --- /dev/null +++ b/src/main/java/org/onap/nbi/apis/serviceorder/model/consumer/VFModelInfo.java @@ -0,0 +1,95 @@ +/** + * Copyright (c) 2020 TechMahindra + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.nbi.apis.serviceorder.model.consumer; + +import org.apache.commons.lang3.builder.ToStringBuilder; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "modelName", "modelUuid", "modelInvariantUuid", "modelVersion", "modelCustomizationUuid" }) +public class VFModelInfo { + + @JsonProperty("modelName") + private String modelName; + @JsonProperty("modelUuid") + private String modelUuid; + @JsonProperty("modelInvariantUuid") + private String modelInvariantUuid; + @JsonProperty("modelVersion") + private String modelVersion; + @JsonProperty("modelCustomizationUuid") + private String modelCustomizationUuid; + + @JsonProperty("modelName") + public String getModelName() { + return modelName; + } + + @JsonProperty("modelName") + public void setModelName(String modelName) { + this.modelName = modelName; + } + + @JsonProperty("modelUuid") + public String getModelUuid() { + return modelUuid; + } + + @JsonProperty("modelUuid") + public void setModelUuid(String modelUuid) { + this.modelUuid = modelUuid; + } + + @JsonProperty("modelInvariantUuid") + public String getModelInvariantUuid() { + return modelInvariantUuid; + } + + @JsonProperty("modelInvariantUuid") + public void setModelInvariantUuid(String modelInvariantUuid) { + this.modelInvariantUuid = modelInvariantUuid; + } + + @JsonProperty("modelVersion") + public String getModelVersion() { + return modelVersion; + } + + @JsonProperty("modelVersion") + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + @JsonProperty("modelCustomizationUuid") + public String getModelCustomizationUuid() { + return modelCustomizationUuid; + } + + @JsonProperty("modelCustomizationUuid") + public void setModelCustomizationUuid(String modelCustomizationUuid) { + this.modelCustomizationUuid = modelCustomizationUuid; + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("modelName", modelName).append("modelUuid", modelUuid) + .append("modelInvariantUuid", modelInvariantUuid).append("modelVersion", modelVersion) + .append("modelCustomizationUuid", modelCustomizationUuid).toString(); + } +} \ No newline at end of file diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/PostSoProcessor.java b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/PostSoProcessor.java index 1b0d77f..e590afc 100644 --- a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/PostSoProcessor.java +++ b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/PostSoProcessor.java @@ -20,6 +20,8 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; + +import org.onap.nbi.apis.servicecatalog.ServiceSpecificationService; import org.onap.nbi.apis.serviceorder.SoClient; import org.onap.nbi.apis.serviceorder.model.ServiceCharacteristic; import org.onap.nbi.apis.serviceorder.model.ServiceOrder; @@ -27,6 +29,7 @@ import org.onap.nbi.apis.serviceorder.model.ServiceOrderItem; import org.onap.nbi.apis.serviceorder.model.StateType; import org.onap.nbi.apis.serviceorder.model.consumer.CloudConfiguration; import org.onap.nbi.apis.serviceorder.model.consumer.CreateE2EServiceInstanceResponse; +import org.onap.nbi.apis.serviceorder.model.consumer.CreateMacroServiceInstanceResponse; import org.onap.nbi.apis.serviceorder.model.consumer.CreateServiceInstanceResponse; import org.onap.nbi.apis.serviceorder.model.consumer.MSOE2EPayload; import org.onap.nbi.apis.serviceorder.model.consumer.MSOPayload; @@ -41,6 +44,7 @@ import org.onap.nbi.apis.serviceorder.model.consumer.ResourceModel; import org.onap.nbi.apis.serviceorder.model.consumer.ServiceModel; import org.onap.nbi.apis.serviceorder.model.consumer.SubscriberInfo; import org.onap.nbi.apis.serviceorder.model.consumer.UserParams; +import org.onap.nbi.apis.serviceorder.model.consumer.VFModelInfo; import org.onap.nbi.apis.serviceorder.model.orchestrator.ServiceOrderInfo; import org.onap.nbi.apis.serviceorder.service.ServiceOrderService; import org.slf4j.Logger; @@ -77,12 +81,24 @@ public class PostSoProcessor { @Value("${onap.cloudOwner}") private String cloudOwner; + + @Value("${onap.k8sCloudOwner}") + private String k8sCloudOwner; + + @Value("${onap.k8sCloudRegionId}") + private String k8sCloudRegionId; + + @Value("${k8s-rb-profile-name}") + private String k8sRbProfileName; @Autowired private ServiceOrderService serviceOrderService; @Autowired private SoClient soClient; + + @Autowired + ServiceSpecificationService serviceSpecificationService; public ResponseEntity postServiceOrderItem(ServiceOrderInfo serviceOrderInfo, ServiceOrderItem serviceOrderItem) { @@ -108,6 +124,19 @@ public class PostSoProcessor { return response; } + public ResponseEntity postMacroServiceOrderItem(ServiceOrderInfo serviceOrderInfo, + ServiceOrderItem serviceOrderItem) { + ResponseEntity response = null; + try { + // For Macro Flow + response = postSOMacroRequest(serviceOrderItem, serviceOrderInfo); + } catch (NullPointerException e) { + LOGGER.error("Unable to create service instance for serviceOrderItem.id=" + serviceOrderItem.getId(), e); + response = null; + } + return response; + } + private ResponseEntity postSORequest(ServiceOrderItem serviceOrderItem, ServiceOrderInfo serviceOrderInfo) { RequestDetails requestDetails = buildSoRequest(serviceOrderItem, serviceOrderInfo); @@ -164,6 +193,221 @@ public class PostSoProcessor { } return response; } + + private ResponseEntity postSOMacroRequest(ServiceOrderItem serviceOrderItem, + ServiceOrderInfo serviceOrderInfo) { + + String serviceModuleName = (String) serviceOrderInfo.getServiceOrderItemInfos().get(serviceOrderItem.getId()) + .getCatalogResponse().get("name"); + + RequestDetails requestDetails = buildSoMacroRequest(serviceOrderItem, serviceOrderInfo); + MSOPayload msoMacroPayload = new MSOPayload(requestDetails); + ResponseEntity response = null; + + switch (serviceOrderItem.getAction()) { + case ADD: + response = soClient.callMacroCreateServiceInstance(msoMacroPayload); + break; + case DELETE: + // response = soClient.callDeleteServiceInstance(msoPayload, + // serviceOrderItem.getService().getId()); + break; + case MODIFY: + if (StateType.INPROGRESS_MODIFY_ITEM_TO_CREATE == serviceOrderItem.getState()) { + // response = soClient.callCreateServiceInstance(msoPayload); + } + if (StateType.ACKNOWLEDGED == serviceOrderItem.getState()) { + // response = soClient.callDeleteServiceInstance(msoPayload, + // serviceOrderItem.getService().getId()); + } + break; + default: + break; + } + return response; + } + + /** + * Build SO MACRO CREATE request from the ServiceOrder and catalog informations from SDC + * + * @param orderItem + * @param serviceOrderInfo + * @param subscriberInfo + * @return + */ + private RequestDetails buildSoMacroRequest(ServiceOrderItem orderItem, ServiceOrderInfo serviceOrderInfo) { + + RequestDetails requestDetails = new RequestDetails(); + Map sdcInfos = serviceOrderInfo.getServiceOrderItemInfos().get(orderItem.getId()) + .getCatalogResponse(); + + String id = orderItem.getService().getServiceSpecification().getId(); + Map responseChildRes = serviceSpecificationService.get(id); + ArrayList> resourseSpecificationArray = (ArrayList>) responseChildRes + .get("resourceSpecification"); + + Map resourseSpecificationMap = resourseSpecificationArray.get(0); + + Map instanceSpecification = (Map) resourseSpecificationMap.get("InstanceSpecification"); + ArrayList childResourceSpecification = (ArrayList) resourseSpecificationMap + .get("childResourceSpecification"); + + List serviceObject = new ArrayList<>(); + + ArrayList vnfInstanceParam = new ArrayList<>(); + + //Differentiating vnf with cnf(Can be discussed and improved) + if (instanceSpecification.get("public_net_id") != null) { + vnfInstanceParam.add(instanceSpecification); + } else { + Map instanceParam = new HashMap<>(); + instanceParam.put("k8s-rb-profile-name", k8sRbProfileName); + vnfInstanceParam.add(instanceParam); + } + + List resSpec = (ArrayList) sdcInfos.get("resourceSpecification"); + Map resSpecMap = (Map) resSpec.get(0); + + Map vnfInfoObject = new HashMap<>(); + vnfInfoObject.put("modelName", (String) resSpecMap.get("name")); + vnfInfoObject.put("modelVersionId", (String) resSpecMap.get("id")); + vnfInfoObject.put("modelInvariantUuid", (String) resSpecMap.get("resourceInvariantUUID")); + vnfInfoObject.put("modelVersion", (String) resSpecMap.get("version")); + vnfInfoObject.put("modelCustomizationId", (String) resSpecMap.get("modelCustomizationId")); + vnfInfoObject.put("modelInstanceName", (String) resSpecMap.get("resourceInstanceName")); + + //initialization + CloudConfiguration cloudConfiguration = null; + + //Differentiating vnf with cnf(Can be discussed and improved) + if (instanceSpecification.get("public_net_id") != null) { + cloudConfiguration = new CloudConfiguration(lcpCloudRegionId, tenantId, cloudOwner); + } else { + cloudConfiguration = new CloudConfiguration(k8sCloudRegionId, tenantId, k8sCloudOwner); + } + + Map platformName = new HashMap<>(); + platformName.put("platformName", "test"); + + Map lob = new HashMap<>(); + lob.put("lineOfBusinessName", "LOB-Demonstration"); + + Map vnfModel = new HashMap<>(); + vnfModel.put("modelInfo", vnfInfoObject); + vnfModel.put("cloudConfiguration", cloudConfiguration); + vnfModel.put("platform", platformName); + vnfModel.put("lineOfBusiness", lob); + vnfModel.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + vnfModel.put("instanceName", (String) resSpecMap.get("resourceInstanceName")); + vnfModel.put("instanceParams", vnfInstanceParam); + + List vfModulesObjects = new ArrayList<>(); + ArrayList> vfInstanceParam = new ArrayList<>(); + + //Differentiate CNF from VNF + if (instanceSpecification.get("public_net_id") != null) { + vfInstanceParam.add(instanceSpecification); + + } else { + Map instanceParam = new HashMap<>(); + instanceParam.put("k8s-rb-profile-name", k8sRbProfileName); + vfInstanceParam.add(instanceParam); + } + + for (VFModelInfo crsObject : childResourceSpecification) { + Map vfModuleObject = new HashMap<>(); + Map vfModuleInfo = new HashMap<>(); + + vfModuleInfo.put("modelName", crsObject.getModelName()); + vfModuleInfo.put("modelVersionId", crsObject.getModelUuid()); + vfModuleInfo.put("modelInvariantUuid", crsObject.getModelInvariantUuid()); + vfModuleInfo.put("modelVersion", crsObject.getModelVersion()); + vfModuleInfo.put("modelCustomizationId", crsObject.getModelCustomizationUuid()); + vfModuleObject.put("modelInfo", vfModuleInfo); + vfModuleObject.put("instanceName", crsObject.getModelName()); + vfModuleObject.put("instanceParams", vfInstanceParam); + + vfModulesObjects.add(vfModuleObject); + } + vnfModel.put("vfModules", vfModulesObjects); + + List vnfObjects = new ArrayList<>(); + vnfObjects.add(vnfModel); + + Map vnfData = new HashMap<>(); + vnfData.put("vnfs", vnfObjects); + + ModelInfo serviceModelInfo = new ModelInfo(); + serviceModelInfo.setModelType("service"); + serviceModelInfo.setModelInvariantId((String) sdcInfos.get("invariantUUID")); + serviceModelInfo.setModelVersionId(orderItem.getService().getServiceSpecification().getId()); + serviceModelInfo.setModelName((String) sdcInfos.get("name")); + serviceModelInfo.setModelVersion((String) sdcInfos.get("version")); + + // Adding List of instanceParams for service + // We can add instanceParams Key Value in Map Object and add it to the List, for + // For now it is empty to comply with so request + + List> listOfServiceLevelInstanceParams = new ArrayList<>(); + Map serviceInstanceParams= new HashMap<>(); + listOfServiceLevelInstanceParams.add(serviceInstanceParams); + + Map serviceData = new HashMap<>(); + serviceData.put("instanceParams", listOfServiceLevelInstanceParams); + serviceData.put("instanceName", orderItem.getService().getName()); + serviceData.put("resources", vnfData); + serviceData.put("modelInfo", serviceModelInfo); + + Map homingObject = new HashMap<>(); + homingObject.put("Homing_Solution", "none"); + serviceObject.add(homingObject); + + Map serviceObject1 = new HashMap<>(); + serviceObject1.put("service", serviceData); + serviceObject.add(serviceObject1); + requestDetails.setSubscriberInfo(serviceOrderInfo.getSubscriberInfo()); + + ModelInfo modelInfo = new ModelInfo(); + modelInfo.setModelType("service"); + modelInfo.setModelInvariantId((String) sdcInfos.get("invariantUUID")); + modelInfo.setModelVersionId(orderItem.getService().getServiceSpecification().getId()); + modelInfo.setModelName((String) sdcInfos.get("name")); + modelInfo.setModelVersion((String) sdcInfos.get("version")); + requestDetails.setModelInfo(modelInfo); + + RequestInfo requestInfo = new RequestInfo(); + requestInfo.setInstanceName(orderItem.getService().getName()); + requestInfo.setSource("VID"); + requestInfo.setSuppressRollback(false); + requestInfo.setRequestorId("NBI"); + requestInfo.setProductFamilyId("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"); + requestDetails.setRequestInfo(requestInfo); + + // We are taking RequestParameters as map because it has UserParams which gives value as + // "name" : "service" + // "value" : "", which SO is not accepting + Map requestParameters = new HashMap<>(); + + // Get value from serviceOrder request or generate one + String serviceTypeFromJson = orderItem.getService().getServicetype(); + requestParameters.put("subscriptionServiceType", + serviceTypeFromJson != null ? serviceTypeFromJson : (String) sdcInfos.get("name")); + requestParameters.put("userParams", serviceObject); + requestParameters.put("aLaCarte", false); + requestDetails.setRequestParameters(requestParameters); + requestDetails.setCloudConfiguration(cloudConfiguration); + + OwningEntity owningEntity = new OwningEntity(); + owningEntity.setOwningEntityId(soOwningEntityId); + owningEntity.setOwningEntityName(soOwningEntityName); + requestDetails.setOwningEntity(owningEntity); + + Project project = new Project(); + project.setProjectName(soProjectName); + + requestDetails.setProject(project); + return requestDetails; + } /** * Build SO CREATE request from the ServiceOrder and catalog informations from SDC @@ -262,7 +506,7 @@ public class PostSoProcessor { if (!userParams.isEmpty()) { Map requestInputs = new HashMap(); for (int i = 0; i < userParams.size(); i++) { - requestInputs.put(userParams.get(i).getName(), userParams.get(i).getValue()); + requestInputs.put(userParams.get(i).getName(), (String) userParams.get(i).getValue()); } parameters.setRequestInputs(requestInputs); @@ -320,4 +564,4 @@ public class PostSoProcessor { return userParams; } -} +} \ No newline at end of file diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java index d63d122..fe0938d 100644 --- a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java +++ b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java @@ -24,6 +24,7 @@ import org.onap.nbi.apis.serviceorder.model.ServiceOrder; import org.onap.nbi.apis.serviceorder.model.ServiceOrderItem; import org.onap.nbi.apis.serviceorder.model.StateType; import org.onap.nbi.apis.serviceorder.model.consumer.CreateE2EServiceInstanceResponse; +import org.onap.nbi.apis.serviceorder.model.consumer.CreateMacroServiceInstanceResponse; import org.onap.nbi.apis.serviceorder.model.consumer.CreateServiceInstanceResponse; import org.onap.nbi.apis.serviceorder.model.orchestrator.ExecutionTask; import org.onap.nbi.apis.serviceorder.model.orchestrator.ServiceOrderInfo; @@ -92,8 +93,10 @@ public class SOTaskProcessor { updateE2EServiceOrderItem(response, serviceOrderItem, serviceOrder); } else if (macroService) { LOGGER.info("Mode type macro"); - //TODO: Add logic to construct SO macro request body and call SO macro flow.(EXTAPI-368) - + // call SO macro flow.(EXTAPI-368) + ResponseEntity response = postSoProcessor + .postMacroServiceOrderItem(serviceOrderInfo, serviceOrderItem); + updateMacroServiceOrderItem(response, serviceOrderItem, serviceOrder); } else { ResponseEntity response = @@ -216,6 +219,35 @@ public class SOTaskProcessor { } } + /** + * Update ServiceOrderItem with SO response by using serviceOrderRepository with the serviceOrderId + */ + private void updateMacroServiceOrderItem(ResponseEntity response, + ServiceOrderItem orderItem, ServiceOrder serviceOrder) { + + if (response == null || !response.getStatusCode().is2xxSuccessful()) { + LOGGER.warn("response ko for serviceOrderItem.id=" + orderItem.getId()); + serviceOrderService.updateOrderItemState(serviceOrder, orderItem, StateType.FAILED); + buildOrderMessageIfNeeded(orderItem, serviceOrder, response); + } else { + CreateMacroServiceInstanceResponse createMacroServiceInstanceResponse = response.getBody(); + if (createMacroServiceInstanceResponse != null && !orderItem.getState().equals(StateType.FAILED)) { + orderItem.getService().setId(createMacroServiceInstanceResponse.getRequestReferences().getInstanceId()); + orderItem.setRequestId(createMacroServiceInstanceResponse.getRequestReferences().getRequestId()); + } + + if (!response.getStatusCode().is2xxSuccessful() || response.getBody() == null + || response.getBody().getRequestReferences() == null) { + serviceOrderService.updateOrderItemState(serviceOrder, orderItem, StateType.FAILED); + LOGGER + .warn("order item {} failed , status {} , response {}", orderItem.getId(), response.getStatusCode(), + response.getBody()); + } else { + serviceOrderService.updateOrderItemState(serviceOrder, orderItem, StateType.INPROGRESS); + } + } + } + private void updateOrderItemToInProgress(ServiceOrder serviceOrder, ServiceOrderItem serviceOrderItem) { if (serviceOrderItem.getAction() != ActionType.MODIFY) { serviceOrderService.updateOrderItemState(serviceOrder, serviceOrderItem, StateType.INPROGRESS); @@ -341,4 +373,4 @@ public class SOTaskProcessor { LOGGER.debug("Difference {} and Polling Duration {}", differenceInMillis, pollingDurationInMins); return (differenceInMillis > pollingDurationInMillis); } -} +} \ No newline at end of file diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties index 1a73f16..ac3efec 100644 --- a/src/main/resources/application-test.properties +++ b/src/main/resources/application-test.properties @@ -30,12 +30,17 @@ onap.lcpCloudRegionId = RegionOne onap.tenantId = 31047205ce114b60833b23e400d6a535 onap.cloudOwner = CloudOwner +# k8s +onap.k8sCloudRegionId = k8sregionfour +onap.k8sCloudOwner = k8scloudowner4 +k8s-rb-profile-name = default + # NBI nbi.url = http://localhost:${server.port}${server.servlet.context-path} nbi.callForVNF = false # SCHEDULER -scheduler.pollingDurationInMins = 0.1 +scheduler.pollingDurationInMins = 0.2 serviceOrder.schedule = 5000 serviceOrder.initial = 1 executionTask.schedule = 2000 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e719c6f..b010f50 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -40,6 +40,11 @@ onap.lcpCloudRegionId = RegionOne onap.tenantId = 6e97a2bd51d74f6db5671d8dc1517d82 onap.cloudOwner = CloudOwner +# k8s +onap.k8sCloudRegionId = k8sregionfour +onap.k8sCloudOwner = k8scloudowner4 +k8s-rb-profile-name = default + # NBI nbi.url = https://localhost:${server.port}${server.servlet.context-path} nbi.public.url = https://${server.public.ip}:${server.port}${server.servlet.context-path} diff --git a/src/test/java/org/onap/nbi/apis/assertions/ServiceOrderExecutionTaskAssertions.java b/src/test/java/org/onap/nbi/apis/assertions/ServiceOrderExecutionTaskAssertions.java index b09cf1d..621a938 100644 --- a/src/test/java/org/onap/nbi/apis/assertions/ServiceOrderExecutionTaskAssertions.java +++ b/src/test/java/org/onap/nbi/apis/assertions/ServiceOrderExecutionTaskAssertions.java @@ -162,6 +162,76 @@ public class ServiceOrderExecutionTaskAssertions { } + public static ServiceOrder createTestServiceOrderForMacro(ActionType actionType) { + ServiceOrder serviceOrder = new ServiceOrder(); + serviceOrder.setExternalId("LudONAP001"); + serviceOrder.setPriority("1"); + serviceOrder.setDescription("Ludo first ONAP Order"); + serviceOrder.setCategory("Consumer"); + serviceOrder.setRequestedStartDate(new Date()); + serviceOrder.setRequestedCompletionDate(new Date()); + serviceOrder.setBaseType("toto"); + serviceOrder.setCompletionDateTime(new Date()); + serviceOrder.setExpectedCompletionDate(new Date()); + serviceOrder.setSchemaLocation("/tutu"); + + OrderRelationship orderRelationship = new OrderRelationship(); + orderRelationship.setId("test"); + orderRelationship.setHref("test"); + orderRelationship.setReferredType("test"); + orderRelationship.setType("type"); + List relationships = new ArrayList<>(); + serviceOrder.setOrderRelationship(relationships); + + RelatedParty party = new RelatedParty(); + party.setId("6490"); + party.setRole("ONAPcustomer"); + party.setReferredType("individual"); + party.setName("Jean Pontus"); + List relatedPartyList = new ArrayList<>(); + relatedPartyList.add(party); + serviceOrder.setRelatedParty(relatedPartyList); + + List items = new ArrayList<>(); + + ServiceOrderItem itemA = new ServiceOrderItem(); + itemA.id("A"); + itemA.action(actionType); + Service serviceA = new Service(); + if (actionType != ActionType.ADD) { + serviceA.setId("e4688e5f-61a0-4f8b-ae02-a2fbde623bcb"); + } + serviceA.setServiceState("active"); + ServiceSpecificationRef serviceSpecificationRefA = new ServiceSpecificationRef(); + serviceSpecificationRefA.setId("82c9fbb4-656c-4973-8c7f-172b22b5fa8f"); + serviceA.setServiceSpecification(serviceSpecificationRefA); + itemA.setService(serviceA); + items.add(itemA); + + ServiceOrderItem itemB = new ServiceOrderItem(); + itemB.id("B"); + itemB.action(actionType); + Service serviceB = new Service(); + if (actionType != ActionType.ADD) { + serviceB.setId("e4688e5f-61a0-4f8b-ae02-a2fbde623bcb"); + } + serviceB.setServiceState("active"); + ServiceSpecificationRef serviceSpecificationRefB = new ServiceSpecificationRef(); + serviceSpecificationRefB.setId("82c9fbb4-656c-4973-8c7f-172b22b5fa8f"); + serviceB.setServiceSpecification(serviceSpecificationRefB); + itemB.setService(serviceB); + List orderItemRelationships = new ArrayList<>(); + OrderItemRelationship orderItemRelationship = new OrderItemRelationship(); + orderItemRelationship.setId("A"); + orderItemRelationship.setType(RelationshipType.RELIESON); + orderItemRelationships.add(orderItemRelationship); + itemB.setOrderItemRelationship(orderItemRelationships); + items.add(itemB); + serviceOrder.setOrderItem(items); + return serviceOrder; + + } + public static ExecutionTask setUpBddForExecutionTaskSucess(ServiceOrderRepository serviceOrderRepository, ExecutionTaskRepository executionTaskRepository, ActionType actionType) { ServiceOrder testServiceOrder = createTestServiceOrder(actionType); @@ -437,4 +507,235 @@ public class ServiceOrderExecutionTaskAssertions { executionTaskRepository.save(executionTaskB); return executionTaskA; } -} + + public static ExecutionTask setUpBddForMacroExecutionTaskSucess(ServiceOrderRepository serviceOrderRepository, + ExecutionTaskRepository executionTaskRepository, ActionType actionType) { + + ServiceOrder testServiceOrder = createTestServiceOrderForMacro(actionType); + + for (ServiceOrderItem serviceOrderItem : testServiceOrder.getOrderItem()) { + serviceOrderItem.setState(StateType.ACKNOWLEDGED); + List serviceCharacteristics = new ArrayList(); + ServiceCharacteristic serviceCharacteristic1 = new ServiceCharacteristic(); + serviceCharacteristic1.setName("access-site-id"); + Value value1 = new Value(); + value1.setServiceCharacteristicValue("1234765"); + serviceCharacteristic1.setValue(value1); + serviceCharacteristics.add(serviceCharacteristic1); + ServiceCharacteristic serviceCharacteristic2 = new ServiceCharacteristic(); + serviceCharacteristic2.setName("provider-site-id"); + Value value2 = new Value(); + value2.setServiceCharacteristicValue("654321"); + serviceCharacteristic2.setValue(value2); + serviceCharacteristics.add(serviceCharacteristic2); + serviceOrderItem.getService().setServiceCharacteristic(serviceCharacteristics); + } + + testServiceOrder.setState(StateType.ACKNOWLEDGED); + testServiceOrder.setId("test"); + serviceOrderRepository.save(testServiceOrder); + + LinkedHashMap sdcResponse = new LinkedHashMap<>(); + sdcResponse.put("invariantUUID", "uuid"); + sdcResponse.put("name", "VLB_Service"); + sdcResponse.put("version", "1.0"); + sdcResponse.put("category", "Network Service"); + sdcResponse.put("instantiationType", "Macro"); + + List resourceSpecs = new ArrayList<>(); + ResourceSpecification resourceSpecificationA = new ResourceSpecification(); + resourceSpecificationA.setId("35d7887d-3c35-4fb4-aed1-d15b4d9f4ccc"); + resourceSpecificationA.setInstanceName("vLB_VSP"); + resourceSpecificationA.setName("vLB_VSP"); + resourceSpecificationA.setType("VF"); + resourceSpecificationA.setVersion("1.0"); + resourceSpecificationA.setResourceInvariantUUID("368371e6-1d2f-4f4a-b992-a9053c7c2f1e"); + resourceSpecs.add(resourceSpecificationA); + + sdcResponse.put("resourceSpecification", resourceSpecs); + + ServiceOrderInfo serviceOrderInfo = new ServiceOrderInfo(); + serviceOrderInfo.setServiceOrderId("test"); + SubscriberInfo subscriberInfo = new SubscriberInfo(); + subscriberInfo.setGlobalSubscriberId("6490"); + subscriberInfo.setSubscriberName("edgar"); + serviceOrderInfo.setSubscriberInfo(subscriberInfo); + + ServiceOrderItemInfo serviceOrderItemInfoA = new ServiceOrderItemInfo(); + serviceOrderItemInfoA.setId("A"); + serviceOrderItemInfoA.setCatalogResponse(sdcResponse); + + ServiceOrderItemInfo serviceOrderItemInfoB = new ServiceOrderItemInfo(); + serviceOrderItemInfoB.setId("B"); + serviceOrderItemInfoB.setCatalogResponse(sdcResponse); + serviceOrderInfo.addServiceOrderItemInfos("A", serviceOrderItemInfoA); + serviceOrderInfo.addServiceOrderItemInfos("B", serviceOrderItemInfoB); + + + + String json = JsonEntityConverter.convertServiceOrderInfoToJson(serviceOrderInfo); + + ExecutionTask executionTaskA = new ExecutionTask(); + executionTaskA.setCreateDate(new Date()); + executionTaskA.setOrderItemId("A"); + executionTaskA.setServiceOrderInfoJson(json); + executionTaskA = executionTaskRepository.save(executionTaskA); + ExecutionTask executionTaskB = new ExecutionTask(); + executionTaskB.setCreateDate(new Date()); + executionTaskB.setOrderItemId("B"); + executionTaskB.setReliedTasks(String.valueOf(executionTaskA.getInternalId())); + executionTaskB.setServiceOrderInfoJson(json); + executionTaskRepository.save(executionTaskB); + return executionTaskA; + } + + public static ExecutionTask setUpBddForMacroExecutionTaskSucessWithObject( + ServiceOrderRepository serviceOrderRepository, ExecutionTaskRepository executionTaskRepository, + ActionType actionType) { + ServiceOrder testServiceOrder = createTestServiceOrderForMacro(actionType); + + for (ServiceOrderItem serviceOrderItem : testServiceOrder.getOrderItem()) { + serviceOrderItem.setState(StateType.ACKNOWLEDGED); + List serviceCharacteristics = new ArrayList(); + ServiceCharacteristic serviceCharacteristic1 = new ServiceCharacteristic(); + serviceCharacteristic1.setName("ServiceCharacteristics"); + serviceCharacteristic1.setValueType("object"); + Value value1 = new Value(); + value1.setServiceCharacteristicValue("{ \"key1\":\"value1\", \"key2\":\"value2\"}"); + serviceCharacteristic1.setValue(value1); + serviceCharacteristics.add(serviceCharacteristic1); + serviceOrderItem.getService().setServiceCharacteristic(serviceCharacteristics); + } + + testServiceOrder.setState(StateType.ACKNOWLEDGED); + testServiceOrder.setId("test"); + serviceOrderRepository.save(testServiceOrder); + + LinkedHashMap sdcResponse = new LinkedHashMap<>(); + sdcResponse.put("invariantUUID", "uuid"); + sdcResponse.put("name", "VLB_Service"); + sdcResponse.put("version", "1"); + sdcResponse.put("category", "Network Service"); + sdcResponse.put("instantiationType", "Macro"); + + List resourceSpecs = new ArrayList<>(); + ResourceSpecification resourceSpecificationA = new ResourceSpecification(); + resourceSpecificationA.setId("35d7887d-3c35-4fb4-aed1-d15b4d9f4ccc"); + resourceSpecificationA.setInstanceName("vLB_VSP"); + resourceSpecificationA.setName("vFW-SINK"); + resourceSpecificationA.setType("ONAPresource"); + resourceSpecificationA.setVersion("2.0"); + resourceSpecificationA.setResourceInvariantUUID("368371e6-1d2f-4f4a-b992-a9053c7c2f1e"); + resourceSpecs.add(resourceSpecificationA); + + sdcResponse.put("resourceSpecification", resourceSpecs); + + ServiceOrderInfo serviceOrderInfo = new ServiceOrderInfo(); + serviceOrderInfo.setServiceOrderId("test"); + SubscriberInfo subscriberInfo = new SubscriberInfo(); + subscriberInfo.setGlobalSubscriberId("6490"); + subscriberInfo.setSubscriberName("edgar"); + serviceOrderInfo.setSubscriberInfo(subscriberInfo); + + ServiceOrderItemInfo serviceOrderItemInfoA = new ServiceOrderItemInfo(); + serviceOrderItemInfoA.setId("A"); + serviceOrderItemInfoA.setCatalogResponse(sdcResponse); + + ServiceOrderItemInfo serviceOrderItemInfoB = new ServiceOrderItemInfo(); + serviceOrderItemInfoB.setId("B"); + serviceOrderItemInfoB.setCatalogResponse(sdcResponse); + serviceOrderInfo.addServiceOrderItemInfos("A", serviceOrderItemInfoA); + serviceOrderInfo.addServiceOrderItemInfos("B", serviceOrderItemInfoB); + + String json = JsonEntityConverter.convertServiceOrderInfoToJson(serviceOrderInfo); + + ExecutionTask executionTaskA = new ExecutionTask(); + executionTaskA.setCreateDate(new Date()); + executionTaskA.setOrderItemId("A"); + executionTaskA.setServiceOrderInfoJson(json); + executionTaskA = executionTaskRepository.save(executionTaskA); + ExecutionTask executionTaskB = new ExecutionTask(); + executionTaskB.setCreateDate(new Date()); + executionTaskB.setOrderItemId("B"); + executionTaskB.setReliedTasks(String.valueOf(executionTaskA.getInternalId())); + executionTaskB.setServiceOrderInfoJson(json); + executionTaskRepository.save(executionTaskB); + return executionTaskA; + } + + public static ExecutionTask setUpBddForMacroExecutionTaskSucessWithComplexObject( + ServiceOrderRepository serviceOrderRepository, ExecutionTaskRepository executionTaskRepository, + ActionType actionType) { + ServiceOrder testServiceOrder = createTestServiceOrderForMacro(actionType); + + for (ServiceOrderItem serviceOrderItem : testServiceOrder.getOrderItem()) { + serviceOrderItem.setState(StateType.ACKNOWLEDGED); + List serviceCharacteristics = new ArrayList<>(); + ServiceCharacteristic serviceCharacteristic1 = new ServiceCharacteristic(); + serviceCharacteristic1.setName("ServiceCharacteristics"); + serviceCharacteristic1.setValueType("object"); + Value value1 = new Value(); + // Three parameters , one is an array of child objects + value1.setServiceCharacteristicValue( + "{\"key1\":\"value1\", \"key2\":\"value2\", \"key3\":[ {\"lat1\":\"value1\",\"lon1\":\"value1\"}, { \"lat2\":\"value2\", \"lon2\":\"value2\"}]}"); + serviceCharacteristic1.setValue(value1); + serviceCharacteristics.add(serviceCharacteristic1); + serviceOrderItem.getService().setServiceCharacteristic(serviceCharacteristics); + } + + testServiceOrder.setState(StateType.ACKNOWLEDGED); + testServiceOrder.setId("test"); + serviceOrderRepository.save(testServiceOrder); + + LinkedHashMap sdcResponse = new LinkedHashMap<>(); + sdcResponse.put("invariantUUID", "uuid"); + sdcResponse.put("name", "VLB_Service"); + sdcResponse.put("version", "1"); + sdcResponse.put("category", "Network Services"); + sdcResponse.put("instantiationType", "Macro"); + + List resourceSpecs = new ArrayList<>(); + ResourceSpecification resourceSpecificationA = new ResourceSpecification(); + resourceSpecificationA.setId("35d7887d-3c35-4fb4-aed1-d15b4d9f4ccc"); + resourceSpecificationA.setInstanceName("vLB_VSP"); + resourceSpecificationA.setName("vLB_VSP"); + resourceSpecificationA.setType("ONAPresource"); + resourceSpecificationA.setVersion("2.0"); + resourceSpecificationA.setResourceInvariantUUID("368371e6-1d2f-4f4a-b992-a9053c7c2f1e"); + resourceSpecs.add(resourceSpecificationA); + + sdcResponse.put("resourceSpecification", resourceSpecs); + + ServiceOrderInfo serviceOrderInfo = new ServiceOrderInfo(); + serviceOrderInfo.setServiceOrderId("test"); + SubscriberInfo subscriberInfo = new SubscriberInfo(); + subscriberInfo.setGlobalSubscriberId("6490"); + subscriberInfo.setSubscriberName("edgar"); + serviceOrderInfo.setSubscriberInfo(subscriberInfo); + + ServiceOrderItemInfo serviceOrderItemInfoA = new ServiceOrderItemInfo(); + serviceOrderItemInfoA.setId("A"); + serviceOrderItemInfoA.setCatalogResponse(sdcResponse); + + ServiceOrderItemInfo serviceOrderItemInfoB = new ServiceOrderItemInfo(); + serviceOrderItemInfoB.setId("B"); + serviceOrderItemInfoB.setCatalogResponse(sdcResponse); + serviceOrderInfo.addServiceOrderItemInfos("A", serviceOrderItemInfoA); + serviceOrderInfo.addServiceOrderItemInfos("B", serviceOrderItemInfoB); + + String json = JsonEntityConverter.convertServiceOrderInfoToJson(serviceOrderInfo); + + ExecutionTask executionTaskA = new ExecutionTask(); + executionTaskA.setCreateDate(new Date()); + executionTaskA.setOrderItemId("A"); + executionTaskA.setServiceOrderInfoJson(json); + executionTaskA = executionTaskRepository.save(executionTaskA); + ExecutionTask executionTaskB = new ExecutionTask(); + executionTaskB.setCreateDate(new Date()); + executionTaskB.setOrderItemId("B"); + executionTaskB.setReliedTasks(String.valueOf(executionTaskA.getInternalId())); + executionTaskB.setServiceOrderInfoJson(json); + executionTaskRepository.save(executionTaskB); + return executionTaskA; + } +} \ No newline at end of file diff --git a/src/test/java/org/onap/nbi/apis/servicecatalog/ToscaInfosProcessorTest.java b/src/test/java/org/onap/nbi/apis/servicecatalog/ToscaInfosProcessorTest.java index e02cdc0..026c81f 100644 --- a/src/test/java/org/onap/nbi/apis/servicecatalog/ToscaInfosProcessorTest.java +++ b/src/test/java/org/onap/nbi/apis/servicecatalog/ToscaInfosProcessorTest.java @@ -18,10 +18,13 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.File; import java.nio.file.Path; import java.util.ArrayList; +import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import org.junit.Test; import org.junit.runner.RunWith; +import org.onap.nbi.apis.serviceorder.model.consumer.VFModelInfo; import org.onap.nbi.exceptions.TechnicalException; import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.springframework.beans.factory.annotation.Autowired; @@ -237,4 +240,143 @@ public class ToscaInfosProcessorTest { } assertThat(response.get("serviceSpecCharacteristic")).isEqualTo(serviceSpecCharacteristic); } + + + @Test + public void testBuildAndSaveResponseWithSdcToscaParserWithVFModule() { + + ClassLoader classLoader = getClass().getClassLoader(); + + // Adding Path to TOSCA File to provide as parameter + Path path = new File(classLoader.getResource("toscafile/service-VlbService-csar.csar").getFile()).toPath() + .toAbsolutePath(); + + // Preparing Response Data + LinkedHashMap response = new LinkedHashMap<>(); + response.put("version", "1.0"); + response.put("name", "VLB_Service"); + response.put("description", "VLB_Service"); + response.put("id", "82c9fbb4-656c-4973-8c7f-172b22b5fa8f"); + + // Resources + List> resources = new ArrayList<>(); + LinkedHashMap resource1 = new LinkedHashMap<>(); + resource1.put("id", "35d7887d-3c35-4fb4-aed1-d15b4d9f4ccc"); + resources.add(resource1); + + // Resources to put in response as resourceSpecification + response.put("resourceSpecification", resources); + + // Test Data for VFModule 1:: An object of vFModelInfo1 + VFModelInfo vFModelInfo1 = new VFModelInfo(); + vFModelInfo1.setModelName("VlbVsp..dnsscaling..module-1"); + vFModelInfo1.setModelUuid("9bfd197c-7e18-41bd-927d-57102a6fda7e"); + vFModelInfo1.setModelInvariantUuid("888b6342-8aea-4416-b485-e24726c1f964"); + vFModelInfo1.setModelVersion("1"); + vFModelInfo1.setModelCustomizationUuid("4c387136-2fa2-420f-94e9-3312f863a352"); + + // Test Data for VFModule 2:: An object of vFModelInfo2 + VFModelInfo vFModelInfo2 = new VFModelInfo(); + vFModelInfo2.setModelName("VlbVsp..base_vlb..module-0"); + vFModelInfo2.setModelUuid("d0325d26-43f2-4c6f-aff5-2832ac2d8ab0"); + vFModelInfo2.setModelInvariantUuid("bcbdfc80-4fb1-4c3e-b4e3-77721bac61db"); + vFModelInfo2.setModelVersion("1"); + vFModelInfo2.setModelCustomizationUuid("0895caa9-b7d3-4e02-9a3c-8337c4076948"); + + // Test data for list of vFModelInfo + List vfModelInfoListTestData = new ArrayList<>(); + vfModelInfoListTestData.add(vFModelInfo1); + vfModelInfoListTestData.add(vFModelInfo2); + + // Calling buildAndSaveResponseWithSdcToscaParser with tosca file and prepared + // response as parameter + try { + toscaInfosProcessor.buildAndSaveResponseWithSdcToscaParser(path, response); + } catch (SdcToscaParserException e) { + throw new TechnicalException("unable to build response from tosca csar using sdc-parser : " + + path.toString() + " " + e.getMessage()); + } + + // Getting resourceSpecifications from response + List resourceSpecifications = (List) response.get("resourceSpecification"); + + // Getting childResourceSpecifications from resourceSpecifications that we got + // from response + List childResourceSpecifications = (ArrayList) (resourceSpecifications.get(0)) + .get("childResourceSpecification"); + + // Asserting childResourceSpecifications with our vfModelInfoListTestData :: + // CSAR has two vfModules + + for (int i = 0; i < vfModelInfoListTestData.size(); i++) { + assertThat(childResourceSpecifications.get(i)).hasFieldOrPropertyWithValue("modelName", + vfModelInfoListTestData.get(i).getModelName()); + assertThat(childResourceSpecifications.get(i)).hasFieldOrPropertyWithValue("modelUuid", + vfModelInfoListTestData.get(i).getModelUuid()); + assertThat(childResourceSpecifications.get(i)).hasFieldOrPropertyWithValue("modelInvariantUuid", + vfModelInfoListTestData.get(i).getModelInvariantUuid()); + assertThat(childResourceSpecifications.get(i)).hasFieldOrPropertyWithValue("modelVersion", + vfModelInfoListTestData.get(i).getModelVersion()); + assertThat(childResourceSpecifications.get(i)).hasFieldOrPropertyWithValue("modelCustomizationUuid", + vfModelInfoListTestData.get(i).getModelCustomizationUuid()); + } + + } + + @Test + public void testBuildAndSaveResponseWithSdcToscaParserWithInstanceSpecification() { + + ClassLoader classLoader = getClass().getClassLoader(); + + // Adding Path to TOSCA File to provide as parameter + Path path = new File(classLoader.getResource("toscafile/service-VlbService-csar.csar").getFile()).toPath() + .toAbsolutePath(); + + // Creating response to provide as parameter + LinkedHashMap response = new LinkedHashMap(); + response.put("version", "1.0"); + response.put("name", "VLB_Service"); + response.put("description", "VLB_Service"); + response.put("id", "82c9fbb4-656c-4973-8c7f-172b22b5fa8f"); + + // Resources + List resources = new ArrayList<>(); + LinkedHashMap resource1 = new LinkedHashMap(); + resource1.put("id", "35d7887d-3c35-4fb4-aed1-d15b4d9f4ccc"); + resources.add(resource1); + + // instanceSpecification Test Data + Map instanceSpecificationTestData = new LinkedHashMap<>(); + instanceSpecificationTestData.put("cloud_env", "openstack"); + instanceSpecificationTestData.put("demo_artifacts_version", "1.2.1"); + instanceSpecificationTestData.put("install_script_version", "1.2.1"); + instanceSpecificationTestData.put("onap_private_net_id", "09407156-5e6e-45a7-b4aa-6eeb7ad4aba9"); + instanceSpecificationTestData.put("onap_private_subnet_id", "8c6df8fa-2735-49ad-ba04-24701d85ba79"); + instanceSpecificationTestData.put("pub_key", + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/EnxIi7fcHMEi9VPtCGCOpQYblj9r0M/CaD5U15Cb5qHzcHiPtJpVsDMlPGzN9VHxWZG6FqQv1s6oE+PmG1xeahhb+ofrY6s8zvlUCcWGIo/bPexzb2ErvkGyd+1tQo9oLrxNdUG0xeWUX3oFkiw3RBRyxf9n4E5ajZr4cEFQ0sqJkslj87XViw/h555ydIYTY5cPNmIlsIXTObC/2z3muVWYUzaaZE8omfYJE442+UhYLHgb7Cl1JMk/SNu/r+bLrsXeBSPB+/bxVKqjpd659AQ7GRNXvBrgfq6EKNiVjrI76AbpeTM2D/LXbENuUUkvJBWptSd0gPAGkEyc9w2n"); + instanceSpecificationTestData.put("public_net_id", + "60dc8a1c-86b8-4cc4-b5c8-9b0272113c1f0f1c389d-e9db-4c14-b3a2-11dca2d104ed"); + + // Resources to put in response as resourceSpecification + response.put("resourceSpecification", resources); + + // List vfModelInfoListTestData = new ArrayList(); + + try { + toscaInfosProcessor.buildAndSaveResponseWithSdcToscaParser(path, response); + } catch (SdcToscaParserException e) { + throw new TechnicalException("unable to build response from tosca csar using sdc-parser : " + + path.toString() + " " + e.getMessage()); + } + + // Getting + List resourceSpecifications = (List) response.get("resourceSpecification"); + + Map instanceSpecification = (HashMap) (resourceSpecifications.get(0)).get("InstanceSpecification"); + + // Test against test data and returned response's data for instanceSpecification + // instanceSpecificationTestData = new HashMap(); + assertThat(instanceSpecificationTestData).isEqualTo(instanceSpecification); + + } } diff --git a/src/test/java/org/onap/nbi/test/ExecutionTaskTest.java b/src/test/java/org/onap/nbi/test/ExecutionTaskTest.java index 5b39600..2b28eff 100644 --- a/src/test/java/org/onap/nbi/test/ExecutionTaskTest.java +++ b/src/test/java/org/onap/nbi/test/ExecutionTaskTest.java @@ -330,7 +330,42 @@ public class ExecutionTaskTest { assertThat(executionTaskRepository.count()).isEqualTo(0); } + + // Macro Flow Execution Task + @Test + public void testMacroExecutionTaskSuccess() throws Exception { + + ExecutionTask executionTaskA = + ServiceOrderExecutionTaskAssertions.setUpBddForMacroExecutionTaskSucess( + serviceOrderRepository, executionTaskRepository, ActionType.ADD); + ExecutionTask executionTaskB; + + SoTaskProcessor.processOrderItem(executionTaskA); + ServiceOrder serviceOrderChecked = getServiceOrder("test"); + assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.INPROGRESS); + for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) { + if (serviceOrderItem.getId().equals("A")) { + assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED); + } else { + assertThat(serviceOrderItem.getState()).isEqualTo(StateType.ACKNOWLEDGED); + } + } + + executionTaskB = getExecutionTask("B"); + assertThat(executionTaskB.getReliedTasks()).isNullOrEmpty(); + executionTaskA = getExecutionTask("A"); + assertThat(executionTaskA).isNull(); + SoTaskProcessor.processOrderItem(executionTaskB); + serviceOrderChecked = getServiceOrder("test"); + + assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.COMPLETED); + for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) { + assertThat(serviceOrderItem.getState()).isEqualTo(StateType.COMPLETED); + + } + } + @Test public void testExecutionTaskFailed() throws Exception { diff --git a/src/test/resources/__files/toscafile/service-VlbService-csar.csar b/src/test/resources/__files/toscafile/service-VlbService-csar.csar new file mode 100644 index 0000000000000000000000000000000000000000..0c5fcdd81f6389d87790bcc0547df43c0747720f GIT binary patch literal 123775 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 b@FjcSUS@D31psmIhacSG_dN%1Ai)0sE<-O# literal 0 HcmV?d00001 diff --git a/src/test/resources/karatetest/features/00--ServiceCatalog.feature b/src/test/resources/karatetest/features/00--ServiceCatalog.feature index 25f15df..4894c99 100644 --- a/src/test/resources/karatetest/features/00--ServiceCatalog.feature +++ b/src/test/resources/karatetest/features/00--ServiceCatalog.feature @@ -81,6 +81,25 @@ And match $ contains } """ +Scenario: testServiceCatalogGetServiceWithoutInstanceParamsAndVFModules +Given path 'serviceSpecification','82c9fbb4-656c-4973-8c7f-172b22b5fa8f' +When method get +Then status 200 +And match $.resourceSpecification contains +""" +[{ + "id": "35d7887d-3c35-4fb4-aed1-d15b4d9f4ccc", + "version": "1.0", + "name": "vLB_VSP", + "resourceInstanceName": "vLB_VSP 0", + "modelCustomizationName": "vLB_VSP 0", + "resourceInvariantUUID": "368371e6-1d2f-4f4a-b992-a9053c7c2f1e", + "resourceType": "VF", + "@type": "ONAPresource", + "modelCustomizationId": "86dcf0b6-5f76-4444-8392-23ca325fd1d9" +}] +""" + Scenario: findServiceCatalog Given path 'serviceSpecification' diff --git a/src/test/resources/mappings/sdc/sdc_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f.json b/src/test/resources/mappings/sdc/sdc_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f.json new file mode 100644 index 0000000..2480421 --- /dev/null +++ b/src/test/resources/mappings/sdc/sdc_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f.json @@ -0,0 +1,117 @@ +{ + "request": { + "method": "GET", + "url": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/metadata" + }, + "response": { + "status": 200, + "jsonBody": { + "uuid": "82c9fbb4-656c-4973-8c7f-172b22b5fa8f", + "invariantUUID": "3d3aa59d-d0b4-4663-b4bb-dc16f518acea", + "name": "VLB_Service", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/toscaModel", + "category": "Network Service", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jm0007", + "distributionStatus": "DISTRIBUTED", + "lastUpdaterFullName": "Joni Mitchell", + "resources": [ + { + "resourceInstanceName": "vLB_VSP 0", + "resourceName": "vLB_VSP", + "resourceInvariantUUID": "368371e6-1d2f-4f4a-b992-a9053c7c2f1e", + "resourceVersion": "1.0", + "resoucreType": "VF", + "resourceUUID": "35d7887d-3c35-4fb4-aed1-d15b4d9f4ccc", + "artifacts": [ + { + "artifactName": "vf-license-model.xml", + "artifactType": "VF_LICENSE", + "artifactURL": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/resourceInstances/vlb_vsp0/artifacts/ecb35123-2160-4a1f-8e10-0f9ae0233024", + "artifactDescription": "VF license file", + "artifactChecksum": "ZTdhOGFmMTUzNGFiNjlhYTUzOTgxMmM4NzQ3OGJlOGI=", + "artifactUUID": "ecb35123-2160-4a1f-8e10-0f9ae0233024", + "artifactVersion": "1", + "artifactLabel": "vflicense", + "artifactGroupType": "DEPLOYMENT" + }, + { + "artifactName": "vlb_vsp0_modules.json", + "artifactType": "VF_MODULES_METADATA", + "artifactURL": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/resourceInstances/vlb_vsp0/artifacts/21e0c3e3-ab55-4fc0-9e73-78a1815510d8", + "artifactDescription": "Auto-generated VF Modules information artifact", + "artifactChecksum": "NWU2NDNjNWVmMjM2YWRjNjc5NTNlNjZhMTQ3Mjk4MmY=", + "artifactUUID": "21e0c3e3-ab55-4fc0-9e73-78a1815510d8", + "artifactVersion": "1", + "artifactLabel": "vfModulesMetadata", + "artifactGroupType": "DEPLOYMENT" + }, + { + "artifactName": "dnsscaling.yaml", + "artifactType": "HEAT", + "artifactURL": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/resourceInstances/vlb_vsp0/artifacts/f82b2ecb-d1ff-49a9-84c9-123968e1cd94", + "artifactDescription": "created from csar", + "artifactTimeout": 60, + "artifactChecksum": "NWU2MWY2NzFjOWM3NDRhMDU2ZjlhMDFiNWRiOWI4Mzc=", + "artifactUUID": "f82b2ecb-d1ff-49a9-84c9-123968e1cd94", + "artifactVersion": "2", + "artifactLabel": "heat1", + "artifactGroupType": "DEPLOYMENT" + }, + { + "artifactName": "base_vlb.yaml", + "artifactType": "HEAT", + "artifactURL": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/resourceInstances/vlb_vsp0/artifacts/d06da981-1f0c-4868-bd35-caefa60dd062", + "artifactDescription": "created from csar", + "artifactTimeout": 60, + "artifactChecksum": "MzY5NWZkZDJiNWJmMzY0ODdiOWY1ZDZjNWQ3MDVjM2E=", + "artifactUUID": "d06da981-1f0c-4868-bd35-caefa60dd062", + "artifactVersion": "2", + "artifactLabel": "heat2", + "artifactGroupType": "DEPLOYMENT" + }, + { + "artifactName": "base_vlb.env", + "artifactType": "HEAT_ENV", + "artifactURL": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/resourceInstances/vlb_vsp0/artifacts/970c7177-cf5d-41ba-a2f8-594ec760f825", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactChecksum": "MDE1NGNlMGM2ZmI3YTZkMmQ0MGM4YmVmNzg5YWQ1MGQ=", + "artifactUUID": "970c7177-cf5d-41ba-a2f8-594ec760f825", + "artifactVersion": "2", + "generatedFromUUID": "5bcc6eb1-5d95-403b-a796-31777480b1c5.heat2", + "artifactLabel": "heat2env", + "artifactGroupType": "DEPLOYMENT" + }, + { + "artifactName": "vendor-license-model.xml", + "artifactType": "VENDOR_LICENSE", + "artifactURL": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/resourceInstances/vlb_vsp0/artifacts/9f0320dd-16ab-4ff3-972e-f9faabaa7d54", + "artifactDescription": " Vendor license file", + "artifactChecksum": "MjY3N2M0YmRmZmRiMzNiMWU1NGRlNjU5YTYwZWFmOWI=", + "artifactUUID": "9f0320dd-16ab-4ff3-972e-f9faabaa7d54", + "artifactVersion": "1", + "artifactLabel": "vendorlicense", + "artifactGroupType": "DEPLOYMENT" + }, + { + "artifactName": "dnsscaling.env", + "artifactType": "HEAT_ENV", + "artifactURL": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/resourceInstances/vlb_vsp0/artifacts/778c22db-5ac8-4bd3-a294-24e1d1c1fd43", + "artifactDescription": "Auto-generated HEAT Environment deployment artifact", + "artifactChecksum": "MzEwMjI4YTNiNDU0MTFmZDkwODFhZGNjYzE0MTI1ZTc=", + "artifactUUID": "778c22db-5ac8-4bd3-a294-24e1d1c1fd43", + "artifactVersion": "2", + "generatedFromUUID": "5bcc6eb1-5d95-403b-a796-31777480b1c5.heat1", + "artifactLabel": "heat1env", + "artifactGroupType": "DEPLOYMENT" + } + ] + } + ] + }, + "headers": { + "Content-Type": "application/json" + } + } +} \ No newline at end of file diff --git a/src/test/resources/mappings/sdc/sdc_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f_tosca.json b/src/test/resources/mappings/sdc/sdc_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f_tosca.json new file mode 100644 index 0000000..e9b3391 --- /dev/null +++ b/src/test/resources/mappings/sdc/sdc_get_82c9fbb4-656c-4973-8c7f-172b22b5fa8f_tosca.json @@ -0,0 +1,10 @@ +{ + "request": { + "method": "GET", + "url": "/sdc/v1/catalog/services/82c9fbb4-656c-4973-8c7f-172b22b5fa8f/toscaModel" + }, + "response": { + "status": 200, + "bodyFileName": "toscafile/service-VlbService-csar.csar" + } +} \ No newline at end of file diff --git a/src/test/resources/toscafile/service-VlbService-csar.csar b/src/test/resources/toscafile/service-VlbService-csar.csar new file mode 100644 index 0000000000000000000000000000000000000000..0c5fcdd81f6389d87790bcc0547df43c0747720f GIT binary patch literal 123775 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 b@FjcSUS@D31psmIhacSG_dN%1Ai)0sE<-O# literal 0 HcmV?d00001 diff --git a/src/test/resources/toscafile/service-VlbService-template.yml b/src/test/resources/toscafile/service-VlbService-template.yml new file mode 100644 index 0000000..716d48e --- /dev/null +++ b/src/test/resources/toscafile/service-VlbService-template.yml @@ -0,0 +1,2449 @@ +# +# Copyright (c) 2018 Orange +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +tosca_definitions_version: tosca_simple_yaml_1_1 +metadata: + invariantUUID: 3d3aa59d-d0b4-4663-b4bb-dc16f518acea + UUID: 82c9fbb4-656c-4973-8c7f-172b22b5fa8f + name: VLB_Service + description: VLB_Service + type: Service + category: Network Service + serviceType: '' + serviceRole: '' + instantiationType: Macro + serviceEcompNaming: true + ecompGeneratedNaming: true + namingPolicy: '' + environmentContext: General_Revenue-Bearing +imports: +- nodes: + file: nodes.yml +- datatypes: + file: data.yml +- capabilities: + file: capabilities.yml +- relationships: + file: relationships.yml +- groups: + file: groups.yml +- policies: + file: policies.yml +- annotations: + file: annotations.yml +- service-VLB_Service-interface: + file: service-VlbService-template-interface.yml +- resource-vLB_VSP: + file: resource-VlbVsp-template.yml +- resource-vLB_VSP-interface: + file: resource-VlbVsp-template-interface.yml +# +# Copyright (c) 2018 Orange +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +topology_template: + inputs: + ServiceProp1: + default: ServiceProp1Value + type: string + description: ServiceProp1 + required: false + ServiceProp2: + default: ServiceProp2Value + type: string + description: ServiceProp2 + required: false + node_templates: + vLB_VSP 0: + type: org.openecomp.resource.vf.VlbVsp + metadata: + invariantUUID: 368371e6-1d2f-4f4a-b992-a9053c7c2f1e + UUID: 35d7887d-3c35-4fb4-aed1-d15b4d9f4ccc + customizationUUID: 86dcf0b6-5f76-4444-8392-23ca325fd1d9 + version: '1.0' + name: vLB_VSP + description: vLB_VSP + type: VF + category: Generic + subcategory: Infrastructure + resourceVendor: tutorial-license + resourceVendorRelease: '1.0' + resourceVendorModelNumber: '' + properties: + vf_module_id: vLoadBalancer + skip_post_instantiation_configuration: true + repo_url_blob: https://nexus.onap.org/content/sites/raw + vlb_private_net_cidr: 192.168.10.0/24 + vlb_private_net_id: zdfw1lb01_private + VFProp3: VFProp3Value + public_net_id: 60dc8a1c-86b8-4cc4-b5c8-9b0272113c1f0f1c389d-e9db-4c14-b3a2-11dca2d104ed + onap_private_subnet_id: 8c6df8fa-2735-49ad-ba04-24701d85ba79 + gre_ipaddr: 192.168.10.112 + onap_private_net_cidr: 10.0.0.0/16 + vdns_name_0: zdfw1lb01dns02 + pg_int: 192.168.9.109 + vdns_private_ip_0: 192.168.10.212 + dcae_collector_ip: 10.42.135.166 + vnf_id: vLoadBalancer_demo_app + vdns_private_ip_1: 10.0.200.204 + dcae_collector_port: '8081' + vpg_name_0: zdfw1lb01pg01 + vip: 192.168.9.112 + vpg_private_ip_1: 10.0.200.203 + vpg_private_ip_0: 192.168.9.110 + vlb_flavor_name: m1.medium + pktgen_private_net_cidr: 192.168.9.0/24 + nf_naming: + ecomp_generated_naming: true + multi_stage_design: 'false' + onap_private_net_id: 09407156-5e6e-45a7-b4aa-6eeb7ad4aba9 + availability_zone_max_count: 1 + demo_artifacts_version: 1.2.1 + vlb_private_subnet_id: zdfw1lb01_private_subnet + pub_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/EnxIi7fcHMEi9VPtCGCOpQYblj9r0M/CaD5U15Cb5qHzcHiPtJpVsDMlPGzN9VHxWZG6FqQv1s6oE+PmG1xeahhb+ofrY6s8zvlUCcWGIo/bPexzb2ErvkGyd+1tQo9oLrxNdUG0xeWUX3oFkiw3RBRyxf9n4E5ajZr4cEFQ0sqJkslj87XViw/h555ydIYTY5cPNmIlsIXTObC/2z3muVWYUzaaZE8omfYJE442+UhYLHgb7Cl1JMk/SNu/r+bLrsXeBSPB+/bxVKqjpd659AQ7GRNXvBrgfq6EKNiVjrI76AbpeTM2D/LXbENuUUkvJBWptSd0gPAGkEyc9w2n + key_name: vlb_key_scaling + vlb_private_ip_1: 10.0.200.201 + vlb_private_ip_2: 192.168.9.111 + repo_url_artifacts: https://nexus.onap.org/content/repositories/releases + vlb_name_0: zdfw1lb01lb01 + pktgen_private_net_id: zdfw1pktgen01_private + install_script_version: 1.2.1 + VFProp2: VFProp2Value + VFProp1: VFProp1Value + cloud_env: openstack + vlb_image_name: Ubuntu_1604 + vlb_private_ip_0: 192.168.10.111 + capabilities: + abstract_vpg.memory.resident_vpg: + properties: + unit: MB + description: Volume of RAM used by the instance on the physical machine + type: Gauge + category: compute + abstract_vdns_0.disk.read.bytes.rate_vdns: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: compute + abstract_vdns_0.cpu.delta_vdns: + properties: + unit: ns + description: CPU time used since previous datapoint + type: Delta + category: compute + abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_1_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vdns_0.network.incoming.packets.rate_vdns_vdns_private_0_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vlb.disk.allocation_vlb: + properties: + unit: B + description: The amount of disk occupied by the instance on the host machine + type: Gauge + category: disk + abstract_vlb.instance_vlb: + properties: + unit: instance + description: Existence of instance + type: Gauge + category: compute + abstract_vdns_0.network.outpoing.packets_vdns_vdns_private_0_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vdns_0.network.incoming.bytes.rate_vdns_vdns_private_0_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vdns_0.network.outgoing.bytes.rate_vdns_vdns_private_1_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vdns_0.network.outgoing.bytes_vdns_vdns_private_0_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vdns_0.network.outgoing.packets.rate_vdns_vdns_private_1_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vdns_1.disk.device.latency_vdns: + properties: + unit: ms + description: Average disk latency per device + type: Gauge + category: disk + abstract_vdns_0.port_mirroring_vdns_vdns_private_1_port: + properties: + connection_point: + network_role: + get_input: port_vdns_private_1_port_network_role + nfc_naming_code: vdns + abstract_vlb.disk.device.read.bytes.rate_vlb: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: disk + abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_2_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vdns_1.disk.usage_vdns: + properties: + unit: B + description: The physical size in bytes of the image container on the host + type: Gauge + category: disk + abstract_vlb.vcpus_vlb: + properties: + unit: vcpu + description: Number of virtual CPUs allocated to the instance + type: Gauge + category: compute + abstract_vdns_0.disk.device.write.requests.rate_vdns: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: disk + abstract_vdns_0.disk.ephemeral.size_vdns: + properties: + unit: GB + description: Size of ephemeral disk + type: Gauge + category: compute + abstract_vdns_1.disk.device.read.bytes_vdns: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: disk + abstract_vpg.memory.usage_vpg: + properties: + unit: MB + description: Volume of RAM used by the instance from the amount of its allocated memory + type: Gauge + category: compute + abstract_vpg.network.incoming.bytes_vpg_vpg_private_0_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vpg.disk.iops_vpg: + properties: + unit: count/s + description: Average disk iops + type: Gauge + category: disk + abstract_vpg.disk.device.capacity_vpg: + properties: + unit: B + description: The amount of disk per device that the instance can see + type: Gauge + category: disk + abstract_vdns_0.disk.device.capacity_vdns: + properties: + unit: B + description: The amount of disk per device that the instance can see + type: Gauge + category: disk + abstract_vdns_1.disk.device.allocation_vdns: + properties: + unit: B + description: The amount of disk per device occupied by the instance on the host machine + type: Gauge + category: disk + abstract_vpg.disk.write.requests.rate_vpg: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: compute + abstract_vdns_0.network.incoming.packets_vdns_vdns_private_0_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vpg.disk.read.bytes_vpg: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: compute + abstract_vdns_0.endpoint_vdns: + properties: + secure: true + abstract_vlb.disk.write.requests_vlb: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: compute + abstract_vlb.disk.write.bytes_vlb: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: compute + abstract_vpg.disk.capacity_vpg: + properties: + unit: B + description: The amount of disk that the instance can see + type: Gauge + category: disk + abstract_vdns_1.cpu.delta_vdns: + properties: + unit: ns + description: CPU time used since previous datapoint + type: Delta + category: compute + abstract_vpg.scalable_vpg: + properties: + min_instances: 1 + max_instances: 1 + abstract_vlb.endpoint_vlb: + properties: + secure: true + abstract_vdns_1.disk.read.requests_vdns: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: compute + abstract_vpg.disk.device.allocation_vpg: + properties: + unit: B + description: The amount of disk per device occupied by the instance on the host machine + type: Gauge + category: disk + abstract_vdns_0.disk.root.size_vdns: + properties: + unit: GB + description: Size of root disk + type: Gauge + category: compute + abstract_vlb.network.outgoing.bytes_vlb_vlb_private_1_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vdns_1.disk.write.requests_vdns: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: compute + abstract_vlb.network.incoming.packets_vlb_vlb_private_2_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vdns_0.disk.write.requests.rate_vdns: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: compute + abstract_vdns_0.disk.write.bytes_vdns: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: compute + abstract_vdns_0.instance_vdns: + properties: + unit: instance + description: Existence of instance + type: Gauge + category: compute + abstract_vdns_0.disk.iops_vdns: + properties: + unit: count/s + description: Average disk iops + type: Gauge + category: disk + abstract_vpg.disk.device.iops_vpg: + properties: + unit: count/s + description: Average disk iops per device + type: Gauge + category: disk + pktgen_private_network.end_point: + properties: + protocol: tcp + initiator: source + network_name: PRIVATE + secure: false + abstract_vlb.network.outpoing.packets_vlb_vlb_private_0_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vlb.disk.write.requests.rate_vlb: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: compute + abstract_vdns_1.disk.write.requests.rate_vdns: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: compute + abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_2_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vdns_1.network.incoming.packets_vdns_vdns_private_0_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_0_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vdns_1.disk.write.bytes.rate_vdns: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: compute + abstract_vdns_1.disk.device.usage_vdns: + properties: + unit: B + description: The physical size in bytes of the image container on the host per device + type: Gauge + category: disk + abstract_vdns_0.disk.device.read.bytes.rate_vdns: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: disk + abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_2_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vlb.disk.write.bytes.rate_vlb: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: compute + abstract_vdns_1.disk.device.capacity_vdns: + properties: + unit: B + description: The amount of disk per device that the instance can see + type: Gauge + category: disk + abstract_vlb.disk.device.read.requests_vlb: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: disk + abstract_vdns_1.network.outgoing.bytes.rate_vdns_vdns_private_1_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vpg.network.outgoing.packets.rate_vpg_vpg_private_0_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vdns_0.disk.device.write.bytes_vdns: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: disk + vlb_private_network.end_point: + properties: + protocol: tcp + initiator: source + network_name: PRIVATE + secure: false + abstract_vpg.network.outgoing.bytes.rate_vpg_vpg_private_1_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vdns_0.disk.write.requests_vdns: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: compute + abstract_vdns_1.disk.read.bytes_vdns: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: compute + abstract_vpg.disk.read.bytes.rate_vpg: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: compute + abstract_vpg.disk.device.read.requests_vpg: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: disk + abstract_vpg.port_mirroring_vpg_vpg_private_1_port: + properties: + connection_point: + network_role: + get_input: port_vpg_private_1_port_network_role + nfc_naming_code: vpg + abstract_vlb.disk.root.size_vlb: + properties: + unit: GB + description: Size of root disk + type: Gauge + category: compute + abstract_vdns_1.network.outgoing.bytes.rate_vdns_vdns_private_0_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vlb.cpu_util_vlb: + properties: + unit: '%' + description: Average CPU utilization + type: Gauge + category: compute + abstract_vdns_1.network.outgoing.bytes_vdns_vdns_private_0_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vdns_1.disk.device.write.bytes_vdns: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: disk + abstract_vpg.disk.device.write.bytes_vpg: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: disk + abstract_vdns_0.disk.latency_vdns: + properties: + unit: ms + description: Average disk latency + type: Gauge + category: disk + abstract_vpg.network.incoming.packets_vpg_vpg_private_1_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vdns_1.disk.ephemeral.size_vdns: + properties: + unit: GB + description: Size of ephemeral disk + type: Gauge + category: compute + abstract_vpg.disk.device.write.bytes.rate_vpg: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: disk + abstract_vlb.scalable_vlb: + properties: + min_instances: 1 + max_instances: 1 + abstract_vdns_1.network.incoming.bytes.rate_vdns_vdns_private_0_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vlb.disk.device.write.requests_vlb: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: disk + abstract_vdns_1.disk.allocation_vdns: + properties: + unit: B + description: The amount of disk occupied by the instance on the host machine + type: Gauge + category: disk + abstract_vpg.cpu_util_vpg: + properties: + unit: '%' + description: Average CPU utilization + type: Gauge + category: compute + abstract_vdns_0.disk.device.read.requests.rate_vdns: + properties: + unit: request/s + description: Average rate of read requests + type: Gauge + category: disk + abstract_vpg.vcpus_vpg: + properties: + unit: vcpu + description: Number of virtual CPUs allocated to the instance + type: Gauge + category: compute + abstract_vpg.network.outgoing.bytes_vpg_vpg_private_1_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vlb.network.incoming.bytes_vlb_vlb_private_2_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vpg.disk.device.usage_vpg: + properties: + unit: B + description: The physical size in bytes of the image container on the host per device + type: Gauge + category: disk + abstract_vpg.disk.device.write.requests.rate_vpg: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: disk + abstract_vlb.disk.device.read.bytes_vlb: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: disk + abstract_vdns_0.disk.device.write.requests_vdns: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: disk + abstract_vdns_1.network.incoming.packets.rate_vdns_vdns_private_0_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vpg.memory_vpg: + properties: + unit: MB + description: Volume of RAM allocated to the instance + type: Gauge + category: compute + abstract_vdns_1.network.incoming.packets_vdns_vdns_private_1_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vdns_1.disk.iops_vdns: + properties: + unit: count/s + description: Average disk iops + type: Gauge + category: disk + abstract_vpg.network.incoming.packets_vpg_vpg_private_0_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vdns_1.network.outpoing.packets_vdns_vdns_private_0_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vdns_0.disk.device.read.requests_vdns: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: disk + abstract_vpg.disk.device.write.requests_vpg: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: disk + abstract_vpg.disk.device.latency_vpg: + properties: + unit: ms + description: Average disk latency per device + type: Gauge + category: disk + abstract_vpg.network.outgoing.bytes_vpg_vpg_private_0_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vlb.network.outpoing.packets_vlb_vlb_private_2_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vlb.disk.device.write.requests.rate_vlb: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: disk + abstract_vlb.disk.capacity_vlb: + properties: + unit: B + description: The amount of disk that the instance can see + type: Gauge + category: disk + abstract_vdns_0.network.incoming.bytes_vdns_vdns_private_1_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_0_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vdns_1.disk.device.read.requests_vdns: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: disk + abstract_vpg.cpu.delta_vpg: + properties: + unit: ns + description: CPU time used since previous datapoint + type: Delta + category: compute + abstract_vlb.disk.read.bytes.rate_vlb: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: compute + abstract_vdns_0.memory.resident_vdns: + properties: + unit: MB + description: Volume of RAM used by the instance on the physical machine + type: Gauge + category: compute + abstract_vdns_1.disk.read.bytes.rate_vdns: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: compute + abstract_vpg.disk.write.bytes.rate_vpg: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: compute + abstract_vdns_1.port_mirroring_vdns_vdns_private_1_port: + properties: + connection_point: + network_role: + get_input: port_vdns_private_1_port_network_role + nfc_naming_code: vdns + abstract_vlb.memory_vlb: + properties: + unit: MB + description: Volume of RAM allocated to the instance + type: Gauge + category: compute + abstract_vdns_0.vcpus_vdns: + properties: + unit: vcpu + description: Number of virtual CPUs allocated to the instance + type: Gauge + category: compute + abstract_vdns_0.disk.device.allocation_vdns: + properties: + unit: B + description: The amount of disk per device occupied by the instance on the host machine + type: Gauge + category: disk + abstract_vpg.disk.write.bytes_vpg: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: compute + abstract_vdns_0.cpu_vdns: + properties: + unit: ns + description: CPU time used + type: Cumulative + category: compute + abstract_vpg.disk.usage_vpg: + properties: + unit: B + description: The physical size in bytes of the image container on the host + type: Gauge + category: disk + abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_1_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vdns_0.network.outgoing.bytes_vdns_vdns_private_1_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vdns_0.disk.device.read.bytes_vdns: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: disk + abstract_vdns_0.network.incoming.packets.rate_vdns_vdns_private_1_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vdns_1.disk.device.write.requests_vdns: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: disk + abstract_vdns_0.cpu_util_vdns: + properties: + unit: '%' + description: Average CPU utilization + type: Gauge + category: compute + abstract_vdns_0.network.outpoing.packets_vdns_vdns_private_1_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vlb.port_mirroring_vlb_vlb_private_1_port: + properties: + connection_point: + network_role: + get_input: port_vlb_private_1_port_network_role + nfc_naming_code: vlb + abstract_vdns_0.network.outgoing.bytes.rate_vdns_vdns_private_0_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vdns_0.network.incoming.bytes.rate_vdns_vdns_private_1_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vdns_0.disk.device.usage_vdns: + properties: + unit: B + description: The physical size in bytes of the image container on the host per device + type: Gauge + category: disk + abstract_vdns_0.memory.usage_vdns: + properties: + unit: MB + description: Volume of RAM used by the instance from the amount of its allocated memory + type: Gauge + category: compute + abstract_vdns_1.network.outpoing.packets_vdns_vdns_private_1_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_2_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vdns_1.memory.usage_vdns: + properties: + unit: MB + description: Volume of RAM used by the instance from the amount of its allocated memory + type: Gauge + category: compute + abstract_vdns_0.network.incoming.bytes_vdns_vdns_private_0_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vdns_1.disk.device.read.bytes.rate_vdns: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: disk + abstract_vlb.cpu_vlb: + properties: + unit: ns + description: CPU time used + type: Cumulative + category: compute + abstract_vlb.network.outpoing.packets_vlb_vlb_private_1_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vlb.network.outgoing.bytes_vlb_vlb_private_0_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vlb.memory.usage_vlb: + properties: + unit: MB + description: Volume of RAM used by the instance from the amount of its allocated memory + type: Gauge + category: compute + abstract_vdns_0.scalable_vdns: + properties: + min_instances: 1 + max_instances: 1 + abstract_vpg.disk.device.read.bytes_vpg: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: disk + abstract_vlb.disk.device.latency_vlb: + properties: + unit: ms + description: Average disk latency per device + type: Gauge + category: disk + abstract_vpg.disk.device.read.bytes.rate_vpg: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: disk + abstract_vdns_0.disk.device.latency_vdns: + properties: + unit: ms + description: Average disk latency per device + type: Gauge + category: disk + abstract_vdns_1.network.outgoing.packets.rate_vdns_vdns_private_0_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vdns_1.disk.device.write.bytes.rate_vdns: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: disk + abstract_vdns_0.memory_vdns: + properties: + unit: MB + description: Volume of RAM allocated to the instance + type: Gauge + category: compute + abstract_vdns_1.memory_vdns: + properties: + unit: MB + description: Volume of RAM allocated to the instance + type: Gauge + category: compute + abstract_vdns_1.scalable_vdns: + properties: + min_instances: 1 + max_instances: 1 + abstract_vdns_1.network.incoming.bytes_vdns_vdns_private_1_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vlb.disk.device.iops_vlb: + properties: + unit: count/s + description: Average disk iops per device + type: Gauge + category: disk + abstract_vdns_0.disk.device.iops_vdns: + properties: + unit: count/s + description: Average disk iops per device + type: Gauge + category: disk + abstract_vpg.disk.latency_vpg: + properties: + unit: ms + description: Average disk latency + type: Gauge + category: disk + abstract_vdns_0.disk.read.bytes_vdns: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: compute + abstract_vpg.network.incoming.bytes.rate_vpg_vpg_private_1_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vdns_0.network.incoming.packets_vdns_vdns_private_1_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vpg.instance_vpg: + properties: + unit: instance + description: Existence of instance + type: Gauge + category: compute + abstract_vpg.network.outpoing.packets_vpg_vpg_private_0_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vlb.disk.device.capacity_vlb: + properties: + unit: B + description: The amount of disk per device that the instance can see + type: Gauge + category: disk + abstract_vdns_1.network.incoming.packets.rate_vdns_vdns_private_1_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vdns_1.disk.root.size_vdns: + properties: + unit: GB + description: Size of root disk + type: Gauge + category: compute + abstract_vdns_1.cpu_util_vdns: + properties: + unit: '%' + description: Average CPU utilization + type: Gauge + category: compute + abstract_vdns_0.network.outgoing.packets.rate_vdns_vdns_private_0_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vlb.network.incoming.bytes_vlb_vlb_private_0_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vlb.disk.read.bytes_vlb: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: compute + abstract_vlb.disk.device.usage_vlb: + properties: + unit: B + description: The physical size in bytes of the image container on the host per device + type: Gauge + category: disk + abstract_vpg.disk.allocation_vpg: + properties: + unit: B + description: The amount of disk occupied by the instance on the host machine + type: Gauge + category: disk + abstract_vpg.network.incoming.packets.rate_vpg_vpg_private_1_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vdns_1.disk.device.read.requests.rate_vdns: + properties: + unit: request/s + description: Average rate of read requests + type: Gauge + category: disk + abstract_vlb.network.incoming.bytes_vlb_vlb_private_1_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vdns_1.network.incoming.bytes.rate_vdns_vdns_private_1_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vdns_0.disk.allocation_vdns: + properties: + unit: B + description: The amount of disk occupied by the instance on the host machine + type: Gauge + category: disk + abstract_vdns_1.instance_vdns: + properties: + unit: instance + description: Existence of instance + type: Gauge + category: compute + abstract_vpg.disk.read.requests_vpg: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: compute + abstract_vpg.network.outpoing.packets_vpg_vpg_private_1_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + abstract_vlb.disk.iops_vlb: + properties: + unit: count/s + description: Average disk iops + type: Gauge + category: disk + abstract_vpg.network.outgoing.packets.rate_vpg_vpg_private_1_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vlb.network.incoming.packets_vlb_vlb_private_0_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vlb.disk.ephemeral.size_vlb: + properties: + unit: GB + description: Size of ephemeral disk + type: Gauge + category: compute + abstract_vdns_1.disk.write.bytes_vdns: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: compute + abstract_vlb.cpu.delta_vlb: + properties: + unit: ns + description: CPU time used since previous datapoint + type: Delta + category: compute + abstract_vdns_1.disk.device.write.requests.rate_vdns: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: disk + abstract_vlb.disk.usage_vlb: + properties: + unit: B + description: The physical size in bytes of the image container on the host + type: Gauge + category: disk + abstract_vdns_0.disk.write.bytes.rate_vdns: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: compute + abstract_vlb.disk.device.read.requests.rate_vlb: + properties: + unit: request/s + description: Average rate of read requests + type: Gauge + category: disk + abstract_vpg.endpoint_vpg: + properties: + secure: true + abstract_vdns_1.disk.latency_vdns: + properties: + unit: ms + description: Average disk latency + type: Gauge + category: disk + abstract_vdns_1.network.outgoing.bytes_vdns_vdns_private_1_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vlb.memory.resident_vlb: + properties: + unit: MB + description: Volume of RAM used by the instance on the physical machine + type: Gauge + category: compute + abstract_vdns_1.network.incoming.bytes_vdns_vdns_private_0_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vpg.network.outgoing.bytes.rate_vpg_vpg_private_0_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vpg.cpu_vpg: + properties: + unit: ns + description: CPU time used + type: Cumulative + category: compute + abstract_vpg.network.incoming.packets.rate_vpg_vpg_private_0_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + abstract_vdns_0.disk.read.requests_vdns: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: compute + abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_1_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_0_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vpg.disk.root.size_vpg: + properties: + unit: GB + description: Size of root disk + type: Gauge + category: compute + abstract_vlb.disk.device.write.bytes.rate_vlb: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: disk + abstract_vlb.disk.latency_vlb: + properties: + unit: ms + description: Average disk latency + type: Gauge + category: disk + abstract_vdns_1.network.outgoing.packets.rate_vdns_vdns_private_1_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + abstract_vdns_0.disk.usage_vdns: + properties: + unit: B + description: The physical size in bytes of the image container on the host + type: Gauge + category: disk + abstract_vlb.network.incoming.packets_vlb_vlb_private_1_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + abstract_vdns_0.disk.device.write.bytes.rate_vdns: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: disk + abstract_vdns_1.endpoint_vdns: + properties: + secure: true + abstract_vpg.disk.ephemeral.size_vpg: + properties: + unit: GB + description: Size of ephemeral disk + type: Gauge + category: compute + abstract_vpg.network.incoming.bytes.rate_vpg_vpg_private_0_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vdns_1.memory.resident_vdns: + properties: + unit: MB + description: Volume of RAM used by the instance on the physical machine + type: Gauge + category: compute + abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_1_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + abstract_vlb.disk.device.allocation_vlb: + properties: + unit: B + description: The amount of disk per device occupied by the instance on the host machine + type: Gauge + category: disk + abstract_vlb.disk.device.write.bytes_vlb: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: disk + abstract_vdns_1.disk.capacity_vdns: + properties: + unit: B + description: The amount of disk that the instance can see + type: Gauge + category: disk + abstract_vpg.disk.device.read.requests.rate_vpg: + properties: + unit: request/s + description: Average rate of read requests + type: Gauge + category: disk + abstract_vdns_0.disk.capacity_vdns: + properties: + unit: B + description: The amount of disk that the instance can see + type: Gauge + category: disk + abstract_vdns_1.vcpus_vdns: + properties: + unit: vcpu + description: Number of virtual CPUs allocated to the instance + type: Gauge + category: compute + abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_0_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + abstract_vdns_1.cpu_vdns: + properties: + unit: ns + description: CPU time used + type: Cumulative + category: compute + abstract_vlb.disk.read.requests_vlb: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: compute + abstract_vpg.network.incoming.bytes_vpg_vpg_private_1_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + abstract_vlb.network.outgoing.bytes_vlb_vlb_private_2_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + abstract_vdns_1.disk.device.iops_vdns: + properties: + unit: count/s + description: Average disk iops per device + type: Gauge + category: disk + abstract_vpg.disk.write.requests_vpg: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: compute + groups: + vlb_vsp0..VlbVsp..dnsscaling..module-1: + type: org.openecomp.groups.VfModule + metadata: + vfModuleModelName: VlbVsp..dnsscaling..module-1 + vfModuleModelInvariantUUID: 888b6342-8aea-4416-b485-e24726c1f964 + vfModuleModelUUID: 9bfd197c-7e18-41bd-927d-57102a6fda7e + vfModuleModelVersion: '1' + vfModuleModelCustomizationUUID: 4c387136-2fa2-420f-94e9-3312f863a352 + properties: + min_vf_module_instances: 0 + vf_module_label: dnsscaling + vf_module_type: Expansion + isBase: false + initial_count: 0 + volume_group: false + vlb_vsp0..VlbVsp..base_vlb..module-0: + type: org.openecomp.groups.VfModule + metadata: + vfModuleModelName: VlbVsp..base_vlb..module-0 + vfModuleModelInvariantUUID: bcbdfc80-4fb1-4c3e-b4e3-77721bac61db + vfModuleModelUUID: d0325d26-43f2-4c6f-aff5-2832ac2d8ab0 + vfModuleModelVersion: '1' + vfModuleModelCustomizationUUID: 0895caa9-b7d3-4e02-9a3c-8337c4076948 + properties: + min_vf_module_instances: 1 + vf_module_label: base_vlb + max_vf_module_instances: 1 + vf_module_type: Base + isBase: true + initial_count: 1 + volume_group: false + substitution_mappings: + node_type: org.openecomp.service.VlbService + capabilities: + vlb_vsp0.abstract_vlb.binding_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.binding_vlb_vlb_private_2_port + vlb_vsp0.abstract_vdns_1.network.outgoing.bytes.rate_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.network.outgoing.bytes.rate_vdns_vdns_private_1_port + vlb_vsp0.abstract_vlb.disk.device.read.requests_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.read.requests_vlb + vlb_vsp0.abstract_vdns_1.feature_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.feature_vdns_vdns_private_1_port + vlb_vsp0.abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_2_port + vlb_vsp0.abstract_vlb.feature_vlb: + - vLB_VSP 0 + - abstract_vlb.feature_vlb + vlb_vsp0.abstract_vdns_1.binding_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.binding_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.vcpus_vdns: + - vLB_VSP 0 + - abstract_vdns_1.vcpus_vdns + vlb_vsp0.abstract_vpg.disk.device.read.requests_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.read.requests_vpg + vlb_vsp0.abstract_vdns_1.network.incoming.packets.rate_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.network.incoming.packets.rate_vdns_vdns_private_1_port + vlb_vsp0.vlb_private_network.link: + - vLB_VSP 0 + - vlb_private_network.link + vlb_vsp0.abstract_vlb.disk.device.write.bytes.rate_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.write.bytes.rate_vlb + vlb_vsp0.abstract_vlb.network.outpoing.packets_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.network.outpoing.packets_vlb_vlb_private_1_port + vlb_vsp0.abstract_vdns_0.network.incoming.packets_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.network.incoming.packets_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_0.disk.device.latency_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.latency_vdns + vlb_vsp0.abstract_vdns_0.attachment_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.attachment_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_0.instance_vdns: + - vLB_VSP 0 + - abstract_vdns_0.instance_vdns + vlb_vsp0.abstract_vpg.binding_vpg: + - vLB_VSP 0 + - abstract_vpg.binding_vpg + vlb_vsp0.abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_0_port + vlb_vsp0.abstract_vlb.network.incoming.packets_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.packets_vlb_vlb_private_1_port + vlb_vsp0.abstract_vdns_1.network.incoming.bytes.rate_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.network.incoming.bytes.rate_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_1.disk.root.size_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.root.size_vdns + vlb_vsp0.abstract_vlb.disk.device.usage_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.usage_vlb + vlb_vsp0.abstract_vpg.disk.write.requests_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.write.requests_vpg + vlb_vsp0.abstract_vdns_1.network.incoming.bytes_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.network.incoming.bytes_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_0.os_vdns: + - vLB_VSP 0 + - abstract_vdns_0.os_vdns + vlb_vsp0.abstract_vdns_1.feature_vdns: + - vLB_VSP 0 + - abstract_vdns_1.feature_vdns + vlb_vsp0.abstract_vpg.network.outgoing.bytes.rate_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.network.outgoing.bytes.rate_vpg_vpg_private_0_port + vlb_vsp0.abstract_vlb.network.outgoing.bytes_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.bytes_vlb_vlb_private_1_port + vlb_vsp0.abstract_vdns_1.network.outgoing.packets.rate_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.network.outgoing.packets.rate_vdns_vdns_private_0_port + vlb_vsp0.abstract_vpg.network.incoming.bytes_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.network.incoming.bytes_vpg_vpg_private_0_port + vlb_vsp0.abstract_vdns_1.network.outgoing.bytes_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.network.outgoing.bytes_vdns_vdns_private_1_port + vlb_vsp0.abstract_vlb.endpoint_vlb: + - vLB_VSP 0 + - abstract_vlb.endpoint_vlb + vlb_vsp0.abstract_vdns_1.forwarder_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.forwarder_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.network.outpoing.packets_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.network.outpoing.packets_vdns_vdns_private_0_port + vlb_vsp0.abstract_vpg.disk.device.allocation_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.allocation_vpg + vlb_vsp0.abstract_vdns_1.port_mirroring_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.port_mirroring_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.cpu_vdns: + - vLB_VSP 0 + - abstract_vdns_1.cpu_vdns + vlb_vsp0.abstract_vdns_1.disk.device.write.bytes.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.write.bytes.rate_vdns + vlb_vsp0.abstract_vlb.vcpus_vlb: + - vLB_VSP 0 + - abstract_vlb.vcpus_vlb + vlb_vsp0.abstract_vpg.vcpus_vpg: + - vLB_VSP 0 + - abstract_vpg.vcpus_vpg + vlb_vsp0.abstract_vdns_1.disk.read.bytes_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.read.bytes_vdns + vlb_vsp0.abstract_vdns_0.memory_vdns: + - vLB_VSP 0 + - abstract_vdns_0.memory_vdns + vlb_vsp0.abstract_vpg.network.outgoing.packets.rate_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.network.outgoing.packets.rate_vpg_vpg_private_1_port + vlb_vsp0.abstract_vlb.forwarder_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.forwarder_vlb_vlb_private_1_port + vlb_vsp0.abstract_vlb.memory.resident_vlb: + - vLB_VSP 0 + - abstract_vlb.memory.resident_vlb + vlb_vsp0.abstract_vlb.disk.read.bytes_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.read.bytes_vlb + vlb_vsp0.abstract_vpg.disk.iops_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.iops_vpg + vlb_vsp0.abstract_vdns_0.disk.device.write.bytes_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.write.bytes_vdns + vlb_vsp0.abstract_vdns_0.disk.write.requests_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.write.requests_vdns + vlb_vsp0.abstract_vdns_0.endpoint_vdns: + - vLB_VSP 0 + - abstract_vdns_0.endpoint_vdns + vlb_vsp0.abstract_vdns_1.memory_vdns: + - vLB_VSP 0 + - abstract_vdns_1.memory_vdns + vlb_vsp0.abstract_vpg.cpu_vpg: + - vLB_VSP 0 + - abstract_vpg.cpu_vpg + vlb_vsp0.abstract_vlb.memory_vlb: + - vLB_VSP 0 + - abstract_vlb.memory_vlb + vlb_vsp0.abstract_vpg.disk.device.capacity_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.capacity_vpg + vlb_vsp0.abstract_vlb.disk.device.allocation_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.allocation_vlb + vlb_vsp0.abstract_vpg.network.incoming.packets.rate_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.network.incoming.packets.rate_vpg_vpg_private_0_port + vlb_vsp0.abstract_vdns_0.feature_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.feature_vdns_vdns_private_0_port + vlb_vsp0.vlb_private_network.feature: + - vLB_VSP 0 + - vlb_private_network.feature + vlb_vsp0.abstract_vlb.os_vlb: + - vLB_VSP 0 + - abstract_vlb.os_vlb + vlb_vsp0.abstract_vlb.disk.device.read.bytes.rate_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.read.bytes.rate_vlb + vlb_vsp0.abstract_vpg.network.incoming.bytes.rate_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.network.incoming.bytes.rate_vpg_vpg_private_1_port + vlb_vsp0.abstract_vdns_1.endpoint_vdns: + - vLB_VSP 0 + - abstract_vdns_1.endpoint_vdns + vlb_vsp0.abstract_vdns_1.memory.usage_vdns: + - vLB_VSP 0 + - abstract_vdns_1.memory.usage_vdns + vlb_vsp0.abstract_vlb.disk.latency_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.latency_vlb + vlb_vsp0.abstract_vdns_1.network.outpoing.packets_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.network.outpoing.packets_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.instance_vlb: + - vLB_VSP 0 + - abstract_vlb.instance_vlb + vlb_vsp0.abstract_vdns_1.disk.device.usage_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.usage_vdns + vlb_vsp0.abstract_vlb.network.incoming.bytes_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.bytes_vlb_vlb_private_1_port + vlb_vsp0.abstract_vpg.feature_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.feature_vpg_vpg_private_1_port + vlb_vsp0.abstract_vdns_0.network.outgoing.bytes.rate_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.network.outgoing.bytes.rate_vdns_vdns_private_1_port + vlb_vsp0.abstract_vpg.os_vpg: + - vLB_VSP 0 + - abstract_vpg.os_vpg + vlb_vsp0.abstract_vdns_0.network.incoming.bytes.rate_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.network.incoming.bytes.rate_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.network.outgoing.packets.rate_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.network.outgoing.packets.rate_vdns_vdns_private_0_port + vlb_vsp0.abstract_vpg.network.outpoing.packets_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.network.outpoing.packets_vpg_vpg_private_0_port + vlb_vsp0.abstract_vdns_1.disk.device.iops_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.iops_vdns + vlb_vsp0.abstract_vdns_1.host_vdns: + - vLB_VSP 0 + - abstract_vdns_1.host_vdns + vlb_vsp0.abstract_vlb.disk.write.requests_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.write.requests_vlb + vlb_vsp0.abstract_vlb.network.incoming.bytes_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.bytes_vlb_vlb_private_0_port + vlb_vsp0.abstract_vdns_1.disk.capacity_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.capacity_vdns + vlb_vsp0.abstract_vpg.binding_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.binding_vpg_vpg_private_0_port + vlb_vsp0.abstract_vdns_0.disk.device.capacity_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.capacity_vdns + vlb_vsp0.abstract_vdns_0.host_vdns: + - vLB_VSP 0 + - abstract_vdns_0.host_vdns + vlb_vsp0.abstract_vlb.scalable_vlb: + - vLB_VSP 0 + - abstract_vlb.scalable_vlb + vlb_vsp0.abstract_vpg.disk.usage_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.usage_vpg + vlb_vsp0.abstract_vpg.attachment_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.attachment_vpg_vpg_private_1_port + vlb_vsp0.abstract_vlb.disk.device.write.bytes_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.write.bytes_vlb + vlb_vsp0.abstract_vlb.disk.device.capacity_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.capacity_vlb + vlb_vsp0.abstract_vpg.endpoint_vpg: + - vLB_VSP 0 + - abstract_vpg.endpoint_vpg + vlb_vsp0.abstract_vdns_0.disk.read.bytes_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.read.bytes_vdns + vlb_vsp0.abstract_vpg.disk.device.iops_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.iops_vpg + vlb_vsp0.abstract_vlb.disk.device.iops_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.iops_vlb + vlb_vsp0.abstract_vdns_0.network.incoming.packets.rate_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.network.incoming.packets.rate_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.feature_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.feature_vlb_vlb_private_2_port + vlb_vsp0.abstract_vpg.disk.device.read.bytes.rate_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.read.bytes.rate_vpg + vlb_vsp0.abstract_vpg.cpu_util_vpg: + - vLB_VSP 0 + - abstract_vpg.cpu_util_vpg + vlb_vsp0.abstract_vdns_1.disk.device.read.requests.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.read.requests.rate_vdns + vlb_vsp0.pktgen_private_network.end_point: + - vLB_VSP 0 + - pktgen_private_network.end_point + vlb_vsp0.abstract_vlb.disk.iops_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.iops_vlb + vlb_vsp0.abstract_vdns_0.feature_vdns: + - vLB_VSP 0 + - abstract_vdns_0.feature_vdns + vlb_vsp0.abstract_vdns_1.disk.usage_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.usage_vdns + vlb_vsp0.abstract_vlb.port_mirroring_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.port_mirroring_vlb_vlb_private_1_port + vlb_vsp0.abstract_vdns_1.instance_vdns: + - vLB_VSP 0 + - abstract_vdns_1.instance_vdns + vlb_vsp0.abstract_vpg.binding_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.binding_vpg_vpg_private_1_port + vlb_vsp0.abstract_vlb.attachment_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.attachment_vlb_vlb_private_0_port + vlb_vsp0.abstract_vdns_0.network.incoming.bytes_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.network.incoming.bytes_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_0.memory.resident_vdns: + - vLB_VSP 0 + - abstract_vdns_0.memory.resident_vdns + vlb_vsp0.abstract_vlb.disk.read.requests_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.read.requests_vlb + vlb_vsp0.abstract_vpg.memory.usage_vpg: + - vLB_VSP 0 + - abstract_vpg.memory.usage_vpg + vlb_vsp0.abstract_vlb.attachment_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.attachment_vlb_vlb_private_1_port + vlb_vsp0.abstract_vpg.network.incoming.bytes_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.network.incoming.bytes_vpg_vpg_private_1_port + vlb_vsp0.abstract_vdns_1.disk.iops_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.iops_vdns + vlb_vsp0.abstract_vdns_0.network.incoming.packets.rate_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.network.incoming.packets.rate_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.disk.device.allocation_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.allocation_vdns + vlb_vsp0.abstract_vlb.host_vlb: + - vLB_VSP 0 + - abstract_vlb.host_vlb + vlb_vsp0.abstract_vdns_1.disk.device.latency_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.latency_vdns + vlb_vsp0.abstract_vdns_1.disk.allocation_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.allocation_vdns + vlb_vsp0.abstract_vdns_1.disk.device.read.bytes.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.read.bytes.rate_vdns + vlb_vsp0.abstract_vpg.disk.device.read.requests.rate_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.read.requests.rate_vpg + vlb_vsp0.abstract_vdns_0.disk.read.requests_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.read.requests_vdns + vlb_vsp0.abstract_vlb.binding_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.binding_vlb_vlb_private_0_port + vlb_vsp0.abstract_vpg.disk.latency_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.latency_vpg + vlb_vsp0.abstract_vdns_0.disk.latency_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.latency_vdns + vlb_vsp0.abstract_vlb.network.incoming.packets_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.packets_vlb_vlb_private_0_port + vlb_vsp0.abstract_vdns_1.disk.read.bytes.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.read.bytes.rate_vdns + vlb_vsp0.abstract_vpg.disk.read.requests_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.read.requests_vpg + vlb_vsp0.abstract_vdns_0.scalable_vdns: + - vLB_VSP 0 + - abstract_vdns_0.scalable_vdns + vlb_vsp0.abstract_vdns_1.disk.device.capacity_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.capacity_vdns + vlb_vsp0.abstract_vpg.network.outgoing.packets.rate_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.network.outgoing.packets.rate_vpg_vpg_private_0_port + vlb_vsp0.abstract_vdns_0.network.incoming.bytes_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.network.incoming.bytes_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.disk.read.bytes.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.read.bytes.rate_vdns + vlb_vsp0.abstract_vdns_0.memory.usage_vdns: + - vLB_VSP 0 + - abstract_vdns_0.memory.usage_vdns + vlb_vsp0.abstract_vpg.disk.device.write.requests_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.write.requests_vpg + vlb_vsp0.abstract_vdns_0.disk.ephemeral.size_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.ephemeral.size_vdns + vlb_vsp0.abstract_vdns_1.attachment_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.attachment_vdns_vdns_private_0_port + vlb_vsp0.abstract_vpg.disk.allocation_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.allocation_vpg + vlb_vsp0.abstract_vpg.host_vpg: + - vLB_VSP 0 + - abstract_vpg.host_vpg + vlb_vsp0.abstract_vdns_1.disk.device.write.bytes_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.write.bytes_vdns + vlb_vsp0.abstract_vlb.disk.capacity_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.capacity_vlb + vlb_vsp0.abstract_vpg.network.outpoing.packets_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.network.outpoing.packets_vpg_vpg_private_1_port + vlb_vsp0.abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_1_port + vlb_vsp0.abstract_vlb.cpu.delta_vlb: + - vLB_VSP 0 + - abstract_vlb.cpu.delta_vlb + vlb_vsp0.abstract_vdns_1.disk.write.bytes_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.write.bytes_vdns + vlb_vsp0.abstract_vdns_0.disk.device.allocation_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.allocation_vdns + vlb_vsp0.abstract_vdns_0.disk.device.write.bytes.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.write.bytes.rate_vdns + vlb_vsp0.abstract_vpg.scalable_vpg: + - vLB_VSP 0 + - abstract_vpg.scalable_vpg + vlb_vsp0.abstract_vdns_0.network.incoming.bytes.rate_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.network.incoming.bytes.rate_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.network.outgoing.bytes_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.bytes_vlb_vlb_private_2_port + vlb_vsp0.abstract_vlb.disk.write.requests.rate_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.write.requests.rate_vlb + vlb_vsp0.abstract_vlb.network.outpoing.packets_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.network.outpoing.packets_vlb_vlb_private_2_port + vlb_vsp0.abstract_vdns_0.attachment_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.attachment_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.network.incoming.packets_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.network.incoming.packets_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.feature_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.feature_vdns_vdns_private_1_port + vlb_vsp0.abstract_vpg.network.outgoing.bytes.rate_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.network.outgoing.bytes.rate_vpg_vpg_private_1_port + vlb_vsp0.abstract_vpg.feature_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.feature_vpg_vpg_private_0_port + vlb_vsp0.abstract_vlb.disk.root.size_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.root.size_vlb + vlb_vsp0.abstract_vlb.network.incoming.packets_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.packets_vlb_vlb_private_2_port + vlb_vsp0.abstract_vdns_1.network.incoming.bytes.rate_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.network.incoming.bytes.rate_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.network.outgoing.bytes_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.network.outgoing.bytes_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_1.network.incoming.packets.rate_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.network.incoming.packets.rate_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.disk.write.bytes_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.write.bytes_vlb + vlb_vsp0.abstract_vdns_0.disk.write.requests.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.write.requests.rate_vdns + vlb_vsp0.abstract_vdns_0.binding_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.binding_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.scalable_vdns: + - vLB_VSP 0 + - abstract_vdns_1.scalable_vdns + vlb_vsp0.abstract_vdns_1.network.incoming.bytes_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.network.incoming.bytes_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.feature_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.feature_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_0.disk.iops_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.iops_vdns + vlb_vsp0.abstract_vdns_0.disk.root.size_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.root.size_vdns + vlb_vsp0.abstract_vdns_0.disk.device.usage_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.usage_vdns + vlb_vsp0.abstract_vdns_1.network.outpoing.packets_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.network.outpoing.packets_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.disk.write.requests_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.write.requests_vdns + vlb_vsp0.abstract_vpg.instance_vpg: + - vLB_VSP 0 + - abstract_vpg.instance_vpg + vlb_vsp0.abstract_vdns_1.binding_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.binding_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.forwarder_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.forwarder_vlb_vlb_private_0_port + vlb_vsp0.abstract_vlb.memory.usage_vlb: + - vLB_VSP 0 + - abstract_vlb.memory.usage_vlb + vlb_vsp0.abstract_vpg.disk.root.size_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.root.size_vpg + vlb_vsp0.abstract_vdns_1.network.outgoing.bytes.rate_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.network.outgoing.bytes.rate_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_0_port + vlb_vsp0.abstract_vpg.disk.device.latency_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.latency_vpg + vlb_vsp0.abstract_vpg.disk.read.bytes.rate_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.read.bytes.rate_vpg + vlb_vsp0.abstract_vdns_0.disk.write.bytes.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.write.bytes.rate_vdns + vlb_vsp0.abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_1_port + vlb_vsp0.abstract_vlb.disk.usage_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.usage_vlb + vlb_vsp0.abstract_vlb.disk.device.write.requests_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.write.requests_vlb + vlb_vsp0.abstract_vlb.binding_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.binding_vlb_vlb_private_1_port + vlb_vsp0.abstract_vdns_0.disk.device.read.requests_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.read.requests_vdns + vlb_vsp0.abstract_vpg.port_mirroring_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.port_mirroring_vpg_vpg_private_1_port + vlb_vsp0.abstract_vdns_1.disk.device.read.requests_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.read.requests_vdns + vlb_vsp0.abstract_vlb.disk.allocation_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.allocation_vlb + vlb_vsp0.abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.packets.rate_vlb_vlb_private_2_port + vlb_vsp0.abstract_vdns_0.network.outpoing.packets_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.network.outpoing.packets_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.disk.capacity_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.capacity_vdns + vlb_vsp0.abstract_vlb.attachment_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.attachment_vlb_vlb_private_2_port + vlb_vsp0.abstract_vpg.disk.device.usage_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.usage_vpg + vlb_vsp0.abstract_vdns_1.attachment_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.attachment_vdns_vdns_private_1_port + vlb_vsp0.abstract_vpg.disk.capacity_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.capacity_vpg + vlb_vsp0.abstract_vlb.disk.device.read.requests.rate_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.read.requests.rate_vlb + vlb_vsp0.abstract_vlb.network.outgoing.bytes_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.bytes_vlb_vlb_private_0_port + vlb_vsp0.abstract_vpg.disk.device.write.bytes_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.write.bytes_vpg + vlb_vsp0.abstract_vdns_0.binding_vdns: + - vLB_VSP 0 + - abstract_vdns_0.binding_vdns + vlb_vsp0.abstract_vdns_1.forwarder_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.forwarder_vdns_vdns_private_0_port + vlb_vsp0.abstract_vpg.disk.device.write.requests.rate_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.write.requests.rate_vpg + vlb_vsp0.abstract_vdns_0.disk.write.bytes_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.write.bytes_vdns + vlb_vsp0.abstract_vdns_0.network.outgoing.bytes.rate_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.network.outgoing.bytes.rate_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.network.outpoing.packets_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.network.outpoing.packets_vlb_vlb_private_0_port + vlb_vsp0.abstract_vpg.attachment_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.attachment_vpg_vpg_private_0_port + vlb_vsp0.abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_2_port + vlb_vsp0.abstract_vdns_1.network.outgoing.packets.rate_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.network.outgoing.packets.rate_vdns_vdns_private_1_port + vlb_vsp0.abstract_vlb.feature_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.feature_vlb_vlb_private_1_port + vlb_vsp0.abstract_vlb.disk.ephemeral.size_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.ephemeral.size_vlb + vlb_vsp0.abstract_vpg.memory_vpg: + - vLB_VSP 0 + - abstract_vpg.memory_vpg + vlb_vsp0.abstract_vdns_1.disk.latency_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.latency_vdns + vlb_vsp0.abstract_vdns_1.network.incoming.packets_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.network.incoming.packets_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.network.outgoing.packets.rate_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.network.outgoing.packets.rate_vdns_vdns_private_1_port + vlb_vsp0.abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_1_port + vlb_vsp0.abstract_vdns_1.cpu.delta_vdns: + - vLB_VSP 0 + - abstract_vdns_1.cpu.delta_vdns + vlb_vsp0.pktgen_private_network.attachment: + - vLB_VSP 0 + - pktgen_private_network.attachment + vlb_vsp0.abstract_vlb.disk.device.read.bytes_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.read.bytes_vlb + vlb_vsp0.abstract_vpg.disk.ephemeral.size_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.ephemeral.size_vpg + vlb_vsp0.abstract_vdns_1.disk.device.write.requests_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.write.requests_vdns + vlb_vsp0.abstract_vlb.cpu_util_vlb: + - vLB_VSP 0 + - abstract_vlb.cpu_util_vlb + vlb_vsp0.abstract_vpg.network.outgoing.bytes_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.network.outgoing.bytes_vpg_vpg_private_1_port + vlb_vsp0.abstract_vlb.binding_vlb: + - vLB_VSP 0 + - abstract_vlb.binding_vlb + vlb_vsp0.abstract_vpg.feature_vpg: + - vLB_VSP 0 + - abstract_vpg.feature_vpg + vlb_vsp0.abstract_vlb.disk.device.latency_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.latency_vlb + vlb_vsp0.abstract_vlb.disk.device.write.requests.rate_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.device.write.requests.rate_vlb + vlb_vsp0.abstract_vpg.forwarder_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.forwarder_vpg_vpg_private_1_port + vlb_vsp0.abstract_vdns_0.disk.device.write.requests.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.write.requests.rate_vdns + vlb_vsp0.abstract_vdns_0.disk.device.read.bytes_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.read.bytes_vdns + vlb_vsp0.abstract_vpg.network.incoming.packets_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.network.incoming.packets_vpg_vpg_private_1_port + vlb_vsp0.abstract_vdns_0.network.outgoing.bytes_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.network.outgoing.bytes_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.disk.write.bytes.rate_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.write.bytes.rate_vlb + vlb_vsp0.abstract_vpg.disk.device.read.bytes_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.read.bytes_vpg + vlb_vsp0.abstract_vpg.disk.write.requests.rate_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.write.requests.rate_vpg + vlb_vsp0.abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_1_port + vlb_vsp0.abstract_vdns_1.disk.write.requests.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.write.requests.rate_vdns + vlb_vsp0.abstract_vdns_1.disk.device.read.bytes_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.read.bytes_vdns + vlb_vsp0.pktgen_private_network.link: + - vLB_VSP 0 + - pktgen_private_network.link + vlb_vsp0.vlb_private_network.end_point: + - vLB_VSP 0 + - vlb_private_network.end_point + vlb_vsp0.abstract_vlb.forwarder_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.forwarder_vlb_vlb_private_2_port + vlb_vsp0.abstract_vdns_0.network.outgoing.bytes_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.network.outgoing.bytes_vdns_vdns_private_1_port + vlb_vsp0.abstract_vpg.network.incoming.packets.rate_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.network.incoming.packets.rate_vpg_vpg_private_1_port + vlb_vsp0.abstract_vdns_0.disk.device.iops_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.iops_vdns + vlb_vsp0.abstract_vdns_0.cpu_vdns: + - vLB_VSP 0 + - abstract_vdns_0.cpu_vdns + vlb_vsp0.abstract_vdns_0.disk.device.write.requests_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.write.requests_vdns + vlb_vsp0.abstract_vpg.disk.write.bytes_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.write.bytes_vpg + vlb_vsp0.abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.packets.rate_vlb_vlb_private_2_port + vlb_vsp0.abstract_vlb.cpu_vlb: + - vLB_VSP 0 + - abstract_vlb.cpu_vlb + vlb_vsp0.abstract_vdns_1.network.incoming.packets_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.network.incoming.packets_vdns_vdns_private_0_port + vlb_vsp0.vlb_private_network.attachment: + - vLB_VSP 0 + - vlb_private_network.attachment + vlb_vsp0.abstract_vlb.disk.read.bytes.rate_vlb: + - vLB_VSP 0 + - abstract_vlb.disk.read.bytes.rate_vlb + vlb_vsp0.abstract_vdns_0.forwarder_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.forwarder_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_1.disk.device.write.requests.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.device.write.requests.rate_vdns + vlb_vsp0.abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.bytes.rate_vlb_vlb_private_0_port + vlb_vsp0.abstract_vlb.network.incoming.bytes_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.network.incoming.bytes_vlb_vlb_private_2_port + vlb_vsp0.abstract_vlb.feature_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.feature_vlb_vlb_private_0_port + vlb_vsp0.abstract_vdns_0.disk.device.read.bytes.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.read.bytes.rate_vdns + vlb_vsp0.abstract_vdns_0.disk.allocation_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.allocation_vdns + vlb_vsp0.abstract_vdns_0.disk.usage_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.usage_vdns + vlb_vsp0.abstract_vpg.cpu.delta_vpg: + - vLB_VSP 0 + - abstract_vpg.cpu.delta_vpg + vlb_vsp0.abstract_vdns_1.memory.resident_vdns: + - vLB_VSP 0 + - abstract_vdns_1.memory.resident_vdns + vlb_vsp0.abstract_vdns_0.vcpus_vdns: + - vLB_VSP 0 + - abstract_vdns_0.vcpus_vdns + vlb_vsp0.abstract_vpg.network.incoming.bytes.rate_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.network.incoming.bytes.rate_vpg_vpg_private_0_port + vlb_vsp0.abstract_vpg.memory.resident_vpg: + - vLB_VSP 0 + - abstract_vpg.memory.resident_vpg + vlb_vsp0.abstract_vdns_0.forwarder_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.forwarder_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.cpu_util_vdns: + - vLB_VSP 0 + - abstract_vdns_1.cpu_util_vdns + vlb_vsp0.abstract_vdns_1.disk.read.requests_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.read.requests_vdns + vlb_vsp0.abstract_vdns_1.binding_vdns: + - vLB_VSP 0 + - abstract_vdns_1.binding_vdns + vlb_vsp0.abstract_vdns_0.binding_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.binding_vdns_vdns_private_0_port + vlb_vsp0.abstract_vdns_0.port_mirroring_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.port_mirroring_vdns_vdns_private_1_port + vlb_vsp0.abstract_vpg.disk.read.bytes_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.read.bytes_vpg + vlb_vsp0.pktgen_private_network.feature: + - vLB_VSP 0 + - pktgen_private_network.feature + vlb_vsp0.abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.network.outgoing.bytes.rate_vlb_vlb_private_0_port + vlb_vsp0.abstract_vpg.forwarder_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.forwarder_vpg_vpg_private_0_port + vlb_vsp0.abstract_vpg.network.outgoing.bytes_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.network.outgoing.bytes_vpg_vpg_private_0_port + vlb_vsp0.abstract_vpg.disk.device.write.bytes.rate_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.device.write.bytes.rate_vpg + vlb_vsp0.abstract_vdns_0.disk.device.read.requests.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_0.disk.device.read.requests.rate_vdns + vlb_vsp0.abstract_vdns_1.disk.ephemeral.size_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.ephemeral.size_vdns + vlb_vsp0.abstract_vdns_0.cpu.delta_vdns: + - vLB_VSP 0 + - abstract_vdns_0.cpu.delta_vdns + vlb_vsp0.abstract_vdns_1.os_vdns: + - vLB_VSP 0 + - abstract_vdns_1.os_vdns + vlb_vsp0.abstract_vpg.network.incoming.packets_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.network.incoming.packets_vpg_vpg_private_0_port + vlb_vsp0.abstract_vdns_0.cpu_util_vdns: + - vLB_VSP 0 + - abstract_vdns_0.cpu_util_vdns + vlb_vsp0.abstract_vpg.disk.write.bytes.rate_vpg: + - vLB_VSP 0 + - abstract_vpg.disk.write.bytes.rate_vpg + vlb_vsp0.abstract_vdns_1.disk.write.bytes.rate_vdns: + - vLB_VSP 0 + - abstract_vdns_1.disk.write.bytes.rate_vdns + requirements: + vlb_vsp0.abstract_vpg.link_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.link_vpg_vpg_private_1_port + vlb_vsp0.abstract_vpg.local_storage_vpg: + - vLB_VSP 0 + - abstract_vpg.local_storage_vpg + vlb_vsp0.abstract_vdns_0.link_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.link_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.dependency_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.dependency_vlb_vlb_private_0_port + vlb_vsp0.abstract_vdns_1.link_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.link_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_1.local_storage_vdns: + - vLB_VSP 0 + - abstract_vdns_1.local_storage_vdns + vlb_vsp0.abstract_vdns_0.local_storage_vdns: + - vLB_VSP 0 + - abstract_vdns_0.local_storage_vdns + vlb_vsp0.abstract_vlb.link_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.link_vlb_vlb_private_2_port + vlb_vsp0.pktgen_private_network.dependency: + - vLB_VSP 0 + - pktgen_private_network.dependency + vlb_vsp0.abstract_vdns_1.dependency_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.dependency_vdns_vdns_private_0_port + vlb_vsp0.abstract_vpg.dependency_vpg: + - vLB_VSP 0 + - abstract_vpg.dependency_vpg + vlb_vsp0.abstract_vpg.dependency_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.dependency_vpg_vpg_private_0_port + vlb_vsp0.abstract_vdns_0.dependency_vdns: + - vLB_VSP 0 + - abstract_vdns_0.dependency_vdns + vlb_vsp0.abstract_vlb.link_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.link_vlb_vlb_private_1_port + vlb_vsp0.abstract_vpg.link_vpg_vpg_private_0_port: + - vLB_VSP 0 + - abstract_vpg.link_vpg_vpg_private_0_port + vlb_vsp0.vlb_private_network.dependency: + - vLB_VSP 0 + - vlb_private_network.dependency + vlb_vsp0.abstract_vlb.dependency_vlb_vlb_private_1_port: + - vLB_VSP 0 + - abstract_vlb.dependency_vlb_vlb_private_1_port + vlb_vsp0.abstract_vpg.dependency_vpg_vpg_private_1_port: + - vLB_VSP 0 + - abstract_vpg.dependency_vpg_vpg_private_1_port + vlb_vsp0.abstract_vdns_0.link_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.link_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.dependency_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_0.dependency_vdns_vdns_private_1_port + vlb_vsp0.abstract_vdns_0.dependency_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_0.dependency_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.link_vlb_vlb_private_0_port: + - vLB_VSP 0 + - abstract_vlb.link_vlb_vlb_private_0_port + vlb_vsp0.abstract_vlb.local_storage_vlb: + - vLB_VSP 0 + - abstract_vlb.local_storage_vlb + vlb_vsp0.abstract_vdns_1.dependency_vdns_vdns_private_1_port: + - vLB_VSP 0 + - abstract_vdns_1.dependency_vdns_vdns_private_1_port + vlb_vsp0.abstract_vlb.dependency_vlb: + - vLB_VSP 0 + - abstract_vlb.dependency_vlb + vlb_vsp0.abstract_vdns_1.dependency_vdns: + - vLB_VSP 0 + - abstract_vdns_1.dependency_vdns + vlb_vsp0.abstract_vdns_1.link_vdns_vdns_private_0_port: + - vLB_VSP 0 + - abstract_vdns_1.link_vdns_vdns_private_0_port + vlb_vsp0.abstract_vlb.dependency_vlb_vlb_private_2_port: + - vLB_VSP 0 + - abstract_vlb.dependency_vlb_vlb_private_2_port -- 2.16.6