Port mirroring
check flat node types in port mirroring
Issue - Id : SDC-468
Change-Id: Ieba42aeb7de6b253230eab80d9e9feaaee9538b7
Signed-off-by: talio <tali.orenbach@amdocs.com>
diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/PortMirroringEnricher.java b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/PortMirroringEnricher.java
index 2fe1416..705773d 100644
--- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/PortMirroringEnricher.java
+++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/PortMirroringEnricher.java
@@ -9,27 +9,34 @@
import org.openecomp.sdc.datatypes.error.ErrorMessage;
import org.openecomp.sdc.enrichment.impl.tosca.model.PortMirroringConnectionPointDescription;
import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.tosca.datatypes.ToscaElementTypes;
import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
import org.openecomp.sdc.tosca.datatypes.model.CapabilityAssignment;
import org.openecomp.sdc.tosca.datatypes.model.Import;
import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
+import org.openecomp.sdc.tosca.datatypes.model.NodeType;
import org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition;
import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
import org.openecomp.sdc.tosca.services.DataModelUtil;
+import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
import org.openecomp.sdc.tosca.services.ToscaConstants;
import org.openecomp.sdc.tosca.services.ToscaUtil;
+import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
+import java.util.Set;
import java.util.stream.Collectors;
public class PortMirroringEnricher {
@@ -186,40 +193,40 @@
addPortMirroringSubstitutionMappingCapability(serviceTemplate,
externalPortNodeTemplateId);
}
- handleExternalPortProperties(externalNodeTemplate.getValue());
+ handleExternalPortProperties(externalNodeTemplate.getValue(), serviceTemplate, toscaServiceModel);
}
addGlobalTypeImport(serviceTemplate);
}
}
}
- private void handleExternalPortProperties(NodeTemplate portNodeTemplate) {
+ private void handleExternalPortProperties(NodeTemplate portNodeTemplate,
+ ServiceTemplate serviceTemplate,
+ ToscaServiceModel toscaServiceModel){
- ServiceTemplate serviceTemplate = globalTypesServiceTemplate.get("openecomp/nodes.yml");
+ ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl();
String externalPortType = portNodeTemplate.getType();
Map<String, PropertyDefinition> globalTypesportProperties = new HashMap<>();
- globalTypesportProperties.putAll(
- serviceTemplate.getNode_types().get("org.openecomp.resource.cp.nodes.network.Port")
- .getProperties());
- globalTypesportProperties
- .putAll(serviceTemplate.getNode_types().get(externalPortType).getProperties());
+ NodeType flatNodeType =
+ (NodeType) toscaAnalyzerService.getFlatEntity(ToscaElementTypes.NODE_TYPE, externalPortType, serviceTemplate, toscaServiceModel);
+ globalTypesportProperties.putAll(flatNodeType.getProperties());
Map<String, Object> properties = portNodeTemplate.getProperties();
Map<String, Object> filteredProperties = new HashMap<>();
- if (MapUtils.isEmpty(properties)) {
+ if(MapUtils.isEmpty(properties)){
return;
}
- for (Map.Entry<String, Object> propertyEntry : properties.entrySet()) {
- if (globalTypesportProperties.containsKey(propertyEntry.getKey())) {
+ for(Map.Entry<String, Object> propertyEntry: properties.entrySet()){
+ if(globalTypesportProperties.containsKey(propertyEntry.getKey())){
filteredProperties.put(propertyEntry.getKey(), propertyEntry.getValue());
}
}
- if (!MapUtils.isEmpty(filteredProperties)) {
+ if(!MapUtils.isEmpty(filteredProperties)) {
portNodeTemplate.setProperties(filteredProperties);
- } else {
+ }else{
portNodeTemplate.setProperties(null);
}
@@ -284,14 +291,15 @@
private boolean isPortNodeTemplate(String nodeType) {
//Check if node corresponds to a concrete port node
- if (Objects.nonNull(nodeType)) {
- if (nodeType.equals(ToscaNodeType.NEUTRON_PORT)
- || nodeType.equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE)
- || nodeType.equals(ToscaNodeType.CONTRAIL_PORT)) {
- return true;
- }
- }
- return false;
+ Set<String> portNodeTypes = getPortNodeTypes();
+ return Objects.nonNull(nodeType)
+ && portNodeTypes.contains(nodeType);
+ }
+
+ private Set<String> getPortNodeTypes(){
+ return new HashSet<>(Arrays.asList(ToscaNodeType.NEUTRON_PORT,
+ ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE,
+ ToscaNodeType.CONTRAIL_PORT));
}
private boolean isSubstitutableNodeTemplate(NodeTemplate nodeTemplate) {
diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/toscaGlobalServiceTemplates/openecomp/nodes.yml b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/toscaGlobalServiceTemplates/openecomp/nodes.yml
index 83516a2..810bf30 100644
--- a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/toscaGlobalServiceTemplates/openecomp/nodes.yml
+++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/test/resources/mock/toscaGlobalServiceTemplates/openecomp/nodes.yml
@@ -1,308 +1,316 @@
+#
+# 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_openecomp_1_0
+
metadata:
filename: openecomp/nodes.yml
version: '1.0'
+
imports:
- openecomp_index:
file: _index.yml
+
node_types:
- org.openecomp.resource.vl.nodes.network.VL:
+
+ org.openecomp.resource.vl.nodes.network.Network:
derived_from: tosca.nodes.network.Network
properties:
vendor:
type: string
required: false
- status: SUPPORTED
vl_name:
type: string
required: false
- status: SUPPORTED
capabilities:
end_point:
type: tosca.capabilities.Endpoint
- occurrences:
- - 1
- - UNBOUNDED
+
org.openecomp.resource.abstract.nodes.AbstractSubstitute:
derived_from: tosca.nodes.Root
properties:
service_template_filter:
- type: org.openecomp.datatypes.substitution.SubstitutionFiltering
description: Substitution Filter
- required: true
+ type: org.openecomp.datatypes.substitution.SubstitutionFiltering
status: SUPPORTED
+ required: true
+
org.openecomp.resource.vl.extVL:
- derived_from: org.openecomp.resource.vl.nodes.network.VL
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
description: VF Tenant oam protected network
properties:
network_type:
- type: string
description: OPENECOMP supported network types.
- required: true
- status: SUPPORTED
- network_role:
type: string
+ required: true
+ network_role:
description: |
Unique label that defines the role that this network performs. example: vce oam network, vnat sr-iov1 network
- required: true
- status: SUPPORTED
- network_scope:
type: string
+ required: true
+ network_scope:
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
- required: true
- status: SUPPORTED
+ type: string
constraints:
- valid_values:
- VF
- SERVICE
- GLOBAL
network_technology:
- type: string
description: OPENECOMP supported network technology
+ type: string
required: true
- status: SUPPORTED
network_ecomp_naming:
type: org.openecomp.datatypes.EcompNaming
required: true
- status: SUPPORTED
network_homing:
type: org.openecomp.datatypes.EcompHoming
required: true
- status: SUPPORTED
network_assignments:
type: org.openecomp.datatypes.network.NetworkAssignments
required: true
- status: SUPPORTED
provider_network:
type: org.openecomp.datatypes.network.ProviderNetwork
required: true
- status: SUPPORTED
network_flows:
type: org.openecomp.datatypes.network.NetworkFlows
required: false
- status: SUPPORTED
+
+
org.openecomp.resource.vfc.nodes.Compute:
derived_from: tosca.nodes.Compute
capabilities:
disk.ephemeral.size:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: org.openecomp.capabilities.metric.Ceilometer
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:
- type: string
description: refrence to license feature group
- required: true
+ type: string
status: SUPPORTED
+ required: true
requirements:
- deployment_flavor:
capability: org.openecomp.capabilities.attachment.DeploymentFlavor
@@ -311,191 +319,222 @@
occurrences:
- 1
- UNBOUNDED
+
+ org.openecomp.resource.abstract.nodes.ComplexVFC:
+ derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
+
org.openecomp.resource.abstract.nodes.VFC:
derived_from: org.openecomp.resource.abstract.nodes.AbstractSubstitute
properties:
high_availablity:
- type: string
description: high_availablity
- required: false
+ type: string
status: SUPPORTED
+ required: false
vm_image_name:
- type: string
description: Master image_name volume id
- required: true
+ type: string
status: SUPPORTED
+ required: true
vm_flavor_name:
- type: string
description: Master image_name volume id
+ type: string
+ status: SUPPORTED
required: true
- status: SUPPORTED
nfc_naming_code:
- type: string
description: nfc code for instance naming
- required: false
- status: SUPPORTED
- vm_type_tag:
type: string
+ status: SUPPORTED
+ required: false
+ nfc_code:
+ type: string
+ description: nfc code
+ status: SUPPORTED
+ required: false
+ nfc_function:
+ type: string
+ description: nfc function
+ status: SUPPORTED
+ required: false
+ vm_type_tag:
description: vm type based on naming Convention
- required: false
+ type: string
status: SUPPORTED
+ required: false
vfc_naming:
- type: org.openecomp.datatypes.Naming
description: vfc naming
- required: false
+ type: org.openecomp.datatypes.Naming
+ status: SUPPORTED
default: false
- status: SUPPORTED
- min_instances:
- type: integer
- description: Minimum number of VFC Instances
required: false
- default: 0
+ min_instances:
+ description: Minimum number of VFC Instances
+ type: integer
status: SUPPORTED
+ default: 0
+ required: false
constraints:
- greater_or_equal: 0
max_instances:
- type: integer
description: Maximum number of VFC Instances
- required: false
+ type: integer
status: SUPPORTED
+ required: false
constraints:
- greater_or_equal: 1
+
org.openecomp.resource.vl.ELine:
- derived_from: org.openecomp.resource.vl.nodes.network.VL
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
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: org.openecomp.resource.vl.nodes.network.VL
+ derived_from: org.openecomp.resource.vl.nodes.network.Network
description: The AT&T internal (VF-level) Virtual Link
- org.openecomp.resource.cp.nodes.network.CP:
- derived_from: tosca.nodes.network.Port
+
+ org.openecomp.resource.cp.nodes.network.Port:
+ derived_from: tosca.nodes.network.Port
properties:
network_role_tag:
- type: string
description: Must correlate to the set of defined “network-role�? tag identifiers from the associated HEAT template
+ type: string
required: true
- status: SUPPORTED
mac_requirements:
- type: org.openecomp.datatypes.network.MacRequirements
description: identifies MAC address assignments to the CP
+ type: org.openecomp.datatypes.network.MacRequirements
required: false
- status: SUPPORTED
vlan_requirements:
- type: list
description: identifies vlan address assignments to the CP
- required: false
- status: SUPPORTED
+ type: list
entry_schema:
type: org.openecomp.datatypes.network.VlanRequirements
+ required: false
ip_requirements:
- type: list
description: identifies IP requirements to the CP
- required: true
- status: SUPPORTED
+ type: list
entry_schema:
type: org.openecomp.datatypes.network.IpRequirements
+ required: true
+ network_role:
+ description: identical to VL network_role
+ type: string
+ required: false
+ order:
+ description: The order of the CP on the compute instance (e.g. eth2).
+ type: integer
+ required: false
+ exCP_naming:
+ description: CP Name
+ type: org.openecomp.datatypes.Naming
+ required: false
+ subnetpoolid:
+ description: subnet pool id
+ type: string
+ required: false
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.
+ type: org.openecomp.capabilities.metric.Ceilometer
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.
+ type: org.openecomp.capabilities.metric.Ceilometer
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.
+ type: org.openecomp.capabilities.metric.Ceilometer
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.
+ type: org.openecomp.capabilities.metric.Ceilometer
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.
+ type: org.openecomp.capabilities.metric.Ceilometer
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.
+ type: org.openecomp.capabilities.metric.Ceilometer
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.
+ type: org.openecomp.capabilities.metric.Ceilometer
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.
+ type: org.openecomp.capabilities.metric.Ceilometer
occurrences:
- 1
- UNBOUNDED
+
org.openecomp.resource.nodes.DeploymentFlavor:
derived_from: tosca.nodes.Root
capabilities:
deployment_flavor:
- type: org.openecomp.capabilities.attachment.DeploymentFlavor
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 AT&T Connection Point base type all other CP derive from
properties:
network_role:
- type: string
description: identical to VL network_role
- required: true
- status: SUPPORTED
- order:
- type: integer
- description: The order of the CP on the compute instance (e.g. eth2).
- required: true
- status: SUPPORTED
- network_role_tag:
type: string
- description: Must correlate to the set of defined “network-role�? tag identifiers from the associated HEAT template
required: true
- status: SUPPORTED
+ order:
+ description: The order of the CP on the compute instance (e.g. eth2).
+ type: integer
+ required: true
+ 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:
- type: org.openecomp.datatypes.network.MacRequirements
description: identifies MAC address assignments to the CP
+ type: org.openecomp.datatypes.network.MacRequirements
required: false
- status: SUPPORTED
vlan_requirements:
- type: list
description: identifies vlan address assignments to the CP
- required: false
- status: SUPPORTED
+ type: list
entry_schema:
type: org.openecomp.datatypes.network.VlanRequirements
+ required: false
ip_requirements:
- type: list
description: identifies IP requirements to the CP
- required: true
- status: SUPPORTED
+ type: list
entry_schema:
type: org.openecomp.datatypes.network.IpRequirements
+ required: true
+ capabilities:
+ internal_connectionPoint:
+ type: tosca.capabilities.Node
+ valid_source_types:
+ - tosca.nodes.network.Port
requirements:
- virtualLink:
capability: tosca.capabilities.network.Linkable
@@ -505,15 +544,802 @@
relationship: tosca.relationships.network.BindsTo
- external_virtualLink:
capability: tosca.capabilities.network.Linkable
- node: org.openecomp.resource.vl.nodes.network.VL
+ node: org.openecomp.resource.vl.nodes.network.Network
relationship: tosca.relationships.network.LinksTo
- capabilities:
- internal_connectionPoint:
- type: tosca.capabilities.Node
- valid_source_types:
- - tosca.nodes.network.Port
+
+ org.openecomp.resource.vfc.nodes.volume:
+ derived_from: tosca.nodes.BlockStorage
+
+ ### Node types related to Deployment Flavors
+ org.openecomp.resource.abstract.nodes.VnfConfiguration:
+ derived_from: tosca.nodes.Root
+ description: a container for the available flavors
+ properties:
+ allowed_flavors:
+ description: a collection of all available flavor valuesets
+ type: map
+ entry_schema:
+ type: org.openecomp.datatypes.flavors.DeploymentFlavor
+
+ org.openecomp.resource.abstract.nodes.MultiFlavorVFC:
+ derived_from: org.openecomp.resource.abstract.nodes.VFC
+ description: Multi flavored VFC node
+ properties:
+ images:
+ type: map
+ entry_schema:
+ type: org.openecomp.datatypes.ImageInfo
+ required: false
+
+ ## New node types for Port Mirroring
+ org.openecomp.nodes.ServiceProxy:
+ derived_from: tosca.nodes.Root
+
+ org.openecomp.nodes.PortMirroringConfiguration:
+ derived_from: tosca.nodes.Root
+ requirements:
+ - source:
+ capability: org.openecomp.capabilities.PortMirroring
occurrences:
- 1
- UNBOUNDED
- org.openecomp.resource.vfc.nodes.volume:
- derived_from: tosca.nodes.BlockStorage
+ - collector:
+ capability: org.openecomp.capabilities.PortMirroring
+ occurrences:
+ - 1
+ - 1
+
+ org.openecomp.resource.cp.v2.extCP:
+ derived_from: org.openecomp.resource.cp.nodes.network.Port
+ description: The SDC External Connection Point base type
+ capabilities:
+ port_mirroring:
+ type: org.openecomp.capabilities.PortMirroring
+
+ org.openecomp.resource.cp.v2.extNeutronCP:
+ derived_from: org.openecomp.resource.cp.v2.extCP
+ 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.cp.v2.extContrailCP:
+ derived_from: org.openecomp.resource.cp.v2.extCP
+ 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
+ tosca.nodes.nfv.NS.vEPC_NS:
+ derived_from: tosca.nodes.nfv.NS
+ properties:
+ vendor:
+ default: ChinaMobile
+ required: false
+ type: string
+ csarVersion:
+ default: v1.0
+ required: false
+ type: string
+ name:
+ default: vEPC_NS
+ required: false
+ type: string
+ csarProvider:
+ default: ChinaMobile
+ required: false
+ type: string
+ id:
+ default: vEPC_NS
+ required: false
+ type: string
+ version:
+ default: v1.0
+ required: false
+ type: string
+ csarType:
+ default: NSAR
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.NS.vIMS_NS:
+ derived_from: tosca.nodes.nfv.NS
+ properties:
+ vendor:
+ default: ChinaMobile
+ required: false
+ type: string
+ csarVersion:
+ default: v1.0
+ required: false
+ type: string
+ name:
+ default: vIMS_NS
+ required: false
+ type: string
+ csarProvider:
+ default: ChinaMobile
+ required: false
+ type: string
+ id:
+ default: vIMS_NS
+ required: false
+ type: string
+ version:
+ default: v1.0
+ required: false
+ type: string
+ csarType:
+ default: NSAR
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.NS:
+ derived_from: tosca.nodes.Root
+ properties:
+ vendor:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ id:
+ required: false
+ type: string
+ version:
+ required: false
+ type: string
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VDU.Compute:
+ attributes:
+ private_address:
+ type: string
+ public_address:
+ type: string
+ networks:
+ type: string
+ ports:
+ type: string
+ capabilities:
+ scalable:
+ type: tosca.capabilities.Scalable
+ virtual_compute:
+ type: tosca.capabilities.nfv.VirtualCompute
+ endpoint:
+ type: tosca.capabilities.Endpoint.Admin
+ os:
+ type: tosca.capabilities.OperatingSystem
+ virtual_binding:
+ type: tosca.capabilities.nfv.VirtualBindable
+ host:
+ type: tosca.capabilities.Container
+ binding:
+ type: tosca.capabilities.network.Bindable
+ monitoring_parameter:
+ type: tosca.capabilities.nfv.Metric
+ derived_from: tosca.nodes.Root
+ properties:
+ configurable_properties:
+ entry_schema:
+ type: tosca.datatypes.nfv.VnfcConfigurableProperties
+ type: map
+ name:
+ type: string
+ nfvi_constraints:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ descrption:
+ type: string
+ boot_order:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ requirements:
+ - local_storage:
+ capability: tosca.capabilities.Attachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtual_storage:
+ capability: tosca.capabilities.nfv.VirtualStorage
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VDU.VirtualStorage:
+ capabilities:
+ virtual_storage:
+ type: tosca.capabilities.nfv.VirtualStorage
+ derived_from: tosca.nodes.Root
+ properties:
+ id:
+ type: string
+ size_of_storage:
+ type: string
+ rdma_enabled:
+ required: false
+ type: boolean
+ type_of_storage:
+ type: string
+
+ tosca.nodes.nfv.VduCpd:
+ derived_from: tosca.nodes.Root
+ properties:
+ virtual_network_interface_requirements:
+ entry_schema:
+ type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements
+ required: false
+ type: list
+ role:
+ constraints:
+ - valid_values:
+ - root
+ - leaf
+ required: false
+ type: string
+ bitrate_requirement:
+ required: false
+ type: integer
+ description:
+ required: false
+ type: string
+ layer_protocol:
+ constraints:
+ - valid_values:
+ - ethernet
+ - mpls
+ - odu2
+ - ipv4
+ - ipv6
+ - pseudo_wire
+ type: string
+ address_data:
+ entry_schema:
+ type: tosca.datatype.nfv.AddressData
+ required: false
+ type: list
+ requirements:
+ - virtual_binding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtual_link:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.ImageFile:
+ capabilities:
+ guest_os:
+ type: tosca.capabilities.nfv.ext.GuestOs
+ image_fle:
+ type: tosca.capabilities.nfv.ext.ImageFile
+ derived_from: tosca.nodes.Root
+ properties:
+ file_url:
+ required: false
+ type: string
+ container_type:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ disk_format:
+ required: false
+ type: string
+ version:
+ required: false
+ type: string
+ tosca.nodes.nfv.ext.LocalStorage:
+ capabilities:
+ local_attachment:
+ type: tosca.capabilities.nfv.ext.LocalAttachment
+ derived_from: tosca.nodes.Root
+ properties:
+ size:
+ required: false
+ type: string
+ disk_type:
+ required: false
+ type: string
+ tosca.nodes.nfv.ext.zte.CP:
+ capabilities:
+ forwarder:
+ type: tosca.capabilities.nfv.Forwarder
+ derived_from: tosca.nodes.Root
+ properties:
+ guest_os_mtu:
+ required: false
+ type: integer
+ bandwidth:
+ required: false
+ type: integer
+ interface_name:
+ required: false
+ type: string
+ allowed_address_pairs:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.AddressPairs
+ required: false
+ type: list
+ ip_address:
+ required: false
+ type: string
+ bond:
+ required: false
+ type: string
+ proxiedVNFs:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ sfc_encapsulation:
+ required: false
+ type: string
+ floating_ip_address:
+ required: false
+ type: tosca.datatypes.nfv.ext.FloatingIP
+ service_ip_address:
+ required: false
+ type: string
+ mac_address:
+ required: false
+ type: string
+ proxiedVNFtype:
+ required: false
+ type: string
+ macbond:
+ required: false
+ type: string
+ vnic_type:
+ required: false
+ type: string
+ direction:
+ required: false
+ type: string
+ order:
+ required: false
+ type: integer
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualbinding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.zte.VDU:
+ capabilities:
+ scalable:
+ type: tosca.capabilities.Scalable
+ monitoring_parameter:
+ type: tosca.capabilities.nfv.Metric
+ nfv_compute:
+ type: tosca.capabilities.nfv.ext.Compute.Container.Architecture
+ virtualbinding:
+ type: tosca.capabilities.nfv.VirtualBindable
+ derived_from: tosca.nodes.Root
+ properties:
+ manual_scale_select_vim:
+ required: false
+ type: boolean
+ vdu_type:
+ required: false
+ type: string
+ watchdog:
+ required: false
+ type: tosca.datatypes.nfv.ext.zte.WatchDog
+ name:
+ required: false
+ type: string
+ local_affinity_antiaffinity_rule:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocalAffinityOrAntiAffinityRule
+ support_scaling:
+ required: false
+ type: boolean
+ storage_policy:
+ required: false
+ type: string
+ key_vdu:
+ required: false
+ type: boolean
+ location_info:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocationInfo
+ inject_data_list:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.InjectData
+ required: false
+ type: list
+ requirements:
+ - guest_os:
+ capability: tosca.capabilities.nfv.ext.GuestOs
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - local_storage:
+ capability: tosca.capabilities.nfv.ext.LocalAttachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - volume_storage:
+ capability: tosca.capabilities.Attachment
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - dependency:
+ capability: tosca.capabilities.Node
+ occurrences:
+ - 0
+ - UNBOUNDED
+ tosca.nodes.nfv.ext.zte.VL:
+ capabilities:
+ virtual_linkable:
+ type: tosca.capabilities.nfv.VirtualLinkable
+ derived_from: tosca.nodes.Root
+ properties:
+ segmentation_id:
+ required: false
+ type: string
+ network_name:
+ required: false
+ type: string
+ is_predefined:
+ required: false
+ type: boolean
+ mtu:
+ required: false
+ type: integer
+ dns_nameservers:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ physical_network:
+ required: false
+ type: string
+ dhcp_enabled:
+ required: false
+ type: boolean
+ network_id:
+ required: false
+ type: string
+ host_routes:
+ entry_schema:
+ type: tosca.datatypes.nfv.ext.HostRouteInfo
+ required: false
+ type: list
+ ip_version:
+ required: false
+ type: integer
+ vendor:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ start_ip:
+ required: false
+ type: string
+ vlan_transparent:
+ required: false
+ type: boolean
+ cidr:
+ required: false
+ type: string
+ gateway_ip:
+ required: false
+ type: string
+ network_type:
+ required: false
+ type: string
+ end_ip:
+ required: false
+ type: string
+ location_info:
+ required: false
+ type: tosca.datatypes.nfv.ext.LocationInfo
+ tosca.nodes.nfv.ext.zte.VNF:
+ capabilities:
+ forwarder:
+ type: tosca.capabilities.nfv.Forwarder
+ derived_from: tosca.nodes.Root
+ properties:
+ request_reclassification:
+ required: false
+ type: boolean
+ domain_type:
+ required: false
+ type: string
+ nsh_aware:
+ required: false
+ type: boolean
+ plugin_info:
+ required: false
+ type: string
+ adjust_vnf_capacity:
+ required: false
+ type: boolean
+ vnfd_version:
+ required: false
+ type: string
+ vmnumber_overquota_alarm:
+ required: false
+ type: boolean
+ custom_properties:
+ entry_schema:
+ type: string
+ required: false
+ type: map
+ version:
+ required: false
+ type: string
+ cross_dc:
+ required: false
+ type: boolean
+ script_info:
+ required: false
+ type: string
+ vendor:
+ required: false
+ type: string
+ is_shared:
+ required: false
+ type: boolean
+ name:
+ required: false
+ type: string
+ vnf_extend_type:
+ required: false
+ type: string
+ id:
+ required: false
+ type: string
+ vnf_type:
+ required: false
+ type: string
+ is_sfc_proxy:
+ required: false
+ type: boolean
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ occurrences:
+ - 0
+ - UNBOUNDED
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ occurrences:
+ - 0
+ - UNBOUNDED
+
+ tosca.nodes.nfv.VnfVirtualLinkDesc:
+ capabilities:
+ monitoring_parameters:
+ type: tosca.capabilities.nfv.Metric
+ virtual_linkable:
+ type: tosca.capabilities.nfv.VirtualLinkable
+ derived_from: tosca.nodes.Root
+ properties:
+ vl_flavours:
+ entry_schema:
+ type: string
+ type: map
+ description:
+ required: false
+ type: string
+ test_access:
+ entry_schema:
+ type: string
+ required: false
+ type: list
+ connectivity_type:
+ type: tosca.datatypes.nfv.ConnectivityType
\ No newline at end of file