From 90a8e74df9e1c89da4bb01bd5769c5e428285965 Mon Sep 17 00:00:00 2001 From: "mark.j.leonard" Date: Thu, 16 Aug 2018 12:22:58 +0100 Subject: [PATCH] Update SdWanServiceTest CSAR to make it valid The SD-WAN test CSAR file is parseable using the sdc-tosca dependency version 1.4.1 but it cannot be parsed using version 1.4.2 and above, as there are missing data types leading to inheritance errors. Correct the test CSAR file by adding the missing types. This has a beneficial side-effect of increasing code coverage. Issue-ID: AAI-1250 Change-Id: I41682b49d9d0a260a6feff05fda135949b46ec05 Signed-off-by: mark.j.leonard --- .../babel/csar/extractor/YamlExtractorTest.java | 6 + .../service-SdWanServiceTest-csar.csar | Bin 18148 -> 37527 bytes src/test/resources/ymlFiles/capabilities.yml | 297 +++ src/test/resources/ymlFiles/data.yml | 4 +- src/test/resources/ymlFiles/nodes.yml | 2371 ++++++++++++++++++++ .../ymlFiles/resource-Allotedresource-template.yml | 4 +- .../resource-SdWanTestVsp-template-interface.yml | 656 ++++++ .../ymlFiles/resource-SdWanTestVsp-template.yml | 2 +- ...ource-SdwantestvspNodesDummyServer-template.yml | 651 ++++++ ...resource-TunnelXconntest-template-interface.yml | 56 + ...service-SdWanServiceTest-template-interface.yml | 638 ++++++ .../ymlFiles/service-SdWanServiceTest-template.yml | 8 - 12 files changed, 4680 insertions(+), 13 deletions(-) create mode 100644 src/test/resources/ymlFiles/capabilities.yml create mode 100644 src/test/resources/ymlFiles/nodes.yml create mode 100644 src/test/resources/ymlFiles/resource-SdWanTestVsp-template-interface.yml create mode 100644 src/test/resources/ymlFiles/resource-SdwantestvspNodesDummyServer-template.yml create mode 100644 src/test/resources/ymlFiles/resource-TunnelXconntest-template-interface.yml create mode 100644 src/test/resources/ymlFiles/service-SdWanServiceTest-template-interface.yml diff --git a/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java b/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java index faeb536..e01a8f0 100644 --- a/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java +++ b/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java @@ -111,9 +111,15 @@ public class YamlExtractorTest { final List ymlFiles = extractArchive("service-SdWanServiceTest-csar.csar"); List payloads = new ArrayList<>(); payloads.add("ymlFiles/resource-SdWanTestVsp-template.yml"); + payloads.add("ymlFiles/resource-SdWanTestVsp-template-interface.yml"); payloads.add("ymlFiles/resource-TunnelXconntest-template.yml"); + payloads.add("ymlFiles/resource-TunnelXconntest-template-interface.yml"); payloads.add("ymlFiles/service-SdWanServiceTest-template.yml"); + payloads.add("ymlFiles/service-SdWanServiceTest-template-interface.yml"); payloads.add("ymlFiles/resource-Allotedresource-template.yml"); + payloads.add("ymlFiles/resource-SdwantestvspNodesDummyServer-template.yml"); + payloads.add("ymlFiles/nodes.yml"); + payloads.add("ymlFiles/capabilities.yml"); payloads.add("ymlFiles/artifacts.yml"); payloads.add("ymlFiles/data.yml"); payloads.add("ymlFiles/groups.yml"); diff --git a/src/test/resources/compressedArtifacts/service-SdWanServiceTest-csar.csar b/src/test/resources/compressedArtifacts/service-SdWanServiceTest-csar.csar index bbace0bd227a7d4e1f8ca682b3e3b191614bd0e6..becfd7efb8b2baf5070e4c50e0be3c566b556116 100644 GIT binary patch delta 31847 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�M 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 delta 12587 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 diff --git a/src/test/resources/ymlFiles/capabilities.yml b/src/test/resources/ymlFiles/capabilities.yml new file mode 100644 index 0000000..16049fc --- /dev/null +++ b/src/test/resources/ymlFiles/capabilities.yml @@ -0,0 +1,297 @@ +# +# 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_0 + +#metadata: +# filename: tosca/capabilities.yml +# version: '1.0' + +imports: +- data.yml + +capability_types: + tosca.capabilities.Root: + description: This is the default (root) TOSCA Capability Type definition that all other TOSCA Capability Types derive from. + + tosca.capabilities.Node: + derived_from: tosca.capabilities.Root + description: The Node capability indicates the base capabilities of a TOSCA Node Type. + + tosca.capabilities.Container: + derived_from: tosca.capabilities.Root + description: The Container capability, when included on a Node Type or Template definition, indicates that the node can act as a container for (or a host for) one or more other declared Node Types. + properties: + num_cpus: + description: Number of (actual or virtual) CPUs associated with the Compute node. + type: integer + required: false + constraints: + - greater_or_equal: 1 + cpu_frequency: + description: Specifies the operating frequency of CPU's core. This property expresses the expected frequency of one (1) CPU as provided by the property "num_cpus". + type: scalar-unit.frequency + required: false + constraints: + - greater_or_equal: 0.1 GHz + disk_size: + description: Size of the local disk available to applications running on the Compute node (default unit is MB). + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 MB + mem_size: + description: Size of memory available to applications running on the Compute node (default unit is MB). + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 MB + + tosca.capabilities.Endpoint: + derived_from: tosca.capabilities.Root + description: This is the default TOSCA type that should be used or extended to define a network endpoint capability. This includes the information to express a basic endpoint with a single port or a complex endpoint with multiple ports. By default the Endpoint is assumed to represent an address on a private network unless otherwise specified. + properties: + protocol: + description: 'The name of the protocol (i.e., the protocol prefix) that the + endpoint accepts (any OSI Layer 4-7 protocols). Examples: http, https, ftp, + tcp, udp, etc.' + type: string + default: tcp + required: true + port: + description: The optional port of the endpoint. + type: tosca.datatypes.network.PortDef + required: false + secure: + description: Requests for the endpoint to be secure and use credentials supplied on the ConnectsTo relationship. + type: boolean + default: false + required: false + url_path: + description: The optional URL path of the endpoint's address if applicable for the protocol. + type: string + required: false + port_name: + description: The optional name (or ID) of the network port this endpoint should be bound to. + type: string + required: false + network_name: + description: 'The optional name (or ID) of the network this endpoint should + be bound to. network_name: PRIVATE | PUBLIC | | .' + type: string + default: PRIVATE + required: false + initiator: + description: The optional indicator of the direction of the connection. + type: string + default: source + required: false + constraints: + - valid_values: + - source + - target + - peer + ports: + description: The optional map of ports the Endpoint supports (if more than one). + type: map + entry_schema: + type: tosca.datatypes.network.PortSpec + required: false + constraints: + - min_length: 1 + attributes: + ip_address: + description: 'Note: This is the IP address as propagated up by the associated + node''s host (Compute) container.' + type: string + + tosca.capabilities.Endpoint.Public: + derived_from: tosca.capabilities.Endpoint + description: |- + This capability represents a public endpoint which is accessible to the general internet (and its public IP address ranges). + This public endpoint capability also can be used to create a floating (IP) address that the underlying network assigns from a pool allocated from the application's underlying public network. This floating address is managed by the underlying network such that can be routed an application's private address and remains reliable to internet clients. + properties: + network_name: + type: string + default: PUBLIC + constraints: + - equal: PUBLIC + + tosca.capabilities.Endpoint.Admin: + derived_from: tosca.capabilities.Endpoint + description: This is the default TOSCA type that should be used or extended to define a specialized administrator endpoint capability. + properties: + secure: + description: Requests for the endpoint to be secure and use credentials supplied on the ConnectsTo relationship. + type: boolean + default: true + constraints: + - equal: true + + tosca.capabilities.Endpoint.Database: + derived_from: tosca.capabilities.Endpoint + description: This is the default TOSCA type that should be used or extended to define a specialized database endpoint capability. + + tosca.capabilities.Attachment: + derived_from: tosca.capabilities.Root + description: This is the default TOSCA type that should be used or extended to define an attachment capability of a (logical) infrastructure device node (e.g., BlockStorage node). + + tosca.capabilities.OperatingSystem: + derived_from: tosca.capabilities.Root + description: This is the default TOSCA type that should be used to express an Operating System capability for a node. + properties: + architecture: + description: 'The Operating System (OS) architecture. Examples of valid values + include: x86_32, x86_64, etc.' + type: string + required: false + type: + description: 'The Operating System (OS) type. Examples of valid values include: + linux, aix, mac, windows, etc.' + type: string + required: false + distribution: + description: 'The Operating System (OS) distribution. Examples of valid values + for a "type" of "Linux" would include: debian, fedora, rhel and ubuntu.' + type: string + required: false + version: + description: The Operating System version. + type: version + required: false + + tosca.capabilities.Scalable: + derived_from: tosca.capabilities.Root + description: This is the default TOSCA type that should be used to express a scalability capability for a node. + properties: + min_instances: + description: This property is used to indicate the minimum number of instances that should be created for the associated TOSCA Node Template by a TOSCA orchestrator. + type: integer + default: 1 + max_instances: + description: This property is used to indicate the maximum number of instances that should be created for the associated TOSCA Node Template by a TOSCA orchestrator. + type: integer + default: 1 + default_instances: + description: 'An optional property that indicates the requested default number of instances that should be the starting number of instances a TOSCA orchestrator should attempt to allocate. Note The value for this property MUST be in + the range between the values set for "min_instances" and "max_instances" + properties.' + type: integer + required: false + + tosca.capabilities.network.Bindable: + derived_from: tosca.capabilities.Node + description: A node type that includes the Bindable capability indicates that it can be bound to a logical network association via a network port. + + tosca.capabilities.network.Linkable: + derived_from: tosca.capabilities.Node + description: A node type that includes the Linkable capability indicates that it can be pointed by tosca.relationships.network.LinksTo relationship type. + + tosca.capabilities.Container.Docker: + derived_from: tosca.capabilities.Container + properties: + version: + type: list + entry_schema: version + required: false + 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 + org.openecomp.capabilities.attachment.DeploymentFlavor: + derived_from: tosca.capabilities.Attachment + description: The Node capability indicates the base capabilities of a TOSCA Node Type. + properties: + DeploymentFlavor: + type: map + description: Deployment flavors instance + required: true + status: supported + entry_schema: + type: org.openecomp.datatypes.DeploymentFlavor + + 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: + description: Object Id of the metric + type: string + status: supported + required: true + + org.openecomp.capabilities.AllottedResource: + derived_from: tosca.capabilities.Root + + 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: + description: Object Id of the metric + type: string + status: supported + required: true + + 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: + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + type: string + status: supported + required: true + + org.openecomp.capabilities.Metric: + derived_from: tosca.capabilities.Endpoint + description: A node type that includes the Metric capability indicates that it can be monitored. + properties: + unit: + description: Unit of the metric value + type: string + status: supported + required: true + description: + description: Description of the metric + type: string + status: supported + required: false + type: + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + type: string + status: supported + required: true + category: + description: Category of the metric, for an example, compute, disk, network, storage and etc. + type: string + status: supported + required: false + attributes: + value: + description: Runtime monitored value + type: string + status: supported diff --git a/src/test/resources/ymlFiles/data.yml b/src/test/resources/ymlFiles/data.yml index 75e109b..13be5e9 100644 --- a/src/test/resources/ymlFiles/data.yml +++ b/src/test/resources/ymlFiles/data.yml @@ -43,7 +43,7 @@ data_types: json: derived_from: tosca.datatypes.Root - + scalar-unit: derived_from: tosca.datatypes.Root @@ -2090,7 +2090,7 @@ data_types: org.openecomp.datatypes.Root: derived_from: tosca.datatypes.Root description: > - The AT&T root Data Type all other Data Types derive from + The root Data Type all other Data Types derive from properties: supplemental_data: type: map diff --git a/src/test/resources/ymlFiles/nodes.yml b/src/test/resources/ymlFiles/nodes.yml new file mode 100644 index 0000000..16297cc --- /dev/null +++ b/src/test/resources/ymlFiles/nodes.yml @@ -0,0 +1,2371 @@ +# +# 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_0 + +#metadata: +# filename: tosca/nodes.yml +# version: '1.0' + +imports: + - data.yml + - artifacts.yml + +node_types: + tosca.nodes.Root: + description: The TOSCA Root Node Type is the default type that all other TOSCA base Node Types derive from. This allows for all TOSCA nodes to have a consistent set of features for modeling and management (e.g., consistent definitions for requirements, capabilities and lifecycle interfaces). + attributes: + tosca_id: + description: A unique identifier of the realized instance of a Node Template that derives from any TOSCA normative type. + type: string + tosca_name: + description: This attribute reflects the name of the Node 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 node instance. + type: string + default: initial + capabilities: + feature: + type: tosca.capabilities.Node + requirements: + - dependency: + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + occurrences: + - 0 + - UNBOUNDED + interfaces: + standard: + type: tosca.interfaces.node.lifecycle.Standard + + tosca.nodes.ObjectStorage: + derived_from: tosca.nodes.Root + description: The TOSCA ObjectStorage node represents storage that provides the ability to store data as objects (or BLOBs of data) without consideration for the underlying filesystem or devices. + properties: + name: + description: The logical name of the object store (or container). + type: string + size: + description: The requested initial storage size (default unit is in Gigabytes). + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 GB + maxsize: + description: The requested maximum storage size (default unit is in Gigabytes). + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 GB + capabilities: + storage_endpoint: + type: tosca.capabilities.Endpoint + + tosca.nodes.DBMS: + derived_from: tosca.nodes.SoftwareComponent + description: The TOSCA DBMS node represents a typical relational, SQL Database Management System software component or service. + properties: + root_password: + description: The optional root password for the DBMS server. + type: string + required: false + port: + description: The DBMS server's port. + type: integer + required: false + capabilities: + host: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.Database + + tosca.nodes.WebApplication: + derived_from: tosca.nodes.Root + description: The TOSCA WebApplication node represents a software application that can be managed and run by a TOSCA WebServer node. Specific types of web applications such as Java, etc. could be derived from this type. + properties: + context_root: + description: The web application's context root which designates the application's URL path within the web server it is hosted on. + type: string + required: false + capabilities: + app_endpoint: + type: tosca.capabilities.Endpoint + requirements: + - host: + capability: tosca.capabilities.Container + node: tosca.nodes.WebServer + relationship: tosca.relationships.HostedOn + + tosca.nodes.Compute: + derived_from: tosca.nodes.Root + description: The TOSCA Compute node represents one or more real or virtual processors of software applications or services along with other essential local resources. Collectively, the resources the compute node represents can logically be viewed as a (real or virtual) "server". + attributes: + private_address: + description: The primary private IP address assigned by the cloud provider that applications may use to access the Compute node. + type: string + public_address: + description: The primary public IP address assigned by the cloud provider that applications may use to access the Compute node. + type: string + networks: + description: The list of logical networks assigned to the compute host instance and information about them. + type: map + entry_schema: + type: tosca.datatypes.network.NetworkInfo + ports: + description: The list of logical ports assigned to the compute host instance and information about them. + type: map + entry_schema: + type: tosca.datatypes.network.PortInfo + capabilities: + host: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.SoftwareComponent + binding: + type: tosca.capabilities.network.Bindable + os: + type: tosca.capabilities.OperatingSystem + scalable: + type: tosca.capabilities.Scalable + requirements: + - local_storage: + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + + tosca.nodes.network.Network: + derived_from: tosca.nodes.Root + description: The TOSCA Network node represents a simple, logical network service. + properties: + ip_version: + description: The IP version of the requested network. + type: integer + default: 4 + required: false + constraints: + - valid_values: + - 4 + - 6 + cidr: + description: The cidr block of the requested network. + type: string + required: false + start_ip: + description: The IP address to be used as the 1st one in a pool of addresses derived from the cidr block full IP range. + type: string + required: false + end_ip: + description: The IP address to be used as the last one in a pool of addresses derived from the cidr block full IP range. + type: string + required: false + gateway_ip: + description: The gateway IP address. + type: string + required: false + network_name: + description: An Identifier that represents an existing Network instance in the underlying cloud infrastructure - OR - be used as the name of the new created network. + type: string + required: false + network_id: + description: An Identifier that represents an existing Network instance in the underlying cloud infrastructure. This property is mutually exclusive with all other properties except network_name. + type: string + required: false + segmentation_id: + description: A segmentation identifier in the underlying cloud infrastructure (e.g., VLAN id, GRE tunnel id). If the segmentation_id is specified, the network_type or physical_network properties should be provided as well. + type: string + required: false + network_type: + description: Optionally, specifies the nature of the physical network in the underlying cloud infrastructure. Examples are flat, vlan, gre or vxlan. For flat and vlan types, physical_network should be provided too. + type: string + required: false + physical_network: + description: Optionally, identifies the physical network on top of which the network is implemented, e.g. physnet1. This property is required if network_type is flat or vlan. + type: string + required: false + dhcp_enabled: + description: Indicates the TOSCA container to create a virtual network instance with or without a DHCP service. + type: boolean + default: true + required: false + capabilities: + link: + type: tosca.capabilities.network.Linkable + + tosca.nodes.WebServer: + derived_from: tosca.nodes.SoftwareComponent + description: This TOSCA WebServer Node Type represents an abstract software component or service that is capable of hosting and providing management operations for one or more WebApplication nodes. + capabilities: + data_endpoint: + type: tosca.capabilities.Endpoint + admin_endpoint: + type: tosca.capabilities.Endpoint.Admin + host: + type: tosca.capabilities.Container + valid_source_types: + - tosca.nodes.WebApplication + + tosca.nodes.Container.Application: + derived_from: tosca.nodes.Root + description: The TOSCA Container Application node represents an application that requires Container-level virtualization technology. + requirements: + - host: + capability: tosca.capabilities.Container + relationship: tosca.relationships.HostedOn + + tosca.nodes.Container.Runtime: + derived_from: tosca.nodes.SoftwareComponent + description: The TOSCA Container Runtime node represents operating system-level virtualization technology used to run multiple application services on a single Compute host. + capabilities: + host: + type: tosca.capabilities.Container + scalable: + type: tosca.capabilities.Scalable + + tosca.nodes.SoftwareComponent: + derived_from: tosca.nodes.Root + description: The TOSCA SoftwareComponent node represents a generic software component that can be managed and run by a TOSCA Compute Node Type. + properties: + component_version: + description: The optional software component's version. + type: version + required: false + admin_credential: + description: The optional credential that can be used to authenticate to the software component. + type: tosca.datatypes.Credential + required: false + requirements: + - host: + capability: tosca.capabilities.Container + node: tosca.nodes.Compute + relationship: tosca.relationships.HostedOn + + tosca.nodes.BlockStorage: + derived_from: tosca.nodes.Root + description: '' + properties: + size: + description: The requested storage size (default unit is MB). + type: scalar-unit.size + constraints: + - greater_or_equal: 1 MB + volume_id: + description: ID of an existing volume (that is in the accessible scope of the requesting application). + type: string + required: false + snapshot_id: + description: Some identifier that represents an existing snapshot that should be used when creating the block storage (volume). + type: string + required: false + capabilities: + attachment: + type: tosca.capabilities.Attachment + + tosca.nodes.network.Port: + derived_from: tosca.nodes.Root + description: |- + The TOSCA Port node represents a logical entity that associates between Compute and Network normative types. + The Port node type effectively represents a single virtual NIC on the Compute node instance. + properties: + ip_address: + description: Allow the user to set a fixed IP address. Note that this address is a request to the provider which they will attempt to fulfill but may not be able to dependent on the network the port is associated with. + type: string + required: false + order: + description: 'The order of the NIC on the compute instance (e.g. eth2). Note: + when binding more than one port to a single compute (aka multi vNICs) and + ordering is desired, it is *mandatory* that all ports will be set with an + order value and. The order values must represent a positive, arithmetic + progression that starts with 0 (e.g. 0, 1, 2, ..., n).' + type: integer + default: 0 + required: false + constraints: + - greater_or_equal: 0 + is_default: + description: Set is_default=true to apply a default gateway route on the running compute instance to the associated network gateway. Only one port that is associated to single compute node can set as default=true. + type: boolean + default: false + required: false + ip_range_start: + description: Defines the starting IP of a range to be allocated for the compute instances that are associated by this Port. Without setting this property the IP allocation is done from the entire CIDR block of the network. + type: string + required: false + ip_range_end: + description: Defines the ending IP of a range to be allocated for the compute instances that are associated by this Port. Without setting this property the IP allocation is done from the entire CIDR block of the network. + type: string + required: false + attributes: + ip_address: + description: The IP address would be assigned to the associated compute instance. + type: string + requirements: + - link: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - binding: + capability: tosca.capabilities.network.Bindable + relationship: tosca.relationships.network.BindsTo + + tosca.nodes.LoadBalancer: + derived_from: tosca.nodes.Root + description: The TOSCA Load Balancer node represents logical function that be used in conjunction with a Floating Address to distribute an application's traffic (load) across a number of instances of the application (e.g., for a clustered or scaled application). + capabilities: + client: + description: The Floating (IP) client's on the public network can connect to. + type: tosca.capabilities.Endpoint.Public + occurrences: + - 0 + - UNBOUNDED + requirements: + - application: + capability: tosca.capabilities.Endpoint + relationship: tosca.relationships.RoutesTo + occurrences: + - 0 + - UNBOUNDED + + tosca.nodes.Database: + derived_from: tosca.nodes.Root + description: The TOSCA Database node represents a logical database that can be managed and hosted by a TOSCA DBMS node. + properties: + name: + description: The logical database Name. + type: string + port: + description: The port the database service will use to listen for incoming data and requests. + type: integer + required: false + user: + description: The special user account used for database administration. + type: string + required: false + password: + description: The password associated with the user account provided in the 'user' property. + type: string + required: false + capabilities: + database_endpoint: + type: tosca.capabilities.Endpoint.Database + requirements: + - host: + capability: tosca.capabilities.Container + node: tosca.nodes.DBMS + relationship: tosca.relationships.HostedOn + org.openecomp.resource.abstract.nodes.AbstractSubstitute: + derived_from: tosca.nodes.Root + properties: + service_template_filter: + type: org.openecomp.datatypes.heat.substitution.SubstitutionFiltering + description: Substitution Filter + required: true + status: SUPPORTED + + org.openecomp.resource.vl.extVL: + derived_from: tosca.nodes.Root + description: VF Tenant oam protected network + properties: + network_type: + type: string + required: true + description: ECOMP supported network types. + network_role: + type: string + required: ture + description: > + Unique label that defines the role that this network performs. + example: vce oam network, vnat sr-iov1 network + network_scope: + type: string + constraints: + valid_values: ["VF", "SERVICE", "GLOBAL"] + description: > + Uniquely identifies the network scope. Valid values for the network scope + includes: + VF - VF-level network. Intra-VF network which connects the VFCs (VMs) + inside the VF. + SERVICE - Service-level network. Intra-Service network which connects + the VFs within the service + GLOBAL - Global network which can be shared by multiple services + network_technology: + type: string + required: true + description: ECOMP supported network technology + exVL_naming: + type: org.openecomp.datatypes.Naming + required: true + network_homing: + type: org.openecomp.datatypes.EcompHoming + required: true + network_assignments: + type: org.openecomp.datatypes.network.NetworkAssignments + required: true + provider_network: + type: org.openecomp.datatypes.network.ProviderNetwork + required: true + network_flows: + type: org.openecomp.datatypes.network.NetworkFlows + required: false + capabilities: + virtual_linkable: + type: tosca.capabilities.network.Linkable + + org.openecomp.resource.vfc.nodes.Compute: + derived_from: tosca.nodes.Compute + capabilities: + disk.ephemeral.size: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + instance: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + memory: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.iops: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + cpu.delta: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.capacity: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.latency: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.read.bytes.rate: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.usage: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + cpu_util: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.allocation: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.write.bytes.rate: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.latency: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + cpu: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.read.requests: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.root.size: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.write.bytes.rate: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + vcpus: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.iops: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.usage: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.read.requests.rate: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.write.requests.rate: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.allocation: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes.rate: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.read.bytes: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + memory.usage: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.device.capacity: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + memory.resident: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + disk.write.requests: + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + type: org.openecomp.capabilities.metric.Ceilometer + occurrences: + - 1 + - UNBOUNDED + + org.openecomp.resource.abstract.nodes.DFAbstractSubstitute: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + license_feature_group_ref: + description: refrence to license feature group + type: string + status: supported + required: true + requirements: + - deployment_flavor: + capability: org.openecomp.capabilities.attachment.DeploymentFlavor + node: org.openecomp.resource.nodes.DeploymentFlavor + relationship: org.openecomp.relationships.AttachesTo + occurrences: + - 1 + - UNBOUNDED + + org.openecomp.resource.abstract.nodes.VFC: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + nfc_function: + type: string + high_availablity: + type: string + description: high_availablity + required: false + status: SUPPORTED + vm_image_name: + type: string + description: Master image_name volume id + required: true + status: SUPPORTED + vm_flavor_name: + type: string + description: Master image_name volume id + required: true + status: SUPPORTED + nfc_naming_code: + type: string + description: nfc code for instance naming + required: false + status: SUPPORTED + vm_type_tag: + type: string + description: vm type based on naming Convention + required: false + status: SUPPORTED + nfc_naming: + type: org.openecomp.datatypes.Naming + description: vfc naming + min_instances: + type: integer + description: Minimum number of VFC Instances + required: false + default: 0 + status: SUPPORTED + constraints: + - greater_or_equal: 0 + max_instances: + type: integer + description: Maximum number of VFC Instances + required: false + status: SUPPORTED + constraints: + - greater_or_equal: 1 + + org.openecomp.resource.vl.ELine: + derived_from: org.openecomp.resource.vl.nodes.network.VL + capabilities: + linkable: + type: tosca.capabilities.network.Linkable + occurrences: + - 0 + - 2 + + org.openecomp.resource.cp.nodes.network.SubInterface: + derived_from: tosca.nodes.network.Port + + org.openecomp.resource.vl.internalVL: + derived_from: tosca.nodes.network.Network + description: The ECOMP internal (VF-level) Virtual Link + + org.openecomp.resource.cp.nodes.network.Port: + derived_from: tosca.nodes.network.Port + properties: + network_role: + type: string + required: true + description: identical to VL network_role + order: + type: integer + required: true + description: The order of the CP on the compute instance (e.g. eth2). + network_role_tag: + description: Must correlate to the set of defined network-role tag identifiers from the associated HEAT template + type: string + required: true + mac_requirements: + description: identifies MAC address assignments to the CP + type: org.openecomp.datatypes.network.MacRequirements + required: false + vlan_requirements: + description: identifies vlan address assignments to the CP + type: list + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + required: false + ip_requirements: + description: identifies IP requirements to the CP + type: list + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + required: true + exCP_naming: + type: org.openecomp.datatypes.Naming + subnetpoolid: + type: string + capabilities: + network.incoming.packets.rate: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + unit: + type: string + description: Unit of the metric value + required: true + default: packet/s + status: SUPPORTED + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + default: network.incoming.packets.rate + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + default: Average rate of incoming packets + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + default: Gauge + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + default: network + status: SUPPORTED + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + unit: + type: string + description: Unit of the metric value + required: true + default: B + status: SUPPORTED + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + default: network.outgoing.bytes + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + default: Number of outgoing bytes + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + default: Cumulative + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + default: network + status: SUPPORTED + occurrences: + - 1 + - UNBOUNDED + network.outgoing.packets.rate: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + unit: + type: string + description: Unit of the metric value + required: true + default: packet/s + status: SUPPORTED + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + default: network.outgoing.packets.rate + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + default: Average rate of outgoing packets + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + default: Gauge + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + default: network + status: SUPPORTED + occurrences: + - 1 + - UNBOUNDED + network.outpoing.packets: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + unit: + type: string + description: Unit of the metric value + required: true + default: packet + status: SUPPORTED + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + default: network.outpoing.packets + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + default: Number of outgoing packets + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + default: Cumulative + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + default: network + status: SUPPORTED + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes.rate: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + unit: + type: string + description: Unit of the metric value + required: true + default: B/s + status: SUPPORTED + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + default: network.incoming.bytes.rate + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + default: Average rate of incoming bytes + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + default: Gauge + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + default: network + status: SUPPORTED + occurrences: + - 1 + - UNBOUNDED + network.incoming.bytes: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + unit: + type: string + description: Unit of the metric value + required: true + default: B + status: SUPPORTED + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + default: network.incoming.bytes + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + default: Number of incoming bytes + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + default: Cumulative + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + default: network + status: SUPPORTED + occurrences: + - 1 + - UNBOUNDED + network.outgoing.bytes.rate: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + unit: + type: string + description: Unit of the metric value + required: true + default: B/s + status: SUPPORTED + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + default: network.outgoing.bytes.rate + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + default: Average rate of outgoing bytes + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + default: Gauge + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + default: network + status: SUPPORTED + occurrences: + - 1 + - UNBOUNDED + network.incoming.packets: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + properties: + unit: + type: string + description: Unit of the metric value + required: true + default: packet + status: SUPPORTED + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + default: network.incoming.packets + status: SUPPORTED + description: + type: string + description: Description of the metric + required: false + default: Number of incoming packets + status: SUPPORTED + type: + type: string + description: Type of the metric value, for an example, Cumulative, Delta, Gauge and etc. + required: true + default: Cumulative + status: SUPPORTED + category: + type: string + description: Category of the metric, for an example, compute, disk, network, storage and etc. + required: false + default: network + status: SUPPORTED + occurrences: + - 1 + - UNBOUNDED + + org.openecomp.resource.nodes.DeploymentFlavor: + derived_from: tosca.nodes.Root + capabilities: + deployment_flavor: + description: Allowed deployment flavors of an abstract node + type: org.openecomp.capabilities.attachment.DeploymentFlavor + occurrences: + - 1 + - UNBOUNDED + + org.openecomp.resource.cp.extCP: + derived_from: tosca.nodes.Root + description: The SDC Connection Point base type all other CP derive from + properties: + network_role: + type: string + required: true + description: identical to VL network_role + order: + type: integer + required: true + description: The order of the CP on the compute instance (e.g. eth2). + network_role_tag: + type: string + required: true + description: Must correlate to the set of defined “network-role” tag identifiers from the associated HEAT template + mac_requirements: + type: org.openecomp.datatypes.network.MacRequirements + required: false + description: identifies MAC address assignments to the CP + vlan_requirements: + type: list + entry_schema: + type: org.openecomp.datatypes.network.VlanRequirements + required: false + description: identifies vlan address assignments to the CP + ip_requirements: + type: list + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + required: true + description: identifies IP requirements to the CP + exCP_naming: + type: org.openecomp.datatypes.Naming + subnetpoolid: + type: string + requirements: + - virtualLink: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - virtualBinding: + capability: tosca.capabilities.network.Bindable + relationship: tosca.relationships.network.BindsTo + - external_virtualLink: + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + node: org.openecomp.resource.vl.VL + capabilities: + internal_connectionPoint: + type: tosca.capabilities.Node + valid_source_type: [tosca.nodes.network.Port] + + org.openecomp.resource.vfc.nodes.volume: + derived_from: tosca.nodes.BlockStorage + + org.openecomp.resource.abstract.nodes.contrail.AbstractSubstitute: + derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute + properties: + availability_zone: + type: string + description: Availability zone to create servers in + required: false + status: SUPPORTED + static_routes_list: + type: list + description: Static routes enabled + required: false + status: SUPPORTED + entry_schema: + type: boolean + availability_zone_enable: + type: boolean + description: Indicates availability zone is enabled + required: false + default: false + status: SUPPORTED + service_template_name: + type: string + description: Service template name + required: false + status: SUPPORTED + ordered_interfaces: + type: boolean + description: Indicates if service interface are ordered + required: false + default: false + status: SUPPORTED + flavor: + type: string + description: flavor + required: false + status: SUPPORTED + image_name: + type: string + description: Image name + required: true + status: SUPPORTED + service_type: + type: string + description: Service type + required: true + status: SUPPORTED + constraints: + - valid_values: + - firewall + - analyzer + - source-nat + - loadbalancer + service_interface_type_list: + type: list + description: List of interface types + required: true + status: SUPPORTED + entry_schema: + type: string + constraints: + - valid_values: + - management + - left + - right + - other + service_instance_name: + type: string + description: Service instance name + required: true + status: SUPPORTED + interface_list: + type: list + description: List of interfaces + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.contrail.InterfaceData + service_mode: + type: string + description: Service mode + required: true + status: SUPPORTED + constraints: + - valid_values: + - transparent + - in-network + - in-network-nat + shared_ip_list: + type: list + description: Shared ips enabled + required: false + status: SUPPORTED + entry_schema: + type: boolean + attributes: + tenant_id: + type: string + description: Tenant id of the Service Instance + status: SUPPORTED + fq_name: + type: string + description: The FQ name of the service instance + status: SUPPORTED + service_template_name: + type: string + description: Service Template of the Service Instance + status: SUPPORTED + show: + type: string + description: All attributes + status: SUPPORTED + active_vms: + type: string + description: Number of service VMs active for this Service Instance + status: SUPPORTED + service_instance_name: + type: string + description: The name of the service instance + status: SUPPORTED + virtual_machines: + type: string + description: Service VMs for the Service Instance + status: SUPPORTED + status: + type: string + description: Status of the service instance + status: SUPPORTED + + + org.openecomp.resource.cp.nodes.heat.contrailV2.VirtualMachineInterface: + derived_from: org.openecomp.resource.cp.nodes.network.Port + properties: + name: + description: Virtual Machine Interface name + type: string + status: SUPPORTED + required: false + security_group_refs: + description: List of security groups. + type: list + status: SUPPORTED + entry_schema: + type: string + required: false + virtual_network_refs: + description: List of virtual networks. + type: list + status: SUPPORTED + entry_schema: + type: string + required: false + virtual_machine_interface_properties: + description: virtual machine interface properties. + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties + status: SUPPORTED + required: false + port_tuple_refs: + description: List of port tuples. + type: list + status: SUPPORTED + entry_schema: + type: string + required: false + virtual_machine_interface_mac_addresses: + description: List of mac addresses. + type: list + status: SUPPORTED + entry_schema: + type: string + required: false + virtual_machine_interface_allowed_address_pairs: + description: Virtual Machine Interface allowed address pairs. + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs + status: SUPPORTED + required: false + attributes: + fq_name: + description: The FQ name of the Virtual Network. + type: string + status: SUPPORTED + show: + description: All attributes. + type: string + status: SUPPORTED + capabilities: + binding: + type: tosca.capabilities.network.Bindable + occurrences: + - 0 + - UNBOUNDED + valid_source_types: + - org.openecomp.resources.cp.nodes.heat.network.contrailV2.VLANSubInterface + + org.openecomp.resource.vfc.rules.nodes.heat.network.contrail.NetworkRules: + derived_from: tosca.nodes.Root + properties: + entries: + type: org.openecomp.datatypes.heat.contrail.network.rule.RuleList + description: A symbolic name for this contrail network rule + required: false + status: SUPPORTED + name: + type: string + description: A symbolic name for this contrail network rule + required: false + status: SUPPORTED + attributes: + tenant_id: + type: string + description: tenant_id + status: SUPPORTED + fq_name: + type: string + description: fq_name + status: SUPPORTED + show: + type: string + description: All attributes. + status: SUPPORTED + rules: + type: list + description: List of rules + status: SUPPORTED + entry_schema: + type: string + requirements: + - network: + capability: tosca.capabilities.Attachment + node: tosca.nodes.network.Network + relationship: org.openecomp.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + + + org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules: + derived_from: tosca.nodes.Root + properties: + description: + type: string + description: Description of the security group + required: false + status: SUPPORTED + name: + type: string + description: A symbolic name for this security group, which is not required to be unique. + required: false + status: SUPPORTED + rules: + type: list + description: List of security group rules + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.neutron.SecurityRules.Rule + attributes: + show: + type: string + description: Detailed information about resource + status: SUPPORTED + requirements: + - port: + capability: tosca.capabilities.Attachment + node: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + relationship: org.openecomp.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + org.openecomp.resource.vl.nodes.heat.network.contrail.VirtualNetwork: + derived_from: org.openecomp.resource.vl.nodes.network.Network + properties: + shared: + type: string + description: Is virtual network shared + required: false + status: SUPPORTED + forwarding_mode: + type: string + description: forwarding mode of the virtual network + required: false + status: SUPPORTED + external: + type: string + description: Is virtual network external + required: false + status: SUPPORTED + allow_transit: + type: string + description: Whether this network should be transitive. + required: false + status: SUPPORTED + flood_unknown_unicast: + type: string + description: flood L2 packets on network + required: false + status: SUPPORTED + route_targets: + type: list + description: route targets associated with the virtual network + required: false + status: SUPPORTED + entry_schema: + type: string + subnets: + type: map + description: Network related subnets + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.neutron.Subnet + attributes: + fq_name: + type: string + description: fq_name + status: SUPPORTED + show: + type: string + description: All attributes. + status: SUPPORTED + subnets_name: + type: list + description: Subnets name of this network + status: SUPPORTED + entry_schema: + type: string + subnets_show: + type: map + description: Detailed information about each subnet + status: SUPPORTED + entry_schema: + type: string + subnets: + type: map + description: Network related subnets + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.neutron.Subnet + capabilities: + attachment: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + + org.openecomp.resource.vfc.nodes.heat.nova.Server: + derived_from: org.openecomp.resource.vfc.nodes.Compute + properties: + admin_pass: + type: string + description: The administrator password for the server + required: false + status: SUPPORTED + availability_zone: + type: string + description: Availability zone to create servers in + required: false + status: SUPPORTED + image: + type: string + description: The ID or name of the image to boot with + required: false + status: SUPPORTED + image_update_policy: + type: string + description: Policy on how to apply an image-id update + required: false + default: REBUILD + status: SUPPORTED + constraints: + - valid_values: + - REBUILD_PRESERVE_EPHEMERAL + - REPLACE + - REBUILD + metadata: + type: json + description: Arbitrary JSON metadata to store for this server + required: false + status: SUPPORTED + contrail_service_instance_ind: + type: boolean + description: Nova server related to service instance indicator + required: false + default: false + status: SUPPORTED + user_data_update_policy: + type: string + description: Policy on how to apply a user_data update + required: false + default: REPLACE + status: SUPPORTED + constraints: + - valid_values: + - REPLACE + - IGNORE + flavor_update_policy: + type: string + description: Policy on how to apply a flavor update + required: false + default: RESIZE + status: SUPPORTED + constraints: + - valid_values: + - RESIZE + - REPLACE + user_data: + type: string + description: User data script to be executed by cloud-init + required: false + default: '' + status: SUPPORTED + flavor: + type: string + description: The ID or name of the flavor to boot onto + required: true + status: SUPPORTED + key_name: + type: string + description: Name of keypair to inject into the server + required: false + status: SUPPORTED + reservation_id: + type: string + description: A UUID for the set of servers being requested + required: false + status: SUPPORTED + security_groups: + type: list + description: List of security group names or IDs + required: false + default: [ + ] + status: SUPPORTED + entry_schema: + type: string + config_drive: + type: boolean + description: enable config drive on the server + required: false + status: SUPPORTED + personality: + type: map + description: A map of files to create/overwrite on the server upon boot + required: false + default: { + } + status: SUPPORTED + entry_schema: + type: string + software_config_transport: + type: string + description: How the server should receive the metadata required for software configuration + required: false + default: POLL_SERVER_CFN + status: SUPPORTED + constraints: + - valid_values: + - POLL_SERVER_CFN + - POLL_SERVER_HEAT + - POLL_TEMP_URL + - ZAQAR_MESSAGE + user_data_format: + type: string + description: How the user_data should be formatted for the server + required: false + default: HEAT_CFNTOOLS + status: SUPPORTED + constraints: + - valid_values: + - SOFTWARE_CONFIG + - RAW + - HEAT_CFNTOOLS + diskConfig: + type: string + description: Control how the disk is partitioned when the server is created + required: false + status: SUPPORTED + constraints: + - valid_values: + - AUTO + - MANUAL + name: + type: string + description: Server name + required: false + status: SUPPORTED + scheduler_hints: + type: map + description: Arbitrary key-value pairs specified by the client to help boot a server + required: false + status: SUPPORTED + entry_schema: + type: string + attributes: + accessIPv4: + type: string + description: The manually assigned alternative public IPv4 address of the server + status: SUPPORTED + addresses: + type: map + description: A dict of all network addresses with corresponding port_id + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.novaServer.network.AddressInfo + accessIPv6: + type: string + description: The manually assigned alternative public IPv6 address of the server + status: SUPPORTED + instance_name: + type: string + description: AWS compatible instance name + status: SUPPORTED + name: + type: string + description: Name of the server + status: SUPPORTED + show: + type: string + description: Detailed information about resource + status: SUPPORTED + console_urls: + type: string + description: URLs of servers consoles + status: SUPPORTED + + + org.openecomp.resource.vfc.rules.nodes.heat.network.contrailV2.NetworkRules: + derived_from: tosca.nodes.Root + properties: + name: + type: string + description: A symbolic name for this contrail v2 network rule + required: false + status: SUPPORTED + network_policy_entries: + type: org.openecomp.datatypes.heat.contrailV2.network.rule.RuleList + description: A symbolic name for this contrail v2 network rule + required: false + status: SUPPORTED + attributes: + fq_name: + type: string + description: fq_name + status: SUPPORTED + requirements: + - network: + capability: tosca.capabilities.Attachment + node: tosca.nodes.network.Network + relationship: org.openecomp.relationships.AttachesTo + occurrences: + - 0 + - UNBOUNDED + + + org.openecomp.resource.cp.nodes.heat.network.neutron.Port: + derived_from: org.openecomp.resource.cp.nodes.network.Port + properties: + port_security_enabled: + type: boolean + description: Flag to enable/disable port security on the network + required: false + status: SUPPORTED + device_id: + type: string + description: Device ID of this port + required: false + status: SUPPORTED + qos_policy: + type: string + description: The name or ID of QoS policy to attach to this network + 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 + device_owner: + type: string + description: Name of the network owning the port + required: false + status: SUPPORTED + network: + type: string + description: Network this port belongs to + required: false + status: SUPPORTED + replacement_policy: + type: string + description: Policy on how to respond to a stack-update for this resource + required: false + default: AUTO + status: SUPPORTED + constraints: + - valid_values: + - REPLACE_ALWAYS + - AUTO + security_groups: + type: list + description: List of security group names or IDs + required: false + status: SUPPORTED + entry_schema: + type: string + fixed_ips: + type: list + description: Desired IPs for this port + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.neutron.port.FixedIps + mac_address: + type: string + description: MAC address to give to this port + required: false + status: SUPPORTED + admin_state_up: + type: boolean + description: A boolean value specifying the administrative status of the network + required: false + default: true + status: SUPPORTED + name: + type: string + description: A symbolic name for this port + required: false + status: SUPPORTED + attributes: + tenant_id: + type: string + description: Tenant owning the port + status: SUPPORTED + network_id: + type: string + description: Unique identifier for the network owning the port + status: SUPPORTED + qos_policy_id: + type: string + description: The QoS policy ID attached to this network + status: SUPPORTED + show: + type: string + description: Detailed information about resource + status: SUPPORTED + subnets: + type: list + description: Subnets of this network + status: SUPPORTED + entry_schema: + type: string + status: + type: string + description: The status of the network + status: SUPPORTED + capabilities: + attachment: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + binding: + type: tosca.capabilities.network.Bindable + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + occurrences: + - 0 + - UNBOUNDED + + org.openecomp.resource.vl.nodes.heat.network.neutron.Net: + derived_from: org.openecomp.resource.vl.nodes.network.Network + properties: + dhcp_agent_ids: + type: list + description: The IDs of the DHCP agent to schedule the network + required: false + status: SUPPORTED + entry_schema: + type: string + tenant_id: + type: string + description: The ID of the tenant which will own the network + required: false + status: SUPPORTED + port_security_enabled: + type: boolean + description: Flag to enable/disable port security on the network + required: false + status: SUPPORTED + shared: + type: boolean + description: Whether this network should be shared across all tenants + required: false + default: false + status: SUPPORTED + admin_state_up: + type: boolean + description: A boolean value specifying the administrative status of the network + required: false + default: true + status: SUPPORTED + qos_policy: + type: string + description: The name or ID of QoS policy to attach to this network + required: false + status: SUPPORTED + subnets: + type: map + description: Network related subnets + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.neutron.Subnet + value_specs: + type: map + description: Extra parameters to include in the request + required: false + default: { + } + status: SUPPORTED + entry_schema: + type: string + attributes: + qos_policy_id: + type: string + description: The QoS policy ID attached to this network + status: SUPPORTED + show: + type: string + description: Detailed information about resource + status: SUPPORTED + subnets_name: + type: list + description: Subnets name of this network + status: SUPPORTED + entry_schema: + type: string + subnets: + type: map + description: Network related subnets + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.neutron.Subnet + mtu: + type: scalar-unit.size + description: The maximum transmission unit size(in bytes) for the network + status: SUPPORTED + status: + type: string + description: The status of the network + status: SUPPORTED + capabilities: + attachment: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + + + + org.openecomp.resource.cp.nodes.heat.network.contrail.Port: + derived_from: org.openecomp.resource.cp.nodes.network.Port + 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 + static_route: + type: boolean + description: Static route enabled + required: false + default: false + 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 + shared_ip: + type: boolean + description: Shared ip enabled + required: false + default: false + status: SUPPORTED + ip_address: + type: string + description: IP for this interface + required: false + status: SUPPORTED + interface_type: + type: string + description: Interface type + required: true + status: SUPPORTED + constraints: + - valid_values: + - management + - left + - right + - other + attributes: + fq_name: + type: string + description: fq_name + status: SUPPORTED + + + + org.openecomp.resource.vfc.nodes.heat.contrail.Compute: + derived_from: org.openecomp.resource.vfc.nodes.Compute + properties: + flavor: + type: string + description: flavor + required: false + status: SUPPORTED + image_name: + type: string + description: Image name + required: true + status: SUPPORTED + availability_zone: + type: string + description: Availability zone to create servers in + required: false + status: SUPPORTED + service_type: + type: string + description: Service type + required: true + status: SUPPORTED + constraints: + - valid_values: + - firewall + - analyzer + - source-nat + - loadbalancer + availability_zone_enable: + type: boolean + description: Indicates availability zone is enabled + required: false + default: false + status: SUPPORTED + service_template_name: + type: string + description: Service template name + required: false + status: SUPPORTED + service_instance_name: + type: string + description: Service instance name + required: true + status: SUPPORTED + service_mode: + type: string + description: Service mode + required: true + status: SUPPORTED + constraints: + - valid_values: + - transparent + - in-network + - in-network-nat + attributes: + tenant_id: + type: string + description: Tenant id of the VM + status: SUPPORTED + fq_name: + type: string + description: fq_name + status: SUPPORTED + show: + type: string + description: All attributes + status: SUPPORTED + active_vms: + type: string + description: Number of active VMs + status: SUPPORTED + virtual_machines: + type: string + description: VMs of this compute + status: SUPPORTED + status: + type: string + description: status of the compute + status: SUPPORTED + + + + org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface: + derived_from: org.openecomp.resource.cp.nodes.network.SubInterface + properties: + virtual_machine_interface_refs: + description: List of virtual machine interface. + type: list + status: SUPPORTED + entry_schema: + type: string + required: false + name: + description: Virtual Machine Sub Interface VLAN name + type: string + status: SUPPORTED + required: false + virtual_network_refs: + description: List of virtual networks. + type: list + status: SUPPORTED + entry_schema: + type: string + required: false + virtual_machine_interface_properties: + description: virtual machine interface properties. + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.Properties + status: SUPPORTED + required: false + virtual_machine_interface_allowed_address_pairs: + description: Virtual Machine Sub Interface allowed address pairs. + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.AddressPairs + status: SUPPORTED + required: false + virtual_machine_interface_mac_addresses: + description: List of mac addresses. + type: org.openecomp.datatypes.heat.contrailV2.virtual.machine.subInterface.MacAddress + status: SUPPORTED + required: false + security_group_refs: + description: List of security groups. + type: list + status: SUPPORTED + entry_schema: + type: string + required: false + port_tuple_refs: + description: List of port tuples. + type: list + status: SUPPORTED + entry_schema: + type: string + required: false + attributes: + fq_name: + description: The FQ name of the Virtual Network. + type: string + status: SUPPORTED + show: + description: All attributes. + type: string + status: SUPPORTED + requirements: + - binding: + capability: tosca.capabilities.network.Bindable + node: org.openecomp.resource.cp.nodes.network.Port + relationship: tosca.relationships.network.BindsTo + occurrences: + - 1 + - 1 + + org.openecomp.resource.vl.nodes.heat.network.contrailV2.VirtualNetwork: + derived_from: org.openecomp.resource.vl.nodes.network.Network + properties: + network_ipam_refs_data: + type: list + description: IPAM references Data + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.IpamRefData + network_policy_refs_data: + type: list + description: Policy references data + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.contrailV2.virtual.network.rule.RefData + network_ipam_refs: + type: list + description: IPAM references + required: false + status: SUPPORTED + entry_schema: + type: string + network_policy_refs: + type: list + description: Policy references + required: false + status: SUPPORTED + entry_schema: + type: string + subnets: + type: map + description: Network related subnets + required: false + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.neutron.Subnet + attributes: + fq_name: + type: string + description: fq_name + status: SUPPORTED + subnets_name: + type: list + description: Subnets name of this network + status: SUPPORTED + entry_schema: + type: string + subnets_show: + type: map + description: Detailed information about each subnet + status: SUPPORTED + entry_schema: + type: string + subnets: + type: map + description: Network related subnets + status: SUPPORTED + entry_schema: + type: org.openecomp.datatypes.heat.network.neutron.Subnet + capabilities: + attachment: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + + + + org.openecomp.resource.vfc.nodes.heat.cinder.Volume: + derived_from: org.openecomp.resource.vfc.nodes.volume + properties: + availability_zone: + description: The availability zone in which the volume will be created + type: string + status: SUPPORTED + required: false + image: + description: If specified, the name or ID of the image to create the volume from + type: string + status: SUPPORTED + required: false + metadata: + description: Key/value pairs to associate with the volume + type: map + status: SUPPORTED + entry_schema: + type: string + required: false + volume_type: + description: If specified, the type of volume to use, mapping to a specific backend + type: string + status: SUPPORTED + required: false + description: + description: A description of the volume + type: string + status: SUPPORTED + required: false + device_type: + description: Device type + type: string + status: SUPPORTED + required: false + constraints: + - valid_values: + - cdrom + - disk + disk_bus: + description: 'Bus of the device: hypervisor driver chooses a suitable default + if omitted' + type: string + status: SUPPORTED + required: false + constraints: + - valid_values: + - ide + - lame_bus + - scsi + - usb + - virtio + backup_id: + description: If specified, the backup to create the volume from + type: string + status: SUPPORTED + required: false + source_volid: + description: If specified, the volume to use as source + type: string + status: SUPPORTED + required: false + boot_index: + description: Integer used for ordering the boot disks + type: integer + status: SUPPORTED + required: false + size: + description: The requested storage size (default unit is MB) + type: scalar-unit.size + status: SUPPORTED + required: false + constraints: + - greater_or_equal: 1 GB + read_only: + description: Enables or disables read-only access mode of volume + type: boolean + status: SUPPORTED + required: false + name: + description: A name used to distinguish the volume + type: string + status: SUPPORTED + required: false + scheduler_hints: + description: Arbitrary key-value pairs specified by the client to help the Cinder scheduler creating a volume + type: map + status: SUPPORTED + entry_schema: + type: string + required: false + swap_size: + description: The size of the swap, in MB + type: scalar-unit.size + status: SUPPORTED + required: false + delete_on_termination: + description: Indicate whether the volume should be deleted when the server is terminated + type: boolean + status: SUPPORTED + required: false + multiattach: + description: Whether allow the volume to be attached more than once + type: boolean + status: SUPPORTED + required: false + attributes: + display_description: + description: Description of the volume + type: string + status: SUPPORTED + attachments: + description: The list of attachments of the volume + type: string + status: SUPPORTED + entry_schema: + type: string + encrypted: + description: Boolean indicating if the volume is encrypted or not + type: boolean + status: SUPPORTED + show: + description: Detailed information about resource + type: string + status: SUPPORTED + created_at: + description: The timestamp indicating volume creation + type: timestamp + status: SUPPORTED + display_name: + description: Name of the volume + type: string + status: SUPPORTED + metadata_values: + description: Key/value pairs associated with the volume in raw dict form + type: map + status: SUPPORTED + entry_schema: + type: string + bootable: + description: Boolean indicating if the volume can be booted or not + type: boolean + status: SUPPORTED + status: + description: The current status of the volume + type: string + status: SUPPORTED + + + org.openecomp.resource.abstract.nodes.VF: + derived_from: tosca.nodes.Root + properties: + nf_function: + type: string + nf_role: + type: string + nf_naming_code: + type: string + nf_type: + type: string + nf_naming: + type: org.openecomp.datatypes.Naming + Default: true + availability_zone_max_count: + type: integer + default: 1 + constraints: + - valid_values: [0,1,2] + min_instances: + type: integer + max_instances: + type: integer + + org.openecomp.resource.abstract.nodes.service: + derived_from: tosca.nodes.Root + + org.openecomp.resource.vl.nodes.network.Network: + derived_from: tosca.nodes.network.Network + properties: + vendor: + type: string + required: false + vl_name: + type: string + required: false + capabilities: + end_point: + type: tosca.capabilities.Endpoint + + \ No newline at end of file diff --git a/src/test/resources/ymlFiles/resource-Allotedresource-template.yml b/src/test/resources/ymlFiles/resource-Allotedresource-template.yml index cd405e8..25775bb 100644 --- a/src/test/resources/ymlFiles/resource-Allotedresource-template.yml +++ b/src/test/resources/ymlFiles/resource-Allotedresource-template.yml @@ -1,7 +1,7 @@ tosca_definitions_version: tosca_simple_yaml_1_0 metadata: - invariantUUID: cf3ccc9c-b6ea-468e-8eef-f45479978fc1 - UUID: 76ba485f-50a3-480d-895e-5c319191bc11 + invariantUUID: 3b111111-1111-1111-1111-111111111111 + UUID: 4b111111-1111-1111-1111-111111111111 name: Allotedresource description: Allotedresource type: VFC diff --git a/src/test/resources/ymlFiles/resource-SdWanTestVsp-template-interface.yml b/src/test/resources/ymlFiles/resource-SdWanTestVsp-template-interface.yml new file mode 100644 index 0000000..5b6d4f4 --- /dev/null +++ b/src/test/resources/ymlFiles/resource-SdWanTestVsp-template-interface.yml @@ -0,0 +1,656 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +imports: +- nodes: + file: nodes.yml +- datatypes: + file: data.yml +- capabilities: + file: capabilities.yml +- relationships: + file: relationships.yml +- groups: + file: groups.yml +- policies: + file: policies.yml +node_types: + org.openecomp.resource.vf.SdWanTestVsp: + derived_from: org.openecomp.resource.abstract.nodes.VF + properties: + nf_naming: + type: org.openecomp.datatypes.Naming + nf_function: + type: string + nf_naming_code: + type: string + availability_zone_max_count: + type: integer + default: 1 + max_instances: + type: integer + nf_type: + type: string + DUMMY_flavor_name: + type: string + description: flavor name of PCRF PD instance + DUMMY_image_name: + type: string + description: PCRF PD image name + DUMMY_Role_net_name: + type: string + description: DUMMY network name + DUMMY_server_name: + type: string + description: PCRF PD server name + nf_role: + type: string + min_instances: + type: integer + DUMMY_vnf_id: + type: string + description: PCRF VNF Id + capabilities: + abstract_dummy_server.instance_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.write.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.capacity_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.network.outgoing.bytes_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.os_DUMMY_server: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + properties: + distribution: + type: string + required: false + type: + type: string + required: false + version: + type: version + required: false + architecture: + type: string + required: false + abstract_dummy_server.host_DUMMY_server: + type: tosca.capabilities.Container + occurrences: + - 1 + - UNBOUNDED + valid_source_types: + - tosca.nodes.SoftwareComponent + properties: + num_cpus: + type: integer + required: false + disk_size: + type: scalar-unit.size + required: false + cpu_frequency: + type: scalar-unit.frequency + required: false + mem_size: + type: scalar-unit.size + required: false + abstract_dummy_server.memory_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.read.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.feature_DUMMY_server_DUMMY_port: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + abstract_dummy_server.disk.device.write.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.ephemeral.size_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.allocation_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.feature: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + abstract_dummy_server.scalable_DUMMY_server: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + properties: + max_instances: + type: integer + default: 1 + required: false + min_instances: + type: integer + default: 1 + required: false + default_instances: + type: integer + required: false + abstract_dummy_server.network.incoming.packets.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.binding_DUMMY_server: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + abstract_dummy_server.disk.iops_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.network.incoming.bytes_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.read.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.write.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.cpu.delta_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.capacity_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.network.incoming.packets_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.cpu_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.memory.resident_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.read.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.write.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.write.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.endpoint_DUMMY_server: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + properties: + secure: + type: boolean + default: true + required: false + abstract_dummy_server.memory.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.latency_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.write.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.allocation_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.read.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.read.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.write.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.vcpus_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.write.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.network.outgoing.bytes.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.network.outpoing.packets_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.network.outgoing.packets.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.binding_DUMMY_server_DUMMY_port: + type: tosca.capabilities.network.Bindable + occurrences: + - 0 + - UNBOUNDED + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + abstract_dummy_server.cpu_util_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.attachment_DUMMY_server_DUMMY_port: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + abstract_dummy_server.disk.device.latency_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.root.size_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.device.iops_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.disk.read.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.feature_DUMMY_server: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + abstract_dummy_server.disk.device.read.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + abstract_dummy_server.network.incoming.bytes.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + requirements: + - abstract_dummy_server.dependency_DUMMY_server: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - abstract_dummy_server.dependency_DUMMY_server_DUMMY_port: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - abstract_dummy_server.dependency: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - abstract_dummy_server.link_DUMMY_server_DUMMY_port: + occurrences: + - 1 + - 1 + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - abstract_dummy_server.local_storage_DUMMY_server: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo diff --git a/src/test/resources/ymlFiles/resource-SdWanTestVsp-template.yml b/src/test/resources/ymlFiles/resource-SdWanTestVsp-template.yml index 21e64fe..cfef1f0 100644 --- a/src/test/resources/ymlFiles/resource-SdWanTestVsp-template.yml +++ b/src/test/resources/ymlFiles/resource-SdWanTestVsp-template.yml @@ -113,7 +113,7 @@ topology_template: metadata: vfModuleModelName: SdWanTestVsp..DUMMY..module-0 vfModuleModelInvariantUUID: 6a111111-1111-1111-1111-111111111111 - vfModuleModelUUID: 7a111111-1111-1111-1111-111111111111 + vfModuleModelUUID: 5c111111-1111-1111-1111-111111111111 vfModuleModelVersion: '2' properties: min_vf_module_instances: 0 diff --git a/src/test/resources/ymlFiles/resource-SdwantestvspNodesDummyServer-template.yml b/src/test/resources/ymlFiles/resource-SdwantestvspNodesDummyServer-template.yml new file mode 100644 index 0000000..7575f0a --- /dev/null +++ b/src/test/resources/ymlFiles/resource-SdwantestvspNodesDummyServer-template.yml @@ -0,0 +1,651 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +metadata: + invariantUUID: aa111111-1111-1111-1111-111111111111 + UUID: ba111111-1111-1111-1111-111111111111 + name: SdWanTestVsp.nodes.DUMMY_server + description: Not reusable inner VFC + type: VFC + category: Generic + subcategory: Abstract + resourceVendor: SCP-Test-VLM + resourceVendorRelease: '1.0' +imports: +- nodes: + file: nodes.yml +- datatypes: + file: data.yml +- capabilities: + file: capabilities.yml +- relationships: + file: relationships.yml +- groups: + file: groups.yml +- policies: + file: policies.yml +node_types: + org.openecomp.resource.vfc.SdWanTestVsp.abstract.nodes.DUMMY_server: + derived_from: org.openecomp.resource.abstract.nodes.VFC + description: Not reusable inner VFC + properties: + port_DUMMY_port_network: + type: list + entry_schema: + type: string + port_DUMMY_port_network_role_tag: + type: list + entry_schema: + type: string + index_value: + type: integer + default: 0 + description: Index value of this substitution service template runtime instance + compute_DUMMY_server_metadata: + type: list + entry_schema: + type: json + port_DUMMY_port_ip_requirements: + type: list + entry_schema: + type: json + port_DUMMY_port_mac_requirements: + type: list + entry_schema: + type: json + compute_DUMMY_server_name: + type: list + entry_schema: + type: string + capabilities: + disk.read.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + memory_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + binding_DUMMY_server_DUMMY_port: + type: tosca.capabilities.network.Bindable + occurrences: + - 0 + - UNBOUNDED + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + binding_DUMMY_server: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + disk.write.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.latency_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.ephemeral.size_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.write.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + network.incoming.packets.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + network.incoming.packets_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.read.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.read.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + network.outpoing.packets_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.write.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.read.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.read.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.allocation_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + instance_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.write.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.write.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + os_DUMMY_server: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + properties: + distribution: + type: string + required: false + type: + type: string + required: false + version: + type: version + required: false + architecture: + type: string + required: false + network.outgoing.bytes_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + cpu_util_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + attachment_DUMMY_server_DUMMY_port: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + disk.device.latency_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.read.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + network.outgoing.bytes.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.iops_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + scalable_DUMMY_server: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + properties: + max_instances: + type: integer + default: 1 + required: false + min_instances: + type: integer + default: 1 + required: false + default_instances: + type: integer + required: false + network.incoming.bytes_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + vcpus_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.write.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + network.incoming.bytes.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + cpu.delta_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.root.size_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.write.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + host_DUMMY_server: + type: tosca.capabilities.Container + occurrences: + - 1 + - UNBOUNDED + valid_source_types: + - tosca.nodes.SoftwareComponent + properties: + num_cpus: + type: integer + required: false + disk_size: + type: scalar-unit.size + required: false + cpu_frequency: + type: scalar-unit.frequency + required: false + mem_size: + type: scalar-unit.size + required: false + endpoint_DUMMY_server: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + properties: + secure: + type: boolean + default: true + required: false + disk.device.iops_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + memory.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.read.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.capacity_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + memory.resident_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.capacity_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + feature_DUMMY_server: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + feature_DUMMY_server_DUMMY_port: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + cpu_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.allocation_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + network.outgoing.packets.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + disk.device.write.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + requirements: + - dependency_DUMMY_server: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - dependency_DUMMY_server_DUMMY_port: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - link_DUMMY_server_DUMMY_port: + occurrences: + - 1 + - 1 + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - local_storage_DUMMY_server: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo diff --git a/src/test/resources/ymlFiles/resource-TunnelXconntest-template-interface.yml b/src/test/resources/ymlFiles/resource-TunnelXconntest-template-interface.yml new file mode 100644 index 0000000..7c211e8 --- /dev/null +++ b/src/test/resources/ymlFiles/resource-TunnelXconntest-template-interface.yml @@ -0,0 +1,56 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +imports: +- nodes: + file: nodes.yml +- datatypes: + file: data.yml +- capabilities: + file: capabilities.yml +- relationships: + file: relationships.yml +- groups: + file: groups.yml +- policies: + file: policies.yml +node_types: + org.openecomp.resource.vf.TunnelXconntest: + derived_from: org.openecomp.resource.abstract.nodes.VF + properties: + nf_naming: + type: org.openecomp.datatypes.Naming + nf_naming_code: + type: string + nf_function: + type: string + availability_zone_max_count: + type: integer + default: 1 + nf_role: + type: string + max_instances: + type: integer + min_instances: + type: integer + nf_type: + type: string + capabilities: + allotedresource0.feature: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + requirements: + - allotedresource0.dependency: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - allotedresource0.service_dependency: + occurrences: + - 1 + - 1 + capability: org.openecomp.capabilities.AllottedResource + node: tosca.services.Root + relationship: tosca.relationships.DependsOn diff --git a/src/test/resources/ymlFiles/service-SdWanServiceTest-template-interface.yml b/src/test/resources/ymlFiles/service-SdWanServiceTest-template-interface.yml new file mode 100644 index 0000000..97997c4 --- /dev/null +++ b/src/test/resources/ymlFiles/service-SdWanServiceTest-template-interface.yml @@ -0,0 +1,638 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +imports: +- nodes: + file: nodes.yml +- datatypes: + file: data.yml +- capabilities: + file: capabilities.yml +- groups: + file: groups.yml +node_types: + org.openecomp.service.SdWanServiceTest: + derived_from: org.openecomp.resource.abstract.nodes.service + capabilities: + sdwantestvsp0.abstract_dummy_server.attachment_DUMMY_server_DUMMY_port: + type: tosca.capabilities.Attachment + occurrences: + - 1 + - UNBOUNDED + sdwantestvsp0.abstract_dummy_server.memory.resident_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.instance_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.root.size_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.feature_DUMMY_server: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + sdwantestvsp0.abstract_dummy_server.disk.device.write.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.network.outpoing.packets_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.network.outgoing.packets.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.device.allocation_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.read.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.read.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.device.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.network.outgoing.bytes_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.device.write.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.host_DUMMY_server: + type: tosca.capabilities.Container + occurrences: + - 1 + - UNBOUNDED + valid_source_types: + - tosca.nodes.SoftwareComponent + properties: + num_cpus: + type: integer + required: false + disk_size: + type: scalar-unit.size + required: false + cpu_frequency: + type: scalar-unit.frequency + required: false + mem_size: + type: scalar-unit.size + required: false + sdwantestvsp0.abstract_dummy_server.disk.write.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.binding_DUMMY_server: + type: tosca.capabilities.network.Bindable + occurrences: + - 1 + - UNBOUNDED + sdwantestvsp0.abstract_dummy_server.disk.device.latency_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.write.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.os_DUMMY_server: + type: tosca.capabilities.OperatingSystem + occurrences: + - 1 + - UNBOUNDED + properties: + distribution: + type: string + required: false + type: + type: string + required: false + version: + type: version + required: false + architecture: + type: string + required: false + sdwantestvsp0.abstract_dummy_server.network.incoming.bytes_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.device.read.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.write.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.vcpus_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.ephemeral.size_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + tunnel_xconntest0.allotedresource0.feature: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + sdwantestvsp0.abstract_dummy_server.disk.device.read.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.binding_DUMMY_server_DUMMY_port: + type: tosca.capabilities.network.Bindable + occurrences: + - 0 + - UNBOUNDED + valid_source_types: + - org.openecomp.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface + sdwantestvsp0.abstract_dummy_server.disk.device.read.requests.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.memory.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.feature: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + sdwantestvsp0.abstract_dummy_server.disk.device.write.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.latency_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.memory_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.usage_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.device.write.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.scalable_DUMMY_server: + type: tosca.capabilities.Scalable + occurrences: + - 1 + - UNBOUNDED + properties: + max_instances: + type: integer + default: 1 + required: false + min_instances: + type: integer + default: 1 + required: false + default_instances: + type: integer + required: false + sdwantestvsp0.abstract_dummy_server.cpu_util_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.capacity_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.network.incoming.packets_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.cpu.delta_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.iops_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.allocation_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.device.read.bytes_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.cpu_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.network.outgoing.bytes.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.read.requests_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.network.incoming.packets.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.network.incoming.bytes.rate_DUMMY_server_DUMMY_port: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.feature_DUMMY_server_DUMMY_port: + type: tosca.capabilities.Node + occurrences: + - 1 + - UNBOUNDED + sdwantestvsp0.abstract_dummy_server.disk.device.iops_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.device.capacity_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.disk.write.bytes.rate_DUMMY_server: + type: org.openecomp.capabilities.metric.Ceilometer + description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer. + occurrences: + - 1 + - UNBOUNDED + properties: + name: + type: string + description: Ceilometer metric type name to monitor. (The name ceilometer is using) + required: true + sdwantestvsp0.abstract_dummy_server.endpoint_DUMMY_server: + type: tosca.capabilities.Endpoint.Admin + occurrences: + - 1 + - UNBOUNDED + properties: + secure: + type: boolean + default: true + required: false + requirements: + - sdwantestvsp0.abstract_dummy_server.dependency_DUMMY_server: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - sdwantestvsp0.abstract_dummy_server.dependency_DUMMY_server_DUMMY_port: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - sdwantestvsp0.abstract_dummy_server.dependency: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - tunnel_xconntest0.allotedresource0.dependency: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Node + node: tosca.nodes.Root + relationship: tosca.relationships.DependsOn + - tunnel_xconntest0.allotedresource0.service_dependency: + occurrences: + - 1 + - 1 + capability: org.openecomp.capabilities.AllottedResource + node: tosca.services.Root + relationship: tosca.relationships.DependsOn + - sdwantestvsp0.abstract_dummy_server.link_DUMMY_server_DUMMY_port: + occurrences: + - 1 + - 1 + capability: tosca.capabilities.network.Linkable + relationship: tosca.relationships.network.LinksTo + - sdwantestvsp0.abstract_dummy_server.local_storage_DUMMY_server: + occurrences: + - 0 + - UNBOUNDED + capability: tosca.capabilities.Attachment + node: tosca.nodes.BlockStorage + relationship: tosca.relationships.AttachesTo diff --git a/src/test/resources/ymlFiles/service-SdWanServiceTest-template.yml b/src/test/resources/ymlFiles/service-SdWanServiceTest-template.yml index 0d3494a..7957fcd 100644 --- a/src/test/resources/ymlFiles/service-SdWanServiceTest-template.yml +++ b/src/test/resources/ymlFiles/service-SdWanServiceTest-template.yml @@ -10,18 +10,10 @@ metadata: ecompGeneratedNaming: true namingPolicy: '' imports: -- nodes: - file: nodes.yml - datatypes: file: data.yml -- capabilities: - file: capabilities.yml -- relationships: - file: relationships.yml - groups: file: groups.yml -- policies: - file: policies.yml - service-SD-WAN-Service-Test-interface: file: service-SdWanServiceTest-template-interface.yml - resource-SD-WAN-Test-VSP: -- 2.16.6