aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authormark.j.leonard <mark.j.leonard@gmail.com>2018-11-09 18:03:13 +0000
committermark.j.leonard <mark.j.leonard@gmail.com>2018-11-09 18:03:13 +0000
commit3452a390f7f04f4873a47718e2d8e558e92ce03a (patch)
tree46943b2c623044f70e62eab22a30bc140292761c /src/main/java
parent34445a97233549a0ebaf4359a733e11112063bc1 (diff)
Add support for ResourceInstanceGroup
Refactor existing code and add a Junit test for the relevant method. Change-Id: I66703f1d2e93173df4676070faf66e289360609a Issue-ID: AAI-1884 Signed-off-by: mark.j.leonard <mark.j.leonard@gmail.com>
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java76
1 files changed, 50 insertions, 26 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 e5141a5..80b75b0 100644
--- a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java
+++ b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java
@@ -31,7 +31,6 @@ 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;
@@ -234,13 +233,14 @@ public class ArtifactGeneratorToscaParser {
* @param serviceNode
* @return resources for which XML Models should be generated
*/
- private List<Resource> processInstanceGroups(Model resourceModel, NodeTemplate serviceNode) {
+ List<Resource> processInstanceGroups(Model resourceModel, NodeTemplate serviceNode) {
List<Resource> resources = new ArrayList<>();
if (csarHelper.getNodeTemplateByName(serviceNode.getName()).getSubMappingToscaTemplate() != null) {
List<Group> serviceGroups = csarHelper.getGroupsOfOriginOfNodeTemplate(serviceNode);
for (Group group : serviceGroups) {
if (WidgetConfigurationUtil.isSupportedInstanceGroup(group.getType())) {
- resources.addAll(processInstanceGroup(resourceModel, group));
+ resources.addAll(processInstanceGroup(resourceModel, group.getMemberNodes(),
+ group.getMetadata().getAllProperties(), group.getProperties()));
}
}
}
@@ -248,43 +248,57 @@ public class ArtifactGeneratorToscaParser {
}
/**
- * Create an Instance Group Model for the supplied Service Group and relate this to the supplied resource Model.
+ * Create an Instance Group Model and populate it with the supplied data.
*
* @param resourceModel the Resource node template Model
- * @param group the Service Group
+ * @param memberNodes the Resources and Widgets belonging to the Group
+ * @param metaProperties the metadata of the Group
+ * @param properties the properties of the Group
* @return the Instance Group and Member resource models
*/
- private List<Resource> processInstanceGroup(Model resourceModel, Group group) {
+ private List<Resource> processInstanceGroup(Model resourceModel, ArrayList<NodeTemplate> memberNodes,
+ Map<String, String> metaProperties, Map<String, Property> properties) {
List<Resource> resources = new ArrayList<>();
Resource groupModel = new InstanceGroup();
- groupModel.populateModelIdentificationInformation(group.getMetadata().getAllProperties());
- groupModel.populateModelIdentificationInformation(populateStringProperties(group.getProperties()));
+ groupModel.populateModelIdentificationInformation(metaProperties);
+ groupModel.populateModelIdentificationInformation(populateStringProperties(properties));
resourceModel.addResource(groupModel);
resources.add(groupModel);
- List<NodeTemplate> members = group.getMemberNodes();
- if (members != null && !members.isEmpty()) {
- for (NodeTemplate nodeTemplate : members) {
- String nodeTypeName = normaliseNodeTypeName(nodeTemplate);
- Model memberModel = Model.getModelFor(nodeTypeName, nodeTemplate.getMetaData().getValue("type"));
- memberModel.populateModelIdentificationInformation(nodeTemplate.getMetaData().getAllProperties());
- if (memberModel instanceof Resource) {
- log.debug("Generating grouped Resource " + nodeTypeName);
- groupModel.addResource((Resource) memberModel);
- resources.add((Resource) memberModel);
- } else {
- log.debug("Generating grouped Widget " + nodeTypeName);
- groupModel.addWidget((Widget) memberModel);
- }
- }
+ if (memberNodes != null && !memberNodes.isEmpty()) {
+ resources.addAll(generateResourcesAndWidgets(memberNodes, groupModel));
}
return resources;
}
/**
+ * @param memberNodes
+ * @param groupModel
+ * @return
+ */
+ private List<Resource> generateResourcesAndWidgets(final ArrayList<NodeTemplate> memberNodes,
+ final Resource groupModel) {
+ List<Resource> resources = new ArrayList<>();
+ for (NodeTemplate nodeTemplate : memberNodes) {
+ String nodeTypeName = normaliseNodeTypeName(nodeTemplate);
+ Model memberModel = Model.getModelFor(nodeTypeName, nodeTemplate.getMetaData().getValue("type"));
+ memberModel.populateModelIdentificationInformation(nodeTemplate.getMetaData().getAllProperties());
+
+ log.debug(String.format("Generating grouped %s (%s) from TOSCA type %s",
+ memberModel.getClass().getSuperclass().getSimpleName(), memberModel.getClass(), nodeTypeName));
+
+ addRelatedModel(groupModel, memberModel);
+ if (memberModel instanceof Resource) {
+ resources.add((Resource) memberModel);
+ }
+ }
+ return resources;
+ }
+
+ /**
* Add the supplied Node Template to the Service, provided that it is a valid Resource or Widget. If the Node
* Template is a Resource type, this is also recorded in the supplied nodesById Map.
*
@@ -300,16 +314,26 @@ public class ArtifactGeneratorToscaParser {
model.populateModelIdentificationInformation(nodeTemplate.getMetaData().getAllProperties());
}
+ addRelatedModel(service, model);
if (model instanceof Resource) {
nodesById.put(model.getModelNameVersionId(), nodeTypeName);
- service.addResource((Resource) model);
- } else {
- service.addWidget((Widget) model);
}
}
}
/**
+ * @param model
+ * @param relation
+ */
+ private void addRelatedModel(final Model model, final Model relation) {
+ if (relation instanceof Resource) {
+ model.addResource((Resource) relation);
+ } else {
+ model.addWidget((Widget) relation);
+ }
+ }
+
+ /**
* Process TOSCA Group information for VF Modules.
*
* @param resources