diff options
Diffstat (limited to 'catalog-be/src')
4 files changed, 932 insertions, 25 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ImportUtils.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ImportUtils.java index 8b69a4575c..924d4416f0 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ImportUtils.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ImportUtils.java @@ -62,12 +62,10 @@ import static org.openecomp.sdc.be.datatypes.elements.Annotation.setAnnotationsN public final class ImportUtils { - private ImportUtils() { - } - private static CustomResolver customResolver = new CustomResolver(); - private static Yaml strictYamlLoader = new YamlLoader().getStrictYamlLoader(); + private static final CustomResolver customResolver = new CustomResolver(); + private static final Yaml strictYamlLoader = new YamlLoader().getStrictYamlLoader(); @Autowired protected static ComponentsUtils componentsUtils; @@ -77,6 +75,10 @@ public final class ImportUtils { private static final Logger log = Logger.getLogger(ImportUtils.class); + private ImportUtils() { + + } + private static class CustomResolver extends Resolver { @Override protected void addImplicitResolvers() { @@ -202,12 +204,7 @@ public final class ImportUtils { } private static void findAllToscaElementsInList(List<Object> list, String elementName, ToscaElementTypeEnum elementType, List<Object> returnedList) { - Iterator<Object> listItr = list.iterator(); - while (listItr.hasNext()) { - Object elementValue = listItr.next(); - handleElementNameNotFound(elementName, elementValue, elementType, returnedList); - } - + list.forEach(elementValue -> handleElementNameNotFound(elementName, elementValue, elementType, returnedList)); } public static Either<Object, ResultStatusEnum> findToscaElement(Map<String, Object> toscaJson, TypeUtils.ToscaTagNamesEnum elementName, ToscaElementTypeEnum elementType) { @@ -235,6 +232,7 @@ public final class ImportUtils { skipKey = handleFoundElement(toscaJson, elementName, elementType, returnedList); } + Iterator<Entry<String, Object>> keyValItr = toscaJson.entrySet().iterator(); while (keyValItr.hasNext()) { Entry<String, Object> keyValEntry = keyValItr.next(); @@ -326,13 +324,13 @@ public final class ImportUtils { PropertyDefinition propertyDef = new PropertyDefinition(); setField(propertyValue, TypeUtils.ToscaTagNamesEnum.TYPE, propertyDef::setType); - setPropertyFieldRequired(propertyValue, propertyDef); + setFieldBoolean(propertyValue, ToscaTagNamesEnum.REQUIRED, req -> propertyDef.setRequired(Boolean.parseBoolean(req))); setField(propertyValue, TypeUtils.ToscaTagNamesEnum.DESCRIPTION, propertyDef::setDescription); setJsonStringField(propertyValue, TypeUtils.ToscaTagNamesEnum.DEFAULT_VALUE, propertyDef.getType(), propertyDef::setDefaultValue); setJsonStringField(propertyValue, TypeUtils.ToscaTagNamesEnum.VALUE, propertyDef.getType(), propertyDef::setValue); - setField(propertyValue, TypeUtils.ToscaTagNamesEnum.IS_PASSWORD, pass -> propertyDef.setPassword(Boolean.parseBoolean(pass))); + setFieldBoolean(propertyValue, TypeUtils.ToscaTagNamesEnum.IS_PASSWORD, pass -> propertyDef.setPassword(Boolean.parseBoolean(pass))); setField(propertyValue, TypeUtils.ToscaTagNamesEnum.STATUS, propertyDef::setStatus); setScheme(propertyValue, propertyDef); setPropertyConstraints(propertyValue, propertyDef); @@ -374,7 +372,7 @@ public final class ImportUtils { for (Entry<String, PropertyDefinition> entry : value.entrySet()) { String name = entry.getKey(); if (!PROPERTY_NAME_PATTERN_IGNORE_LENGTH.matcher(name).matches()) { - log.debug("The property with invalid name {} occured upon import resource {}. ", name, annotation.getName()); + log.debug("The property with invalid name {} occurred upon import resource {}. ", name, annotation.getName()); result = Either.right(componentsUtils.getResponseFormat(componentsUtils.convertFromResultStatusEnum(ResultStatusEnum.INVALID_PROPERTY_NAME, JsonPresentationFields.PROPERTY))); } PropertyDefinition propertyDefinition = entry.getValue(); @@ -397,17 +395,16 @@ public final class ImportUtils { InputDefinition inputDef = new InputDefinition(); ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.TYPE, inputDef::setType); - ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.REQUIRED, req -> inputDef.setRequired(Boolean.parseBoolean(req))); + ImportUtils.setFieldBoolean(inputValue, ToscaTagNamesEnum.REQUIRED, req -> inputDef.setRequired(Boolean.parseBoolean(req))); ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.DESCRIPTION, inputDef::setDescription); setJsonStringField(inputValue, TypeUtils.ToscaTagNamesEnum.DEFAULT_VALUE, inputDef.getType(), inputDef::setDefaultValue); - ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.IS_PASSWORD, pass -> inputDef.setPassword(Boolean.parseBoolean(pass))); + ImportUtils.setFieldBoolean(inputValue, TypeUtils.ToscaTagNamesEnum.IS_PASSWORD, pass -> inputDef.setPassword(Boolean.parseBoolean(pass))); ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.STATUS, inputDef::setStatus); ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.LABEL, inputDef::setLabel); - ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.HIDDEN, hidden -> inputDef.setHidden(Boolean.parseBoolean(hidden))); - ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.HIDDEN, immutable -> inputDef.setImmutable(Boolean.parseBoolean(immutable))); - ImportUtils.setField(inputValue, TypeUtils.ToscaTagNamesEnum.LABEL, inputDef::setLabel); + ImportUtils.setFieldBoolean(inputValue, TypeUtils.ToscaTagNamesEnum.HIDDEN, hidden -> inputDef.setHidden(Boolean.parseBoolean(hidden))); + ImportUtils.setFieldBoolean(inputValue, TypeUtils.ToscaTagNamesEnum.IMMUTABLE, immutable -> inputDef.setImmutable(Boolean.parseBoolean(immutable))); ImportUtils.setScheme(inputValue, inputDef); ImportUtils.setPropertyConstraints(inputValue, inputDef); @@ -487,13 +484,15 @@ public final class ImportUtils { } - private static void setPropertyFieldRequired(Map<String, Object> propertyValue, PropertyDefinition dataDefinition) { - Either<String, ResultStatusEnum> propertyFieldRequired = findFirstToscaBooleanElement(propertyValue, TypeUtils.ToscaTagNamesEnum.REQUIRED); - if (propertyFieldRequired.isLeft()) { - dataDefinition.setRequired(Boolean.parseBoolean(propertyFieldRequired.left().value())); + public static void setFieldBoolean(Map<String, Object> toscaJson, TypeUtils.ToscaTagNamesEnum tagName, Consumer<String> setter) { + Either<String, ResultStatusEnum> fieldStringValue = findFirstToscaBooleanElement(toscaJson, tagName); + if (fieldStringValue.isLeft()) { + setter.accept(fieldStringValue.left().value()); } + } + public static Either<Map<String, PropertyDefinition>, ResultStatusEnum> getProperties(Map<String, Object> toscaJson) { Function<String, PropertyDefinition> elementGenByName = ImportUtils::createProperties; Function<Map<String, Object>, PropertyDefinition> func = ImportUtils::createModuleProperty; diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java index a3ee69d681..e8169006d2 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java @@ -110,8 +110,8 @@ public class PropertyConvertor { prop.setDescription(property.getDescription()); if (isCapabiltyProperty) { prop.setStatus(property.getStatus()); - prop.setRequired(property.isRequired()); } + prop.setRequired(property.isRequired()); return prop; } diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ImportUtilsTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ImportUtilsTest.java index f5357e735f..b23b8abd1e 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ImportUtilsTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ImportUtilsTest.java @@ -21,13 +21,17 @@ package org.openecomp.sdc.be.components.impl; import fj.data.Either; +import mockit.Mock; import org.junit.Test; +import org.mockito.Mockito; import org.openecomp.sdc.be.components.impl.ImportUtils.ResultStatusEnum; import org.openecomp.sdc.be.components.impl.ImportUtils.ToscaElementTypeEnum; import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition; import org.openecomp.sdc.be.model.HeatParameterDefinition; +import org.openecomp.sdc.be.model.InputDefinition; import org.openecomp.sdc.be.model.PropertyDefinition; +import org.openecomp.sdc.be.model.operations.impl.AnnotationTypeOperations; import org.openecomp.sdc.be.utils.TypeUtils; import org.openecomp.sdc.common.api.ArtifactTypeEnum; import org.yaml.snakeyaml.Yaml; @@ -48,6 +52,8 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; public class ImportUtilsTest { + + @Test public void testStringTypeFindToscaElements() throws IOException { Either<List<Object>, ResultStatusEnum> toscaElements = ImportUtils.findToscaElements((Map<String, Object>) loadJsonFromFile("normative-types-string-list-test.yml"), "stringTestTag", ToscaElementTypeEnum.STRING, new ArrayList<>()); @@ -295,6 +301,21 @@ public class ImportUtilsTest { } + @Test + public void testGetInputsFromYml() throws IOException { + + Map<String, Object> toscaJson = (Map<String, Object>) loadJsonFromFile("importToscaInputs.yml"); + + AnnotationTypeOperations annotationTypeOperations= Mockito.mock(AnnotationTypeOperations.class); + Mockito.when(annotationTypeOperations.getLatestType(Mockito.anyString())).thenReturn(null); + + Either<Map<String, InputDefinition>, ResultStatusEnum> actualInputs = ImportUtils.getInputs(toscaJson,annotationTypeOperations); + assertTrue(actualInputs.isLeft()); + Map<String, Map<String, Object>> expectedProperties = getElements(toscaJson, TypeUtils.ToscaTagNamesEnum.INPUTS); + compareProperties(expectedProperties, actualInputs.left().value()); + + } + private void compareAttributes(Map<String, Map<String, Object>> expected, Map<String, PropertyDefinition> actual) { Map<String, Object> singleExpectedAttribute; @@ -322,11 +343,11 @@ public class ImportUtilsTest { } - private void compareProperties(Map<String, Map<String, Object>> expected, Map<String, PropertyDefinition> actual) { + private void compareProperties(Map<String, Map<String, Object>> expected, Map<String, ? extends PropertyDefinition > actual) { Map<String, Object> singleExpectedProperty; PropertyDefinition actualProperty, expectedPropertyModel; - // attributes of resource + for (Map.Entry<String, Map<String, Object>> expectedProperty : expected.entrySet()) { singleExpectedProperty = expectedProperty.getValue(); diff --git a/catalog-be/src/test/resources/normativeTypes/importToscaInputs.yml b/catalog-be/src/test/resources/normativeTypes/importToscaInputs.yml new file mode 100644 index 0000000000..9fac2fb2c7 --- /dev/null +++ b/catalog-be/src/test/resources/normativeTypes/importToscaInputs.yml @@ -0,0 +1,887 @@ +tosca_definitions_version: tosca_simple_yaml_1_1 +metadata: + invariantUUID: 064cc5e7-303a-4eee-8a10-5e6a0310dcba + UUID: 8c2fb792-5092-4c1c-ab15-c507b4e4ee11 + name: ciResVFOnboarded-base_vfw-aa8dcbff-nodes.vpgCvfc + description: Complex node type that is used as nested type in VF + type: CVFC + category: Generic + subcategory: Abstract + resourceVendor: ciLicensec891e89e + resourceVendorRelease: 1.0.0.wd03 + resourceVendorModelNumber: '666' +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 +- resource-ciResVFOnboarded-base_vfw-aa8dcbff-nodes.vpgCvfc-interface: + file: resource-CiresvfonboardedBaseVfwAa8dcbffNodesVpgcvfc-template-interface.yml +- resource-CiresvfonboardedBaseVfwAa8dcbff.compute.nodes.heat.vpg: + file: resource-Ciresvfonboardedbasevfwaa8dcbffComputeNodesHeatVpg-template.yml +- resource-NeutronPort: + file: resource-Neutronport-template.yml +- resource-extNeutronCP: + file: resource-Extneutroncp-template.yml +topology_template: + inputs: + port_vpg_private_1_port_network: + type: list + required: false + entry_schema: + type: string + port_vpg_private_1_port_network_role: + type: string + required: false + port_vpg_private_1_port_exCP_naming: + default: + ecomp_generated_naming: true + type: org.openecomp.datatypes.Naming + required: false + port_vpg_private_1_port_vlan_requirements: + type: list + required: false + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + port_vpg_private_0_port_network: + type: list + required: false + entry_schema: + type: string + nfc_naming: + default: + ecomp_generated_naming: true + type: org.openecomp.datatypes.Naming + description: vfc naming + required: false + port_vpg_private_1_port_ip_requirements: + type: list + required: false + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + vm_flavor_name: + type: string + required: false + port_vpg_private_0_port_exCP_naming: + default: + ecomp_generated_naming: true + type: org.openecomp.datatypes.Naming + required: false + port_vpg_private_0_port_subnetpoolid: + type: string + required: false + port_vpg_private_1_port_order: + type: integer + required: false + port_vpg_private_1_port_network_role_tag: + type: string + required: false + service_template_filter: + default: + index_value: 0 + count: '1' + scaling_enabled: true + mandatory: true + type: org.openecomp.datatypes.heat.substitution.SubstitutionFiltering + description: Substitution Filter + required: true + vm_image_name: + type: string + required: false + compute_vpg_name: + type: list + required: false + entry_schema: + type: string + vm_type_tag: + type: string + description: vm type based on naming Convention + required: false + high_availablity: + type: string + description: high_availablity + required: false + compute_vpg_user_data_format: + type: list + required: false + entry_schema: + type: string + compute_vpg_key_name: + type: list + required: false + entry_schema: + type: string + port_vpg_private_1_port_subnetpoolid: + type: string + required: false + nfc_naming_code: + type: string + description: nfc code for instance naming + required: false + port_vpg_private_0_port_related_networks: + type: list + required: false + entry_schema: + type: org.openecomp.datatypes.network.RelatedNetworksAssignments + port_vpg_private_0_port_network_role_tag: + type: string + required: false + nfc_function: + type: string + required: false + compute_vpg_metadata: + type: list + required: false + entry_schema: + type: json + port_vpg_private_0_port_vlan_requirements: + type: list + required: false + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + index_value: + default: 0 + type: integer + description: Index value of this substitution service template runtime instance + required: false + max_instances: + type: integer + description: Maximum number of VFC Instances + required: false + port_vpg_private_0_port_fixed_ips: + type: list + required: false + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_vpg_private_0_port_network_role: + type: string + required: false + port_vpg_private_1_port_mac_requirements: + default: + mac_count_required: + is_required: false + type: org.openecomp.datatypes.network.MacRequirements + required: false + port_vpg_private_0_port_ip_requirements: + type: list + required: false + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + port_vpg_private_1_port_related_networks: + type: list + required: false + entry_schema: + type: org.openecomp.datatypes.network.RelatedNetworksAssignments + min_instances: + default: 0 + type: integer + description: Minimum number of VFC Instances + required: false + port_vpg_private_1_port_fixed_ips: + type: list + required: false + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + port_vpg_private_0_port_mac_requirements: + default: + mac_count_required: + is_required: false + type: org.openecomp.datatypes.network.MacRequirements + required: false + port_vpg_private_0_port_order: + type: integer + required: false + node_templates: + vpg_vpg_private_0_port: + type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + metadata: + invariantUUID: b2b303b1-eab0-48a0-88f6-f335f5e01abf + UUID: 068e214e-6eb5-4663-843e-007e0bae9870 + customizationUUID: 8b636bd0-db43-4938-a471-6fab142f9d55 + version: '1.0' + name: NeutronPort + description: Represents a logical entity that associates between Compute and Network normative types. + type: CP + category: Generic + subcategory: Network Elements + resourceVendor: ATT (Tosca) + resourceVendorRelease: 1.0.0.wd03 + resourceVendorModelNumber: '' + properties: + subnetpoolid: + get_input: port_vpg_private_0_port_subnetpoolid + is_default: false + related_networks: + get_input: port_vpg_private_0_port_related_networks + network: + get_input: + - port_vpg_private_0_port_network + - index_value + replacement_policy: AUTO + ip_requirements: + get_input: port_vpg_private_0_port_ip_requirements + network_role: + get_input: port_vpg_private_0_port_network_role + fixed_ips: + get_input: + - port_vpg_private_0_port_fixed_ips + - index_value + subinterface_indicator: false + mac_requirements: + get_input: port_vpg_private_0_port_mac_requirements + admin_state_up: true + exCP_naming: + get_input: port_vpg_private_0_port_exCP_naming + vlan_requirements: + get_input: port_vpg_private_0_port_vlan_requirements + network_role_tag: + get_input: port_vpg_private_0_port_network_role_tag + order: + get_input: port_vpg_private_0_port_order + requirements: + - binding: + capability: binding + node: vpg + capabilities: + network.outgoing.bytes.rate_vpg_vpg_private_0_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + network.outgoing.bytes_vpg_vpg_private_0_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + network.incoming.packets.rate_vpg_vpg_private_0_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + network.incoming.bytes.rate_vpg_vpg_private_0_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + network.outpoing.packets_vpg_vpg_private_0_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + network.outgoing.packets.rate_vpg_vpg_private_0_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + network.incoming.bytes_vpg_vpg_private_0_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + network.incoming.packets_vpg_vpg_private_0_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + vpg_vpg_private_1_port: + type: org.openecomp.resource.cp.v2.extNeutronCP + metadata: + invariantUUID: eee9a985-8e7e-4304-8d6c-3064fbb8f362 + UUID: 358c373c-6bb0-4a8c-a554-f83cc52fb317 + customizationUUID: 04986d31-b354-4ec0-b33f-01d3faf63076 + version: '1.0' + name: extNeutronCP + description: The AT&T Connection Point base type all other CP derive from + type: CP + category: Generic + subcategory: Network Elements + resourceVendor: ATT (Tosca) + resourceVendorRelease: 1.0.0.wd03 + resourceVendorModelNumber: '' + properties: + subnetpoolid: + get_input: port_vpg_private_1_port_subnetpoolid + is_default: false + related_networks: + get_input: port_vpg_private_1_port_related_networks + network: + get_input: + - port_vpg_private_1_port_network + - index_value + replacement_policy: AUTO + ip_requirements: + get_input: port_vpg_private_1_port_ip_requirements + network_role: + get_input: port_vpg_private_1_port_network_role + fixed_ips: + get_input: + - port_vpg_private_1_port_fixed_ips + - index_value + subinterface_indicator: false + mac_requirements: + get_input: port_vpg_private_1_port_mac_requirements + admin_state_up: true + exCP_naming: + get_input: port_vpg_private_1_port_exCP_naming + vlan_requirements: + get_input: port_vpg_private_1_port_vlan_requirements + network_role_tag: + get_input: port_vpg_private_1_port_network_role_tag + order: + get_input: port_vpg_private_1_port_order + requirements: + - binding: + capability: binding + node: vpg + capabilities: + network.incoming.bytes.rate_vpg_vpg_private_1_port: + properties: + unit: B/s + description: Average rate of incoming bytes + type: Gauge + category: network + 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 + network.outgoing.bytes_vpg_vpg_private_1_port: + properties: + unit: B + description: Number of outgoing bytes + type: Cumulative + category: network + network.incoming.packets_vpg_vpg_private_1_port: + properties: + unit: packet + description: Number of incoming packets + type: Cumulative + category: network + network.outgoing.packets.rate_vpg_vpg_private_1_port: + properties: + unit: packet/s + description: Average rate of outgoing packets + type: Gauge + category: network + network.incoming.packets.rate_vpg_vpg_private_1_port: + properties: + unit: packet/s + description: Average rate of incoming packets + type: Gauge + category: network + network.outgoing.bytes.rate_vpg_vpg_private_1_port: + properties: + unit: B/s + description: Average rate of outgoing bytes + type: Gauge + category: network + network.outpoing.packets_vpg_vpg_private_1_port: + properties: + unit: packet + description: Number of outgoing packets + type: Cumulative + category: network + network.incoming.bytes_vpg_vpg_private_1_port: + properties: + unit: B + description: Number of incoming bytes + type: Cumulative + category: network + vpg: + type: org.openecomp.resource.vfc.CiresvfonboardedBaseVfwAa8dcbff.abstract.compute.nodes.heat.vpg + metadata: + invariantUUID: 439baeb0-bf1a-41ef-a7e7-935730b46e38 + UUID: 522f21aa-43f0-46da-8815-add1195beea3 + customizationUUID: 765f2ea7-a6c5-470e-a09b-7dd9481b519f + version: '1.0' + name: CiresvfonboardedBaseVfwAa8dcbff.compute.nodes.heat.vpg + description: Not reusable inner VFC + type: VFC + category: Generic + subcategory: Abstract + resourceVendor: ciLicensec891e89e + resourceVendorRelease: 1.0.0.wd03 + resourceVendorModelNumber: '' + properties: + flavor: + get_input: vm_flavor_name + key_name: + get_input: + - compute_vpg_key_name + - index_value + image: + get_input: vm_image_name + image_update_policy: REBUILD + metadata: + get_input: + - compute_vpg_metadata + - index_value + software_config_transport: POLL_SERVER_CFN + contrail_service_instance_ind: false + user_data_format: + get_input: + - compute_vpg_user_data_format + - index_value + user_data_update_policy: REPLACE + name: + get_input: + - compute_vpg_name + - index_value + flavor_update_policy: RESIZE + capabilities: + disk.read.bytes_vpg: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: compute + disk.ephemeral.size_vpg: + properties: + unit: GB + description: Size of ephemeral disk + type: Gauge + category: compute + disk.write.requests.rate_vpg: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: compute + disk.write.bytes.rate_vpg: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: compute + disk.device.iops_vpg: + properties: + unit: count/s + description: Average disk iops per device + type: Gauge + category: disk + disk.allocation_vpg: + properties: + unit: B + description: The amount of disk occupied by the instance on the host machine + type: Gauge + category: disk + disk.device.capacity_vpg: + properties: + unit: B + description: The amount of disk per device that the instance can see + type: Gauge + category: disk + instance_vpg: + properties: + unit: instance + description: Existence of instance + type: Gauge + category: compute + disk.device.read.requests_vpg: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: disk + endpoint_vpg: + properties: + secure: true + cpu_vpg: + properties: + unit: ns + description: CPU time used + type: Cumulative + category: compute + disk.device.read.bytes.rate_vpg: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: disk + disk.device.write.bytes.rate_vpg: + properties: + unit: B/s + description: Average rate of writes + type: Gauge + category: disk + cpu_util_vpg: + properties: + unit: '%' + description: Average CPU utilization + type: Gauge + category: compute + 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 + disk.iops_vpg: + properties: + unit: count/s + description: Average disk iops + type: Gauge + category: disk + disk.usage_vpg: + properties: + unit: B + description: The physical size in bytes of the image container on the host + type: Gauge + category: disk + 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 + disk.device.read.bytes_vpg: + properties: + unit: B + description: Volume of reads + type: Cumulative + category: disk + disk.device.read.requests.rate_vpg: + properties: + unit: request/s + description: Average rate of read requests + type: Gauge + category: disk + disk.read.requests_vpg: + properties: + unit: request + description: Number of read requests + type: Cumulative + category: compute + disk.write.requests_vpg: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: compute + disk.device.write.bytes_vpg: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: disk + cpu.delta_vpg: + properties: + unit: ns + description: CPU time used since previous datapoint + type: Delta + category: compute + disk.capacity_vpg: + properties: + unit: B + description: The amount of disk that the instance can see + type: Gauge + category: disk + disk.write.bytes_vpg: + properties: + unit: B + description: Volume of writes + type: Cumulative + category: compute + disk.device.write.requests.rate_vpg: + properties: + unit: request/s + description: Average rate of write requests + type: Gauge + category: disk + vcpus_vpg: + properties: + unit: vcpu + description: Number of virtual CPUs allocated to the instance + type: Gauge + category: compute + disk.device.latency_vpg: + properties: + unit: ms + description: Average disk latency per device + type: Gauge + category: disk + scalable_vpg: + properties: + max_instances: 1 + min_instances: 1 + disk.root.size_vpg: + properties: + unit: GB + description: Size of root disk + type: Gauge + category: compute + disk.device.write.requests_vpg: + properties: + unit: request + description: Number of write requests + type: Cumulative + category: disk + memory_vpg: + properties: + unit: MB + description: Volume of RAM allocated to the instance + type: Gauge + category: compute + memory.resident_vpg: + properties: + unit: MB + description: Volume of RAM used by the instance on the physical machine + type: Gauge + category: compute + disk.read.bytes.rate_vpg: + properties: + unit: B/s + description: Average rate of reads + type: Gauge + category: compute + 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 + disk.latency_vpg: + properties: + unit: ms + description: Average disk latency + type: Gauge + category: disk + substitution_mappings: + node_type: org.openecomp.resource.vfc.CiresvfonboardedBaseVfwAa8dcbffcvfc.abstract.nodes.vpg + capabilities: + network.incoming.bytes.rate_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - network.incoming.bytes.rate + disk.read.bytes_vpg: + - vpg + - disk.read.bytes + binding_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - binding + network.outgoing.bytes.rate_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - network.outgoing.bytes.rate + forwarder_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - forwarder + disk.allocation_vpg: + - vpg + - disk.allocation + network.incoming.bytes_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - network.incoming.bytes + attachment_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - attachment + endpoint_vpg: + - vpg + - endpoint + cpu_vpg: + - vpg + - cpu + disk.device.read.bytes.rate_vpg: + - vpg + - disk.device.read.bytes.rate + network.outgoing.bytes.rate_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - network.outgoing.bytes.rate + feature_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - feature + disk.device.write.bytes.rate_vpg: + - vpg + - disk.device.write.bytes.rate + attachment_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - attachment + disk.iops_vpg: + - vpg + - disk.iops + disk.usage_vpg: + - vpg + - disk.usage + disk.device.usage_vpg: + - vpg + - disk.device.usage + disk.device.read.bytes_vpg: + - vpg + - disk.device.read.bytes + disk.device.write.bytes_vpg: + - vpg + - disk.device.write.bytes + disk.write.requests_vpg: + - vpg + - disk.write.requests + feature_vpg: + - vpg + - feature + disk.capacity_vpg: + - vpg + - disk.capacity + disk.device.latency_vpg: + - vpg + - disk.device.latency + disk.device.write.requests.rate_vpg: + - vpg + - disk.device.write.requests.rate + feature_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - feature + forwarder_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - forwarder + network.outgoing.packets.rate_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - network.outgoing.packets.rate + network.incoming.packets.rate_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - network.incoming.packets.rate + binding_vpg: + - vpg + - binding + disk.device.allocation_vpg: + - vpg + - disk.device.allocation + network.incoming.bytes_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - network.incoming.bytes + disk.ephemeral.size_vpg: + - vpg + - disk.ephemeral.size + network.outgoing.bytes_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - network.outgoing.bytes + network.incoming.packets_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - network.incoming.packets + disk.write.requests.rate_vpg: + - vpg + - disk.write.requests.rate + disk.write.bytes.rate_vpg: + - vpg + - disk.write.bytes.rate + disk.device.iops_vpg: + - vpg + - disk.device.iops + host_vpg: + - vpg + - host + network.outpoing.packets_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - network.outpoing.packets + instance_vpg: + - vpg + - instance + disk.device.capacity_vpg: + - vpg + - disk.device.capacity + disk.device.read.requests_vpg: + - vpg + - disk.device.read.requests + cpu_util_vpg: + - vpg + - cpu_util + memory.usage_vpg: + - vpg + - memory.usage + disk.device.read.requests.rate_vpg: + - vpg + - disk.device.read.requests.rate + disk.read.requests_vpg: + - vpg + - disk.read.requests + cpu.delta_vpg: + - vpg + - cpu.delta + network.incoming.packets.rate_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - network.incoming.packets.rate + network.incoming.bytes.rate_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - network.incoming.bytes.rate + disk.write.bytes_vpg: + - vpg + - disk.write.bytes + network.outgoing.packets.rate_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - network.outgoing.packets.rate + scalable_vpg: + - vpg + - scalable + vcpus_vpg: + - vpg + - vcpus + port_mirroring_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - port_mirroring + disk.root.size_vpg: + - vpg + - disk.root.size + disk.device.write.requests_vpg: + - vpg + - disk.device.write.requests + network.outgoing.bytes_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - network.outgoing.bytes + memory_vpg: + - vpg + - memory + network.outpoing.packets_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - network.outpoing.packets + os_vpg: + - vpg + - os + binding_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - binding + disk.read.bytes.rate_vpg: + - vpg + - disk.read.bytes.rate + memory.resident_vpg: + - vpg + - memory.resident + disk.latency_vpg: + - vpg + - disk.latency + network.incoming.packets_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - network.incoming.packets + requirements: + link_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - link + dependency_vpg: + - vpg + - dependency + dependency_vpg_vpg_private_0_port: + - vpg_vpg_private_0_port + - dependency + local_storage_vpg: + - vpg + - local_storage + dependency_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - dependency + link_vpg_vpg_private_1_port: + - vpg_vpg_private_1_port + - link |