diff options
Diffstat (limited to 'catalog-be/src')
12 files changed, 1661 insertions, 18 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/HealthCheckBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/HealthCheckBusinessLogic.java index 8a8937740f..fe9c8488aa 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/HealthCheckBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/HealthCheckBusinessLogic.java @@ -57,6 +57,7 @@ import org.openecomp.sdc.be.switchover.detector.SwitchoverDetector; import org.openecomp.sdc.common.api.HealthCheckInfo; import org.openecomp.sdc.common.api.HealthCheckInfo.HealthCheckComponent; import org.openecomp.sdc.common.api.HealthCheckInfo.HealthCheckStatus; +import org.openecomp.sdc.common.api.HealthCheckWrapper; import org.openecomp.sdc.common.impl.ExternalConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -253,9 +254,9 @@ public class HealthCheckBusinessLogic { private List<HealthCheckInfo> getAmdocsHealthCheck(List<HealthCheckInfo> healthCheckInfos) { HealthCheckStatus healthCheckStatus; String description; - Map<String, Object> amdocsHC = null; String version = null; - List<HealthCheckInfo> componentsInfo = null; + List<HealthCheckInfo> componentsInfo = new ArrayList<>(); + CloseableHttpClient httpClient = getHttpClient(); String amdocsHealtchCheckUrl = buildHealthCheckUrl(); HttpGet httpGet = new HttpGet(amdocsHealtchCheckUrl); @@ -265,37 +266,45 @@ public class HealthCheckBusinessLogic { beResponse = httpClient.execute(httpGet); beStatus = beResponse.getStatusLine().getStatusCode(); - HttpEntity entity = beResponse.getEntity(); - String beJsonResponse = EntityUtils.toString(entity); - Gson gson = new Gson(); - amdocsHC = gson.fromJson(beJsonResponse, Map.class); - version = amdocsHC.get("sdcVersion") != null ? amdocsHC.get("sdcVersion").toString() : null; - Object object = amdocsHC.get("componentsInfo"); - Type listType = new TypeToken<List<HealthCheckInfo>>(){}.getType(); - componentsInfo = gson.fromJson(object.toString(), listType); + StringBuilder sb = new StringBuilder(); + + if (beStatus == HttpStatus.SC_OK || beStatus == HttpStatus.SC_INTERNAL_SERVER_ERROR) { + HttpEntity entity = beResponse.getEntity(); + String beJsonResponse = EntityUtils.toString(entity); + Gson gson = new Gson(); + HealthCheckWrapper healthCheckWrapper = gson.fromJson(beJsonResponse, HealthCheckWrapper.class); + version = healthCheckWrapper.getSdcVersion(); + componentsInfo = healthCheckWrapper.getComponentsInfo(); + + if (componentsInfo != null) { + componentsInfo.forEach(x -> { + if (x.getHealthCheckStatus() == HealthCheckStatus.DOWN) { + sb.append("Component " + x.getHealthCheckComponent().name() + " is Down, "); + } + }); + } else { + componentsInfo.add(new HealthCheckInfo(HealthCheckComponent.BE, HealthCheckStatus.DOWN, null, null)); + } + } if (beStatus != HttpStatus.SC_OK) { healthCheckStatus = HealthCheckStatus.DOWN; - StringBuilder sb = new StringBuilder(); - componentsInfo.forEach(x -> { - if (x.getHealthCheckStatus()==HealthCheckStatus.DOWN){ - sb.append("Component "+x.getHealthCheckComponent().name()+" is Down,"); - } - }); //Removing the last comma description = sb.length()>0 ? sb.substring(0, sb.length()-1) : "Onboarding is Down, specific reason unknown";//No Amdocs inner component returned DOWN, but the status of Amdocs HC is still DOWN. + if (componentsInfo.size() == 0) { + componentsInfo.add(new HealthCheckInfo(HealthCheckComponent.BE, HealthCheckStatus.DOWN, null, description)); + } } else { healthCheckStatus = HealthCheckStatus.UP; description = "OK"; - - } } catch (Exception e) { healthCheckStatus = HealthCheckStatus.DOWN; description = "Onboarding unexpected response: " + e.getMessage(); + componentsInfo.add(new HealthCheckInfo(HealthCheckComponent.BE, HealthCheckStatus.DOWN, null, description)); } finally { if (httpClient != null) { try { diff --git a/catalog-be/src/main/resources/config/SDC.zip b/catalog-be/src/main/resources/config/SDC.zip Binary files differdeleted file mode 100644 index a4ff817216..0000000000 --- a/catalog-be/src/main/resources/config/SDC.zip +++ /dev/null diff --git a/catalog-be/src/main/resources/config/license.txt b/catalog-be/src/main/resources/config/license.txt new file mode 100644 index 0000000000..0a4f362316 --- /dev/null +++ b/catalog-be/src/main/resources/config/license.txt @@ -0,0 +1,13 @@ +# +# 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. +# diff --git a/catalog-be/src/main/resources/import/tosca/artifact-types/artifactTypes.yml b/catalog-be/src/main/resources/import/tosca/artifact-types/artifactTypes.yml new file mode 100644 index 0000000000..7b7e640a3c --- /dev/null +++ b/catalog-be/src/main/resources/import/tosca/artifact-types/artifactTypes.yml @@ -0,0 +1,30 @@ +tosca.artifacts.Root: + description: This is the default (root) TOSCA Artifact Type definition that all other TOSCA base Artifact Types derive from. + +tosca.artifacts.Deployment.Image: + derived_from: tosca.artifacts.Deployment + description: This artifact type represents a parent type for any "image" which is an opaque packaging of a TOSCA Node's deployment (whether real or virtual) whose contents are typically already installed and pre-configured (i.e., "stateful") and prepared to be run on a known target container. + +tosca.artifacts.Implementation.Bash: + derived_from: tosca.artifacts.Implementation + description: This artifact type represents a Bash script type that contains Bash commands that can be executed on the Unix Bash shell. + +tosca.artifacts.Deployment.Image.VM: + derived_from: tosca.artifacts.Deployment + description: This artifact represents the parent type for all Virtual Machine (VM) image and container formatted deployment artifacts. These images contain a stateful capture of a machine (e.g., server) including operating system and installed software along with any configurations and can be run on another machine using a hypervisor which virtualizes typical server (i.e., hardware) resources. + +tosca.artifacts.Implementation.Python: + derived_from: tosca.artifacts.Implementation + description: This artifact type represents a Python file that contains Python language constructs that can be executed within a Python interpreter. + +tosca.artifacts.Deployment: + derived_from: tosca.artifacts.Root + description: This artifact type represents the parent type for all deployment artifacts in TOSCA. This class of artifacts typically represents a binary packaging of an application or service that is used to install/create or deploy it as part of a node's lifecycle. + +tosca.artifacts.File: + derived_from: tosca.artifacts.Root + description: This artifact type is used when an artifact definition needs to have its associated file simply treated as a file and no special handling/handlers are invoked (i.e., it is not treated as either an implementation or deployment artifact type). + +tosca.artifacts.Implementation: + derived_from: tosca.artifacts.Root + description: This artifact type represents the parent type for all implementation artifacts in TOSCA. These artifacts are used to implement operations of TOSCA interfaces either directly (e.g., scripts) or indirectly (e.g., config. files). diff --git a/catalog-be/src/main/resources/import/tosca/artifact-types/artifactTypes.zip b/catalog-be/src/main/resources/import/tosca/artifact-types/artifactTypes.zip Binary files differnew file mode 100644 index 0000000000..7a0a5d9404 --- /dev/null +++ b/catalog-be/src/main/resources/import/tosca/artifact-types/artifactTypes.zip diff --git a/catalog-be/src/main/resources/import/tosca/relationship-types/relationshipTypes.yml b/catalog-be/src/main/resources/import/tosca/relationship-types/relationshipTypes.yml new file mode 100644 index 0000000000..5fb5390721 --- /dev/null +++ b/catalog-be/src/main/resources/import/tosca/relationship-types/relationshipTypes.yml @@ -0,0 +1,111 @@ + tosca.relationships.Root: + description: This is the default (root) TOSCA Relationship Type definition that all other TOSCA Relationship Types derive from. + attributes: + tosca_id: + description: A unique identifier of the realized instance of a Relationship Template that derives from any TOSCA normative type. + type: string + tosca_name: + description: This attribute reflects the name of the Relationship Template as defined in the TOSCA service template. This name is not unique to the realized instance model of corresponding deployed application as each template in the model can result in one or more instances (e.g., scaled) when orchestrated to a provider environment. + type: string + state: + description: The state of the relationship instance. + type: string + default: initial + interfaces: + Configure: + type: tosca.interfaces.relationship.Configure + + tosca.relationships.RoutesTo: + derived_from: tosca.relationships.ConnectsTo + description: This type represents an intentional network routing between two Endpoints in different networks. + valid_target_types: + - tosca.capabilities.Endpoint + + tosca.relationships.network.LinksTo: + derived_from: tosca.relationships.DependsOn + description: This relationship type represents an association relationship between Port and Network node types. + valid_target_types: + - tosca.capabilities.network.Linkable + + tosca.relationships.AttachesTo: + derived_from: tosca.relationships.Root + description: This type represents an attachment relationship between two nodes. For example, an AttachesTo relationship type would be used for attaching a storage node to a Compute node. + valid_target_types: + - tosca.capabilities.Attachment + properties: + location: + description: 'The relative location (e.g., path on the file system), which + provides the root location to address an attached node. e.g., a mount point + / path such as ''/usr/data''. Note: The user must provide it and it cannot + be "root".' + type: string + constraints: + - min_length: 1 + device: + description: The logical device name which for the attached device (which is represented by the target node in the model). e.g., '/dev/hda1'. + type: string + required: false + attributes: + device: + description: 'The logical name of the device as exposed to the instance. Note: + A runtime property that gets set when the model gets instantiated by the + orchestrator.' + type: string + + tosca.relationships.network.BindsTo: + derived_from: tosca.relationships.DependsOn + description: This type represents a network association relationship between Port and Compute node types. + valid_target_types: + - tosca.capabilities.network.Bindable + + tosca.relationships.HostedOn: + derived_from: tosca.relationships.Root + description: This type represents a hosting relationship between two nodes. + valid_target_types: + - tosca.capabilities.Container + + tosca.relationships.DependsOn: + derived_from: tosca.relationships.Root + description: This type represents a general dependency relationship between two nodes. + valid_target_types: + - tosca.capabilities.Node + + tosca.relationships.ConnectsTo: + derived_from: tosca.relationships.Root + description: This type represents a network connection relationship between two nodes. + valid_target_types: + - tosca.capabilities.Endpoint + properties: + credential: + type: tosca.datatypes.Credential + required: false + + org.openecomp.relationships.VolumeAttachesTo: + derived_from: org.openecomp.relationships.AttachesTo + description: This type represents an attachment relationship for associating volume + properties: + volume_id: + description: The ID of the volume to be attached + type: string + status: SUPPORTED + required: true + instance_uuid: + description: The ID of the server to which the volume attaches + type: string + status: SUPPORTED + required: true + attributes: + show: + description: Detailed information about resource + type: string + status: SUPPORTED + + org.openecomp.relationships.AttachesTo: + derived_from: tosca.relationships.AttachesTo + description: This type represents an attachment relationship + properties: + location: + description: The relative location (e.g., path on the file system), which provides the root location to address an attached node. + type: string + status: SUPPORTED + required: false
\ No newline at end of file diff --git a/catalog-be/src/main/resources/import/tosca/relationship-types/relationshipTypes.zip b/catalog-be/src/main/resources/import/tosca/relationship-types/relationshipTypes.zip Binary files differnew file mode 100644 index 0000000000..dbb1ca02f2 --- /dev/null +++ b/catalog-be/src/main/resources/import/tosca/relationship-types/relationshipTypes.zip diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/SchemaFiles.java b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/SchemaFiles.java new file mode 100644 index 0000000000..fdfd1c725f --- /dev/null +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/SchemaFiles.java @@ -0,0 +1,75 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.tosca; + +import static org.junit.Assert.*; + +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.Test; +import org.yaml.snakeyaml.Yaml; + +public class SchemaFiles { + + @Test + public void testValidateYamlNormativeFiles(){ + String importToscaPath = "src/main/resources/import/tosca"; + assertTrue(checkValidYamlInFileTree(importToscaPath)); + } + + @Test + public void testRainyYamlNormativeFiles(){ + String importToscaPathTest = "src/test/resources/yamlValidation"; + assertFalse(checkValidYamlInFileTree(importToscaPathTest)); + } + + private boolean checkValidYamlInFileTree(String fileTree) { + + try { + List<Path> fileTreeYamlList = Files.walk(Paths.get(fileTree)) + .filter(path -> path.getFileName().toString().toLowerCase().endsWith(".yml")) + .collect(Collectors.toList()); + + for (Path yamlFile : fileTreeYamlList) { + try { + FileInputStream inputStream = new FileInputStream(yamlFile.toAbsolutePath().toString()); + Yaml yaml = new Yaml(); + Object content = yaml.load(inputStream); + } catch (Exception e) { + System.out.println("Not valid yaml in file creation : " + yamlFile.toAbsolutePath().toString()); + return false; + } + } + } catch (IOException e) { + System.out.println("Error in reading file from folder : " + fileTree); + return false; + } + return true; + } + + +} diff --git a/catalog-be/src/test/resources/yamlValidation/test-no-valid.yml b/catalog-be/src/test/resources/yamlValidation/test-no-valid.yml new file mode 100644 index 0000000000..335758e887 --- /dev/null +++ b/catalog-be/src/test/resources/yamlValidation/test-no-valid.yml @@ -0,0 +1,1199 @@ + 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 + +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 ] + +###################new Data Types Onboarding Integration########################## + +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 + +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 <key>:<value> + 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 + +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"] + 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 + +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 + + diff --git a/catalog-be/src/test/resources/yamlValidation/testDir/test.txt b/catalog-be/src/test/resources/yamlValidation/testDir/test.txt new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/catalog-be/src/test/resources/yamlValidation/testDir/test.txt diff --git a/catalog-be/src/test/resources/yamlValidation/testDir/test.yml b/catalog-be/src/test/resources/yamlValidation/testDir/test.yml new file mode 100644 index 0000000000..c94909101b --- /dev/null +++ b/catalog-be/src/test/resources/yamlValidation/testDir/test.yml @@ -0,0 +1,206 @@ +tosca.capabilities.Root: + description: The TOSCA root Capability Type all other TOSCA base Capability Types derive from +tosca.capabilities.Attachment: + derived_from: tosca.capabilities.Root +tosca.capabilities.Node: + derived_from: tosca.capabilities.Root +tosca.capabilities.Container: + derived_from: tosca.capabilities.Root + properties: + num_cpus: + type: integer + required: false + constraints: + - greater_or_equal: 1 + cpu_frequency: + type: scalar-unit.frequency + required: false + constraints: + - greater_or_equal: 0.1 GHz + disk_size: + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 MB + mem_size: + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 MB +tosca.capabilities.Endpoint: + derived_from: tosca.capabilities.Root + properties: + protocol: + type: string + default: tcp + port: + type: PortDef + required: false + secure: + type: boolean + default: false + url_path: + type: string + required: false + port_name: + type: string + required: false + network_name: + type: string + required: false + default: PRIVATE + initiator: + type: string + default: source + constraints: + - valid_values: [ source, target, peer ] + ports: + type: map + required: false + constraints: + - min_length: 1 + entry_schema: + type: PortSpec + attributes: + ip_address: + type: string +tosca.capabilities.DatabaseEndpoint: + derived_from: tosca.capabilities.Endpoint +tosca.capabilities.Endpoint.Public: + derived_from: tosca.capabilities.Endpoint + properties: + # Change the default network_name to use the first public network found + network_name: PUBLIC + floating: + description: > + indicates that the public address should be allocated from a pool of floating IPs that are associated with the network. + type: boolean + default: false + status: experimental + dns_name: + description: The optional name to register with DNS + type: string + required: false + status: experimental +tosca.capabilities.Endpoint.Admin: + derived_from: tosca.capabilities.Endpoint + # Change Endpoint secure indicator to true from its default of false + properties: + secure: true +tosca.capabilities.Endpoint.Database: + derived_from: tosca.capabilities.Endpoint +tosca.capabilities.OperatingSystem: + derived_from: tosca.capabilities.Root + properties: + architecture: + type: string + required: false + type: + type: string + required: false + distribution: + type: string + required: false + version: + type: version + required: false +tosca.capabilities.Scalable: + derived_from: tosca.capabilities.Root + properties: + min_instances: + type: integer + default: 1 + max_instances: + type: integer + default: 1 + default_instances: + type: integer +tosca.capabilities.network.Bindable: + derived_from: tosca.capabilities.Node + + +tosca.capabilities.Container.Docker: + derived_from: tosca.capabilities.Container + properties: + version: + type: list + required: false + entry_schema: version + publish_all: + type: boolean + default: false + required: false + publish_ports: + type: list + entry_schema: PortSpec + required: false + expose_ports: + type: list + entry_schema: PortSpec + required: false + volumes: + type: list + entry_schema: string + required: false +tosca.capabilities.network.Linkable: + derived_from: tosca.capabilities.Root +org.openecomp.capabilities.AllottedResource: + derived_from: tosca.capabilities.Root +tosca.capabilities.nfv.Metric: + derived_from: tosca.capabilities.Endpoint +org.openecomp.capabilities.Metric: + derived_from: tosca.capabilities.nfv.Metric + description: A node type that includes the Metric capability indicates that it can be monitored. + properties: + unit: + type: string + description: Unit of the metric value + required: true + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + status: SUPPORTED + attributes: + value: + type: string + description: Runtime monitored value + status: SUPPORTED +org.openecomp.capabilities.metric.Ceilometer: + derived_from: org.openecomp.capabilities.Metric + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + status: SUPPORTED +org.openecomp.capabilities.metric.SnmpPolling: + derived_from: org.openecomp.capabilities.Metric + description: A node type that includes the Metric capability indicates that it can be monitored using snmp polling. + properties: + oid: + type: string + description: Object Id of the metric + required: true + status: SUPPORTED +org.openecomp.capabilities.metric.SnmpTrap: + derived_from: org.openecomp.capabilities.Metric + description: A node type that includes the Metric capability indicates that it can be monitored using snmp trap. + properties: + oid: + type: string + description: Object Id of the metric + required: true + status: SUPPORTED diff --git a/catalog-be/src/test/resources/yamlValidation/testDir/test.zip b/catalog-be/src/test/resources/yamlValidation/testDir/test.zip Binary files differnew file mode 100644 index 0000000000..1742545f14 --- /dev/null +++ b/catalog-be/src/test/resources/yamlValidation/testDir/test.zip |