summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/PortMirroringEnricher.java464
1 files changed, 229 insertions, 235 deletions
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 6598d1a6ac..c95274d7fe 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
@@ -20,11 +20,11 @@ import static org.openecomp.sdc.tosca.services.DataModelUtil.getClonedObject;
import static org.openecomp.sdc.tosca.services.ToscaConstants.PORT_MIRRORING_CAPABILITY_CP_PROPERTY_NAME;
import static org.openecomp.sdc.tosca.services.ToscaConstants.PORT_MIRRORING_CAPABILITY_ID;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -51,273 +51,267 @@ import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
public class PortMirroringEnricher {
- //Map of service template file name and map of all port node template ids, node template
- private final Map<String, Map<String, NodeTemplate>> portNodeTemplates = new HashMap<>();
- //Map of service template file name and map of external port node template ids, node template
- private final Map<String, Map<String, NodeTemplate>> externalPortNodeTemplates = new HashMap<>();
- //Map of substitution service template name and the list of ports with link requirement from the abstract
- private final Map<String, List<String>> portNodeTemplateIdsFromAbstract = new HashMap<>();
- private final Map<String, ServiceTemplate> globalTypesServiceTemplate =
- GlobalTypesGenerator.getGlobalTypesServiceTemplate(OnboardingTypesEnum.ZIP);
-
- private static final String ABSTRACT_LINK_REQUIREMENT_ID_PREFIX = ToscaConstants.LINK_REQUIREMENT_ID + "_";
- private static final int ABSTRACT_LINK_REQUIREMENT_ID_PREFIX_LENGTH = ABSTRACT_LINK_REQUIREMENT_ID_PREFIX.length();
-
- private static final Map<String, String> nodeTypeExternalNodeType =
- Collections.unmodifiableMap(initializeNodeTypeExternalNodeType());
+ private static final String ABSTRACT_LINK_REQUIREMENT_ID_PREFIX = ToscaConstants.LINK_REQUIREMENT_ID + "_";
+ private static final int ABSTRACT_LINK_REQUIREMENT_ID_PREFIX_LENGTH = ABSTRACT_LINK_REQUIREMENT_ID_PREFIX.length();
+ private static final Map<String, String> nodeTypeExternalNodeType = initializeNodeTypeExternalNodeType();
+ //Map of service template file name and map of all port node template ids, node template
+ private final Map<String, Map<String, NodeTemplate>> portNodeTemplates = new HashMap<>();
+ //Map of service template file name and map of external port node template ids, node template
+ private final Map<String, Map<String, NodeTemplate>> externalPortNodeTemplates = new HashMap<>();
+ //Map of substitution service template name and the list of ports with link requirement from the abstract
+ private final Map<String, List<String>> portNodeTemplateIdsFromAbstract = new HashMap<>();
+ private final Map<String, ServiceTemplate> globalTypesServiceTemplate =
+ GlobalTypesGenerator.getGlobalTypesServiceTemplate(OnboardingTypesEnum.ZIP);
- /**
- * Enrich tosca for port mirroring.
- *
- * @param toscaServiceModel the tosca service model
- * @return the map Error descriptor map
- */
- public Map<String, List<ErrorMessage>> enrich(ToscaServiceModel toscaServiceModel) {
- Map<String, List<ErrorMessage>> errors = new HashMap<>();
- Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
- serviceTemplates.entrySet().stream()
- //Skipping the service templates which do not contain topology template
- .filter(serviceTemplateEntry -> serviceTemplateEntry.getValue()
- .getTopology_template() != null)
- .forEach(serviceTemplateEntry ->
- //Collect all the ports across all the service templates
- collectPorts(serviceTemplateEntry.getValue()));
- //Collect External ports from the list of all ports collected above
- filterExternalPorts();
- //Handle external port changes
- handleExternalPorts(toscaServiceModel);
- return errors;
- }
+ private static ImmutableMap<String,String> initializeNodeTypeExternalNodeType() {
+ return ImmutableMap.<String, String>builder()
+ .put(ToscaNodeType.CONTRAIL_PORT, ToscaNodeType.EXTERNAL_CONTRAIL_PORT)
+ .put(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE, ToscaNodeType.EXTERNAL_VMI_PORT)
+ .put(ToscaNodeType.NEUTRON_PORT, ToscaNodeType.EXTERNAL_NEUTRON_PORT)
+ .build();
+ }
- private void collectPorts(ServiceTemplate serviceTemplate) {
- Map<String, NodeTemplate> nodeTemplates = DataModelUtil.getNodeTemplates(serviceTemplate);
- if (Objects.isNull(nodeTemplates)) {
- return;
+ /**
+ * Enrich tosca for port mirroring.
+ *
+ * @param toscaServiceModel the tosca service model
+ * @return the map Error descriptor map
+ */
+ public Map<String, List<ErrorMessage>> enrich(ToscaServiceModel toscaServiceModel) {
+ Map<String, List<ErrorMessage>> errors = new HashMap<>();
+ Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
+ serviceTemplates.entrySet().stream()
+ //Skipping the service templates which do not contain topology template
+ .filter(serviceTemplateEntry -> serviceTemplateEntry.getValue().getTopology_template() != null)
+ .forEach(serviceTemplateEntry ->
+ //Collect all the ports across all the service templates
+ collectPorts(serviceTemplateEntry.getValue()));
+ //Collect External ports from the list of all ports collected above
+ filterExternalPorts();
+ //Handle external port changes
+ handleExternalPorts(toscaServiceModel);
+ return errors;
}
- //Get all concrete port node templates from the service template
- Map<String, NodeTemplate> serviceTemplatePortNodeTemplates = nodeTemplates.entrySet().stream()
- .filter(nodeTemplateEntry -> (Objects.nonNull(nodeTemplateEntry.getValue()))
- && (isPortNodeTemplate(nodeTemplateEntry.getValue().getType())))
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
- portNodeTemplates.put(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
- serviceTemplatePortNodeTemplates);
- //Get all linked internal ports from abstract node template link requirements
- collectLinkedInternalPorts(nodeTemplates);
- }
+ private void collectPorts(ServiceTemplate serviceTemplate) {
+ Map<String, NodeTemplate> nodeTemplates = DataModelUtil.getNodeTemplates(serviceTemplate);
+ if (Objects.isNull(nodeTemplates)) {
+ return;
+ }
+ //Get all concrete port node templates from the service template
+ Map<String, NodeTemplate> serviceTemplatePortNodeTemplates = nodeTemplates.entrySet().stream()
+ .filter(nodeTemplateEntry -> (Objects.nonNull(nodeTemplateEntry.getValue()))
+ && (isPortNodeTemplate(nodeTemplateEntry.getValue().getType())))
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
- private void collectLinkedInternalPorts(Map<String, NodeTemplate> nodeTemplates) {
- List<String> abstractLinkedPortNodeTemplates = new ArrayList<>();
- for (Map.Entry<String, NodeTemplate> nodeTemplateEntry : nodeTemplates.entrySet()) {
- NodeTemplate nodeTemplate = nodeTemplateEntry.getValue();
- if (isSubstitutableNodeTemplate(nodeTemplate)) {
- handleSubstitutableNodeTemplate(abstractLinkedPortNodeTemplates, nodeTemplate);
- }
+ portNodeTemplates.put(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
+ serviceTemplatePortNodeTemplates);
+ //Get all linked internal ports from abstract node template link requirements
+ collectLinkedInternalPorts(nodeTemplates);
}
- }
- private void handleSubstitutableNodeTemplate(List<String> abstractLinkedPortNodeTemplates,
- NodeTemplate nodeTemplate) {
- List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
- if (Objects.isNull(requirements)) {
- return;
- }
- requirements.forEach(requirement -> addInternalPortToAbstractNode(requirement, abstractLinkedPortNodeTemplates));
- if (CollectionUtils.isNotEmpty(abstractLinkedPortNodeTemplates)) {
- //Populate a map of the substitution service templates and list of internal ports
- addCollectedPortsToAbstractServiceTemplatePortMap(nodeTemplate,
- abstractLinkedPortNodeTemplates);
+ private void collectLinkedInternalPorts(Map<String, NodeTemplate> nodeTemplates) {
+ List<String> abstractLinkedPortNodeTemplates = new ArrayList<>();
+ for (Map.Entry<String, NodeTemplate> nodeTemplateEntry : nodeTemplates.entrySet()) {
+ NodeTemplate nodeTemplate = nodeTemplateEntry.getValue();
+ if (isSubstitutableNodeTemplate(nodeTemplate)) {
+ handleSubstitutableNodeTemplate(abstractLinkedPortNodeTemplates, nodeTemplate);
+ }
+ }
}
- }
- private void addInternalPortToAbstractNode(Map<String, RequirementAssignment> requirement,
- List<String> abstractLinkedPortNodeTemplates) {
- String requirementId = requirement.keySet().iterator().next();
- if (requirementId.startsWith(ABSTRACT_LINK_REQUIREMENT_ID_PREFIX)) {
- //Collect port node template ids from the link requirement ids in the abstract node template
- abstractLinkedPortNodeTemplates.add(requirementId.substring(ABSTRACT_LINK_REQUIREMENT_ID_PREFIX_LENGTH));
+ private void handleSubstitutableNodeTemplate(List<String> abstractLinkedPortNodeTemplates,
+ NodeTemplate nodeTemplate) {
+ List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
+ if (Objects.isNull(requirements)) {
+ return;
+ }
+ requirements
+ .forEach(requirement -> addInternalPortToAbstractNode(requirement, abstractLinkedPortNodeTemplates));
+ if (CollectionUtils.isNotEmpty(abstractLinkedPortNodeTemplates)) {
+ //Populate a map of the substitution service templates and list of internal ports
+ addCollectedPortsToAbstractServiceTemplatePortMap(nodeTemplate, abstractLinkedPortNodeTemplates);
+ }
}
- }
- private void addCollectedPortsToAbstractServiceTemplatePortMap(NodeTemplate nodeTemplate,
- List<String> abstractLinkedPortNodeTemplates) {
- String substitutionServiceTemplateName;
- if (Objects.isNull(nodeTemplate.getProperties())) {
- return;
- }
- Map serviceTemplateFilter = (Map<String, Object>) nodeTemplate.getProperties()
- .get(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME);
- substitutionServiceTemplateName = (String)
- serviceTemplateFilter.get(ToscaConstants.SUBSTITUTE_SERVICE_TEMPLATE_PROPERTY_NAME);
- if (Objects.isNull(substitutionServiceTemplateName)) {
- return;
- }
- if (portNodeTemplateIdsFromAbstract.containsKey(substitutionServiceTemplateName)) {
- List<String> portList = portNodeTemplateIdsFromAbstract.get(substitutionServiceTemplateName);
- portList.addAll(abstractLinkedPortNodeTemplates);
- portNodeTemplateIdsFromAbstract.put(substitutionServiceTemplateName, portList);
- } else {
- portNodeTemplateIdsFromAbstract.put(substitutionServiceTemplateName, abstractLinkedPortNodeTemplates);
+ private void addInternalPortToAbstractNode(Map<String, RequirementAssignment> requirement,
+ List<String> abstractLinkedPortNodeTemplates) {
+ String requirementId = requirement.keySet().iterator().next();
+ if (requirementId.startsWith(ABSTRACT_LINK_REQUIREMENT_ID_PREFIX)) {
+ //Collect port node template ids from the link requirement ids in the abstract node template
+ abstractLinkedPortNodeTemplates.add(requirementId.substring(ABSTRACT_LINK_REQUIREMENT_ID_PREFIX_LENGTH));
+ }
}
- }
- private void filterExternalPorts() {
- for (Map.Entry<String, Map<String, NodeTemplate>> portNodeTemplateEntry : portNodeTemplates.entrySet()) {
- Map<String, NodeTemplate> externalPorts = new HashMap<>();
- String serviceTemplateFileName = portNodeTemplateEntry.getKey();
- Map<String, NodeTemplate> portNodeTemplateMap = portNodeTemplateEntry.getValue();
- for (Map.Entry<String, NodeTemplate> portNodeTemplate : portNodeTemplateMap.entrySet()) {
- String nodeTemplateId = portNodeTemplate.getKey();
- NodeTemplate nodeTemplate = portNodeTemplate.getValue();
- if (!isInternalPort(serviceTemplateFileName, nodeTemplateId, nodeTemplate)) {
- //External Port
- externalPorts.putIfAbsent(nodeTemplateId, nodeTemplate);
+ private void addCollectedPortsToAbstractServiceTemplatePortMap(NodeTemplate nodeTemplate,
+ List<String> abstractLinkedPortNodeTemplates) {
+ String substitutionServiceTemplateName;
+ if (Objects.isNull(nodeTemplate.getProperties())) {
+ return;
+ }
+ Map serviceTemplateFilter = (Map<String, Object>) nodeTemplate.getProperties()
+ .get(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME);
+ substitutionServiceTemplateName = (String)
+ serviceTemplateFilter.get(ToscaConstants.SUBSTITUTE_SERVICE_TEMPLATE_PROPERTY_NAME);
+ if (Objects.isNull(substitutionServiceTemplateName)) {
+ return;
+ }
+ if (portNodeTemplateIdsFromAbstract.containsKey(substitutionServiceTemplateName)) {
+ List<String> portList = portNodeTemplateIdsFromAbstract.get(substitutionServiceTemplateName);
+ portList.addAll(abstractLinkedPortNodeTemplates);
+ portNodeTemplateIdsFromAbstract.put(substitutionServiceTemplateName, portList);
+ } else {
+ portNodeTemplateIdsFromAbstract.put(substitutionServiceTemplateName, abstractLinkedPortNodeTemplates);
}
- }
- externalPortNodeTemplates.putIfAbsent(serviceTemplateFileName, externalPorts);
}
- }
- private void updateExternalPortNodeTemplate(NodeTemplate externalPortNodeTemplate) {
- String currentPortNodeType = externalPortNodeTemplate.getType();
- if (nodeTypeExternalNodeType.containsKey(currentPortNodeType)) {
- externalPortNodeTemplate.setType(nodeTypeExternalNodeType.get(currentPortNodeType));
+ private void filterExternalPorts() {
+ for (Map.Entry<String, Map<String, NodeTemplate>> portNodeTemplateEntry : portNodeTemplates.entrySet()) {
+ Map<String, NodeTemplate> externalPorts = new HashMap<>();
+ String serviceTemplateFileName = portNodeTemplateEntry.getKey();
+ Map<String, NodeTemplate> portNodeTemplateMap = portNodeTemplateEntry.getValue();
+ for (Map.Entry<String, NodeTemplate> portNodeTemplate : portNodeTemplateMap.entrySet()) {
+ String nodeTemplateId = portNodeTemplate.getKey();
+ NodeTemplate nodeTemplate = portNodeTemplate.getValue();
+ if (!isInternalPort(serviceTemplateFileName, nodeTemplateId, nodeTemplate)) {
+ //External Port
+ externalPorts.putIfAbsent(nodeTemplateId, nodeTemplate);
+ }
+ }
+ externalPortNodeTemplates.putIfAbsent(serviceTemplateFileName, externalPorts);
+ }
}
- addPortMirroringCapability(externalPortNodeTemplate);
- }
- private void handleExternalPorts(ToscaServiceModel toscaServiceModel) {
- for (Map.Entry<String, Map<String, NodeTemplate>> entry : externalPortNodeTemplates.entrySet()) {
- ServiceTemplate serviceTemplate = toscaServiceModel.getServiceTemplates().get(entry.getKey());
- Map<String, NodeTemplate> serviceTemplateExternalPortNodeTemplates = entry.getValue();
- if (MapUtils.isEmpty(serviceTemplateExternalPortNodeTemplates)) {
- continue;
- }
- handleExternalPortNodeTemplates(serviceTemplate, serviceTemplateExternalPortNodeTemplates);
- addGlobalTypeImport(serviceTemplate);
+ private void updateExternalPortNodeTemplate(NodeTemplate externalPortNodeTemplate) {
+ String currentPortNodeType = externalPortNodeTemplate.getType();
+ if (nodeTypeExternalNodeType.containsKey(currentPortNodeType)) {
+ externalPortNodeTemplate.setType(nodeTypeExternalNodeType.get(currentPortNodeType));
+ }
+ addPortMirroringCapability(externalPortNodeTemplate);
}
- }
- private void handleExternalPortNodeTemplates(ServiceTemplate serviceTemplate,
- Map<String, NodeTemplate> externalPortNodeTemplates) {
- for (Map.Entry<String, NodeTemplate> externalNodeTemplate : externalPortNodeTemplates.entrySet()) {
- updateExternalPortNodeTemplate(externalNodeTemplate.getValue());
- if (Objects.nonNull(DataModelUtil.getSubstitutionMappings(serviceTemplate))) {
- //Add port mirroring capability to substitution mapping for external ports
- addPortMirroringSubstitutionMappingCapability(serviceTemplate, externalNodeTemplate.getKey());
- }
+ private void handleExternalPorts(ToscaServiceModel toscaServiceModel) {
+ for (Map.Entry<String, Map<String, NodeTemplate>> entry : externalPortNodeTemplates.entrySet()) {
+ ServiceTemplate serviceTemplate = toscaServiceModel.getServiceTemplates().get(entry.getKey());
+ Map<String, NodeTemplate> serviceTemplateExternalPortNodeTemplates = entry.getValue();
+ if (MapUtils.isEmpty(serviceTemplateExternalPortNodeTemplates)) {
+ continue;
+ }
+ handleExternalPortNodeTemplates(serviceTemplate, serviceTemplateExternalPortNodeTemplates);
+ addGlobalTypeImport(serviceTemplate);
+ }
}
- }
- private void addPortMirroringSubstitutionMappingCapability(ServiceTemplate serviceTemplate,
- String externalPortNodeTemplateId) {
- List<String> portMirroringCapability = new LinkedList<>();
- portMirroringCapability.add(externalPortNodeTemplateId);
- portMirroringCapability.add(PORT_MIRRORING_CAPABILITY_ID);
- String substitutionMappingCapabilityId = PORT_MIRRORING_CAPABILITY_ID + "_" + externalPortNodeTemplateId;
- DataModelUtil.addSubstitutionMappingCapability(serviceTemplate,
- substitutionMappingCapabilityId, portMirroringCapability);
- }
-
- private void addPortMirroringCapability(NodeTemplate portNodeTemplate) {
- Map<String, Object> portMirroringCapabilityProperties = new HashMap<>();
- PortMirroringConnectionPointDescription connectionPoint = new PortMirroringConnectionPointDescription();
- if (Objects.nonNull(portNodeTemplate.getProperties())) {
- setConnectionPointNetworkRole(portNodeTemplate, connectionPoint);
- }
- if (Objects.nonNull(portNodeTemplate.getRequirements())) {
- setConnectionPointNfcType(portNodeTemplate, connectionPoint);
- }
- if (!connectionPoint.isEmpty()) {
- portMirroringCapabilityProperties.put(PORT_MIRRORING_CAPABILITY_CP_PROPERTY_NAME, connectionPoint);
- DataModelUtil.addNodeTemplateCapability(portNodeTemplate,
- PORT_MIRRORING_CAPABILITY_ID, portMirroringCapabilityProperties, null);
+ private void handleExternalPortNodeTemplates(ServiceTemplate serviceTemplate,
+ Map<String, NodeTemplate> externalPortNodeTemplates) {
+ for (Map.Entry<String, NodeTemplate> externalNodeTemplate : externalPortNodeTemplates.entrySet()) {
+ updateExternalPortNodeTemplate(externalNodeTemplate.getValue());
+ if (Objects.nonNull(DataModelUtil.getSubstitutionMappings(serviceTemplate))) {
+ //Add port mirroring capability to substitution mapping for external ports
+ addPortMirroringSubstitutionMappingCapability(serviceTemplate, externalNodeTemplate.getKey());
+ }
+ }
}
- }
- private void setConnectionPointNfcType(NodeTemplate portNodeTemplate,
- PortMirroringConnectionPointDescription connectionPoint) {
- //Get NFC_Type from the binding requirement node
- Optional<List<RequirementAssignment>> requirementAssignment =
- DataModelUtil.getRequirementAssignment(portNodeTemplate.getRequirements(), ToscaConstants
- .BINDING_REQUIREMENT_ID);
- if (requirementAssignment.isPresent()) {
- RequirementAssignment bindingRequirementAssignment = requirementAssignment.get().get(0);
- String node = bindingRequirementAssignment.getNode();
- connectionPoint.setNfc_type(node);
+ private void addPortMirroringSubstitutionMappingCapability(ServiceTemplate serviceTemplate,
+ String externalPortNodeTemplateId) {
+ List<String> portMirroringCapability = new LinkedList<>();
+ portMirroringCapability.add(externalPortNodeTemplateId);
+ portMirroringCapability.add(PORT_MIRRORING_CAPABILITY_ID);
+ String substitutionMappingCapabilityId = PORT_MIRRORING_CAPABILITY_ID + "_" + externalPortNodeTemplateId;
+ DataModelUtil.addSubstitutionMappingCapability(serviceTemplate,
+ substitutionMappingCapabilityId, portMirroringCapability);
}
- }
- private void setConnectionPointNetworkRole(NodeTemplate portNodeTemplate,
- PortMirroringConnectionPointDescription connectionPoint) {
- Object networkRolePropertyValue =
- portNodeTemplate.getProperties().get(ToscaConstants.PORT_NETWORK_ROLE_PROPERTY_NAME);
- if (Objects.nonNull(networkRolePropertyValue)) {
- Object portMirroringNetworkRolePropertyVal = getClonedObject(networkRolePropertyValue);
- connectionPoint.setNetwork_role(portMirroringNetworkRolePropertyVal);
+ private void addPortMirroringCapability(NodeTemplate portNodeTemplate) {
+ Map<String, Object> portMirroringCapabilityProperties = new HashMap<>();
+ PortMirroringConnectionPointDescription connectionPoint = new PortMirroringConnectionPointDescription();
+ if (Objects.nonNull(portNodeTemplate.getProperties())) {
+ setConnectionPointNetworkRole(portNodeTemplate, connectionPoint);
+ }
+ if (Objects.nonNull(portNodeTemplate.getRequirements())) {
+ setConnectionPointNfcType(portNodeTemplate, connectionPoint);
+ }
+ if (!connectionPoint.isEmpty()) {
+ portMirroringCapabilityProperties.put(PORT_MIRRORING_CAPABILITY_CP_PROPERTY_NAME, connectionPoint);
+ DataModelUtil.addNodeTemplateCapability(portNodeTemplate,
+ PORT_MIRRORING_CAPABILITY_ID, portMirroringCapabilityProperties, null);
+ }
}
- }
- private void addGlobalTypeImport(ServiceTemplate serviceTemplate) {
- List<Map<String, Import>> imports = serviceTemplate.getImports();
- Map<String, Import> openecompIndexImport = new HashMap<>();
- openecompIndexImport.put("openecomp_index",
- HeatToToscaUtil.createServiceTemplateImport(globalTypesServiceTemplate
- .get("openecomp/_index.yml")));
- imports.add(openecompIndexImport);
- }
-
- private boolean isPortNodeTemplate(String nodeType) {
- //Check if node corresponds to a concrete port node
- Set<String> portNodeTypes = getPortNodeTypes();
- return Objects.nonNull(nodeType) && portNodeTypes.contains(nodeType);
- }
+ private void setConnectionPointNfcType(NodeTemplate portNodeTemplate,
+ PortMirroringConnectionPointDescription connectionPoint) {
+ //Get NFC_Type from the binding requirement node
+ Optional<List<RequirementAssignment>> requirementAssignment =
+ DataModelUtil.getRequirementAssignment(portNodeTemplate.getRequirements(), ToscaConstants
+ .BINDING_REQUIREMENT_ID);
+ if (requirementAssignment.isPresent()) {
+ RequirementAssignment bindingRequirementAssignment = requirementAssignment.get().get(0);
+ String node = bindingRequirementAssignment.getNode();
+ connectionPoint.setNfc_type(node);
+ }
+ }
- private Set<String> getPortNodeTypes() {
- return new HashSet<>(Arrays.asList(ToscaNodeType.NEUTRON_PORT,
- ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE,
- ToscaNodeType.CONTRAIL_PORT));
- }
+ private void setConnectionPointNetworkRole(NodeTemplate portNodeTemplate,
+ PortMirroringConnectionPointDescription connectionPoint) {
+ Object networkRolePropertyValue =
+ portNodeTemplate.getProperties().get(ToscaConstants.PORT_NETWORK_ROLE_PROPERTY_NAME);
+ if (Objects.nonNull(networkRolePropertyValue)) {
+ Object portMirroringNetworkRolePropertyVal = getClonedObject(networkRolePropertyValue);
+ connectionPoint.setNetwork_role(portMirroringNetworkRolePropertyVal);
+ }
+ }
- private boolean isSubstitutableNodeTemplate(NodeTemplate nodeTemplate) {
- return Objects.nonNull(nodeTemplate.getDirectives())
- && nodeTemplate.getDirectives()
- .contains(ToscaConstants.NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE);
- }
+ private void addGlobalTypeImport(ServiceTemplate serviceTemplate) {
+ List<Map<String, Import>> imports = serviceTemplate.getImports();
+ Map<String, Import> openecompIndexImport = new HashMap<>();
+ openecompIndexImport.put("openecomp_index",
+ HeatToToscaUtil.createServiceTemplateImport(globalTypesServiceTemplate
+ .get("openecomp/_index.yml")));
+ imports.add(openecompIndexImport);
+ }
- private boolean isInternalPort(String serviceTemplateFileName, String nodeTemplateId,
- NodeTemplate nodeTemplate) {
- return isAbstractInternalPort(serviceTemplateFileName, nodeTemplateId)
- || isConcreteInternalPort(nodeTemplate);
- }
+ private boolean isPortNodeTemplate(String nodeType) {
+ //Check if node corresponds to a concrete port node
+ Set<String> portNodeTypes = getPortNodeTypes();
+ return Objects.nonNull(nodeType) && portNodeTypes.contains(nodeType);
+ }
- private boolean isAbstractInternalPort(String serviceTemplateFileName, String nodeTemplateId) {
- //Check if port corresponds to an abstract internal port
- return portNodeTemplateIdsFromAbstract.containsKey(serviceTemplateFileName)
- && portNodeTemplateIdsFromAbstract.get(serviceTemplateFileName).contains(nodeTemplateId);
- }
+ private Set<String> getPortNodeTypes() {
+ return ImmutableSet.of(ToscaNodeType.NEUTRON_PORT,
+ ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE, ToscaNodeType.CONTRAIL_PORT);
+ }
+ private boolean isSubstitutableNodeTemplate(NodeTemplate nodeTemplate) {
+ return Objects.nonNull(nodeTemplate.getDirectives())
+ && nodeTemplate.getDirectives()
+ .contains(ToscaConstants.NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE);
+ }
- private boolean isConcreteInternalPort(NodeTemplate nodeTemplate) {
- //Check if node template contains a link requirement
- List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
- if (Objects.isNull(requirements)) {
- return false;
+ private boolean isInternalPort(String serviceTemplateFileName, String nodeTemplateId,
+ NodeTemplate nodeTemplate) {
+ return isAbstractInternalPort(serviceTemplateFileName, nodeTemplateId)
+ || isConcreteInternalPort(nodeTemplate);
}
- for (Map<String, RequirementAssignment> requirement : requirements) {
- String requirementId = requirement.keySet().iterator().next();
- if (requirementId.equals(ToscaConstants.LINK_REQUIREMENT_ID)) {
- return true;
- }
+
+ private boolean isAbstractInternalPort(String serviceTemplateFileName, String nodeTemplateId) {
+ //Check if port corresponds to an abstract internal port
+ return portNodeTemplateIdsFromAbstract.containsKey(serviceTemplateFileName)
+ && portNodeTemplateIdsFromAbstract.get(serviceTemplateFileName).contains(nodeTemplateId);
}
- return false;
- }
- private static Map<String, String> initializeNodeTypeExternalNodeType() {
- Map<String, String> nodeTypeExternalNodeType = new HashMap<>(3);
- nodeTypeExternalNodeType.put(ToscaNodeType.CONTRAIL_PORT, ToscaNodeType.EXTERNAL_CONTRAIL_PORT);
- nodeTypeExternalNodeType.put(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE, ToscaNodeType.EXTERNAL_VMI_PORT);
- nodeTypeExternalNodeType.put(ToscaNodeType.NEUTRON_PORT, ToscaNodeType.EXTERNAL_NEUTRON_PORT);
- return nodeTypeExternalNodeType;
- }
+ private boolean isConcreteInternalPort(NodeTemplate nodeTemplate) {
+ //Check if node template contains a link requirement
+ List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
+ if (Objects.isNull(requirements)) {
+ return false;
+ }
+ for (Map<String, RequirementAssignment> requirement : requirements) {
+ String requirementId = requirement.keySet().iterator().next();
+ if (requirementId.equals(ToscaConstants.LINK_REQUIREMENT_ID)) {
+ return true;
+ }
+ }
+ return false;
+ }
}