* ============LICENSE_START=======================================================
* org.onap.aai
* ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 European Software Marketing Ltd.
+ * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 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.
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.aai.babel.xml.generator.api;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.onap.aai.babel.logging.ApplicationMsgs;
import org.onap.aai.babel.xml.generator.data.GroupType;
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.ProvidingService;
import org.onap.aai.babel.xml.generator.model.Resource;
import org.onap.aai.babel.xml.generator.model.Service;
import org.onap.aai.babel.xml.generator.model.TunnelXconnectWidget;
+import org.onap.aai.babel.xml.generator.model.Widget.Type;
import org.onap.aai.cl.api.Logger;
import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
import org.onap.sdc.toscaparser.api.Group;
import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.elements.Metadata;
import org.slf4j.MDC;
public class AaiArtifactGenerator implements ArtifactGenerator {
return createErrorData(e);
}
+ String configLocation = System.getProperty(ArtifactGeneratorToscaParser.PROPERTY_TOSCA_MAPPING_FILE);
+ if (configLocation == null) {
+ throw new IllegalArgumentException(
+ String.format(ArtifactGeneratorToscaParser.GENERATOR_AAI_CONFIGLOCATION_NOT_FOUND,
+ ArtifactGeneratorToscaParser.PROPERTY_TOSCA_MAPPING_FILE));
+ }
+
try {
ArtifactGeneratorToscaParser.initWidgetConfiguration();
- ArtifactGeneratorToscaParser.initGroupFilterConfiguration();
+ ArtifactGeneratorToscaParser.initToscaMappingsConfiguration(configLocation);
ISdcCsarHelper csarHelper =
SdcToscaParserFactory.getInstance().getSdcCsarHelper(csarPath.toAbsolutePath().toString());
return generateAllArtifacts(validateServiceVersion(additionalParams), csarHelper);
*
* @param serviceVersion
* @param csarHelper
- * interface to the TOSCA parser
+ * interface to the TOSCA parser
* @return the generated Artifacts (containing XML models)
*/
private GenerationData generateAllArtifacts(final String serviceVersion, ISdcCsarHelper csarHelper) {
for (Resource resource : resources) {
generateResourceArtifact(generationData, resource);
for (Resource childResource : resource.getResources()) {
- if (!(childResource instanceof ProvidingService)) {
+ boolean isProvidingService =
+ (boolean) Optional.ofNullable(childResource.getProperties().get("providingService")) //
+ .orElse(false);
+ if (!isProvidingService) {
generateResourceArtifact(generationData, childResource);
}
}
private void generateModelFromNodeTemplate(ISdcCsarHelper csarHelper, Service serviceModel,
List<Resource> resources, final List<Group> serviceGroups, ArtifactGeneratorToscaParser parser,
NodeTemplate nodeTemplate) {
- String nodeTypeName = parser.normaliseNodeTypeName(nodeTemplate);
- Model model = Model.getModelFor(nodeTypeName, nodeTemplate.getMetaData().getValue("type"));
+ Resource model = getModelFor(parser, nodeTemplate);
+
if (model != null) {
if (nodeTemplate.getMetaData() != null) {
model.populateModelIdentificationInformation(nodeTemplate.getMetaData().getAllProperties());
}
parser.addRelatedModel(serviceModel, model);
- if (model instanceof Resource) {
- generateResourceModel(csarHelper, resources, parser, nodeTemplate, nodeTypeName);
+ if (model.isResource()) {
+ generateResourceModel(csarHelper, resources, parser, nodeTemplate);
}
} else {
for (Group group : serviceGroups) {
- if (group.getMembers().contains(nodeTemplate.getName())
+ ArrayList<String> members = group.getMembers();
+ if (members != null && members.contains(nodeTemplate.getName())
&& WidgetConfigurationUtil.isSupportedInstanceGroup(group.getType())) {
log.debug(String.format("Adding group %s (type %s) with members %s", group.getName(),
- group.getType(), group.getMembers()));
+ group.getType(), members));
Resource groupModel = parser.createInstanceGroupModel(
parser.mergeProperties(group.getMetadata().getAllProperties(), group.getProperties()));
}
}
- private void generateResourceModel(ISdcCsarHelper csarHelper, List<Resource> resources,
- ArtifactGeneratorToscaParser parser, NodeTemplate nodeTemplate, String nodeTypeName) {
+ private Resource getModelFor(ArtifactGeneratorToscaParser parser, NodeTemplate nodeTemplate) {
+ String nodeTypeName = nodeTemplate.getType();
+
log.debug("Processing resource " + nodeTypeName + ": " + nodeTemplate.getMetaData().getValue("UUID"));
- Model resourceModel = Model.getModelFor(nodeTypeName, nodeTemplate.getMetaData().getValue("type"));
+
+ Resource model = Model.getModelFor(nodeTypeName, nodeTemplate.getMetaData().getValue("type"));
+
+ if (model != null) {
+ Metadata metadata = nodeTemplate.getMetaData();
+ if (metadata != null && parser.hasAllottedResource(metadata.getAllProperties())
+ && model.getWidgetType() == Type.VF) {
+ model = new Resource(Type.ALLOTTED_RESOURCE, true);
+ }
+ }
+
+ return model;
+ }
+
+ private void generateResourceModel(ISdcCsarHelper csarHelper, List<Resource> resources,
+ ArtifactGeneratorToscaParser parser, NodeTemplate nodeTemplate) {
+ Resource resourceModel = getModelFor(parser, nodeTemplate);
+ if (resourceModel == null) {
+ log.info(ApplicationMsgs.DISTRIBUTION_EVENT, "Could not generate resource model");
+ return;
+ }
Map<String, String> serviceMetadata = nodeTemplate.getMetaData().getAllProperties();
resourceModel.populateModelIdentificationInformation(serviceMetadata);
* Method to generate the artifact name for an AAI model.
*
* @param model
- * AAI artifact model
+ * AAI artifact model
* @return Model artifact name
*/
private String getArtifactName(Model model) {
* Create Resource artifact model from the AAI xml model string.
*
* @param resourceModel
- * Model of the resource artifact
+ * Model of the resource artifact
* @param aaiResourceModel
- * AAI model as string
+ * AAI model as string
* @return Generated {@link Artifact} model for the resource
*/
private Artifact getResourceArtifact(Model resourceModel, String aaiResourceModel) {
* Create Service artifact model from the AAI XML model.
*
* @param serviceModel
- * Model of the service artifact
+ * Model of the service artifact
* @param aaiServiceModel
- * AAI model as string
+ * AAI model as string
* @return Generated {@link Artifact} model for the service
*/
private Artifact getServiceArtifact(Service serviceModel, String aaiServiceModel) {