aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/asdc
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/asdc')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/AsdcClient.java1
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/SecureServices.java1
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Input.java17
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/InputProperties.java3
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/NodeTemplate.java4
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Property.java2
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/SubstitutionMappings.java4
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/TopologyTemplate.java6
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaCsar.java2
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaMeta.java11
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/local/LocalAsdcClient.java60
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/parser/ServiceModelInflator.kt43
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaNamingPolicy.java28
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl.java5
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java449
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/parser/VidNotionsBuilder.java130
16 files changed, 508 insertions, 258 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/AsdcClient.java b/vid-app-common/src/main/java/org/onap/vid/asdc/AsdcClient.java
index fdbf2c288..d26a1b278 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/AsdcClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/AsdcClient.java
@@ -50,4 +50,5 @@ public interface AsdcClient {
* @throws AsdcCatalogException the asdc catalog exception
*/
Path getServiceToscaModel(UUID uuid) throws AsdcCatalogException;
+
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/SecureServices.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/SecureServices.java
index a6aa3de6f..6eaf37b9d 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/SecureServices.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/SecureServices.java
@@ -1,7 +1,6 @@
package org.onap.vid.asdc.beans;
import java.util.Collection;
-import java.util.List;
/**
* Created by Oren on 6/27/17.
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Input.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Input.java
index 590284928..d66591c3b 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Input.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Input.java
@@ -20,10 +20,11 @@
package org.onap.vid.asdc.beans.tosca;
+import com.fasterxml.jackson.annotation.JsonInclude;
import org.onap.sdc.toscaparser.api.Property;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
// TODO: Auto-generated Javadoc
/**
@@ -36,6 +37,7 @@ public class Input {
this.description = input.getDescription();
this._default = input.getDefault();
this.inputProperties = new InputProperties(properties);
+ this.fromInputName = input.getName();
}
/** The type. */
@@ -51,7 +53,9 @@ public class Input {
private Input entry_schema;
private InputProperties inputProperties;
-
+
+ private String fromInputName;
+
/** The constraints */
private List<org.onap.sdc.toscaparser.api.elements.constraints.Constraint> constraints;
@@ -63,12 +67,12 @@ public class Input {
private String templateUUID;
private String templateInvariantUUID;
private String templateCustomizationUUID;
-
+
/**
* Instantiates a new input.
*/
public Input() {
- constraints = new ArrayList<org.onap.sdc.toscaparser.api.elements.constraints.Constraint>();
+ constraints = new ArrayList<>();
}
/**
@@ -160,6 +164,11 @@ public class Input {
return inputProperties;
}
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ public String getFromInputName() {
+ return fromInputName;
+ }
+
public void setInputProperties(InputProperties inputProperties) {
this.inputProperties = inputProperties;
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/InputProperties.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/InputProperties.java
index bc2513ea9..c5fe8b90e 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/InputProperties.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/InputProperties.java
@@ -17,13 +17,10 @@ public class InputProperties {
for(Property property: properties) {
if (property.getName().equals("source_type")) {
this.sourceType = (String)property.getValue();
- continue;
} else if (property.getName().equals("param_name")) {
this.paramName = (String)property.getValue();
- continue;
} else if (property.getName().equals("vf_module_label")) {
this.vfModuleLabel = getPropertyValueAsString(property);
- continue;
}
}
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/NodeTemplate.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/NodeTemplate.java
index 28210b2ec..23c0a1094 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/NodeTemplate.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/NodeTemplate.java
@@ -20,8 +20,8 @@
package org.onap.vid.asdc.beans.tosca;
-import java.util.Map;
import java.util.HashMap;
+import java.util.Map;
/**
* The Class NodeTemplate.
@@ -41,7 +41,7 @@ public class NodeTemplate {
private Object requirements;
public NodeTemplate () {
- properties = new HashMap<String,Object>();
+ properties = new HashMap<>();
}
/**
* Gets the type.
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Property.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Property.java
index 74b00bdf7..a15c55ff5 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Property.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/Property.java
@@ -43,7 +43,7 @@ public class Property {
/**
* Instantiates a new property.
*/
- Property() {}
+ private Property() {}
/**
* Gets the type.
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/SubstitutionMappings.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/SubstitutionMappings.java
index 70779c5f2..4ce30239c 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/SubstitutionMappings.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/SubstitutionMappings.java
@@ -41,8 +41,8 @@ public class SubstitutionMappings {
* Instantiates a new substitution mappings.
*/
public SubstitutionMappings() {
- capabilities = new HashMap<String, Object> ();
- requirements = new HashMap<String, Object> ();
+ capabilities = new HashMap<> ();
+ requirements = new HashMap<> ();
}
/**
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/TopologyTemplate.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/TopologyTemplate.java
index 70830715e..b24627d1f 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/TopologyTemplate.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/TopologyTemplate.java
@@ -45,9 +45,9 @@ public class TopologyTemplate {
*/
public TopologyTemplate() {
substitution_mappings = new SubstitutionMappings();
- inputs = new HashMap<String, Input> ();
- node_templates = new HashMap<String, NodeTemplate> ();
- groups = new HashMap<String, Group> ();
+ inputs = new HashMap<> ();
+ node_templates = new HashMap<> ();
+ groups = new HashMap<> ();
}
/**
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaCsar.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaCsar.java
index 678583573..4cf2f7975 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaCsar.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaCsar.java
@@ -43,7 +43,7 @@ public class ToscaCsar {
private final ToscaModel parent;
/** The children. */
- private Collection<ToscaModel> children = new LinkedList<ToscaModel> ();
+ private Collection<ToscaModel> children = new LinkedList<> ();
/**
* Instantiates a new builder.
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaMeta.java b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaMeta.java
index a7a6c6296..ad8834015 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaMeta.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/beans/tosca/ToscaMeta.java
@@ -20,6 +20,8 @@
package org.onap.vid.asdc.beans.tosca;
+import org.onap.vid.asdc.AsdcCatalogException;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -27,8 +29,6 @@ import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
-import org.onap.vid.asdc.AsdcCatalogException;
-
/**
* The Class ToscaMeta.
*/
@@ -45,7 +45,7 @@ public class ToscaMeta {
* @throws AsdcCatalogException the asdc catalog exception
*/
private ToscaMeta(Builder builder) throws IOException, AsdcCatalogException {
- metadata = new HashMap<String, String> ();
+ metadata = new HashMap<> ();
read(builder.inputStream);
}
@@ -113,10 +113,7 @@ public class ToscaMeta {
metadata.put(entry[0], entry[1].substring(1));
}
}
- } catch (IOException e) {
- metadata.clear();
- throw e;
- } catch (AsdcCatalogException e) {
+ } catch (IOException | AsdcCatalogException e) {
metadata.clear();
throw e;
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/local/LocalAsdcClient.java b/vid-app-common/src/main/java/org/onap/vid/asdc/local/LocalAsdcClient.java
index 108d9c06a..bcb201d2e 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/local/LocalAsdcClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/local/LocalAsdcClient.java
@@ -1,31 +1,22 @@
package org.onap.vid.asdc.local;
-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.map.JsonMappingException;
-import org.codehaus.jackson.map.ObjectMapper;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.json.JSONArray;
import org.json.JSONObject;
import org.onap.vid.asdc.AsdcCatalogException;
import org.onap.vid.asdc.AsdcClient;
import org.onap.vid.asdc.beans.Service;
-import org.onap.vid.asdc.beans.tosca.ToscaCsar;
-import org.onap.vid.asdc.beans.tosca.ToscaMeta;
-import org.onap.vid.asdc.beans.tosca.ToscaModel;
import org.onap.vid.exceptions.GenericUncheckedException;
-import org.yaml.snakeyaml.Yaml;
import java.io.File;
import java.io.IOException;
-import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
-import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import java.util.Map;
import java.util.UUID;
-import java.util.zip.ZipFile;
/**
* The Class LocalAsdcClient.
@@ -117,7 +108,7 @@ public class LocalAsdcClient implements AsdcClient {
/* (non-Javadoc)
* @see org.onap.vid.asdc.AsdcClient#getServiceToscaModel(java.util.UUID)
*/
- public Path getServiceToscaModel(UUID serviceUuid) throws AsdcCatalogException {
+ public Path getServiceToscaModel(UUID serviceUuid) {
String toscaModelURL = null;
@@ -146,49 +137,6 @@ public class LocalAsdcClient implements AsdcClient {
}
/**
- * Gets the tosca model.
- *
- * @param csarInputStream the csar input stream
- * @return the tosca model
- * @throws AsdcCatalogException the asdc catalog exception
- */
- private ToscaCsar getToscaModel(InputStream csarInputStream) throws AsdcCatalogException {
- final Path csarFile;
-
- try {
- csarFile = Files.createTempFile("csar", ".zip");
- Files.copy(csarInputStream, csarFile, StandardCopyOption.REPLACE_EXISTING);
- } catch (IOException e) {
- throw new AsdcCatalogException("Caught IOException while creating CSAR", e);
- }
-
- try (final ZipFile csar = new ZipFile(csarFile.toFile())) {
-
- final InputStream toscaMetaStream = csar.getInputStream(csar.getEntry("TOSCA-Metadata/TOSCA.meta"));
- final ToscaMeta toscaMeta = new ToscaMeta.Builder(toscaMetaStream).build();
- final String entryDefinitions = toscaMeta.get("Entry-Definitions");
- final InputStream toscaParentEntryYamlStream = csar.getInputStream(csar.getEntry(entryDefinitions));
-
- final Yaml yaml = new Yaml();
- final ToscaModel parentModel = yaml.loadAs(toscaParentEntryYamlStream, ToscaModel.class);
-
- final ToscaCsar.Builder csarBuilder = new ToscaCsar.Builder(parentModel);
-
- for (Map<String, Map<String, String>> imports : parentModel.getImports()) {
- for (Map.Entry<String, Map<String, String>> entry : imports.entrySet()) {
- final InputStream toscaChildEntryYamlStream = csar.getInputStream(csar.getEntry("Definitions/" + entry.getValue().get("file")));
- final ToscaModel childModel = yaml.loadAs(toscaChildEntryYamlStream, ToscaModel.class);
- csarBuilder.addVnf(childModel);
- }
- }
-
- return csarBuilder.build();
- } catch (IOException e) {
- throw new AsdcCatalogException("Caught IOException while processing CSAR", e);
- }
- }
-
- /**
* The Class Builder.
*/
public static class Builder {
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ServiceModelInflator.kt b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ServiceModelInflator.kt
new file mode 100644
index 000000000..79ab0459a
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ServiceModelInflator.kt
@@ -0,0 +1,43 @@
+package org.onap.vid.asdc.parser
+
+import org.onap.vid.model.*
+import org.springframework.stereotype.Component
+
+@Component
+class ServiceModelInflator {
+
+ data class Names (val modelCustomizationName: String?, val modelKey: String?)
+
+ fun toNamesByVersionId(model: ServiceModel): Map<String, Names> {
+ return emptyMap<String, Names>()
+ .plus(inflate(model.networks))
+ .plus(inflate(model.vnfs))
+ .plus(inflate(model.vnfGroups))
+ }
+
+ private fun inflate(instances: Map<String, *>): Map<String, Names> {
+ return instances.entries.map { inflate(it.key, it.value) }.fold(emptyMap()) { acc, it -> acc.plus(it) }
+ }
+
+ private fun inflate(modelKey: String, vnf: VNF): Map<String, Names> {
+ return mapOf(vnf.uuid to Names(vnf.modelCustomizationName, modelKey))
+ .plus(inflate(vnf.vfModules))
+ .plus(inflate(vnf.volumeGroups))
+ }
+
+ private fun inflate(modelKey: String, instance: Any?): Map<String, Names> {
+ return when (instance) {
+ is Network -> mapOf(instance.uuid to Names(instance.modelCustomizationName, modelKey))
+ is VfModule -> mapOf(instance.uuid to Names(instance.modelCustomizationName, modelKey))
+ is VolumeGroup -> mapOf(instance.uuid to Names(instance.modelCustomizationName, modelKey))
+ is ResourceGroup -> mapOf(instance.uuid to Names(instance.modelCustomizationName, modelKey))
+ is VNF -> inflate(modelKey, instance)
+
+ else -> {
+ // sink
+ emptyMap()
+ }
+ }
+ }
+
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaNamingPolicy.java b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaNamingPolicy.java
new file mode 100644
index 000000000..ca2601034
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaNamingPolicy.java
@@ -0,0 +1,28 @@
+package org.onap.vid.asdc.parser;
+
+import org.apache.commons.lang3.StringUtils;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.Property;
+
+import java.util.Map;
+
+public class ToscaNamingPolicy {
+
+ public static String isUserProvidingServiceNameOptional(ISdcCsarHelper csarHelper){
+ return csarHelper.getServiceMetadata().getValue(ToscaParserImpl2.Constants.ECOMP_GENERATED_NAMING);
+ }
+
+ private static Object isPropertyContainsEcompGeneratedNaming(Property property) {
+ return ((Map) (property.getValue())).get(ToscaParserImpl2.Constants.ECOMP_GENERATED_NAMING_PROPERTY);
+ }
+
+ public static String getEcompNamingValueForNode(NodeTemplate node, String parentProperty) {
+ return node.getPropertiesObjects().stream()
+ .filter(property -> StringUtils.equals(property.getName(), parentProperty))
+ .findFirst()
+ .map(ToscaNamingPolicy::isPropertyContainsEcompGeneratedNaming)
+ .map(Object::toString)
+ .orElse("false");
+ }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl.java b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl.java
index 27445c0f3..ef57ccb65 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl.java
@@ -16,6 +16,7 @@ import org.yaml.snakeyaml.error.YAMLException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Path;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
@@ -92,7 +93,7 @@ public class ToscaParserImpl implements ToscaParser {
final ToscaModel asdcServiceToscaModel = toscaCsar.getParent();
serviceModel.setService(ServiceModel.extractService(asdcServiceToscaModel, service));
-
+ serviceModel.setFabricConfigurations(Collections.emptyMap());
populateVnfsAndNetwork(methodName, isNewFlow, vnfs, networks, asdcServiceToscaModel, serviceModel);
@@ -180,8 +181,6 @@ public class ToscaParserImpl implements ToscaParser {
}
private ServiceModel getCustomizedServices(ToscaModel asdcServiceToscaModel, ServiceModel serviceModel) {
- String methodName = "asdcServiceToscaModel";
-
// asdcServiceToscaModel should have vf modules and vol groups populated
// at this point but
// they are not associated with the VNFs
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java
index 57d80ce9d..53ec4036b 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java
@@ -1,11 +1,12 @@
package org.onap.vid.asdc.parser;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.tosca.parser.enums.FilterType;
+import org.onap.sdc.tosca.parser.enums.SdcTypes;
import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
-import org.onap.sdc.tosca.parser.impl.FilterType;
import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
-import org.onap.sdc.tosca.parser.impl.SdcTypes;
import org.onap.sdc.toscaparser.api.Group;
import org.onap.sdc.toscaparser.api.*;
import org.onap.sdc.toscaparser.api.elements.Metadata;
@@ -15,87 +16,112 @@ import org.onap.vid.model.*;
import java.nio.file.Path;
import java.util.*;
-import java.util.stream.Collectors;
+import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
import static org.onap.vid.asdc.parser.ToscaParserImpl2.Constants.VF_MODULE_LABEL;
public class ToscaParserImpl2 {
-
- public class Constants {
- public final static String UUID = "UUID";
- public final static String DESCRIPTION = "description";
- public final static String SERVICE_TYPE = "serviceType";
- public final static String SERVICE_ROLE = "serviceRole";
- public final static String ECOMP_GENERATED_NAMING = "ecompGeneratedNaming";
-
- public final static String CUSTOMIZATION_UUID = "customizationUUID";
- public final static String VF_MODULE_MODEL_VERSION = "vfModuleModelVersion";
- public final static String VF_MODULE_MODEL_CUSTOMIZATION_UUID = "vfModuleModelCustomizationUUID";
- public final static String VOLUME_GROUP = "volume_group";
- public final static String VF_MODULE_MODEL_INVARIANT_UUID = "vfModuleModelInvariantUUID";
- public final static String VF_MODULE_MODEL_UUID = "vfModuleModelUUID";
- public final static String INVARIANT_UUID = "invariantUUID";
- public final static String VERSION = "version";
- public final static String NAME = "name";
- public final static String CATEGORY = "category";
- public final static String VF_MODULE_MODEL_NAME = "vfModuleModelName";
- public final static String GET_INPUT = "get_input";
- public final static String TYPE = "type";
-
- public final static String INSTANTIATION_TYPE = "instantiationType";
+
+ private final VidNotionsBuilder vidNotionsBuilder;
+
+ public class Constants {
+ public static final String UUID = "UUID";
+ public static final String DESCRIPTION = "description";
+ public static final String SERVICE_TYPE = "serviceType";
+ public static final String SERVICE_ROLE = "serviceRole";
+ public static final String ECOMP_GENERATED_NAMING = "ecompGeneratedNaming";
+
+ public static final String CUSTOMIZATION_UUID = "customizationUUID";
+ public static final String VF_MODULE_MODEL_VERSION = "vfModuleModelVersion";
+ public static final String VF_MODULE_MODEL_CUSTOMIZATION_UUID = "vfModuleModelCustomizationUUID";
+ public static final String VOLUME_GROUP = "volume_group";
+ public static final String VF_MODULE_MODEL_INVARIANT_UUID = "vfModuleModelInvariantUUID";
+ public static final String VF_MODULE_MODEL_UUID = "vfModuleModelUUID";
+ public static final String INVARIANT_UUID = "invariantUUID";
+ public static final String VERSION = "version";
+ public static final String NAME = "name";
+ public static final String CATEGORY = "category";
+ public static final String VF_MODULE_MODEL_NAME = "vfModuleModelName";
+ public static final String GET_INPUT = "get_input";
+ public static final String TYPE = "type";
+
+ public static final String INSTANTIATION_TYPE = "instantiationType";
//instantiation type
- public final static String BOTH = "Both";
- public final static String MACRO = "Macro";
- public final static String A_LA_CARTE = "A-La-Carte";
- public final static String CLIENT_CONFIG = "ClientConfig";
+ public static final String BOTH = "Both";
+ public static final String MACRO = "Macro";
+ public static final String A_LA_CARTE = "A-La-Carte";
+ public static final String CLIENT_CONFIG = "ClientConfig";
+
+ //service role
+ public static final String GROUPING = "GROUPING";
//group properties
- public final static String MIN_VF_MODULE_INSTANCES = "min_vf_module_instances";
- public final static String MAX_VF_MODULE_INSTANCES = "max_vf_module_instances";
- public final static String INITIAL_COUNT = "initial_count";
- public final static String VF_MODULE_LABEL = "vf_module_label";
+ public static final String MIN_VF_MODULE_INSTANCES = "min_vf_module_instances";
+ public static final String MAX_VF_MODULE_INSTANCES = "max_vf_module_instances";
+ public static final String INITIAL_COUNT = "initial_count";
+ public static final String VF_MODULE_LABEL = "vf_module_label";
+ public static final String VF_MODULE_TYPE = "vf_module_type";
//collection resource properties
- public final static String SUBCATEGORY = "subcategory";
- public final static String RESOURCE_VENDOR = "resourceVendor";
- public final static String RESOURCE_VENDOR_RELEASE = "resourceVendorRelease";
- public final static String RESOURCE_VENDOR_MODEL_NUMBER = "resourceVendorModelNumber";
- public final static String ORG_OPENECOMP_GROUPS_NETWORK_COLLECTION = "org.openecomp.groups.NetworkCollection";
- public final static String NETWORK_COLLECTION_FUNCTION = "network_collection_function";
- public final static String NETWORK_COLLECTION_DESCRIPTION = "network_collection_description";
+ public static final String SUBCATEGORY = "subcategory";
+ public static final String RESOURCE_VENDOR = "resourceVendor";
+ public static final String RESOURCE_VENDOR_RELEASE = "resourceVendorRelease";
+ public static final String RESOURCE_VENDOR_MODEL_NUMBER = "resourceVendorModelNumber";
+ public static final String ORG_OPENECOMP_GROUPS_NETWORK_COLLECTION = "org.openecomp.groups.NetworkCollection";
+ public static final String NETWORK_COLLECTION_FUNCTION = "network_collection_function";
+ public static final String NETWORK_COLLECTION_DESCRIPTION = "network_collection_description";
//vfc instance group properties
- public final static String VFC_INSTANCE_GROUP_TYPE = "org.openecomp.groups.VfcInstanceGroup";
- public final static String VFC_PARENT_PORT_ROLE = "vfc_parent_port_role";
- public final static String SUBINTERFACE_ROLE = "subinterface_role";
- public final static String VFC_INSTANCE_GROUP_FUNCTION = "vfc_instance_group_function";
+ public static final String VFC_INSTANCE_GROUP_TYPE = "org.openecomp.groups.VfcInstanceGroup";
+ public static final String VFC_PARENT_PORT_ROLE = "vfc_parent_port_role";
+ public static final String SUBINTERFACE_ROLE = "subinterface_role";
+ public static final String VFC_INSTANCE_GROUP_FUNCTION = "vfc_instance_group_function";
+
+ public static final String FABRIC_CONFIGURATION_TYPE = "org.openecomp.nodes.FabricConfiguration";
+
+ public static final String RESOURCE_GROUP_TYPE = "org.openecomp.groups.ResourceInstanceGroup";
+ public static final String RESOURCE_GROUP_CONTAINED_TYPE = "contained_resource_type";
+
+ public static final String VNF_GROUP = "VnfGroup";
+
+ public static final String NAMING_POLICY_TYPE = "org.openecomp.policies.External";
+
+ public static final String ECOMP_GENERATED_NAMING_PROPERTY = "ecomp_generated_naming";
}
-
- public ToscaParserImpl2() {}
- public ServiceModel makeServiceModel(Path path, Service asdcServiceMetadata) throws SdcToscaParserException {
+ public ToscaParserImpl2(VidNotionsBuilder vidNotionsBuilder) {
+ this.vidNotionsBuilder = vidNotionsBuilder;
+ }
+
+ public ServiceModel makeServiceModel(Path path, Service asdcServiceMetadata) throws SdcToscaParserException {
ServiceModel serviceModel = new ServiceModel();
- SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
- ISdcCsarHelper sdcCsarHelper = factory.getSdcCsarHelper(path.toFile().getAbsolutePath(),false);
+ ISdcCsarHelper sdcCsarHelper = getSdcCsarHelper(path);
+ List<String> policiesTargets = extractNamingPoliciesTargets(sdcCsarHelper);
serviceModel.setService(extractServiceFromCsar(asdcServiceMetadata, sdcCsarHelper));
serviceModel.setVolumeGroups(extractVolumeGroups(sdcCsarHelper));
serviceModel.setVfModules(extractVfModuleFromCsar(sdcCsarHelper));
- serviceModel.setVnfs(extractVnfsFromCsar(sdcCsarHelper));
- serviceModel.setConfigurations(extractPortMirroringConfigFromCsar(sdcCsarHelper));
- serviceModel.setServiceProxies(extractServiceProxyFromCsar(sdcCsarHelper));
- serviceModel.setNetworks(extractNetworksFromCsar(sdcCsarHelper));
- serviceModel.setPnfs(extractPnfsFromCsar(sdcCsarHelper));
- serviceModel.setCollectionResource(extractCRFromCsar(sdcCsarHelper));
+ serviceModel.setVnfs(extractVnfsFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setConfigurations(extractPortMirroringConfigFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setServiceProxies(extractServiceProxyFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setNetworks(extractNetworksFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setPnfs(extractPnfsFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setCollectionResource(extractCRFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setFabricConfigurations(extractFabricConfigFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setVnfGroups(extractVnfGroupsFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.getService().setVidNotions(vidNotionsBuilder.buildVidNotions(sdcCsarHelper, serviceModel));
return serviceModel;
}
+ public ISdcCsarHelper getSdcCsarHelper(Path path) throws SdcToscaParserException {
+ SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
+ return factory.getSdcCsarHelper(path.toFile().getAbsolutePath(), false);
+ }
-
- private org.onap.vid.model.Service extractServiceFromCsar(Service asdcServiceMetadata, ISdcCsarHelper csarHelper) throws SdcToscaParserException {
- org.onap.vid.model.Service service = new org.onap.vid.model.Service();
+ private org.onap.vid.model.Service extractServiceFromCsar(Service asdcServiceMetadata, ISdcCsarHelper csarHelper) {
+ org.onap.vid.model.Service service = new org.onap.vid.model.Service();
service.setName(csarHelper.getServiceMetadata().getValue(Constants.NAME));
service.setCategory(csarHelper.getServiceMetadata().getValue(Constants.CATEGORY));
@@ -104,21 +130,25 @@ public class ToscaParserImpl2 {
service.setVersion(asdcServiceMetadata.getVersion());
service.setDescription(csarHelper.getServiceMetadata().getValue(Constants.DESCRIPTION));
service.setInputs(inputsListToInputsMap(csarHelper.getInputsWithAnnotations()));
- service.setServiceEcompNaming(csarHelper.getServiceMetadata().getValue(Constants.ECOMP_GENERATED_NAMING));
+ service.setServiceEcompNaming(isUserProvidingServiceNameOptional(csarHelper));
service.setServiceType(csarHelper.getServiceMetadata().getValue(Constants.SERVICE_TYPE));
service.setServiceRole(csarHelper.getServiceMetadata().getValue(Constants.SERVICE_ROLE));
service.setInstantiationType(validateInstantiationType(csarHelper));
return service;
}
- private Map<String,CR> extractCRFromCsar(ISdcCsarHelper sdcCsarHelper) {
- List<NodeTemplate> nodeTemplates = sdcCsarHelper.getServiceNodeTemplates();
- Map<String, CR> collectionResourceMap = new HashMap<>();
+ private String isUserProvidingServiceNameOptional(ISdcCsarHelper csarHelper) {
+ return ToscaNamingPolicy.isUserProvidingServiceNameOptional(csarHelper);
+ }
+
+ private Map<String, CR> extractCRFromCsar(ISdcCsarHelper sdcCsarHelper, List<String> policiesTargets) {
+ List<NodeTemplate> nodeTemplates = sdcCsarHelper.getServiceNodeTemplates();
+ Map<String, CR> collectionResourceMap = new HashMap<>();
- for(NodeTemplate nodeTemplate: nodeTemplates){
- if(nodeTemplate.getMetaData().getValue(Constants.TYPE).equals(SdcTypes.CR.getValue())) {
+ for (NodeTemplate nodeTemplate : nodeTemplates) {
+ if ( nodeTemplate.getMetaData().getValue(Constants.TYPE).equals(SdcTypes.CR.getValue()) ) {
CR cr = new CR();
- populateCrFromNodeTemplate(nodeTemplate, sdcCsarHelper, cr);
+ populateCrFromNodeTemplate(nodeTemplate, sdcCsarHelper, cr, policiesTargets);
collectionResourceMap.put(nodeTemplate.getName(), cr);
}
}
@@ -126,21 +156,39 @@ public class ToscaParserImpl2 {
return collectionResourceMap;
}
- private void populateCrFromNodeTemplate(NodeTemplate nodeTemplate, ISdcCsarHelper sdcCsarHelper, CR cr) {
- populateNodeFromNodeTemplate(nodeTemplate, sdcCsarHelper, cr);
+ private Map<String, Node> extractFabricConfigFromCsar(ISdcCsarHelper sdcCsarHelper, List<String> policiesTargets) {
+ List<NodeTemplate> nodeTemplates = sdcCsarHelper.getServiceNodeTemplates();
+ Map<String, Node> fabricConfiguration = new HashMap<>();
+
+ for (NodeTemplate nodeTemplate : nodeTemplates) {
+ List<NodeTemplate> nodeTemplateChildren = sdcCsarHelper.getNodeTemplateChildren(nodeTemplate);
+ for (NodeTemplate nodeTemplateChild : nodeTemplateChildren) {
+ if ( nodeTemplateChild.getType().equals(Constants.FABRIC_CONFIGURATION_TYPE) ) {
+ Node node = new Node();
+ fabricConfiguration.put(nodeTemplateChild.getName(), populateNodeFromNodeTemplate(nodeTemplateChild, sdcCsarHelper, node, policiesTargets));
+ }
+ }
+
+ }
+ return fabricConfiguration;
+ }
+
+
+ private void populateCrFromNodeTemplate(NodeTemplate nodeTemplate, ISdcCsarHelper sdcCsarHelper, CR cr, List<String> policiesTargets) {
+ populateNodeFromNodeTemplate(nodeTemplate, sdcCsarHelper, cr, policiesTargets);
cr.setCustomizationUUID(nodeTemplate.getMetaData().getValue(Constants.CUSTOMIZATION_UUID));
cr.setCategory(nodeTemplate.getMetaData().getValue(Constants.CATEGORY));
- cr.setSubcategory(nodeTemplate.getMetaData().getValue(Constants.SUBCATEGORY));
- cr.setResourceVendor(nodeTemplate.getMetaData().getValue(Constants.RESOURCE_VENDOR));
- cr.setResourceVendorRelease(nodeTemplate.getMetaData().getValue(Constants.RESOURCE_VENDOR_RELEASE));
- cr.setResourceVendorModelNumber(nodeTemplate.getMetaData().getValue(Constants.RESOURCE_VENDOR_MODEL_NUMBER));
- cr.setNetworksCollection(getNetworksCollectionMapFromGroupsList(sdcCsarHelper, nodeTemplate));
+ cr.setSubcategory(nodeTemplate.getMetaData().getValue(Constants.SUBCATEGORY));
+ cr.setResourceVendor(nodeTemplate.getMetaData().getValue(Constants.RESOURCE_VENDOR));
+ cr.setResourceVendorRelease(nodeTemplate.getMetaData().getValue(Constants.RESOURCE_VENDOR_RELEASE));
+ cr.setResourceVendorModelNumber(nodeTemplate.getMetaData().getValue(Constants.RESOURCE_VENDOR_MODEL_NUMBER));
+ cr.setNetworksCollection(getNetworksCollectionMapFromGroupsList(sdcCsarHelper, nodeTemplate));
}
private Map<String, NetworkCollection> getNetworksCollectionMapFromGroupsList(ISdcCsarHelper sdcCsarHelper, NodeTemplate nodeTemplate) {
List<Group> groups = sdcCsarHelper.getGroupsOfOriginOfNodeTemplateByToscaGroupType(nodeTemplate, Constants.ORG_OPENECOMP_GROUPS_NETWORK_COLLECTION);
- Map<String, NetworkCollection> networksCollectionMap = new HashMap<String, NetworkCollection>();
- for(Group group: groups){
+ Map<String, NetworkCollection> networksCollectionMap = new HashMap<>();
+ for (Group group : groups) {
networksCollectionMap.put(group.getName(), populateCollectionNetworkFromGroup(group, nodeTemplate));
}
return networksCollectionMap;
@@ -161,44 +209,46 @@ public class ToscaParserImpl2 {
LinkedHashMap<String, Property> properties = group.getProperties();
Map<String, Property> nodeTemplateProperties = nodeTemplate.getProperties();
- String networkCollectionFunction = (String)((Map)(properties.get(Constants.NETWORK_COLLECTION_FUNCTION).getValue())).get(Constants.GET_INPUT);
- String networkCollectionDescription = (String)((Map)(properties.get(Constants.NETWORK_COLLECTION_DESCRIPTION).getValue())).get(Constants.GET_INPUT);
+ String networkCollectionFunction = (String) ((Map) (properties.get(Constants.NETWORK_COLLECTION_FUNCTION).getValue())).get(Constants.GET_INPUT);
+ String networkCollectionDescription = (String) ((Map) (properties.get(Constants.NETWORK_COLLECTION_DESCRIPTION).getValue())).get(Constants.GET_INPUT);
- networkCollection.getNetworkCollectionProperties().setNetworkCollectionDescription((String)nodeTemplateProperties.get(networkCollectionDescription).getValue());
- networkCollection.getNetworkCollectionProperties().setNetworkCollectionFunction((String)nodeTemplateProperties.get(networkCollectionFunction).getValue());
+ networkCollection.getNetworkCollectionProperties().setNetworkCollectionDescription((String) nodeTemplateProperties.get(networkCollectionDescription).getValue());
+ networkCollection.getNetworkCollectionProperties().setNetworkCollectionFunction((String) nodeTemplateProperties.get(networkCollectionFunction).getValue());
}
- private Map<String, VNF> extractVnfsFromCsar(ISdcCsarHelper csarHelper) {
+ private Map<String, VNF> extractVnfsFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
List<NodeTemplate> nodeTemplates = csarHelper.getServiceVfList();
- Map<String, VNF> vnfsMaps = new HashMap<String, VNF>();
+ Map<String, VNF> vnfsMaps = new HashMap<>();
for (NodeTemplate nodeTemplate : nodeTemplates) {
VNF vnf = new VNF();
- populateNodeFromNodeTemplate(nodeTemplate, csarHelper, vnf);
+ populateNodeFromNodeTemplate(nodeTemplate, csarHelper, vnf, policiesTargets);
vnf.setModelCustomizationName(nodeTemplate.getName());
vnf.setVfModules(getVfModulesFromVF(csarHelper, vnf.getCustomizationUuid()));
vnf.setVolumeGroups(getVolumeGroupsFromVF(csarHelper, vnf.getCustomizationUuid()));
vnf.setVfcInstanceGroups(getVfcInstanceGroup(csarHelper, nodeTemplate));
-
+ if (ToscaNamingPolicy.getEcompNamingValueForNode(nodeTemplate, "nf_naming").equals("true")) {
+ setEcompNamingProperty(vnf.getProperties(), "true");
+ }
vnfsMaps.put(nodeTemplate.getName(), vnf);
}
return vnfsMaps;
}
- private Map<String,VfcInstanceGroup> getVfcInstanceGroup(ISdcCsarHelper csarHelper, NodeTemplate nodeTemplate) {
- List<Group> vfcList = csarHelper.getGroupsOfOriginOfNodeTemplateByToscaGroupType(nodeTemplate, Constants.VFC_INSTANCE_GROUP_TYPE);
+ private Map<String, VfcInstanceGroup> getVfcInstanceGroup(ISdcCsarHelper csarHelper, NodeTemplate nodeTemplate) {
+ List<Group> vfcList = csarHelper.getGroupsOfOriginOfNodeTemplateByToscaGroupType(nodeTemplate, Constants.VFC_INSTANCE_GROUP_TYPE);
return vfcList.stream()
- .collect(toMap(Group::getName, group -> populateVfcInstanceGroupFromGroup(group, csarHelper, nodeTemplate)));
+ .collect(toMap(Group::getName, group -> populateVfcInstanceGroupFromGroup(group, nodeTemplate)));
}
- private VfcInstanceGroup populateVfcInstanceGroupFromGroup(Group group, ISdcCsarHelper csarHelper, NodeTemplate nodeTemplate) {
- VfcInstanceGroup vfcInstanceGroup = new VfcInstanceGroup();
- vfcInstanceGroup.setUuid(group.getMetadata().getValue(Constants.UUID));
- vfcInstanceGroup.setInvariantUuid(group.getMetadata().getValue(Constants.INVARIANT_UUID));
- vfcInstanceGroup.setVersion(group.getMetadata().getValue(Constants.VERSION));
- vfcInstanceGroup.setName(group.getMetadata().getValue(Constants.NAME));
- vfcInstanceGroup.setVfcInstanceGroupProperties(getVfcPropertiesFromGroup(nodeTemplate, group));
+ private VfcInstanceGroup populateVfcInstanceGroupFromGroup(Group group, NodeTemplate nodeTemplate) {
+ VfcInstanceGroup vfcInstanceGroup = new VfcInstanceGroup();
+ vfcInstanceGroup.setUuid(group.getMetadata().getValue(Constants.UUID));
+ vfcInstanceGroup.setInvariantUuid(group.getMetadata().getValue(Constants.INVARIANT_UUID));
+ vfcInstanceGroup.setVersion(group.getMetadata().getValue(Constants.VERSION));
+ vfcInstanceGroup.setName(group.getMetadata().getValue(Constants.NAME));
+ vfcInstanceGroup.setVfcInstanceGroupProperties(getVfcPropertiesFromGroup(nodeTemplate, group));
return vfcInstanceGroup;
@@ -209,24 +259,24 @@ public class ToscaParserImpl2 {
vfcInstanceGroupProperties.setVfcParentPortRole((String) group.getProperties().get(Constants.VFC_PARENT_PORT_ROLE).getValue());
vfcInstanceGroupProperties.setSubinterfaceRole((String) group.getProperties().get(Constants.SUBINTERFACE_ROLE).getValue());
- String networkCollectionFunction = (String)((Map)(group.getProperties().get(Constants.NETWORK_COLLECTION_FUNCTION).getValue())).get(Constants.GET_INPUT);
- String vfcInstanceGroupFunction = (String)((Map)(group.getProperties().get(Constants.VFC_INSTANCE_GROUP_FUNCTION).getValue())).get(Constants.GET_INPUT);
+ String networkCollectionFunction = (String) ((Map) (group.getProperties().get(Constants.NETWORK_COLLECTION_FUNCTION).getValue())).get(Constants.GET_INPUT);
+ String vfcInstanceGroupFunction = (String) ((Map) (group.getProperties().get(Constants.VFC_INSTANCE_GROUP_FUNCTION).getValue())).get(Constants.GET_INPUT);
- if(nodeTemplate.getProperties().get(networkCollectionFunction) != null)
+ if ( nodeTemplate.getProperties().get(networkCollectionFunction) != null )
vfcInstanceGroupProperties.setNetworkCollectionFunction((String) nodeTemplate.getProperties().get(networkCollectionFunction).getValue());
- if(nodeTemplate.getProperties().get(vfcInstanceGroupFunction) != null)
+ if ( nodeTemplate.getProperties().get(vfcInstanceGroupFunction) != null )
vfcInstanceGroupProperties.setVfcInstanceGroupFunction((String) nodeTemplate.getProperties().get(vfcInstanceGroupFunction).getValue());
return vfcInstanceGroupProperties;
}
- private Map<String, PortMirroringConfig> extractPortMirroringConfigFromCsar(ISdcCsarHelper csarHelper) {
- List<NodeTemplate> nodeTemplates = csarHelper.getServiceNodeTemplateBySdcType(SdcTypes.CONFIGURATION);
+ private Map<String, PortMirroringConfig> extractPortMirroringConfigFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
+ List<NodeTemplate> nodeTemplates = csarHelper.getServiceNodeTemplateBySdcType(SdcTypes.CONFIGURATION);//TODO change to
Map<String, PortMirroringConfig> configMaps = new HashMap<>();
for (NodeTemplate nodeTemplate : nodeTemplates) {
PortMirroringConfig pmConfig = new PortMirroringConfig();
- populateNodeFromNodeTemplate(nodeTemplate, csarHelper, pmConfig);
+ populateNodeFromNodeTemplate(nodeTemplate, csarHelper, pmConfig, policiesTargets);
pmConfig.setModelCustomizationName(nodeTemplate.getName());
pmConfig.setRequirementAssignments(nodeTemplate.getRequirements());
@@ -236,38 +286,38 @@ public class ToscaParserImpl2 {
}
return configMaps;
- }
+ }
- private Map<String, ServiceProxy> extractServiceProxyFromCsar(ISdcCsarHelper csarHelper) {
+ private Map<String, ServiceProxy> extractServiceProxyFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
List<NodeTemplate> nodeTemplates = csarHelper.getServiceNodeTemplateBySdcType(SdcTypes.SERVICE_PROXY);
- Map<String, ServiceProxy> serviceProxies = new HashMap<>();
- for (NodeTemplate nodeTemplate: nodeTemplates) {
- ServiceProxy serviceProxy = new ServiceProxy();
- populateNodeFromNodeTemplate(nodeTemplate, csarHelper, serviceProxy);
+ return nodeTemplates.stream()
+ .collect(toMap(NodeTemplate::getName, node -> getServiceProxyFromNodeTemplate(node, csarHelper, policiesTargets)));
+ }
- Map<String, String> metadata = nodeTemplate.getMetaData().getAllProperties();
- serviceProxy.setSourceModelUuid(metadata.get("sourceModelUuid"));
- serviceProxy.setSourceModelInvariant(metadata.get("sourceModelInvariant"));
- serviceProxy.setSourceModelName(metadata.get("sourceModelName"));
+ private ServiceProxy getServiceProxyFromNodeTemplate(NodeTemplate nodeTemplate, ISdcCsarHelper csarHelper, List<String> policiesTargets) {
+ ServiceProxy serviceProxy = new ServiceProxy();
+ populateNodeFromNodeTemplate(nodeTemplate, csarHelper, serviceProxy, policiesTargets);
- serviceProxies.put(nodeTemplate.getName(), serviceProxy);
- }
+ Map<String, String> metadata = nodeTemplate.getMetaData().getAllProperties();
+ serviceProxy.setSourceModelUuid(metadata.get("sourceModelUuid"));
+ serviceProxy.setSourceModelInvariant(metadata.get("sourceModelInvariant"));
+ serviceProxy.setSourceModelName(metadata.get("sourceModelName"));
- return serviceProxies;
+ return serviceProxy;
}
- private void setSourceAndCollectorProxyNodes(ISdcCsarHelper csarHelper, PortMirroringConfig portMirroringConfig, NodeTemplate nodeTemplate) {
- RequirementAssignments requirementAssignments = nodeTemplate.getRequirements();
+ private void setSourceAndCollectorProxyNodes(ISdcCsarHelper csarHelper, PortMirroringConfig portMirroringConfig, NodeTemplate nodeTemplate) {
+ RequirementAssignments requirementAssignments = nodeTemplate.getRequirements();
List<String> sourceNodes = getRequirementsNodesNames(requirementAssignments.getRequirementsByName("source").getAll());
portMirroringConfig.setSourceNodes(sourceNodes);
List<String> collectorNodes = getRequirementsNodesNames(requirementAssignments.getRequirementsByName("collector").getAll());
- if (!collectorNodes.isEmpty()) { // vprobe
+ if ( !collectorNodes.isEmpty() ) { // vprobe
portMirroringConfig.setCollectorNodes(collectorNodes);
} else { // pprobe - configuration by policy
String collectorNodeName = csarHelper.getNodeTemplatePropertyLeafValue(nodeTemplate, "collector_node");
- if (collectorNodeName != null) {
+ if ( collectorNodeName != null ) {
portMirroringConfig.setCollectorNodes(Arrays.asList(collectorNodeName));
portMirroringConfig.setConfigurationByPolicy(true);
}
@@ -277,8 +327,8 @@ public class ToscaParserImpl2 {
private List<String> getRequirementsNodesNames(List<RequirementAssignment> requirements) {
List<String> requirementsNodes = new ArrayList<>();
- if (requirements != null && requirements.size() > 0) {
- requirementsNodes = requirements.stream().map(RequirementAssignment::getNodeTemplateName).collect(Collectors.toList());
+ if ( !CollectionUtils.isEmpty(requirements) ) {
+ requirementsNodes = requirements.stream().map(RequirementAssignment::getNodeTemplateName).collect(toList());
}
return requirementsNodes;
@@ -301,26 +351,29 @@ public class ToscaParserImpl2 {
return Boolean.valueOf(group.getPropertyValue(Constants.VOLUME_GROUP).toString());
}
- private Map<String, Network> extractNetworksFromCsar(ISdcCsarHelper csarHelper) {
+ private Map<String, Network> extractNetworksFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
List<NodeTemplate> nodeTemplates = csarHelper.getServiceVlList();
- Map<String, Network> networksMap = new HashMap<String, Network>();
+ Map<String, Network> networksMap = new HashMap<>();
for (NodeTemplate nodeTemplate : nodeTemplates) {
Network newNetwork = new Network();
- populateNodeFromNodeTemplate(nodeTemplate, csarHelper, newNetwork);
+ populateNodeFromNodeTemplate(nodeTemplate, csarHelper, newNetwork, policiesTargets);
newNetwork.setModelCustomizationName(nodeTemplate.getName());
+ if (ToscaNamingPolicy.getEcompNamingValueForNode(nodeTemplate, "exVL_naming").equals("true")) {
+ setEcompNamingProperty(newNetwork.getProperties(), "true");
+ }
networksMap.put(nodeTemplate.getName(), newNetwork);
}
return networksMap;
- }
+ }
- private Map<String,Node> extractPnfsFromCsar(ISdcCsarHelper csarHelper) {
+ private Map<String, Node> extractPnfsFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
List<NodeTemplate> nodeTemplates = csarHelper.getServiceNodeTemplateBySdcType(SdcTypes.PNF);
HashMap<String, Node> pnfHashMap = new HashMap<>();
for (NodeTemplate nodeTemplate : nodeTemplates) {
Node pnf = new Node();
- populateNodeFromNodeTemplate(nodeTemplate, csarHelper, pnf);
+ populateNodeFromNodeTemplate(nodeTemplate, csarHelper, pnf, policiesTargets);
pnfHashMap.put(nodeTemplate.getName(), pnf);
}
return pnfHashMap;
@@ -352,13 +405,13 @@ public class ToscaParserImpl2 {
Map<String, org.onap.vid.asdc.beans.tosca.Input> inputs = new HashMap<>();
for (org.onap.sdc.toscaparser.api.parameters.Input input : inputList) {
//Set only inputs without annotation to the service level
- if(input.getAnnotations() == null)
+ if ( input.getAnnotations() == null )
inputs.put(input.getName(), convertInput(input, new org.onap.vid.asdc.beans.tosca.Input(), null));
}
return inputs;
}
- private Node populateNodeFromNodeTemplate(NodeTemplate nodeTemplate, ISdcCsarHelper csarHelper, Node newNode) {
+ private Node populateNodeFromNodeTemplate(NodeTemplate nodeTemplate, ISdcCsarHelper csarHelper, Node newNode, List<String> policiesTargets) {
newNode.setCustomizationUuid(csarHelper.getNodeTemplateCustomizationUuid(nodeTemplate));
newNode.setDescription(nodeTemplate.getMetaData().getValue(Constants.DESCRIPTION));
newNode.setInvariantUuid(nodeTemplate.getMetaData().getValue(Constants.INVARIANT_UUID));
@@ -367,19 +420,21 @@ public class ToscaParserImpl2 {
newNode.setVersion(nodeTemplate.getMetaData().getValue(Constants.VERSION));
newNode.setInputs(extractInputsAndCommandsForNodeTemplate(nodeTemplate, csarHelper, newNode));
newNode.setType(nodeTemplate.getMetaData().getValue(Constants.TYPE));
- Map<String, String> propertiesMap = setPropertiesOfVnf(nodeTemplate.getPropertiesObjects());
+ Map<String, String> propertiesMap = nodeTemplate.getPropertiesObjects().stream()
+ .collect(toMap(Property::getName, p -> p.getValue().toString()));
+ setEcompNamingProperty(propertiesMap, String.valueOf(policiesTargets.contains(nodeTemplate.getName())));
newNode.setProperties(propertiesMap);
return newNode;
}
- private VfModule populateVfModuleFromGroup(Group group, ISdcCsarHelper csarHelper){
+ private VfModule populateVfModuleFromGroup(Group group, ISdcCsarHelper csarHelper) {
VfModule vfModule = new VfModule();
extractBasicPropertiesForGroup(vfModule, group, csarHelper);
vfModule.setVolumeGroupAllowed(isVolumeGroup(group));
return vfModule;
}
- private VolumeGroup populateVolumeGroupFromGroup(Group group, ISdcCsarHelper csarHelper){
+ private VolumeGroup populateVolumeGroupFromGroup(Group group, ISdcCsarHelper csarHelper) {
VolumeGroup volumeGroup = new VolumeGroup();
extractBasicPropertiesForGroup(volumeGroup, group, csarHelper);
return volumeGroup;
@@ -398,30 +453,39 @@ public class ToscaParserImpl2 {
}
- private Map<String,org.onap.vid.asdc.beans.tosca.Input> extractVfInputsFromCsarByAnnotation(ISdcCsarHelper csarHelper, org.onap.vid.model.Group group) {
+ private Map<String, org.onap.vid.asdc.beans.tosca.Input> extractVfInputsFromCsarByAnnotation(ISdcCsarHelper csarHelper, org.onap.vid.model.Group group) {
Map<String, org.onap.vid.asdc.beans.tosca.Input> inputMap = new HashMap<>();
- if(group.getProperties().getVfModuleLabel() != null){
+ if ( group.getProperties().getVfModuleLabel() != null ) {
List<Input> inputsList = csarHelper.getInputsWithAnnotations();
- for(Input input: inputsList){
- if(input.getAnnotations() != null){
- List<Property> annotationProperties = input.getAnnotations().get("source").getProperties();
- if(isInputMatchesToGroup(annotationProperties, group)){
- inputMap.put(input.getName(), new org.onap.vid.asdc.beans.tosca.Input(input ,annotationProperties));
- }
- }
+ for (Input input : inputsList) {
+ extractVfModuleInput(group, inputMap, input);
}
}
return inputMap;
}
+ private void extractVfModuleInput(org.onap.vid.model.Group group, Map<String, org.onap.vid.asdc.beans.tosca.Input> inputMap, Input input) {
+ if ( input.getAnnotations() != null ) {
+ List<Property> annotationProperties = input.getAnnotations().get("source").getProperties();
+ if ( isInputMatchesToGroup(annotationProperties, group) ) {
+ final org.onap.vid.asdc.beans.tosca.Input vfModuleInput = new org.onap.vid.asdc.beans.tosca.Input(input, annotationProperties);
+ if ( vfModuleInput.getInputProperties() != null && vfModuleInput.getInputProperties().getParamName() != null ) {
+ inputMap.put(vfModuleInput.getInputProperties().getParamName(), vfModuleInput);
+ } else {
+ inputMap.put(input.getName(), vfModuleInput);
+ }
+ }
+ }
+ }
+
- private boolean isInputMatchesToGroup(List<Property> annotationProperties, org.onap.vid.model.Group group){
- for(Property property: annotationProperties){
- if(property.getName().equals(VF_MODULE_LABEL)){
+ private boolean isInputMatchesToGroup(List<Property> annotationProperties, org.onap.vid.model.Group group) {
+ for (Property property : annotationProperties) {
+ if ( property.getName().equals(VF_MODULE_LABEL) ) {
final Object values = property.getValue();
final String vfModuleLabel = group.getProperties().getVfModuleLabel();
- if (values instanceof List) {
- if (listContainsAsString((List) values, vfModuleLabel)) return true;
+ if ( values instanceof List ) {
+ if ( listContainsAsString((List) values, vfModuleLabel) ) return true;
} else {
return getPropertyValueAsString(property).equals(vfModuleLabel);
}
@@ -432,7 +496,7 @@ public class ToscaParserImpl2 {
private boolean listContainsAsString(List list, String value) {
for (Object v : list) {
- if (StringUtils.equals(v.toString(), value)) {
+ if ( StringUtils.equals(v.toString(), value) ) {
return true;
}
}
@@ -443,37 +507,45 @@ public class ToscaParserImpl2 {
return removeSquareBrackets(property.getValue().toString());
}
- private String removeSquareBrackets(String stringWithSquareBrackets){
+ private String removeSquareBrackets(String stringWithSquareBrackets) {
return stringWithSquareBrackets.replaceAll("(^\\[|\\]$)", "");
}
- private GroupProperties extractVfModuleProperties(Group group, ISdcCsarHelper csarHelper){
+ private GroupProperties extractVfModuleProperties(Group group, ISdcCsarHelper csarHelper) {
GroupProperties vfModuleProperties = new GroupProperties();
- if(csarHelper.getGroupPropertyAsObject(group, Constants.MIN_VF_MODULE_INSTANCES) != null)
- vfModuleProperties.setMinCountInstances((Integer)csarHelper.getGroupPropertyAsObject(group, Constants.MIN_VF_MODULE_INSTANCES));
- if(csarHelper.getGroupPropertyAsObject(group, Constants.MAX_VF_MODULE_INSTANCES) != null)
- vfModuleProperties.setMaxCountInstances((Integer)csarHelper.getGroupPropertyAsObject(group, Constants.MAX_VF_MODULE_INSTANCES));
- if(csarHelper.getGroupPropertyAsObject(group, Constants.INITIAL_COUNT) != null)
- vfModuleProperties.setInitialCount((Integer)csarHelper.getGroupPropertyAsObject(group, Constants.INITIAL_COUNT));
- if(csarHelper.getGroupPropertyAsObject(group, VF_MODULE_LABEL) != null)
+ if ( csarHelper.getGroupPropertyAsObject(group, Constants.MIN_VF_MODULE_INSTANCES) != null )
+ vfModuleProperties.setMinCountInstances((Integer) csarHelper.getGroupPropertyAsObject(group, Constants.MIN_VF_MODULE_INSTANCES));
+ if ( csarHelper.getGroupPropertyAsObject(group, Constants.MAX_VF_MODULE_INSTANCES) != null )
+ vfModuleProperties.setMaxCountInstances((Integer) csarHelper.getGroupPropertyAsObject(group, Constants.MAX_VF_MODULE_INSTANCES));
+ if ( csarHelper.getGroupPropertyAsObject(group, Constants.INITIAL_COUNT) != null )
+ vfModuleProperties.setInitialCount((Integer) csarHelper.getGroupPropertyAsObject(group, Constants.INITIAL_COUNT));
+ if ( csarHelper.getGroupPropertyAsObject(group, VF_MODULE_LABEL) != null )
vfModuleProperties.setVfModuleLabel((String) csarHelper.getGroupPropertyAsObject(group, VF_MODULE_LABEL));
+ vfModuleProperties.setBaseModule(isModuleTypeIsBaseObjectSafe(csarHelper.getGroupPropertyAsObject(group, Constants.VF_MODULE_TYPE)));
return vfModuleProperties;
}
+ public static boolean isModuleTypeIsBaseObjectSafe(Object vfModuleTypeValue) {
+ return (vfModuleTypeValue instanceof String) && (isModuleTypeIsBase((String) vfModuleTypeValue));
+ }
+
+ protected static boolean isModuleTypeIsBase(String vfModuleTypeValue) {
+ return "Base".equalsIgnoreCase(vfModuleTypeValue);
+ }
- private Map<String, org.onap.vid.asdc.beans.tosca.Input> extractInputsAndCommandsForNodeTemplate(NodeTemplate nodeTemplate, ISdcCsarHelper csarHelper, Node newNode){
+ private Map<String, org.onap.vid.asdc.beans.tosca.Input> extractInputsAndCommandsForNodeTemplate(NodeTemplate nodeTemplate, ISdcCsarHelper csarHelper, Node newNode) {
Map<String, org.onap.vid.asdc.beans.tosca.Input> inputMap = new HashMap<>();
Map<String, CommandProperty> commandPropertyMap = new HashMap<>();
List<Input> inputs = csarHelper.getServiceInputs();
- Map<String, String> properties = csarHelper.filterNodeTemplatePropertiesByValue(nodeTemplate, FilterType.CONTAINS, Constants.GET_INPUT);
+ Map<String, String> properties = csarHelper.filterNodeTemplatePropertiesByValue(nodeTemplate, FilterType.CONTAINS, Constants.GET_INPUT);
for (Map.Entry<String, String> property : properties.entrySet()) {
String inputKey = property.getValue();
String key = extractInputValue(inputKey);
- for (Input input: inputs){
- if(input.getName().equals(key)){
+ for (Input input : inputs) {
+ if ( input.getName().equals(key) ) {
org.onap.vid.asdc.beans.tosca.Input localInput = new org.onap.vid.asdc.beans.tosca.Input();
localInput = convertInput(input, localInput, nodeTemplate);
String name = property.getKey();
@@ -487,7 +559,7 @@ public class ToscaParserImpl2 {
}
private String extractInputValue(String inputKey) {
- return inputKey.substring(inputKey.indexOf(":") + 1);
+ return inputKey.substring(inputKey.indexOf(':') + 1);
}
private org.onap.vid.asdc.beans.tosca.Input convertInput(Input parserInput, org.onap.vid.asdc.beans.tosca.Input localInput, NodeTemplate nodeTemplate){
@@ -497,7 +569,7 @@ public class ToscaParserImpl2 {
localInput.setType(parserInput.getType());
localInput.setConstraints(parserInput.getConstraints());
// localInput.setentry_schema()
-
+
//if inputs of inner nodeTemplate - tell its details
if(nodeTemplate != null) {
Metadata metadata = nodeTemplate.getMetaData();
@@ -506,11 +578,11 @@ public class ToscaParserImpl2 {
localInput.setTemplateInvariantUUID(metadata.getValue("invariantUUID"));
localInput.setTemplateCustomizationUUID(metadata.getValue("customizationUUID"));
}
-
+
return localInput;
}
- private CommandProperty extractCommands(String displayName, String inputName){
+ private CommandProperty extractCommands(String displayName, String inputName) {
CommandProperty commandProperty = new CommandProperty();
commandProperty.setDisplayName(displayName);
commandProperty.setCommand(Constants.GET_INPUT);
@@ -518,19 +590,8 @@ public class ToscaParserImpl2 {
return commandProperty;
}
- private Map<String, String> setPropertiesOfVnf(List<Property> properties) {
- Map<String, String> propertiesMap = new HashMap<String, String>();
- for (Property property : properties) {
- //special handling to necessary sub-property "ecomp_generated_naming"
- if(property.getName().equals("nf_naming")){
- final Object ecompGeneratedNaming = ((Map) (property.getValue())).get("ecomp_generated_naming");
- if (ecompGeneratedNaming != null) {
- propertiesMap.put("ecomp_generated_naming", ecompGeneratedNaming.toString());
- }
- }
- propertiesMap.put(property.getName(), property.getValue().toString());
- }
- return propertiesMap;
+ private void setEcompNamingProperty(Map<String, String> propertiesMap, String isUserProvidingVnfNameOptional) {
+ propertiesMap.put(Constants.ECOMP_GENERATED_NAMING_PROPERTY, isUserProvidingVnfNameOptional);
}
private String validateInstantiationType(ISdcCsarHelper csarHelper){
@@ -545,5 +606,43 @@ public class ToscaParserImpl2 {
return validatedInstantiationType;
}
+ private Map<String, ResourceGroup> extractVnfGroupsFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
+ List<Group> resourceGroups = csarHelper.getGroupsOfTopologyTemplateByToscaGroupType(Constants.RESOURCE_GROUP_TYPE);
+
+ return resourceGroups.stream()
+ .filter(group -> group.getProperties().get(Constants.RESOURCE_GROUP_CONTAINED_TYPE).getValue().equals("VF"))
+ .collect(toMap(Group::getName, group -> parseResourceGroup(group, csarHelper, policiesTargets)));
+ }
+
+ private ResourceGroup parseResourceGroup(Group group, ISdcCsarHelper csarHelper, List<String> policiesTargets) {
+ return new ResourceGroup(
+ Constants.VNF_GROUP,
+ group.getMetadata().getValue(Constants.INVARIANT_UUID),
+ group.getMetadata().getValue(Constants.UUID),
+ group.getMetadata().getValue(Constants.VERSION),
+ group.getMetadata().getValue(Constants.NAME),
+ group.getMetadata().getValue(Constants.NAME),
+ getPropertiesOfResourceGroup(group.getProperties(), policiesTargets.contains(group.getName())),
+ csarHelper.getGroupMembersFromTopologyTemplate(group.getName()).stream()
+ .collect(toMap(NodeTemplate::getName, node -> getServiceProxyFromNodeTemplate(node, csarHelper, policiesTargets)))
+ );
+ }
+
+ private Map<String, Object> getPropertiesOfResourceGroup(Map<String, Property> properties, boolean hasPolicyTarget) {
+ Map<String, Object> propertiesMap = properties.entrySet().stream()
+ .collect(toMap(Map.Entry::getKey, e -> e.getValue().getValue()));
+ propertiesMap.put(Constants.ECOMP_GENERATED_NAMING_PROPERTY, String.valueOf(hasPolicyTarget));
+ return propertiesMap;
+ }
+
+ public List<String> extractNamingPoliciesTargets(ISdcCsarHelper csarHelper) {
+ List<Policy> policies = csarHelper.getPoliciesOfTopologyTemplateByToscaPolicyType(Constants.NAMING_POLICY_TYPE);
+ return policies.stream()
+ .filter(policy -> policy.getProperties().get(Constants.TYPE) != null &&
+ policy.getProperties().get(Constants.TYPE).getValue() != null &&
+ StringUtils.equalsIgnoreCase(policy.getProperties().get(Constants.TYPE).getValue().toString(), "naming"))
+ .flatMap(policy -> policy.getTargets().stream())
+ .collect(toList());
+ }
} \ No newline at end of file
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/parser/VidNotionsBuilder.java b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/VidNotionsBuilder.java
new file mode 100644
index 000000000..ca0607b8a
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/parser/VidNotionsBuilder.java
@@ -0,0 +1,130 @@
+package org.onap.vid.asdc.parser;
+
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.vid.model.ServiceModel;
+import org.onap.vid.model.VidNotions;
+import org.onap.vid.properties.Features;
+import org.togglz.core.manager.FeatureManager;
+
+import static org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase;
+import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;
+
+public class VidNotionsBuilder {
+
+ private final FeatureManager featureManager;
+
+ public VidNotionsBuilder(FeatureManager featureManager) {
+ this.featureManager = featureManager;
+ }
+
+ public VidNotions buildVidNotions(ISdcCsarHelper csarHelper, ServiceModel serviceModel) {
+ final VidNotions.InstantiationUI instantiationUI = suggestInstantiationUI(csarHelper);
+
+ return new VidNotions(instantiationUI, suggestModelCategory(csarHelper), suggestViewEditUI(csarHelper, serviceModel));
+ }
+
+ //UI route a-la-carte services to old UI only if InstantiationUI is LEGACY
+ //So any other value for InstantiationUI other than LEGACY make UI to route
+ //a-la-carte services to new UI
+ VidNotions.InstantiationUI suggestInstantiationUI(ISdcCsarHelper csarHelper) {
+ if(featureManager.isActive(Features.FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI) && isALaCarte(csarHelper)) {
+ return VidNotions.InstantiationUI.ANY_ALACARTE_NEW_UI;
+ }
+ if (featureManager.isActive(Features.FLAG_1902_VNF_GROUPING) && isGrouping(csarHelper)) {
+ return VidNotions.InstantiationUI.SERVICE_WITH_VNF_GROUPING;
+ }
+ if (featureManager.isActive(Features.FLAG_5G_IN_NEW_INSTANTIATION_UI)) {
+ if (isUuidExactlyHardCoded1ffce89fef3f(csarHelper)) {
+ return VidNotions.InstantiationUI.SERVICE_UUID_IS_1ffce89f_ef3f_4cbb_8b37_82134590c5de;
+ } else if (isALaCarte(csarHelper) && hasAnyNetworkWithPropertyNetworkTechnologyEqualsStandardSriovOrOvs(csarHelper)) {
+ return VidNotions.InstantiationUI.NETWORK_WITH_PROPERTY_NETWORK_TECHNOLOGY_EQUALS_STANDARD_SRIOV_OR_OVS;
+ } else if (isALaCarte(csarHelper) && hasFabricConfiguration(csarHelper)) {
+ return VidNotions.InstantiationUI.SERVICE_WITH_FABRIC_CONFIGURATION;
+ }
+ }
+
+ return VidNotions.InstantiationUI.LEGACY;
+
+ }
+
+ VidNotions.ModelCategory suggestModelCategory(ISdcCsarHelper csarHelper) {
+ if (isALaCarte(csarHelper) && hasAnyNetworkWithPropertyNetworkTechnologyEqualsStandardSriovOrOvs(csarHelper)){
+ return VidNotions.ModelCategory.IS_5G_PROVIDER_NETWORK_MODEL;
+ } else if(isALaCarte(csarHelper) && hasFabricConfiguration(csarHelper)) {
+ return VidNotions.ModelCategory.IS_5G_FABRIC_CONFIGURATION_MODEL;
+ } else {
+ return VidNotions.ModelCategory.OTHER;
+ }
+ }
+
+ VidNotions.InstantiationUI suggestViewEditUI(ISdcCsarHelper csarHelper, ServiceModel serviceModel) {
+ if (!featureManager.isActive(Features.FLAG_ASYNC_INSTANTIATION)){
+ return VidNotions.InstantiationUI.LEGACY;
+ }
+ if (featureManager.isActive(Features.FLAG_1902_VNF_GROUPING) && isGrouping(csarHelper)) {
+ return VidNotions.InstantiationUI.SERVICE_WITH_VNF_GROUPING;
+ }
+
+ if (featureManager.isActive(Features.FLAG_1902_NEW_VIEW_EDIT)) {
+ if (isMacro(serviceModel) && !isMacroExcludedFromAsyncFlow(serviceModel)) {
+ return VidNotions.InstantiationUI.MACRO_SERVICE;
+ }
+ VidNotions.InstantiationUI instantiationUISuggestion = suggestInstantiationUI(csarHelper);
+ if (instantiationUISuggestion!=VidNotions.InstantiationUI.LEGACY) {
+ return instantiationUISuggestion;
+ }
+ }
+
+ return VidNotions.InstantiationUI.LEGACY;
+ }
+
+ private boolean isMacro(ServiceModel serviceModel) {
+ return ToscaParserImpl2.Constants.MACRO.equals(serviceModel.getService().getInstantiationType());
+ }
+
+ private boolean isUuidExactlyHardCoded1ffce89fef3f(ISdcCsarHelper csarHelper) {
+ return equalsIgnoreCase(
+ csarHelper.getServiceMetadata().getValue(ToscaParserImpl2.Constants.UUID), "95eb2c44-bff2-4e8b-ad5d-8266870b7717");
+ }
+
+ private boolean hasAnyNetworkWithPropertyNetworkTechnologyEqualsStandardSriovOrOvs(ISdcCsarHelper csarHelper) {
+ return hasAnyNetworkWithPropertyEqualsToAnyOf(csarHelper, "network_technology","Standard-SR-IOV","OVS") ;
+ }
+
+ boolean hasFabricConfiguration(ISdcCsarHelper csarHelper) {
+ return csarHelper.getServiceNodeTemplates().stream()
+ .flatMap(nodeTemplate -> csarHelper.getNodeTemplateChildren(nodeTemplate).stream())
+ .anyMatch(child -> child.getType().equals(ToscaParserImpl2.Constants.FABRIC_CONFIGURATION_TYPE));
+ }
+
+ boolean hasAnyNetworkWithPropertyEqualsToAnyOf(ISdcCsarHelper csarHelper, String propertyName, String... propertyValues) {
+ return csarHelper
+ .getServiceVlList().stream()
+ .map(NodeTemplate::getProperties)
+ .flatMap(props -> props.entrySet().stream())
+ .filter(prop -> equalsIgnoreCase(prop.getKey(), propertyName))
+ // getValue().getValue() because value is Entry, where it's inner value is what we're looking for
+ .anyMatch(prop -> equalsAnyIgnoreCase(prop.getValue().getValue().toString(), propertyValues));
+ }
+
+ boolean isALaCarte(ISdcCsarHelper csarHelper) {
+ final String instantiationType = csarHelper.getServiceMetadata().getValue(ToscaParserImpl2.Constants.INSTANTIATION_TYPE);
+ return StringUtils.equalsIgnoreCase(instantiationType, ToscaParserImpl2.Constants.A_LA_CARTE);
+ }
+
+ boolean isMacroExcludedFromAsyncFlow(ServiceModel serviceModel) {
+ return (MapUtils.isNotEmpty(serviceModel.getPnfs()) ||
+ MapUtils.isNotEmpty(serviceModel.getCollectionResource()) ||
+ (MapUtils.isNotEmpty(serviceModel.getNetworks()) && !featureManager.isActive(Features.FLAG_NETWORK_TO_ASYNC_INSTANTIATION)));
+
+
+ }
+
+ private boolean isGrouping(ISdcCsarHelper csarHelper) {
+ final String serviceRole = csarHelper.getServiceMetadata().getValue(ToscaParserImpl2.Constants.SERVICE_ROLE);
+ return StringUtils.equalsIgnoreCase(serviceRole, ToscaParserImpl2.Constants.GROUPING);
+ }
+}