From ed8e2a71029088ecc7f29b484ef1b7a71d536604 Mon Sep 17 00:00:00 2001 From: xg353y Date: Wed, 3 Apr 2019 15:54:21 +0200 Subject: [PATCH] Update Csar handler Update Csar handler, return the content of policies.yaml concatenateed with data.yaml while getting the policy model yaml. Issue-ID: CLAMP-261 Change-Id: I8ef7bcb9b2daaea37f13ca9d3ad9f38b889d6041 Signed-off-by: xg353y --- .../clds/sdc/controller/installer/CsarHandler.java | 23 +- .../designer/scripts/propertyController.js | 6 +- .../org/onap/clamp/loop/CsarInstallerItCase.java | 26 +- .../example/sdc/expected-result/policy-data.yaml | 2008 ++++++++++++++++++++ .../example/sdc/service-Vloadbalancerms-csar.csar | Bin 0 -> 112273 bytes 5 files changed, 2058 insertions(+), 5 deletions(-) create mode 100644 src/test/resources/example/sdc/expected-result/policy-data.yaml create mode 100755 src/test/resources/example/sdc/service-Vloadbalancerms-csar.csar diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java index b65a994a..65d5592a 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java @@ -42,6 +42,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.apache.commons.io.IOUtils; +import org.codehaus.plexus.util.StringUtils; import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; import org.onap.sdc.api.notification.IArtifactInfo; @@ -71,6 +72,8 @@ public class CsarHandler { public static final String RESOURCE_INSTANCE_NAME_PREFIX = "/Artifacts/Resources/"; public static final String RESOURCE_INSTANCE_NAME_SUFFIX = "/Deployment/"; public static final String POLICY_DEFINITION_NAME_SUFFIX = "Definitions/policies.yml"; + public static final String DATA_DEFINITION_NAME_SUFFIX = "Definitions/data.yml"; + public static final String DATA_DEFINITION_KEY = "data_types:"; public CsarHandler(INotificationData iNotif, String controller, String clampCsarPath) throws CsarHandlerException { this.sdcNotification = iNotif; @@ -159,6 +162,10 @@ public class CsarHandler { return csarFilePath; } + public String setFilePath(String newPath) { + return csarFilePath = newPath; + } + public synchronized ISdcCsarHelper getSdcCsarHelper() { return sdcCsarHelper; } @@ -171,12 +178,26 @@ public class CsarHandler { return mapOfBlueprints; } + /** + * Get the whole policy model Yaml. It combines the content of policies.yaml and data.yaml. + * @return The whole policy model yaml + * @throws IOException The IO Exception + */ public Optional getPolicyModelYaml() throws IOException { String result = null; try (ZipFile zipFile = new ZipFile(csarFilePath)) { ZipEntry entry = zipFile.getEntry(POLICY_DEFINITION_NAME_SUFFIX); if (entry != null) { - result = IOUtils.toString(zipFile.getInputStream(entry), StandardCharsets.UTF_8); + ZipEntry data = zipFile.getEntry(DATA_DEFINITION_NAME_SUFFIX); + if (data != null) { + String dataStr = IOUtils.toString(zipFile.getInputStream(data), StandardCharsets.UTF_8); + String dataStrWithoutHeader = dataStr.substring(dataStr.indexOf(DATA_DEFINITION_KEY)); + String policyStr = IOUtils.toString(zipFile.getInputStream(entry), StandardCharsets.UTF_8); + StringUtils.chomp(policyStr); + result = policyStr.concat(dataStrWithoutHeader); + } else { + result = IOUtils.toString(zipFile.getInputStream(entry), StandardCharsets.UTF_8); + } } else { logger.info("Policy model not found inside the CSAR file: " + csarFilePath); } diff --git a/src/main/resources/META-INF/resources/designer/scripts/propertyController.js b/src/main/resources/META-INF/resources/designer/scripts/propertyController.js index 2b32f4d2..507d6bc8 100644 --- a/src/main/resources/META-INF/resources/designer/scripts/propertyController.js +++ b/src/main/resources/META-INF/resources/designer/scripts/propertyController.js @@ -72,7 +72,9 @@ function getMsProperty(type) { var msProperties = cl_props["microServicePolicies"]; for (p in msProperties) { if (msProperties[p]["name"] == type) { - return JSON.parse(JSON.stringify(msProperties[p]["properties"])); + if (msProperties[p]["properties"] !== null && msProperties[p]["properties"] !== undefined) { + return JSON.parse(JSON.stringify(msProperties[p]["properties"])); + } } } return null; @@ -82,7 +84,7 @@ function getMsUI(type) { var msProperties = cl_props["microServicePolicies"]; for (p in msProperties) { if (msProperties[p]["name"] == type) { - return JSON.parse(JSON.stringify(msProperties[p]["jsonRepresentation"])); + return JSON.parse(JSON.stringify(msProperties[p]["jsonRepresentation"])); } } return null; diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java index 2578f68e..0cadef9a 100644 --- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java +++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java @@ -36,6 +36,7 @@ import javax.transaction.Transactional; import org.apache.commons.lang3.RandomStringUtils; import org.json.JSONException; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -47,6 +48,7 @@ import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact; import org.onap.clamp.clds.sdc.controller.installer.CsarHandler; import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.sdc.api.notification.IArtifactInfo; import org.onap.sdc.api.notification.INotificationData; import org.onap.sdc.api.notification.IResourceInstance; import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; @@ -55,6 +57,7 @@ import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; import org.onap.sdc.toscaparser.api.elements.Metadata; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; @@ -63,7 +66,7 @@ import org.springframework.test.context.junit4.SpringRunner; @ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller-new") public class CsarInstallerItCase { - private static final String CSAR_ARTIFACT_NAME = "example/sdc/service-Simsfoimap0112.csar"; + private static final String CSAR_ARTIFACT_NAME = "example/sdc/service-Vloadbalancerms-csar.csar"; private static final String INVARIANT_SERVICE_UUID = "4cc5b45a-1f63-4194-8100-cd8e14248c92"; private static final String INVARIANT_RESOURCE1_UUID = "07e266fc-49ab-4cd7-8378-ca4676f1b9ec"; private static final String INVARIANT_RESOURCE2_UUID = "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"; @@ -129,8 +132,9 @@ public class CsarInstallerItCase { // Create helper based on real csar to test policy yaml and global properties // set SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance(); + String path = Thread.currentThread().getContextClassLoader().getResource(CSAR_ARTIFACT_NAME).getFile(); ISdcCsarHelper sdcHelper = factory - .getSdcCsarHelper(Thread.currentThread().getContextClassLoader().getResource(CSAR_ARTIFACT_NAME).getFile()); + .getSdcCsarHelper(path); Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(sdcHelper); // Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(csarHelper); @@ -139,6 +143,24 @@ public class CsarInstallerItCase { return csarHandler; } + @Test + @Transactional + public void testGetPolicyModelYaml() throws IOException, SdcToscaParserException, CsarHandlerException { + INotificationData notificationData = Mockito.mock(INotificationData.class); + IArtifactInfo serviceArtifacts = Mockito.mock(IArtifactInfo.class); + Mockito.when(serviceArtifacts.getArtifactType()).thenReturn("TOSCA_CSAR"); + List serviceArtifactsList = new ArrayList<>(); + serviceArtifactsList.add(serviceArtifacts); + Mockito.when(notificationData.getServiceArtifacts()).thenReturn(serviceArtifactsList); + + CsarHandler csarHandler = new CsarHandler(notificationData, "", ""); + csarHandler.setFilePath(Thread.currentThread().getContextClassLoader() + .getResource(CSAR_ARTIFACT_NAME).getFile()); + Optional testyaml = csarHandler.getPolicyModelYaml(); + Assert.assertEquals(testyaml, Optional.ofNullable(ResourceFileUtil + .getResourceAsString("example/sdc/expected-result/policy-data.yaml"))); + } + @Test @Transactional public void testIsCsarAlreadyDeployedTca() throws SdcArtifactInstallerException, SdcToscaParserException, diff --git a/src/test/resources/example/sdc/expected-result/policy-data.yaml b/src/test/resources/example/sdc/expected-result/policy-data.yaml new file mode 100644 index 00000000..7f2c4847 --- /dev/null +++ b/src/test/resources/example/sdc/expected-result/policy-data.yaml @@ -0,0 +1,2008 @@ +# +# 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 +imports: +- data.yml +policy_types: + tosca.policies.Root: + description: The TOSCA Policy Type all other TOSCA Policy Types derive from + tosca.policies.Placement: + derived_from: tosca.policies.Root + description: The TOSCA Policy Type definition that is used to govern placement of TOSCA nodes or groups of nodes. + tosca.policies.Scaling: + derived_from: tosca.policies.Root + description: The TOSCA Policy Type definition that is used to govern scaling of TOSCA nodes or groups of nodes. + tosca.policies.Update: + derived_from: tosca.policies.Root + description: The TOSCA Policy Type definition that is used to govern update of TOSCA nodes or groups of nodes. + tosca.policies.Performance: + derived_from: tosca.policies.Root + description: The TOSCA Policy Type definition that is used to declare performance requirements for TOSCA nodes or groups of nodes. + org.openecomp.policies.placement.Antilocate: + derived_from: tosca.policies.Placement + description: My placement policy for separation based upon container type value + properties: + name: + type: string + description: The name of the policy + required: false + status: SUPPORTED + container_type: + type: string + description: container type + required: false + status: SUPPORTED + constraints: + - valid_values: + - host + - region + - compute + org.openecomp.policies.placement.Colocate: + derived_from: tosca.policies.Placement + description: Keep associated nodes (groups of nodes) based upon affinity value + properties: + name: + type: string + description: The name of the policy + required: false + status: SUPPORTED + affinity: + type: string + description: affinity + required: true + status: SUPPORTED + constraints: + - valid_values: + - host + - region + - compute + org.openecomp.policies.placement.valet.Diversity: + derived_from: tosca.policies.Placement + description: Valet Diversity + properties: + level: + type: string + description: diversity + required: false + default: host + status: SUPPORTED + constraints: + - valid_values: + - host + - rack + org.openecomp.policies.placement.valet.Exclusivity: + derived_from: tosca.policies.Placement + description: Valet Exclusivity + properties: + level: + type: string + description: exclusivity + required: false + default: host + status: SUPPORTED + constraints: + - valid_values: + - host + - rack + org.openecomp.policies.placement.valet.Affinity: + derived_from: tosca.policies.Placement + description: Valet Affinity + properties: + level: + type: string + description: affinity + required: false + default: host + status: SUPPORTED + constraints: + - valid_values: + - host + - rack + org.openecomp.policies.scaling.Fixed: + derived_from: tosca.policies.Scaling + properties: + quantity: + description: the exact number of instances to keep up + type: integer + required: true + org.openecomp.policies.External: + derived_from: tosca.policies.Root + description: externally managed policy (for example, type="network assignment", source="Policy Manager", name="route target") + properties: + source: + type: string + description: The name of the server that exposes the policy with predefined type and name. + required: false + type: + type: string + description: The type (category) of the policy same as it is defined in the source. + required: false + name: + type: string + description: The name of the policy, that related to specific type, same as it is defined in the source. + required: false + tosca.policies.Monitoring: + derived_from: tosca.policies.Root + description: A base policy type for all policies that governs monitoring provisioning + onap.policy.monitoring.cdap.tca.hi.lo.app: + derived_from: tosca.policies.Monitoring + version: 1.0.0 + properties: + tca_policy: + type: map + description: TCA Policy JSON + entry_schema: + type: onap.datatypes.monitoring.tca_policy +data_types: + tosca.datatypes.Root: + description: The TOSCA root Data Type all other TOSCA base Data Types derive from + integer: + derived_from: tosca.datatypes.Root + string: + derived_from: tosca.datatypes.Root + boolean: + derived_from: tosca.datatypes.Root + float: + derived_from: tosca.datatypes.Root + list: + derived_from: tosca.datatypes.Root + map: + derived_from: tosca.datatypes.Root + json: + derived_from: tosca.datatypes.Root + scalar-unit: + derived_from: tosca.datatypes.Root + scalar-unit.size: + derived_from: scalar-unit + scalar-unit.time: + derived_from: scalar-unit + scalar-unit.frequency: + derived_from: scalar-unit + tosca.datatypes.Credential: + derived_from: tosca.datatypes.Root + properties: + protocol: + type: string + required: false + token_type: + type: string + default: password + token: + type: string + keys: + type: map + required: false + entry_schema: + type: string + user: + type: string + required: false + org.openecomp.datatypes.PortMirroringConnectionPointDescription: + derived_from: tosca.datatypes.Root + properties: + nf_naming_code: + type: string + nfc_naming_code: + type: string + network_role: + type: string + pps_capacity: + type: string + nf_type: + type: string + description: deprecated + nfc_type: + type: string + description: deprecated + tosca.datatypes.TimeInterval: + derived_from: tosca.datatypes.Root + properties: + start_time: + type: timestamp + required: true + end_time: + type: timestamp + required: true + tosca.datatypes.network.NetworkInfo: + derived_from: tosca.datatypes.Root + properties: + network_name: + type: string + network_id: + type: string + addresses: + type: list + entry_schema: + type: string + tosca.datatypes.network.PortInfo: + derived_from: tosca.datatypes.Root + properties: + port_name: + type: string + port_id: + type: string + network_id: + type: string + mac_address: + type: string + addresses: + type: list + entry_schema: + type: string + tosca.datatypes.network.PortDef: + derived_from: integer + constraints: + - in_range: + - 1 + - 65535 + tosca.datatypes.network.PortSpec: + derived_from: tosca.datatypes.Root + properties: + protocol: + type: string + required: true + default: tcp + constraints: + - valid_values: + - udp + - tcp + - igmp + target: + type: tosca.datatypes.network.PortDef + target_range: + type: range + constraints: + - in_range: + - 1 + - 65535 + source: + type: tosca.datatypes.network.PortDef + source_range: + type: range + constraints: + - in_range: + - 1 + - 65535 + org.openecomp.datatypes.heat.network.AddressPair: + derived_from: tosca.datatypes.Root + description: MAC/IP address pairs + properties: + mac_address: + type: string + description: MAC address + required: false + status: SUPPORTED + ip_address: + type: string + description: IP address + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.network.subnet.HostRoute: + derived_from: tosca.datatypes.Root + description: Host route info for the subnet + properties: + destination: + type: string + description: The destination for static route + required: false + status: SUPPORTED + nexthop: + type: string + description: The next hop for the destination + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.network.AllocationPool: + derived_from: tosca.datatypes.Root + description: The start and end addresses for the allocation pool + properties: + start: + type: string + description: Start address for the allocation pool + required: false + status: SUPPORTED + end: + type: string + description: End address for the allocation pool + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.network.neutron.Subnet: + derived_from: tosca.datatypes.Root + description: A subnet represents an IP address block that can be used for assigning IP addresses to virtual instances + properties: + tenant_id: + type: string + description: The ID of the tenant who owns the network + required: false + status: SUPPORTED + enable_dhcp: + type: boolean + description: Set to true if DHCP is enabled and false if DHCP is disabled + required: false + default: true + status: SUPPORTED + ipv6_address_mode: + type: string + description: IPv6 address mode + required: false + status: SUPPORTED + constraints: + - valid_values: + - dhcpv6-stateful + - dhcpv6-stateless + - slaac + ipv6_ra_mode: + type: string + description: IPv6 RA (Router Advertisement) mode + required: false + status: SUPPORTED + constraints: + - valid_values: + - dhcpv6-stateful + - dhcpv6-stateless + - slaac + value_specs: + type: map + description: Extra parameters to include in the request + required: false + default: {} + status: SUPPORTED + entry_schema: + type: string + allocation_pools: + type: list + description: The start and end addresses for the allocation pools + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.AllocationPool + subnetpool: + type: string + description: The name or ID of the subnet pool + required: false + status: SUPPORTED + dns_nameservers: + type: list + description: A specified set of DNS name servers to be used + required: false + default: [] + status: SUPPORTED + entry_schema: + type: string + host_routes: + type: list + description: The gateway IP address + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.subnet.HostRoute + ip_version: + type: integer + description: The gateway IP address + required: false + default: 4 + status: SUPPORTED + constraints: + - valid_values: + - '4' + - '6' + name: + type: string + description: The name of the subnet + required: false + status: SUPPORTED + prefixlen: + type: integer + description: Prefix length for subnet allocation from subnet pool + required: false + status: SUPPORTED + constraints: + - greater_or_equal: 0 + cidr: + type: string + description: The CIDR + required: false + status: SUPPORTED + gateway_ip: + type: string + description: The gateway IP address + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.novaServer.network.PortExtraProperties: + derived_from: tosca.datatypes.Root + description: Nova server network expand properties for port + properties: + port_security_enabled: + type: boolean + description: Flag to enable/disable port security on the port + required: false + status: SUPPORTED + mac_address: + type: string + description: MAC address to give to this port + required: false + status: SUPPORTED + admin_state_up: + type: boolean + description: The administrative state of this port + required: false + default: true + status: SUPPORTED + qos_policy: + type: string + description: The name or ID of QoS policy to attach to this port + required: false + status: SUPPORTED + allowed_address_pairs: + type: list + description: Additional MAC/IP address pairs allowed to pass through the port + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.AddressPair + binding:vnic_type: + type: string + description: The vnic type to be bound on the neutron port + required: false + status: SUPPORTED + constraints: + - valid_values: + - macvtap + - direct + - normal + value_specs: + type: map + description: Extra parameters to include in the request + required: false + default: {} + status: SUPPORTED + entry_schema: + type: string + org.openecomp.datatypes.heat.novaServer.network.AddressInfo: + derived_from: tosca.datatypes.network.NetworkInfo + description: Network addresses with corresponding port id + properties: + port_id: + type: string + description: Port id + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.neutron.port.FixedIps: + derived_from: tosca.datatypes.Root + description: subnet/ip_address + properties: + subnet: + type: string + description: Subnet in which to allocate the IP address for this port + required: false + status: SUPPORTED + ip_address: + type: string + description: IP address desired in the subnet for this port + required: false + status: SUPPORTED + subnet_id: + type: string + description: Subnet in which to allocate the IP address for this port + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.FileInfo: + derived_from: tosca.datatypes.Root + description: Heat File Info + properties: + file: + type: string + description: The required URI string (relative or absolute) which can be used to locate the file + required: true + status: SUPPORTED + file_type: + type: string + description: The type of the file + required: true + status: SUPPORTED + constraints: + - valid_values: + - base + - env + - volume + - network + org.openecomp.datatypes.heat.contrail.network.rule.PortPairs: + derived_from: tosca.datatypes.Root + description: source and destination port pairs + properties: + start_port: + type: string + description: Start port + required: false + status: SUPPORTED + end_port: + type: string + description: End port + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrail.network.rule.Rule: + derived_from: tosca.datatypes.Root + description: policy rule + properties: + src_ports: + type: list + description: Source ports + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrail.network.rule.PortPairs + protocol: + type: string + description: Protocol + required: false + status: SUPPORTED + dst_addresses: + type: list + description: Destination addresses + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrail.network.rule.VirtualNetwork + apply_service: + type: string + description: Service to apply + required: false + status: SUPPORTED + dst_ports: + type: list + description: Destination ports + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrail.network.rule.PortPairs + src_addresses: + type: list + description: Source addresses + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrail.network.rule.VirtualNetwork + direction: + type: string + description: Direction + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrail.network.rule.RuleList: + derived_from: tosca.datatypes.Root + description: list of policy rules + properties: + policy_rule: + type: list + description: Contrail network rule + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrail.network.rule.Rule + org.openecomp.datatypes.heat.contrail.network.rule.VirtualNetwork: + derived_from: tosca.datatypes.Root + description: source and destination addresses + properties: + virtual_network: + type: string + description: Virtual network + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.network.neutron.SecurityRules.Rule: + derived_from: tosca.datatypes.Root + description: Rules Pairs + properties: + remote_group_id: + type: string + description: The remote group ID to be associated with this security group rule + required: false + status: SUPPORTED + protocol: + type: string + description: The protocol that is matched by the security group rule + required: false + status: SUPPORTED + constraints: + - valid_values: + - tcp + - udp + - icmp + ethertype: + type: string + description: Ethertype of the traffic + required: false + default: IPv4 + status: SUPPORTED + constraints: + - valid_values: + - IPv4 + - IPv6 + port_range_max: + type: integer + description: 'The maximum port number in the range that is matched by the + security group rule. ' + required: false + status: SUPPORTED + constraints: + - in_range: + - 0 + - 65535 + remote_ip_prefix: + type: string + description: The remote IP prefix (CIDR) to be associated with this security group rule + required: false + status: SUPPORTED + remote_mode: + type: string + description: Whether to specify a remote group or a remote IP prefix + required: false + default: remote_ip_prefix + status: SUPPORTED + constraints: + - valid_values: + - remote_ip_prefix + - remote_group_id + direction: + type: string + description: The direction in which the security group rule is applied + required: false + default: ingress + status: SUPPORTED + constraints: + - valid_values: + - egress + - ingress + port_range_min: + type: integer + description: The minimum port number in the range that is matched by the security group rule. + required: false + status: SUPPORTED + constraints: + - in_range: + - 0 + - 65535 + org.openecomp.datatypes.heat.substitution.SubstitutionFiltering: + derived_from: tosca.datatypes.Root + description: Substitution Filter + properties: + substitute_service_template: + type: string + description: Substitute Service Template + required: true + status: SUPPORTED + index_value: + type: integer + description: Index value of the substitution service template runtime instance + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + count: + type: string + description: Count + required: false + default: 1 + status: SUPPORTED + scaling_enabled: + type: boolean + description: Indicates whether service scaling is enabled + required: false + default: true + status: SUPPORTED + mandatory: + type: boolean + description: Mandatory + required: false + default: true + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefDataSequence: + derived_from: tosca.datatypes.Root + description: network policy refs data sequence + properties: + network_policy_refs_data_sequence_major: + type: integer + description: Network Policy ref data sequence Major + required: false + status: SUPPORTED + network_policy_refs_data_sequence_minor: + type: integer + description: Network Policy ref data sequence Minor + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefData: + derived_from: tosca.datatypes.Root + description: network policy refs data + properties: + network_policy_refs_data_sequence: + type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefDataSequence + description: Network Policy ref data sequence + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.ref.data.IpamSubnet: + derived_from: tosca.datatypes.Root + description: Network Ipam Ref Data Subnet + properties: + network_ipam_refs_data_ipam_subnets_subnet_ip_prefix_len: + type: string + description: Network ipam refs data ipam subnets ip prefix len + required: false + status: SUPPORTED + network_ipam_refs_data_ipam_subnets_subnet_ip_prefix: + type: string + description: Network ipam refs data ipam subnets ip prefix + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.ref.data.IpamSubnetList: + derived_from: tosca.datatypes.Root + description: Network Ipam Ref Data Subnet List + properties: + network_ipam_refs_data_ipam_subnets_subnet: + type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.ref.data.IpamSubnet + description: Network ipam refs data ipam subnets + required: false + status: SUPPORTED + network_ipam_refs_data_ipam_subnets_addr_from_start: + type: string + description: Network ipam refs data ipam subnets addr from start + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.IpamRefData: + derived_from: tosca.datatypes.Root + description: Network Ipam Ref Data + properties: + network_ipam_refs_data_ipam_subnets: + type: list + description: Network ipam refs data ipam subnets + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.ref.data.IpamSubnetList + org.openecomp.datatypes.heat.contrailV2.network.rule.SrcVirtualNetwork: + derived_from: tosca.datatypes.Root + description: source addresses + properties: + network_policy_entries_policy_rule_src_addresses_virtual_network: + type: string + description: Source addresses Virtual network + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.network.rule.DstVirtualNetwork: + derived_from: tosca.datatypes.Root + description: destination addresses + properties: + network_policy_entries_policy_rule_dst_addresses_virtual_network: + type: string + description: Destination addresses Virtual network + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.network.rule.DstPortPairs: + derived_from: tosca.datatypes.Root + description: destination port pairs + properties: + network_policy_entries_policy_rule_dst_ports_start_port: + type: string + description: Start port + required: false + status: SUPPORTED + network_policy_entries_policy_rule_dst_ports_end_port: + type: string + description: End port + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.network.rule.SrcPortPairs: + derived_from: tosca.datatypes.Root + description: source port pairs + properties: + network_policy_entries_policy_rule_src_ports_start_port: + type: string + description: Start port + required: false + status: SUPPORTED + network_policy_entries_policy_rule_src_ports_end_port: + type: string + description: End port + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.network.rule.ActionList: + derived_from: tosca.datatypes.Root + description: Action List + properties: + network_policy_entries_policy_rule_action_list_simple_action: + type: string + description: Simple Action + required: false + status: SUPPORTED + network_policy_entries_policy_rule_action_list_apply_service: + type: list + description: Apply Service + required: false + status: SUPPORTED + entry_schema: + type: string + org.openecomp.datatypes.heat.contrailV2.network.rule.Rule: + derived_from: tosca.datatypes.Root + description: policy rule + properties: + network_policy_entries_policy_rule_dst_addresses: + type: list + description: Destination addresses + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.network.rule.DstVirtualNetwork + network_policy_entries_policy_rule_dst_ports: + type: list + description: Destination ports + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.network.rule.DstPortPairs + network_policy_entries_policy_rule_protocol: + type: string + description: Protocol + required: false + status: SUPPORTED + network_policy_entries_policy_rule_src_addresses: + type: list + description: Source addresses + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.network.rule.SrcVirtualNetwork + network_policy_entries_policy_rule_direction: + type: string + description: Direction + required: false + status: SUPPORTED + network_policy_entries_policy_rule_src_ports: + type: list + description: Source ports + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.network.rule.SrcPortPairs + network_policy_entries_policy_rule_action_list: + type: org.openecomp.datatypes.heat.contrailV2.network.rule.ActionList + description: Action list + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.network.rule.RuleList: + derived_from: tosca.datatypes.Root + description: list of policy rules + properties: + network_policy_entries_policy_rule: + type: list + description: Contrail network rule + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.network.rule.Rule + org.openecomp.datatypes.heat.network.contrail.port.StaticRoute: + derived_from: tosca.datatypes.Root + description: static route + properties: + prefix: + type: string + description: Route prefix + required: false + status: SUPPORTED + next_hop: + type: string + description: Next hop + required: false + status: SUPPORTED + next_hop_type: + type: string + description: Next hop type + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.network.contrail.AddressPair: + derived_from: tosca.datatypes.Root + description: Address Pair + properties: + address_mode: + type: string + description: Address mode active-active or active-standy + required: false + status: SUPPORTED + constraints: + - valid_values: + - active-active + - active-standby + prefix: + type: string + description: IP address prefix + required: false + status: SUPPORTED + mac_address: + type: string + description: Mac address + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.network.contrail.InterfaceData: + derived_from: tosca.datatypes.Root + description: Interface Data + properties: + static_routes: + type: list + description: An ordered list of static routes to be added to this interface + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.contrail.port.StaticRoute + virtual_network: + type: string + description: Virtual Network for this interface + required: true + status: SUPPORTED + allowed_address_pairs: + type: list + description: List of allowed address pair for this interface + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.contrail.AddressPair + ip_address: + type: string + description: IP for this interface + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties: + derived_from: tosca.datatypes.Root + description: Virtual Machine Interface Properties. + properties: + virtual_machine_interface_properties_service_interface_type: + type: string + description: Service Interface Type. + required: false + status: SUPPORTED + org.openecomp.datatypes.Root: + derived_from: tosca.datatypes.Root + description: | + The ECOMP root Data Type all other Data Types derive from + properties: + supplemental_data: + type: map + entry_schema: + description: | + A placeholder for missing properties that would be included in future ecomp model versions. fromat : + type: string + org.openecomp.datatypes.AssignmentRequirements: + derived_from: org.openecomp.datatypes.Root + properties: + is_required: + description: | + "true" indicates that assignment is required + type: boolean + default: false + required: true + count: + description: number of assignments required + type: integer + required: false + org.openecomp.datatypes.network.SubnetAssignments: + derived_from: org.openecomp.datatypes.Root + properties: + ip_network_address_plan: + type: string + required: false + description: Reference to EIPAM, VLAN or other address plan ID used to assign subnets to this network + dhcp_enabled: + type: boolean + required: false + description: \"true\" indicates the network has 1 or more policies + ip_version: + type: integer + constraints: + - valid_values: + - 4 + - 6 + required: true + description: The IP version of the subnet + cidr_mask: + type: integer + required: true + description: The default subnet CIDR mask + min_subnets_count: + type: integer + default: 1 + required: true + description: Quantity of subnets that must be initially assigned + org.openecomp.datatypes.network.IPv4SubnetAssignments: + derived_from: org.openecomp.datatypes.network.SubnetAssignments + properties: + use_ipv4: + type: boolean + required: true + description: Indicates IPv4 subnet assignments + org.openecomp.datatypes.network.IPv6SubnetAssignments: + derived_from: org.openecomp.datatypes.network.SubnetAssignments + properties: + use_ipv6: + type: boolean + required: true + description: Indicates IPv6 subnet assignments + org.openecomp.datatypes.network.NetworkAssignments: + derived_from: org.openecomp.datatypes.Root + properties: + ecomp_generated_network_assignment: + type: boolean + required: true + default: false + description: | + \"true\" indicates that the network assignments will be auto-generated by ECOMP \"false\" indicates operator-supplied Network assignments file upload is required (e.g. VID will present prompt to operator to upload operator-supplied Network assignments file). + is_shared_network: + type: boolean + required: true + description: \"true\" means this network is shared by multiple Openstack tenants + is_external_network: + type: boolean + required: true + default: false + description: | + \"true\" means this Contrail external network + ipv4_subnet_default_assignment: + type: org.openecomp.datatypes.network.IPv4SubnetAssignments + required: true + description: IPv4 defualt subnet assignments + ipv6_subnet_default_assignment: + type: org.openecomp.datatypes.network.IPv6SubnetAssignments + required: true + description: IPv6 defualt subnet assignments + related_networks: + type: list + required: false + description: Related Networks List. + entry_schema: + type: org.openecomp.datatypes.network.RelatedNetworksAssignments + is_trunked: + type: boolean + required: true + description: \"true\" indicates that network is trunked + default: false + org.openecomp.datatypes.network.ProviderNetwork: + derived_from: org.openecomp.datatypes.Root + properties: + is_provider_network: + type: boolean + required: true + description: \"true\" indicates that this a Neutron provider type of network + physical_network_name: + type: string + required: false + constraints: + - valid_values: + - Physnet41 + - Physnet42 + - Physnet43 + - Physnet44 + - Physnet21 + - Physnet22 + - sriovnet1 + - sriovnet2 + - oam + description: | + Identifies the NUMA processor cluster to which this physical network interface belongs. NUMA instance correlates to the first digit of the Physical Network Name suffix (e.g. \"01\" = NUMA 0, \"11\" = NUMA 1) + numa: + type: string + required: false + constraints: + - valid_values: + - NUMA 0 + - NUMA 1 + description: | + PNIC instance within the NUMA processor cluster PNIC Instance correlates to the second digit of the Physical Network Name suffix (e.g. "01" = PNIC 1, "02" = "PNIC 2) + pnic_instance: + type: integer + required: false + description: PNIC instance within the NUMA processor cluster + org.openecomp.datatypes.network.NetworkFlows: + derived_from: org.openecomp.datatypes.Root + properties: + is_network_policy: + type: boolean + required: false + default: false + description: \"true\" indicates the network has 1 or more policies + network_policy: + type: string + required: false + description: 'Identifies the specific Cloud network policy that must be applied + to this network (source: from Policy Manager).' + is_bound_to_vpn: + type: boolean + required: false + default: false + description: \"true\" indicates the network has 1 or more vpn bindings + vpn_binding: + type: string + required: false + description: 'Identifies the specific VPN Binding entry in A&AI that must + be applied when creating this network (source: A&AI)' + org.openecomp.datatypes.network.VlanRequirements: + derived_from: org.openecomp.datatypes.Root + properties: + vlan_range_plan: + type: string + required: true + description: reference to a vlan range plan + vlan_type: + type: string + required: true + constraints: + - valid_values: + - c-tag + - s-tag + description: identifies the vlan type (e.g., c-tag) + vlan_count: + type: integer + required: true + description: identifies the number of vlan tags to assign to the CP from the plan + org.openecomp.datatypes.network.IpRequirements: + derived_from: org.openecomp.datatypes.Root + properties: + ip_version: + type: integer + required: true + constraints: + - valid_values: + - 4 + - 6 + ip_count: + description: identifies the number of ip address to assign to the CP from the plan + type: integer + required: false + floating_ip_count: + type: integer + required: false + subnet_role: + type: string + required: false + assingment_method: + type: string + required: true + constraints: + - valid_values: + - fixed + - dhcp + dhcp_enabled: + type: boolean + required: false + ip_count_required: + description: identifies the number of ip address to assign to the CP from the plan + type: org.openecomp.datatypes.AssignmentRequirements + required: false + floating_ip_count_required: + type: org.openecomp.datatypes.AssignmentRequirements + required: false + ip_address_plan_name: + type: string + required: false + vrf_name: + type: string + required: false + org.openecomp.datatypes.network.MacAssignments: + derived_from: org.openecomp.datatypes.Root + properties: + mac_range_plan: + type: string + required: true + description: reference to a MAC address range plan + mac_count: + type: integer + required: true + description: identifies the number of MAC addresses to assign to the CP from the plan + org.openecomp.datatypes.EcompHoming: + derived_from: org.openecomp.datatypes.Root + properties: + ecomp_selected_instance_node_target: + type: boolean + required: true + default: false + description: | + \"true\" indicates that the target deployment node for this instance will be auto-selected by ECOMP \"false\" indicates operator-supplied instance target deployment node required (e.g. VID will present a prompt to operator and collect the operator-selected target node for the deployment of this Network instance). + homing_policy: + type: string + required: false + description: Referenc to a service level homing policy that ECOMP will use for instance deployment target node + instance_node_target: + type: string + required: false + description: Instance target deployment node + org.openecomp.datatypes.EcompNaming: + derived_from: org.openecomp.datatypes.Root + properties: + ecomp_generated_naming: + type: boolean + required: true + default: true + description: | + \"true\" indicates that the name for the instance will be auto-generated by ECOMP. \"false\" indicates operator-supplied name required (e.g. VID will present prompt to operator and collect the operator-supplied instance name). + naming_policy: + type: string + required: false + description: Referenc to naming policy that ECOMP will use when the name is auto-generated + org.openecomp.datatypes.network.MacRequirements: + derived_from: org.openecomp.datatypes.Root + properties: + mac_range_plan: + description: reference to a MAC address range plan + type: string + required: false + mac_count: + description: identifies the number of MAC addresses to assign to the CP from the plan + type: integer + required: false + mac_count_required: + description: identifies the number of MAC addresses to assign to the CP from the plan + type: org.openecomp.datatypes.AssignmentRequirements + org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairIp: + derived_from: tosca.datatypes.Root + description: Virtual Machine Sub Interface Address Pair IP. + properties: + ip_prefix: + type: string + description: IP Prefix. + required: false + status: SUPPORTED + ip_prefix_len: + type: integer + description: IP Prefix Len. + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.MacAddress: + derived_from: tosca.datatypes.Root + description: Virtual Machine Sub Interface Mac Address. + properties: + mac_address: + type: list + description: Mac Addresses List. + required: false + status: SUPPORTED + entry_schema: + type: string + org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.Properties: + derived_from: tosca.datatypes.Root + description: Virtual Machine Sub Interface VLAN Properties. + properties: + sub_interface_vlan_tag: + type: string + description: Sub Interface VLAN Tag. + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPair: + derived_from: tosca.datatypes.Root + description: Virtual Machine Sub Interface Address Pair. + properties: + address_mode: + type: string + description: Address Mode. + required: false + status: SUPPORTED + ip: + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairIp + description: IP. + required: false + status: SUPPORTED + mac: + type: string + description: Mac. + required: false + status: SUPPORTED + org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs: + derived_from: tosca.datatypes.Root + description: Virtual Machine Sub Interface Address Pairs. + properties: + allowed_address_pair: + type: list + description: Addresses pair List. + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPair + org.openecomp.datatypes.Naming: + derived_from: org.openecomp.datatypes.Root + properties: + ecomp_generated_naming: + description: | + "true" indicates that the name for the instance will be auto-generated by ECOMP. "false" indicates operator-supplied name required (e.g. VID will present prompt to operator and collect the operator-supplied instance name). + type: boolean + default: true + required: true + naming_policy: + description: Reference to naming policy that ECOMP will use when the name is auto-generated + type: string + required: false + instance_name: + description: indicates operator-supplied name required (e.g. VID will present prompt to operator and collect the operator-supplied instance name). + type: string + required: false + org.openecomp.datatypes.flavors.ComputeFlavor: + derived_from: tosca.datatypes.Root + properties: + num_cpus: + type: integer + disk_size: + type: scalar-unit.size + mem_size: + type: scalar-unit.size + org.openecomp.datatypes.flavors.LicenseFlavor: + derived_from: tosca.datatypes.Root + properties: + feature_group_uuid: + type: string + org.openecomp.datatypes.flavors.VendorInfo: + derived_from: tosca.datatypes.Root + properties: + manufacturer_reference_number: + type: string + vendor_model: + type: string + org.openecomp.datatypes.flavors.DeploymentFlavor: + derived_from: tosca.datatypes.Root + properties: + sp_part_number: + type: string + vendor_info: + type: org.openecomp.datatypes.flavors.VendorInfo + compute_flavor: + type: org.openecomp.datatypes.flavors.ComputeFlavor + license_flavor: + type: org.openecomp.datatypes.flavors.LicenseFlavor + required: false + org.openecomp.datatypes.ImageInfo: + derived_from: tosca.datatypes.Root + properties: + software_version: + type: string + file_name: + type: string + file_hash: + type: string + description: checksum/signature + file_hash_type: + type: string + required: false + default: md5 + org.openecomp.datatypes.network.RelatedNetworksAssignments: + derived_from: org.openecomp.datatypes.Root + properties: + related_network_role: + type: string + description: The network role of the related network, sharing provider network. + required: false + tosca.datatypes.nfv.VnfcConfigurableProperties: + derived_from: tosca.datatypes.Root + properties: + additional_vnfc_configurable_properties: + type: map + entry_schema: + type: string + required: false + tosca.datatypes.nfv.RequestedAdditionalCapability: + derived_from: tosca.datatypes.Root + properties: + support_mandatory: + type: boolean + required: true + min_requested_additional_capability_version: + type: string + required: false + preferred_requested_additional_capability_version: + type: string + required: false + requested_additional_capability_name: + type: string + required: true + target_performance_parameters: + type: map + entry_schema: + type: string + required: true + tosca.datatypes.nfv.VirtualMemory: + derived_from: tosca.datatypes.Root + properties: + virtual_mem_size: + type: scalar-unit.size + required: true + virtual_mem_oversubscription_policy: + type: string + required: false + vdu_memory_requirements: + type: map + entry_schema: + type: string + required: false + numa_enabled: + type: boolean + required: false + tosca.datatypes.nfv.VirtualCpuPinning: + derived_from: tosca.datatypes.Root + properties: + cpu_pinning_policy: + type: string + constraints: + - valid_values: + - static + - dynamic + required: false + cpu_pinning_map: + type: map + entry_schema: + type: string + required: false + tosca.datatypes.nfv.VirtualCpu: + derived_from: tosca.datatypes.Root + properties: + cpu_architecture: + type: string + required: false + num_virtual_cpu: + type: integer + required: true + virtual_cpu_clock: + type: scalar-unit.frequency + required: false + virtual_cpu_oversubscription_policy: + type: string + required: false + vdu_cpu_requirements: + type: map + entry_schema: + type: string + required: false + virtual_cpu_pinning: + type: tosca.datatypes.nfv.VirtualCpuPinning + required: false + tosca.datatypes.nfv.LogicalNodeData: + derived_from: tosca.datatypes.Root + properties: + logical_node_requirements: + type: map + entry_schema: + type: string + required: false + tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements: + derived_from: tosca.datatypes.Root + properties: + name: + type: string + required: false + description: + type: string + required: false + support_mandatory: + type: boolean + required: true + requirement: + type: string + required: false + network_interface_requirements: + type: map + entry_schema: + type: string + required: true + nic_io_requirements: + type: tosca.datatypes.nfv.LogicalNodeData + required: false + tosca.datatypes.nfv.injectFile: + derived_from: tosca.datatypes.Root + properties: + source_path: + type: string + required: true + dest_path: + type: string + required: true + tosca.datatypes.nfv.L2AddressData: + derived_from: tosca.datatypes.Root + properties: + mac_address_assignment: + type: boolean + required: true + address: + type: string + required: false + tosca.datatypes.nfv.L3AddressData: + derived_from: tosca.datatypes.Root + properties: + ip_address_assignment: + type: boolean + required: true + floating_ip_activated: + type: boolean + required: true + ip_address_type: + type: string + required: false + constraints: + - valid_values: + - ipv4 + - ipv6 + number_of_ip_address: + type: integer + required: false + fixed_ip_address: + type: list + entry_schema: + type: string + required: false + tosca.datatypes.nfv.AddressData: + properties: + address_type: + constraints: + - valid_values: + - mac_address + - ip_address + type: string + required: true + l2_address_data: + required: false + type: tosca.datatypes.nfv.L2AddressData + l3_address_data: + required: false + type: tosca.datatypes.nfv.L3AddressData + tosca.datatypes.nfv.ConnectivityType: + derived_from: tosca.datatypes.Root + properties: + layer_protocol: + type: string + required: true + constraints: + - valid_values: + - ethernet + - mpls + - odu2 + - ipv4 + - ipv6 + - pseudo_wire + flow_pattern: + type: string + required: false + constraints: + - valid_values: + - Line + - Tree + - Mesh + tosca.datatypes.nfv.VlFlavour: + derived_from: tosca.datatypes.Root + properties: + flavourId: + type: string + tosca.datatypes.nfv.ext.AddressPairs: + properties: + ip: + type: string + required: false + mac: + type: string + required: false + tosca.datatypes.nfv.ext.FloatingIP: + properties: + external_network: + type: string + required: false + ip_address: + type: string + required: false + tosca.datatypes.nfv.ext.LocationInfo: + properties: + availability_zone: + type: string + required: false + vimid: + type: integer + required: false + tenant: + type: string + required: false + tosca.datatypes.nfv.ext.HostRouteInfo: + properties: + destination: + type: string + required: false + nexthop: + type: string + required: false + tosca.datatypes.nfv.ext.InjectData: + properties: + file_name: + type: string + required: false + file_data: + type: string + required: false + tosca.datatypes.nfv.ext.zte.WatchDog: + properties: + enable_delay: + type: integer + required: false + action: + type: string + required: false + tosca.datatypes.nfv.ext.LocalAffinityOrAntiAffinityRule: + properties: + scope: + type: string + required: false + affinity_antiaffinity: + type: string + required: false + tosca.datatypes.nfv.VduProfile: + derived_from: tosca.datatypes.Root + properties: + min_number_of_instances: + type: integer + required: true + max_number_of_instances: + type: integer + required: true + watchdog: + type: string + required: true + vmBootUpTimeOut: + type: integer + required: false + tosca.datatypes.nfv.LinkBitRateRequirements: + derived_from: tosca.datatypes.Root + properties: + root: + type: integer + required: true + leaf: + type: integer + required: true + tosca.datatypes.nfv.Qos: + derived_from: tosca.datatypes.Root + properties: + latency: + type: integer + required: true + packet_delay_variation: + type: integer + required: true + packet_loss_ratio: + type: float + constraints: + - in_range: + - 0.0 + - 1.0 + required: false + tosca.datatypes.nfv.VlProfile: + derived_from: tosca.datatypes.Root + properties: + max_bit_rate_requirements: + type: tosca.datatypes.nfv.LinkBitRateRequirements + required: true + min_bit_rate_requirements: + type: tosca.datatypes.nfv.LinkBitRateRequirements + required: true + qos: + type: tosca.datatypes.nfv.Qos + required: false + initiationParameters: + type: map + entry_schema: + type: string + required: false + cidr: + type: string + required: false + networkName: + type: string + required: false + startIp: + type: string + required: false + endIp: + type: string + required: false + gatewayIp: + type: string + required: false + segmentationId: + type: integer + required: false + physicalNetwork: + type: string + required: false + networkType: + type: string + required: false + constraints: + - valid_values: + - VLAN + - VXLAN + dhcpEnabled: + type: boolean + required: false + vlanTransparent: + type: boolean + required: false + tosca.datatypes.nfv.VduLevel: + derived_from: tosca.datatypes.Root + properties: + number_of_instances: + type: integer + required: true + tosca.datatypes.nfv.ScaleInfo: + derived_from: tosca.datatypes.Root + properties: + scaleLevel: + type: integer + required: true + tosca.datatypes.nfv.ScaleAspect: + derived_from: tosca.datatypes.Root + properties: + name: + type: string + required: true + description: + type: string + required: true + associated_group: + type: string + required: false + max_scale_level: + type: integer + required: true + tosca.datatypes.nfv.InstantiationLevel: + derived_from: tosca.datatypes.Root + properties: + description: + type: string + required: true + vdu_levels: + type: map + required: true + entry_schema: + type: tosca.datatypes.nfv.VduLevel + scale_info: + type: map + required: false + entry_schema: + type: tosca.datatypes.nfv.ScaleInfo + tosca.datatypes.nfv.VnfScaleOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + scaling_by_more_than_one_step_supported: + type: boolean + tosca.datatypes.nfv.VnfScaleToLevelOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + arbitrary_target_levels_supported: + type: boolean + tosca.datatypes.nfv.VnfHealOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + causes: + type: list + entry_schema: + type: string + tosca.datatypes.nfv.VnfTerminateOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + min_graceful_termination_timeout: + type: integer + max_recommended_graceful_termination_timeout: + type: integer + tosca.datatypes.nfv.VnfOperateOperationConfiguration: + derived_from: tosca.datatypes.Root + properties: + min_graceful_termination_timeout: + type: integer + max_recommended_graceful_termination_timeout: + type: integer + tosca.datatypes.nfv.VnfLcmOperationsConfiguration: + derived_from: tosca.datatypes.Root + properties: + scale: + type: tosca.datatypes.nfv.VnfScaleOperationConfiguration + scale_to_level: + type: tosca.datatypes.nfv.VnfScaleToLevelOperationConfiguration + heal: + type: tosca.datatypes.nfv.VnfHealOperationConfiguration + terminate: + type: tosca.datatypes.nfv.VnfTerminateOperationConfiguration + operate: + type: tosca.datatypes.nfv.VnfOperateOperationConfiguration + tosca.datatypes.nfv.CpProtocolData: + derived_from: tosca.datatypes.Root + properties: + asscociated_layer_protocol: + type: string + constraints: + - valid_values: + - ethernet + - mpls + - odu2 + - ipv4 + - ipv6 + - pseudo-wire + required: true + address_data: + type: tosca.datatypes.nfv.AddressData + required: false + tosca.datatypes.nfv.VnfConfigurableProperties: + derived_from: tosca.datatypes.Root + properties: + is_autoscale_enabled: + type: boolean + required: false + is_autoheal_enabled: + type: boolean + required: false + tosca.datatypes.nfv.VnfInfoModifiableAttributesExtensions: + derived_from: tosca.datatypes.Root + properties: + description: + type: string + required: false + tosca.datatypes.nfv.VnfInfoModifiableAttributesMetadata: + derived_from: tosca.datatypes.Root + properties: + description: + type: string + required: false + tosca.datatypes.nfv.VnfInfoModifiableAttributes: + derived_from: tosca.datatypes.Root + properties: + extensions: + type: tosca.datatypes.nfv.VnfInfoModifiableAttributesExtensions + required: false + metadata: + type: tosca.datatypes.nfv.VnfInfoModifiableAttributesMetadata + required: false + onap.datatypes.monitoring.metricsPerEventName: + derived_from: tosca.datatypes.Root + properties: + controlLoopSchemaType: + constraints: + - valid_values: + - VM + - VNF + description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM + required: true + type: string + eventName: + description: Event name to which thresholds need to be applied + required: true + type: string + policyName: + description: TCA Policy Scope Name + required: true + type: string + policyScope: + description: TCA Policy Scope + required: true + type: string + policyVersion: + description: TCA Policy Scope Version + required: true + type: string + thresholds: + description: Thresholds associated with eventName + entry_schema: + type: onap.datatypes.monitoring.thresholds + required: true + type: list + onap.datatypes.monitoring.tca_policy: + derived_from: tosca.datatypes.Root + properties: + domain: + constraints: + - equal: measurementsForVfScaling + default: measurementsForVfScaling + description: Domain name to which TCA needs to be applied + required: true + type: string + metricsPerEventName: + description: Contains eventName and threshold details that need to be applied to given eventName + entry_schema: + type: onap.datatypes.monitoring.metricsPerEventName + required: true + type: list + onap.datatypes.monitoring.thresholds: + derived_from: tosca.datatypes.Root + properties: + closedLoopControlName: + description: Closed Loop Control Name associated with the threshold + required: true + type: string + closedLoopEventStatus: + constraints: + - valid_values: + - ONSET + - ABATED + description: Closed Loop Event Status of the threshold + required: true + type: string + direction: + constraints: + - valid_values: + - LESS + - LESS_OR_EQUAL + - GREATER + - GREATER_OR_EQUAL + - EQUAL + description: Direction of the threshold + required: true + type: string + fieldPath: + constraints: + - valid_values: + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage + - $.event.measurementsForVfScalingFields.meanRequestLatency + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed + - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value + description: Json field Path as per CEF message which needs to be analyzed for TCA + required: true + type: string + severity: + constraints: + - valid_values: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - NORMAL + description: Threshold Event Severity + required: true + type: string + thresholdValue: + description: Threshold value for the field Path inside CEF message + required: true + type: integer + version: + description: Version number associated with the threshold + required: true + type: string diff --git a/src/test/resources/example/sdc/service-Vloadbalancerms-csar.csar b/src/test/resources/example/sdc/service-Vloadbalancerms-csar.csar new file mode 100755 index 0000000000000000000000000000000000000000..b3479ba96ec3c322bc0a7eeccc6db52a4ae0e0aa GIT binary patch literal 112273 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 bKfeW}tAP(LhG0GhzwA$d>p%&ZJc0iMoTE}S literal 0 HcmV?d00001 -- 2.16.6