- public List<Resource> processResourceToscas(List<NodeTemplate> serviceNodes, Map<String, String> idTypeStore) {
- List<Resource> resources = new LinkedList<>();
- for (NodeTemplate serviceNode : serviceNodes) {
- if (serviceNode.getMetaData() != null) {
- List<NodeTemplate> resourceNodes = csarHelper.getNodeTemplateChildren(serviceNode);
- processResourceTosca(idTypeStore, resources, serviceNode, resourceNodes);
- } else {
- log.warn(ApplicationMsgs.MISSING_SERVICE_METADATA, serviceNode.getName());
+ private List<Group> getVfModuleGroups(NodeTemplate serviceVfNode) {
+ String instanceName = SdcToscaUtility.normaliseComponentInstanceName(serviceVfNode.getName());
+
+ return ToscaParser.getServiceLevelGroups(csarHelper).stream()
+ .filter(group -> "org.openecomp.groups.VfModule".equals(group.getTypeDefinition().getType())
+ && group.getName().startsWith(instanceName))
+ .collect(Collectors.toList());
+ }
+
+ /**
+ * Add each of the resources to the specified resourceModel. If the resourceModel type is Allotted Resource then
+ * validate that one of the resources is a Providing Service.
+ *
+ * @param resourceModel
+ * parent Resource model
+ * @param resourceNodeTemplates
+ * the child node templates of the resourceModel
+ * @throws XmlArtifactGenerationException
+ * if the resourceModel is an ALLOTTED_RESOURCE with no Providing Service
+ */
+ public void processResourceModels(Resource resourceModel, List<NodeTemplate> resourceNodeTemplates)
+ throws XmlArtifactGenerationException {
+ boolean foundProvidingService = false;
+
+ for (NodeTemplate resourceNodeTemplate : resourceNodeTemplates) {
+ String nodeTypeName = resourceNodeTemplate.getType();
+ Metadata metadata = resourceNodeTemplate.getMetaData();
+ String metaDataType = Optional.ofNullable(metadata).map(m -> m.getValue("type")).orElse(nodeTypeName);
+ Resource model = Model.getModelFor(nodeTypeName, metaDataType);
+
+ if (metadata != null && hasAllottedResource(metadata.getAllProperties())
+ && model.hasWidgetType("VSERVER")) {
+ model = new Resource(WidgetType.valueOf("ALLOTTED_RESOURCE"), false);
+ Map<String, Object> props = new HashMap<>();
+ props.put("providingService", true);
+ model.setProperties(props);