aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/asdc/parser
diff options
context:
space:
mode:
authorEinat Vinouze <einat.vinouze@intl.att.com>2019-07-16 17:17:36 +0300
committerIttay Stern <ittay.stern@att.com>2019-07-30 06:01:44 +0300
commite601bbdc43bae9a08e2e10c5139a6f76b47860d7 (patch)
tree1913f0b369ead3f2ea5557e5649d8281eca9871c /vid-app-common/src/main/java/org/onap/vid/asdc/parser
parent76c6ee4a697617ec4cdee2f3b48bc83136c858c5 (diff)
Implant vid-app-common org.onap.vid.job (main and test)
Issue-ID: VID-378 Change-Id: I41b0bdc2c4e3635f3f3319b1cd63cefc61912dfc Signed-off-by: Einat Vinouze <einat.vinouze@intl.att.com> Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/asdc/parser')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/parser/ToscaParserImpl2.java101
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/parser/VidNotionsBuilder.java142
2 files changed, 178 insertions, 65 deletions
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 c702cf40a..735ba437c 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
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -22,6 +22,8 @@ package org.onap.vid.asdc.parser;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.jetbrains.annotations.Nullable;
import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
import org.onap.sdc.tosca.parser.enums.FilterType;
import org.onap.sdc.tosca.parser.enums.SdcTypes;
@@ -29,7 +31,6 @@ import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
import org.onap.sdc.toscaparser.api.Group;
import org.onap.sdc.toscaparser.api.*;
-import org.onap.sdc.toscaparser.api.elements.Metadata;
import org.onap.sdc.toscaparser.api.parameters.Input;
import org.onap.vid.asdc.beans.Service;
import org.onap.vid.model.*;
@@ -66,6 +67,7 @@ public class ToscaParserImpl2 {
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 QUANTITY = "quantity";
public static final String INSTANTIATION_TYPE = "instantiationType";
//instantiation type
@@ -106,8 +108,16 @@ public class ToscaParserImpl2 {
public static final String VNF_GROUP = "VnfGroup";
+ public static final String VRF_NODE_TYPE = "org.openecomp.nodes.VRFEntry";
+
+ public static final String PORT_MIRRORING_CONFIGURATION_NODE_TYPE = "org.openecomp.nodes.PortMirroringConfiguration";
+
+ public static final String PORT_MIRRORING_CONFIGURATION_BY_POLICY_NODE_TYPE = "org.openecomp.nodes.PortMirroringConfigurationByPolicy";
+
public static final String NAMING_POLICY_TYPE = "org.openecomp.policies.External";
+ public static final String SCALING_POLICY_TYPE = "org.openecomp.policies.scaling.Fixed";
+
public static final String ECOMP_GENERATED_NAMING_PROPERTY = "ecomp_generated_naming";
}
@@ -119,6 +129,7 @@ public class ToscaParserImpl2 {
ServiceModel serviceModel = new ServiceModel();
ISdcCsarHelper sdcCsarHelper = getSdcCsarHelper(path);
List<String> policiesTargets = extractNamingPoliciesTargets(sdcCsarHelper);
+ Map<String, Integer> scalingPolicies = extractScalingPolicyOfGroup(sdcCsarHelper);
serviceModel.setService(extractServiceFromCsar(asdcServiceMetadata, sdcCsarHelper));
serviceModel.setVolumeGroups(extractVolumeGroups(sdcCsarHelper));
@@ -128,9 +139,10 @@ public class ToscaParserImpl2 {
serviceModel.setServiceProxies(extractServiceProxyFromCsar(sdcCsarHelper, policiesTargets));
serviceModel.setNetworks(extractNetworksFromCsar(sdcCsarHelper, policiesTargets));
serviceModel.setPnfs(extractPnfsFromCsar(sdcCsarHelper, policiesTargets));
- serviceModel.setCollectionResource(extractCRFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setCollectionResources(extractCRFromCsar(sdcCsarHelper, policiesTargets));
serviceModel.setFabricConfigurations(extractFabricConfigFromCsar(sdcCsarHelper, policiesTargets));
- serviceModel.setVnfGroups(extractVnfGroupsFromCsar(sdcCsarHelper, policiesTargets));
+ serviceModel.setVnfGroups(extractVnfGroupsFromCsar(sdcCsarHelper, policiesTargets, scalingPolicies));
+ serviceModel.setVrfs(extractVrfsFromCsar(sdcCsarHelper, policiesTargets));
serviceModel.getService().setVidNotions(vidNotionsBuilder.buildVidNotions(sdcCsarHelper, serviceModel));
return serviceModel;
}
@@ -248,7 +260,7 @@ public class ToscaParserImpl2 {
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")) {
+ if ("true".equals(ToscaNamingPolicy.getEcompNamingValueForNode(nodeTemplate, "nf_naming"))) {
setEcompNamingProperty(vnf.getProperties(), "true");
}
vnfsMaps.put(nodeTemplate.getName(), vnf);
@@ -291,7 +303,8 @@ public class ToscaParserImpl2 {
}
private Map<String, PortMirroringConfig> extractPortMirroringConfigFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
- List<NodeTemplate> nodeTemplates = csarHelper.getServiceNodeTemplateBySdcType(SdcTypes.CONFIGURATION);//TODO change to
+ List<NodeTemplate> nodeTemplates = csarHelper.getServiceNodeTemplatesByType(Constants.PORT_MIRRORING_CONFIGURATION_NODE_TYPE);
+ nodeTemplates.addAll(csarHelper.getServiceNodeTemplatesByType(Constants.PORT_MIRRORING_CONFIGURATION_BY_POLICY_NODE_TYPE));
Map<String, PortMirroringConfig> configMaps = new HashMap<>();
for (NodeTemplate nodeTemplate : nodeTemplates) {
@@ -379,7 +392,7 @@ public class ToscaParserImpl2 {
Network newNetwork = new Network();
populateNodeFromNodeTemplate(nodeTemplate, csarHelper, newNetwork, policiesTargets);
newNetwork.setModelCustomizationName(nodeTemplate.getName());
- if (ToscaNamingPolicy.getEcompNamingValueForNode(nodeTemplate, "exVL_naming").equals("true")) {
+ if ("true".equals(ToscaNamingPolicy.getEcompNamingValueForNode(nodeTemplate, "exVL_naming"))) {
setEcompNamingProperty(newNetwork.getProperties(), "true");
}
networksMap.put(nodeTemplate.getName(), newNetwork);
@@ -389,14 +402,7 @@ public class ToscaParserImpl2 {
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, policiesTargets);
- pnfHashMap.put(nodeTemplate.getName(), pnf);
- }
- return pnfHashMap;
+ return this.extractNodesFromCsar(csarHelper,policiesTargets,nodeTemplates);
}
private Map<String, VfModule> extractVfModuleFromCsar(ISdcCsarHelper csarHelper) {
@@ -426,7 +432,7 @@ public class ToscaParserImpl2 {
for (org.onap.sdc.toscaparser.api.parameters.Input input : inputList) {
//Set only inputs without annotation to the service level
if ( input.getAnnotations() == null )
- inputs.put(input.getName(), convertInput(input, new org.onap.vid.asdc.beans.tosca.Input(), null));
+ inputs.put(input.getName(), convertInput(input, new org.onap.vid.asdc.beans.tosca.Input()));
}
return inputs;
}
@@ -546,7 +552,7 @@ public class ToscaParserImpl2 {
}
- public static boolean isModuleTypeIsBaseObjectSafe(Object vfModuleTypeValue) {
+ public static boolean isModuleTypeIsBaseObjectSafe(@Nullable Object vfModuleTypeValue) {
return (vfModuleTypeValue instanceof String) && (isModuleTypeIsBase((String) vfModuleTypeValue));
}
@@ -567,7 +573,7 @@ public class ToscaParserImpl2 {
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);
+ localInput = convertInput(input, localInput);
String name = property.getKey();
commandPropertyMap.put(name, extractCommands(name, key));
inputMap.put(name, localInput);
@@ -582,23 +588,13 @@ public class ToscaParserImpl2 {
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){
+ private org.onap.vid.asdc.beans.tosca.Input convertInput(Input parserInput, org.onap.vid.asdc.beans.tosca.Input localInput) {
localInput.setDefault(parserInput.getDefault());
localInput.setDescription(parserInput.getDescription());
localInput.setRequired(parserInput.isRequired());
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();
- localInput.setTemplateName(metadata.getValue("name"));
- localInput.setTemplateUUID(metadata.getValue("UUID"));
- localInput.setTemplateInvariantUUID(metadata.getValue("invariantUUID"));
- localInput.setTemplateCustomizationUUID(metadata.getValue("customizationUUID"));
- }
-
return localInput;
}
@@ -626,15 +622,30 @@ public class ToscaParserImpl2 {
return validatedInstantiationType;
}
- private Map<String, ResourceGroup> extractVnfGroupsFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
+ private Map<String, Node> extractVrfsFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets) {
+ List<NodeTemplate> nodeTemplates = csarHelper.getServiceNodeTemplatesByType(Constants.VRF_NODE_TYPE);
+ return this.extractNodesFromCsar(csarHelper,policiesTargets,nodeTemplates);
+ }
+
+ private Map<String, Node> extractNodesFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets, List<NodeTemplate> nodeTemplates){
+ HashMap<String, Node> nodeHashMap = new HashMap<>();
+ for (NodeTemplate nodeTemplate : nodeTemplates) {
+ Node node = new Node();
+ populateNodeFromNodeTemplate(nodeTemplate, csarHelper, node, policiesTargets);
+ nodeHashMap.put(nodeTemplate.getName(), node);
+ }
+ return nodeHashMap;
+ }
+
+ private Map<String, ResourceGroup> extractVnfGroupsFromCsar(ISdcCsarHelper csarHelper, List<String> policiesTargets, Map<String, Integer> scalingPolicies) {
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)));
+ .collect(toMap(Group::getName, group -> parseResourceGroup(group, csarHelper, policiesTargets, scalingPolicies)));
}
- private ResourceGroup parseResourceGroup(Group group, ISdcCsarHelper csarHelper, List<String> policiesTargets) {
+ private ResourceGroup parseResourceGroup(Group group, ISdcCsarHelper csarHelper, List<String> policiesTargets, Map<String, Integer> scalingPolicies) {
return new ResourceGroup(
Constants.VNF_GROUP,
group.getMetadata().getValue(Constants.INVARIANT_UUID),
@@ -642,16 +653,19 @@ public class ToscaParserImpl2 {
group.getMetadata().getValue(Constants.VERSION),
group.getMetadata().getValue(Constants.NAME),
group.getMetadata().getValue(Constants.NAME),
- getPropertiesOfResourceGroup(group.getProperties(), policiesTargets.contains(group.getName())),
+ getPropertiesOfResourceGroup(group.getProperties(), policiesTargets.contains(group.getName()), scalingPolicies.get(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) {
+ private Map<String, Object> getPropertiesOfResourceGroup(Map<String, Property> properties, boolean hasPolicyTarget, Integer qty) {
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));
+ if (qty != null) {
+ propertiesMap.put(Constants.QUANTITY, qty);
+ }
return propertiesMap;
}
@@ -660,9 +674,22 @@ public class ToscaParserImpl2 {
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 &&
+ policy.getProperties().get(Constants.TYPE).getValue() != null &&
StringUtils.equalsIgnoreCase(policy.getProperties().get(Constants.TYPE).getValue().toString(), "naming"))
.flatMap(policy -> policy.getTargets().stream())
.collect(toList());
}
-}
+
+ public Map<String, Integer> extractScalingPolicyOfGroup(ISdcCsarHelper csarHelper) {
+ return csarHelper.getPoliciesOfTopologyTemplateByToscaPolicyType(Constants.SCALING_POLICY_TYPE)
+ .stream()
+ .filter(policy -> policy.getProperties().containsKey(Constants.QUANTITY))
+ .flatMap(policy -> {
+ Integer qty = Integer.parseInt(policy.getProperties().get(Constants.QUANTITY).getValue().toString());
+ return policy
+ .getTargets().stream()
+ .map(target -> Pair.of(target, qty));
+ })
+ .collect(toMap(Pair::getKey, Pair::getValue));
+ }
+} \ 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
index a28695211..c9c2649ae 100644
--- 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
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,36 +20,75 @@
package org.onap.vid.asdc.parser;
+import static org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase;
+import static org.apache.commons.lang3.StringUtils.equalsIgnoreCase;
+import static org.apache.commons.lang3.StringUtils.isEmpty;
+
+import com.google.common.collect.ImmutableMap;
+import java.util.Map;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.Nullable;
import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.elements.Metadata;
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;
+ //map of service type that are always macro services, and their relevant featureFlag
+ private static final Map<VidNotions.ModelCategory, Features> macroServicesByModelCategory = ImmutableMap.of(
+ VidNotions.ModelCategory.INFRASTRUCTURE_VPN, Features.FLAG_1908_INFRASTRUCTURE_VPN,
+ VidNotions.ModelCategory.Transport, Features.FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI,
+ VidNotions.ModelCategory.SERVICE_WITH_COLLECTION_RESOURCE, Features.FLAG_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI
+ );
+
public VidNotionsBuilder(FeatureManager featureManager) {
this.featureManager = featureManager;
}
- public VidNotions buildVidNotions(ISdcCsarHelper csarHelper, ServiceModel serviceModel) {
- final VidNotions.InstantiationUI instantiationUI = suggestInstantiationUI(csarHelper);
+ VidNotions buildVidNotions(ISdcCsarHelper csarHelper, ServiceModel serviceModel) {
+ VidNotions.ModelCategory modelCategory = suggestModelCategory(csarHelper, serviceModel);
+ return new VidNotions(
+ suggestInstantiationUI(csarHelper, serviceModel),
+ modelCategory,
+ suggestViewEditUI(csarHelper, serviceModel),
+ suggestInstantiationType(serviceModel, modelCategory));
+ }
- return new VidNotions(instantiationUI, suggestModelCategory(csarHelper), suggestViewEditUI(csarHelper, serviceModel));
+ private boolean isMacroTypeByModelCategory(VidNotions.ModelCategory modelCategory) {
+ Features featureOfMacroType = macroServicesByModelCategory.get(modelCategory);
+ //if featureOfMacroType is null this service is not a macro by its type
+ return (featureOfMacroType!=null && featureManager.isActive(featureOfMacroType));
+ }
+
+ VidNotions.InstantiationType suggestInstantiationType(ServiceModel serviceModel, VidNotions.ModelCategory modelCategory) {
+ if (isMacroTypeByModelCategory(modelCategory)) {
+ return VidNotions.InstantiationType.Macro;
+ }
+ if (serviceModel==null || serviceModel.getService()==null || isEmpty(serviceModel.getService().getInstantiationType())) {
+ return VidNotions.InstantiationType.ClientConfig;
+ }
+ String instantiationType = serviceModel.getService().getInstantiationType();
+ if (instantiationType.equals(ToscaParserImpl2.Constants.MACRO)) {
+ return VidNotions.InstantiationType.Macro;
+ }
+ if (instantiationType.equals(ToscaParserImpl2.Constants.A_LA_CARTE)) {
+ return VidNotions.InstantiationType.ALaCarte;
+ }
+
+ return VidNotions.InstantiationType.ClientConfig;
}
//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) {
+ VidNotions.InstantiationUI suggestInstantiationUI(ISdcCsarHelper csarHelper, ServiceModel serviceModel) {
if(featureManager.isActive(Features.FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI) && isALaCarte(csarHelper)) {
return VidNotions.InstantiationUI.ANY_ALACARTE_NEW_UI;
}
@@ -57,42 +96,91 @@ public class VidNotionsBuilder {
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;
- }
+ VidNotions.InstantiationUI instantiationUI = determine5GInstantiationUI(csarHelper);
+ if ( instantiationUI != null ) return instantiationUI;
+ }
+ if (featureManager.isActive(Features.FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI) && isTransportService(csarHelper)){
+ return VidNotions.InstantiationUI.TRANSPORT_SERVICE;
+ }
+ if (featureManager.isActive(Features.FLAG_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI) && isServiceWithCollectionResource(serviceModel)){
+ return VidNotions.InstantiationUI.SERVICE_WITH_COLLECTION_RESOURCE;
+ }
+ if (featureManager.isActive(Features.FLAG_1908_INFRASTRUCTURE_VPN) && isInfraStructureVpn(csarHelper)){
+ return VidNotions.InstantiationUI.INFRASTRUCTURE_VPN;
+ }
+ if (featureManager.isActive(Features.FLAG_1908_A_LA_CARTE_VNF_NEW_INSTANTIATION_UI) && isVnfServiceRole(csarHelper)){
+ return VidNotions.InstantiationUI.A_LA_CARTE_VNF_SERVICE_ROLE;
}
-
return VidNotions.InstantiationUI.LEGACY;
}
- VidNotions.ModelCategory suggestModelCategory(ISdcCsarHelper csarHelper) {
+ private boolean isVnfServiceRole(ISdcCsarHelper csarHelper) {
+ final String serviceRole = csarHelper.getServiceMetadata().getValue(ToscaParserImpl2.Constants.SERVICE_ROLE );
+ return StringUtils.equalsIgnoreCase("VNF" , serviceRole);
+ }
+
+ @Nullable
+ private VidNotions.InstantiationUI determine5GInstantiationUI(ISdcCsarHelper csarHelper) {
+ 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 null;
+ }
+
+ private boolean isTransportService(ISdcCsarHelper csarHelper) {
+ return ("TRANSPORT".equalsIgnoreCase(csarHelper.getServiceMetadata().getValue(ToscaParserImpl2.Constants.SERVICE_TYPE)));
+ }
+
+ private boolean isServiceWithCollectionResource(ServiceModel serviceModel){
+ return MapUtils.isNotEmpty(serviceModel.getCollectionResources());
+ }
+
+ private boolean isInfraStructureVpn(ISdcCsarHelper csarHelper) {
+ Metadata serviceMetadata = csarHelper.getServiceMetadata();
+ return ("BONDING".equalsIgnoreCase(serviceMetadata.getValue(ToscaParserImpl2.Constants.SERVICE_TYPE)) &&
+ "INFRASTRUCTURE-VPN".equalsIgnoreCase(serviceMetadata.getValue(ToscaParserImpl2.Constants.SERVICE_ROLE)));
+ }
+
+ VidNotions.ModelCategory suggestModelCategory(ISdcCsarHelper csarHelper, ServiceModel serviceModel) {
if (isALaCarte(csarHelper) && hasAnyNetworkWithPropertyNetworkTechnologyEqualsStandardSriovOrOvs(csarHelper)){
return VidNotions.ModelCategory.IS_5G_PROVIDER_NETWORK_MODEL;
- } else if(isALaCarte(csarHelper) && hasFabricConfiguration(csarHelper)) {
+ }
+ if(isALaCarte(csarHelper) && hasFabricConfiguration(csarHelper)) {
return VidNotions.ModelCategory.IS_5G_FABRIC_CONFIGURATION_MODEL;
- } else {
- return VidNotions.ModelCategory.OTHER;
}
+ if (isInfraStructureVpn(csarHelper)) {
+ return VidNotions.ModelCategory.INFRASTRUCTURE_VPN;
+ }
+ if (isTransportService(csarHelper)) {
+ return VidNotions.ModelCategory.Transport;
+ }
+ if (isServiceWithCollectionResource(serviceModel)) {
+ return VidNotions.ModelCategory.SERVICE_WITH_COLLECTION_RESOURCE;
+ }
+ 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_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI) &&
+ featureManager.isActive(Features.FLAG_1908_RESUME_MACRO_SERVICE) &&
+ isServiceWithCollectionResource(serviceModel)) {
+ return VidNotions.InstantiationUI.SERVICE_WITH_COLLECTION_RESOURCE;
+ }
+
if (featureManager.isActive(Features.FLAG_1902_NEW_VIEW_EDIT)) {
if (isMacro(serviceModel) && !isMacroExcludedFromAsyncFlow(serviceModel)) {
return VidNotions.InstantiationUI.MACRO_SERVICE;
}
- VidNotions.InstantiationUI instantiationUISuggestion = suggestInstantiationUI(csarHelper);
+ VidNotions.InstantiationUI instantiationUISuggestion = suggestInstantiationUI(csarHelper, serviceModel);
if (instantiationUISuggestion!=VidNotions.InstantiationUI.LEGACY) {
return instantiationUISuggestion;
}
@@ -137,10 +225,8 @@ public class VidNotionsBuilder {
boolean isMacroExcludedFromAsyncFlow(ServiceModel serviceModel) {
return (MapUtils.isNotEmpty(serviceModel.getPnfs()) ||
- MapUtils.isNotEmpty(serviceModel.getCollectionResource()) ||
+ MapUtils.isNotEmpty(serviceModel.getCollectionResources()) ||
(MapUtils.isNotEmpty(serviceModel.getNetworks()) && !featureManager.isActive(Features.FLAG_NETWORK_TO_ASYNC_INSTANTIATION)));
-
-
}
private boolean isGrouping(ISdcCsarHelper csarHelper) {