X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fbabel%2Fparser%2FArtifactGeneratorToscaParser.java;h=c2d34c930f4fcad6f250bdacb21cd45b0355b44a;hb=bfde3ef00beb3c6f31cebfd12e90b9b9cdcc492e;hp=c79c2ef9dbb1b19a91a2ca404abab637484b3323;hpb=f5dae47e293ae63a7a2f18230b772a699a52566f;p=aai%2Fbabel.git 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 c79c2ef..c2d34c9 100644 --- a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java +++ b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2019 European Software Marketing Ltd. + * Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,6 @@ import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; import java.io.BufferedReader; import java.io.File; -import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; @@ -33,7 +32,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Properties; import java.util.stream.Collectors; import java.util.stream.Stream; import org.onap.aai.babel.logging.LogHelper; @@ -43,7 +41,8 @@ import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; import org.onap.aai.babel.xml.generator.model.Model; import org.onap.aai.babel.xml.generator.model.Resource; import org.onap.aai.babel.xml.generator.model.Widget; -import org.onap.aai.babel.xml.generator.model.Widget.Type; +import org.onap.aai.babel.xml.generator.model.WidgetType; +import org.onap.aai.babel.xml.generator.types.ModelType; import org.onap.aai.cl.api.Logger; import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; import org.onap.sdc.toscaparser.api.Group; @@ -59,7 +58,6 @@ public class ArtifactGeneratorToscaParser { private static Logger log = LogHelper.INSTANCE; - public static final String PROPERTY_ARTIFACT_GENERATOR_CONFIG_FILE = "artifactgenerator.config"; public static final String PROPERTY_TOSCA_MAPPING_FILE = "tosca.mappings.config"; public static final String GENERATOR_AAI_CONFIGLOCATION_NOT_FOUND = @@ -92,50 +90,9 @@ public class ArtifactGeneratorToscaParser { this.csarHelper = csarHelper; } - /** - * Get or create the artifact description. - * - * @param model - * the artifact model - * @return the artifact model's description - */ - public static String getArtifactDescription(Model model) { - switch (model.getModelType()) { - case SERVICE: - return "AAI Service Model"; - case RESOURCE: - return "AAI Resource Model"; - default: - return model.getModelDescription(); - } - } - - /** - * Initializes the Widget to UUID mapping configuration. - * - * @throws IOException - */ - public static void initWidgetConfiguration() throws IOException { - log.debug("Getting Widget Configuration"); - String configLocation = System.getProperty(PROPERTY_ARTIFACT_GENERATOR_CONFIG_FILE); - if (configLocation != null) { - File file = new File(configLocation); - if (file.exists()) { - Properties properties = new Properties(); - properties.load(new FileInputStream(file)); - WidgetConfigurationUtil.setConfig(properties); - } else { - throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGFILE_NOT_FOUND, configLocation)); - } - } else { - throw new IllegalArgumentException( - String.format(GENERATOR_AAI_CONFIGLOCATION_NOT_FOUND, PROPERTY_ARTIFACT_GENERATOR_CONFIG_FILE)); - } - } - /** * Initializes the group filtering and TOSCA to Widget mapping configuration. - * + * * @param configLocation * the pathname to the JSON mappings file * @throws IOException @@ -172,6 +129,7 @@ public class ArtifactGeneratorToscaParser { * @param serviceNodeTemplate * @return resources for which XML Models should be generated * @throws XmlArtifactGenerationException + * if there is no configuration defined for a member Widget of an instance group */ public List processInstanceGroups(Model resourceModel, NodeTemplate serviceNodeTemplate) throws XmlArtifactGenerationException { @@ -206,21 +164,25 @@ public class ArtifactGeneratorToscaParser { } public Resource createInstanceGroupModel(Map properties) { - Resource groupModel = new Resource(Type.INSTANCE_GROUP, true); + Resource groupModel = new Resource(WidgetType.valueOf("INSTANCE_GROUP"), true); groupModel.populateModelIdentificationInformation(properties); return groupModel; } /** + * Add the resource/widget to the specified model. + * * @param model * @param relation + * resource or widget model to add * @throws XmlArtifactGenerationException + * if the relation is a widget and there is no configuration defined for the relation's widget type */ public void addRelatedModel(final Model model, final Resource relation) throws XmlArtifactGenerationException { - if (relation.isResource()) { + if (relation.getModelType() == ModelType.RESOURCE) { model.addResource(relation); } else { - model.addWidget(Widget.getWidget(relation.getWidgetType())); + model.addWidget(Widget.createWidget(relation.getWidgetType())); } } @@ -239,17 +201,18 @@ public class ArtifactGeneratorToscaParser { * @param model * @param serviceNode * @throws XmlArtifactGenerationException + * if the configured widget mappings do not support the widget type of a VF Module */ public void processVfModules(List resources, Model resourceModel, NodeTemplate serviceNode) throws XmlArtifactGenerationException { - // Get the customisation UUID for each VF node and use it to get its Groups + // Get the customization UUID for each VF node and use it to get its Groups String uuid = csarHelper.getNodeTemplateCustomizationUuid(serviceNode); List serviceGroups = csarHelper.getVfModulesByVf(uuid); // Process each VF Group for (Group serviceGroup : serviceGroups) { Model groupModel = Model.getModelFor(serviceGroup.getType()); - if (groupModel.getWidgetType() == Type.VFMODULE) { + if (groupModel.hasWidgetType("VFMODULE")) { processVfModule(resources, resourceModel, serviceGroup, serviceNode, (Resource) groupModel); } } @@ -269,8 +232,8 @@ public class ArtifactGeneratorToscaParser { Resource model = Model.getModelFor(nodeTypeName, metaDataType); if (metadata != null && hasAllottedResource(metadata.getAllProperties()) - && model.getWidgetType() == Type.VSERVER) { - model = new Resource(Type.ALLOTTED_RESOURCE, false); + && model.hasWidgetType("VSERVER")) { + model = new Resource(WidgetType.valueOf("ALLOTTED_RESOURCE"), false); Map props = new HashMap<>(); props.put("providingService", true); model.setProperties(props); @@ -279,7 +242,7 @@ public class ArtifactGeneratorToscaParser { foundProvidingService |= processModel(resourceModel, metadata, model, resourceNodeTemplate.getProperties()); } - if (resourceModel.getWidgetType() == Type.ALLOTTED_RESOURCE && !foundProvidingService) { + if (resourceModel.hasWidgetType("ALLOTTED_RESOURCE") && !foundProvidingService) { final String modelInvariantId = resourceModel.getModelId(); throw new IllegalArgumentException(String.format(GENERATOR_AAI_PROVIDING_SERVICE_MISSING, modelInvariantId == null ? "" : modelInvariantId)); @@ -299,6 +262,7 @@ public class ArtifactGeneratorToscaParser { * the properties of the Group * @return the Instance Group and Member resource models * @throws XmlArtifactGenerationException + * if there is no configuration defined for one of the member Widgets */ private List processInstanceGroup(Model resourceModel, ArrayList memberNodes, Map metaProperties, Map properties) @@ -317,8 +281,10 @@ public class ArtifactGeneratorToscaParser { /** * @param memberNodes * @param groupModel - * @return + * @return a list of Resources * @throws XmlArtifactGenerationException + * if a member node template is a widget and there is no configuration defined for that relation's + * widget type */ private List generateResourcesAndWidgets(final ArrayList memberNodes, final Resource groupModel) throws XmlArtifactGenerationException { @@ -341,7 +307,7 @@ public class ArtifactGeneratorToscaParser { memberModel.getClass().getSuperclass().getSimpleName(), memberModel.getClass(), nodeTypeName)); addRelatedModel(groupModel, memberModel); - if (memberModel.isResource()) { + if (memberModel.getModelType() == ModelType.RESOURCE) { resources.add(memberModel); } } @@ -349,6 +315,15 @@ public class ArtifactGeneratorToscaParser { return resources; } + /** + * @param resources + * @param vfModel + * @param groupDefinition + * @param serviceNode + * @param groupModel + * @throws XmlArtifactGenerationException + * if the configured widget mappings do not support the widget type of a VF Module + */ private void processVfModule(List resources, Model vfModel, Group groupDefinition, NodeTemplate serviceNode, Resource groupModel) throws XmlArtifactGenerationException { groupModel.populateModelIdentificationInformation( @@ -363,6 +338,12 @@ public class ArtifactGeneratorToscaParser { } } + /** + * @param groupModel + * @param members + * @throws XmlArtifactGenerationException + * if the configured widget mappings do not support the widget type of a member + */ private void processVfModuleGroup(Resource groupModel, List members) throws XmlArtifactGenerationException { if (members != null && !members.isEmpty()) { @@ -377,23 +358,26 @@ public class ArtifactGeneratorToscaParser { /** * Process the Widget members of a VF Module Group - * + * * @param group + * the group resource model * @param member + * the group member to process * @throws XmlArtifactGenerationException + * if the configured widget mappings do not support the widget type of the member */ private void processGroupMembers(Resource group, NodeTemplate member) throws XmlArtifactGenerationException { Resource resource = Model.getModelFor(member.getType()); log.debug(member.getType() + " mapped to " + resource); - if (resource.getWidgetType() == Type.L3_NET) { + if (resource.hasWidgetType("L3_NET")) { // An l3-network inside a vf-module is treated as a Widget - resource.setIsResource(false); + resource.setModelType(ModelType.WIDGET); } - if (!resource.isResource()) { - Widget widget = Widget.getWidget(resource.getWidgetType()); + if (resource.getModelType() == ModelType.WIDGET) { + Widget widget = Widget.createWidget(resource.getWidgetType()); widget.addKey(member.getName()); // Add the widget element encountered to the Group model group.addWidget(widget); @@ -433,12 +417,12 @@ public class ArtifactGeneratorToscaParser { if (foundProvidingService) { processProvidingService(resourceModel, resourceNode, nodeProperties); - } else if (resourceNode != null && resourceNode.isResource() - && resourceNode.getWidgetType() != Widget.Type.L3_NET) { + } else if (resourceNode != null && resourceNode.getModelType() == ModelType.RESOURCE + && !resourceNode.hasWidgetType("L3_NET")) { if (metaData != null) { resourceNode.populateModelIdentificationInformation(metaData.getAllProperties()); } - resourceModel.addResource((Resource) resourceNode); + resourceModel.addResource(resourceNode); } return foundProvidingService; }