diff options
Diffstat (limited to 'src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java')
-rw-r--r-- | src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java | 57 |
1 files changed, 38 insertions, 19 deletions
diff --git a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java index b85ffab..e5141a5 100644 --- a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java +++ b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java @@ -28,8 +28,10 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Properties; import java.util.stream.Collectors; + import org.onap.aai.babel.logging.ApplicationMsgs; import org.onap.aai.babel.logging.LogHelper; import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; @@ -209,7 +211,7 @@ public class ArtifactGeneratorToscaParser { resourceModel.populateModelIdentificationInformation(serviceMetadata); idTypeStore.remove(resourceModel.getModelNameVersionId()); - processVfTosca(idTypeStore, resourceModel, resourceNodes); + processResourceModels(idTypeStore, resourceModel, resourceNodes); if (csarHelper.getServiceVfList() != null) { processVfModules(resources, resourceModel, serviceNode); @@ -407,29 +409,17 @@ public class ArtifactGeneratorToscaParser { e -> e.getValue().getValue() == null ? "" : e.getValue().getValue().toString())); } - private void processVfTosca(Map<String, String> idTypeStore, Model resourceModel, + private void processResourceModels(Map<String, String> idTypeStore, Model resourceModel, List<NodeTemplate> resourceNodes) { boolean foundProvidingService = false; for (NodeTemplate resourceNodeTemplate : resourceNodes) { String nodeTypeName = normaliseNodeTypeName(resourceNodeTemplate); - Model resourceNode = Model.getModelFor(nodeTypeName); - if (resourceNode instanceof ProvidingService) { - foundProvidingService = true; - Map<String, Property> nodeProperties = resourceNodeTemplate.getProperties(); - if (nodeProperties.get("providing_service_uuid") == null - || nodeProperties.get("providing_service_invariant_uuid") == null) { - throw new IllegalArgumentException(String.format(GENERATOR_AAI_PROVIDING_SERVICE_METADATA_MISSING, - resourceModel.getModelId())); - } - Map<String, String> properties = populateStringProperties(nodeProperties); - properties.put(VERSION, "1.0"); - resourceNode.populateModelIdentificationInformation(properties); - resourceModel.addResource((Resource) resourceNode); - } else if (resourceNode instanceof Resource && !(resourceNode.getWidgetType().equals(Widget.Type.L3_NET))) { - idTypeStore.put(resourceNode.getModelNameVersionId(), nodeTypeName); - resourceModel.addResource((Resource) resourceNode); - } + Metadata metaData = resourceNodeTemplate.getMetaData(); + String metaDataType = Optional.ofNullable(metaData).map(m -> m.getValue("type")).orElse(nodeTypeName); + Model resourceNode = Model.getModelFor(nodeTypeName, metaDataType); + foundProvidingService |= processModel(idTypeStore, resourceModel, resourceNodeTemplate, nodeTypeName, + metaData, resourceNode); } if (resourceModel instanceof AllotedResource && !foundProvidingService) { @@ -438,4 +428,33 @@ public class ArtifactGeneratorToscaParser { } } + private boolean processModel(Map<String, String> idTypeStore, Model resourceModel, + NodeTemplate resourceNodeTemplate, String nodeTypeName, Metadata metaData, Model resourceNode) { + boolean foundProvidingService = false; + if (resourceNode instanceof ProvidingService) { + foundProvidingService = true; + processProvidingService(resourceModel, resourceNodeTemplate, resourceNode); + } else if (resourceNode instanceof Resource && !(resourceNode.getWidgetType().equals(Widget.Type.L3_NET))) { + if (metaData != null) { + resourceNode.populateModelIdentificationInformation(metaData.getAllProperties()); + } + idTypeStore.put(resourceNode.getModelNameVersionId(), nodeTypeName); + resourceModel.addResource((Resource) resourceNode); + } + return foundProvidingService; + } + + private void processProvidingService(Model resourceModel, NodeTemplate resourceNodeTemplate, Model resourceNode) { + Map<String, Property> nodeProperties = resourceNodeTemplate.getProperties(); + if (nodeProperties.get("providing_service_uuid") == null + || nodeProperties.get("providing_service_invariant_uuid") == null) { + throw new IllegalArgumentException( + String.format(GENERATOR_AAI_PROVIDING_SERVICE_METADATA_MISSING, resourceModel.getModelId())); + } + Map<String, String> properties = populateStringProperties(nodeProperties); + properties.put(VERSION, "1.0"); + resourceNode.populateModelIdentificationInformation(properties); + resourceModel.addResource((Resource) resourceNode); + } + } |