diff options
author | Shnaider, Marina (ms7589) <ms7589@intl.att.com> | 2018-08-08 17:47:32 +0300 |
---|---|---|
committer | Avi Gaffa <avi.gaffa@amdocs.com> | 2018-08-12 07:19:36 +0000 |
commit | aa7e0f9134195fe89bb96b3971d7821df217ff32 (patch) | |
tree | ce20341ba1a32c839765bf5dfb072bb169a365ff /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main | |
parent | c15ef65197789965734fb3aa90e9ea50bda05045 (diff) |
SRIOV for SDNF
Adding Fabric Configuration capability to the VFC/ compute
Change-Id: Ia518c56b75ec5355af94c28ac0b6bcfe11bc0d1e
Issue-ID: SDC-1601
Signed-off-by: Shnaider, Marina (ms7589) <ms7589@intl.att.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main')
2 files changed, 55 insertions, 7 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java index 2d283d301a..4054537eb2 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java @@ -603,6 +603,19 @@ public class HeatToToscaUtil { && MapUtils.isNotEmpty(resource.getProperties()) && resource.getProperties().containsKey( HeatConstants.VMI_REFS_PROPERTY_NAME); } + + public static boolean isValueSpecsPropertyExists(Resource resource) { + return MapUtils.isNotEmpty(resource.getProperties()) && resource.getProperties().containsKey( + HeatConstants.VALUE_SPECS_PROPERTY_NAME); + } + + public static Optional<Object> getResourceProperty(Resource resource, String propertyName){ + Map<String, Object> properties = resource.getProperties(); + if(MapUtils.isNotEmpty(properties) && properties.containsKey(propertyName)){ + return Optional.ofNullable(resource.getProperties().get(propertyName)); + } + return Optional.empty(); + } public static String getSubInterfaceResourceType(Resource resource) { if (!HeatToToscaUtil.isYamlFile(resource.getType())) { @@ -1224,7 +1237,7 @@ public class HeatToToscaUtil { exposedCapabilitiesDefinition = toscaAnalyzerService .calculateExposedCapabilities(nodeTypeCapabilitiesDefinition, fullFilledRequirementsDefinition); - DataModelUtil.addNodeTypeCapabilitiesDef(substitutionNodeType, exposedCapabilitiesDefinition); + DataModelUtil.setNodeTypeCapabilitiesDef(substitutionNodeType, exposedCapabilitiesDefinition); return substitutionMapping; } diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java index e70ca5f2f9..3f5e41745b 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java @@ -36,6 +36,8 @@ import org.onap.sdc.tosca.datatypes.model.NodeType; import org.onap.sdc.tosca.datatypes.model.RelationshipTemplate; import org.onap.sdc.tosca.datatypes.model.RequirementAssignment; import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; +import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition; +import org.openecomp.sdc.heat.datatypes.HeatBoolean; import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes; import org.openecomp.sdc.heat.datatypes.model.PropertiesMapKeyTypes; @@ -67,6 +69,8 @@ public class ResourceTranslationNovaServerImpl extends ResourceTranslationBase { private static final Logger logger = LoggerFactory.getLogger(ResourceTranslationNovaServerImpl.class); private static final String BLOCK_DEVICE_MAPPING_DEVICE_NAME = "device_name"; private static final String VOL_ATTACH_DEVICE_PROPERTY_NAME = "device"; + private static final String FABRIC_CONFIGURATION_KEY = "fabric_configuration_monitoring"; + @Override protected void translate(TranslateTo translateTo) { @@ -350,14 +354,43 @@ public class ResourceTranslationNovaServerImpl extends ResourceTranslationBase { } List<Map<String, Object>> heatNetworkList = (List<Map<String, Object>>) networks; - + + for (Map<String, Object> heatNetwork : heatNetworkList) { - getOrTranslatePortTemplate(translateTo, heatNetwork.get( - Constants.PORT_PROPERTY_NAME), translatedId, novaNodeTemplate); + + Optional<Resource> portResourceOp = getOrTranslatePortTemplate(translateTo, heatNetwork.get( + Constants.PORT_PROPERTY_NAME), translatedId, novaNodeTemplate); + portResourceOp.ifPresent(portResource -> handleFabricConfiguration(translateTo, novaNodeTemplate.getType(), portResource)); + } + + } + + private void handleFabricConfiguration(TranslateTo translateTo, String resourceType, Resource portResource ){ + + Optional<Object> valueSpacesProperty = HeatToToscaUtil.getResourceProperty(portResource, HeatConstants.VALUE_SPECS_PROPERTY_NAME); + + valueSpacesProperty.filter(props -> props instanceof Map && MapUtils.isNotEmpty((Map)props)).ifPresent(valueSpecs ->{ + Object value = ((Map)(valueSpecs)).get(HeatConstants.ATT_FABRIC_CONFIGURATION_REQUIRED); + if(value!= null && HeatBoolean.eval(value )){ + addFabricConfigurationCapability(translateTo, resourceType); + } + + }); + + } + + private void addFabricConfigurationCapability(TranslateTo translateTo, String localType){ + + ServiceTemplate serviceTemplate = translateTo.getServiceTemplate(); + Map<String, CapabilityDefinition> mapCapabilities = new HashMap<>(); + CapabilityDefinition fabricConfigurationCap = new CapabilityDefinition(); + fabricConfigurationCap.setType(ToscaCapabilityType.FABRIC_CONFIGURATION); + mapCapabilities.put(FABRIC_CONFIGURATION_KEY, fabricConfigurationCap); + DataModelUtil.addNodeTypeCapabilitiesDef (DataModelUtil.getNodeType(serviceTemplate, localType), mapCapabilities); } - private void getOrTranslatePortTemplate(TranslateTo translateTo, + private Optional<Resource> getOrTranslatePortTemplate(TranslateTo translateTo, Object port, String novaServerResourceId, NodeTemplate novaNodeTemplate) { @@ -367,7 +400,7 @@ public class ResourceTranslationNovaServerImpl extends ResourceTranslationBase { Optional<AttachedResourceId> attachedPortId = HeatToToscaUtil .extractAttachedResourceId(heatFileName, heatOrchestrationTemplate, context, port); if (!attachedPortId.isPresent() || !attachedPortId.get().isGetResource()) { - return; + return Optional.empty(); } String resourceId = (String) attachedPortId.get().getEntityId(); Resource portResource = HeatToToscaUtil.getResource(heatOrchestrationTemplate, resourceId, heatFileName); @@ -377,7 +410,7 @@ public class ResourceTranslationNovaServerImpl extends ResourceTranslationBase { + "Supported types are: {}, {}", resourceId, portResource.getType(), HeatResourcesTypes.NEUTRON_PORT_RESOURCE_TYPE.getHeatResource(), HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE.getHeatResource()); - return; + return Optional.empty(); } else if (HeatResourcesTypes.CONTRAIL_V2_VIRTUAL_MACHINE_INTERFACE_RESOURCE_TYPE .getHeatResource().equals(portResource.getType())) { Map<String, Object> properties = portResource.getProperties(); @@ -400,7 +433,9 @@ public class ResourceTranslationNovaServerImpl extends ResourceTranslationBase { logger.warn("NovaServer connect to port resource with id : {} and type : {}. This resource type" + " is not supported, therefore the connection to the port is ignored.", resourceId, portResource.getType()); + return Optional.empty(); } + return Optional.ofNullable(portResource); } private boolean isSupportedPortResource(Resource portResource) { |