diff options
author | Einat Vinouze <einat.vinouze@intl.att.com> | 2019-07-16 17:17:36 +0300 |
---|---|---|
committer | Ittay Stern <ittay.stern@att.com> | 2019-07-30 06:01:44 +0300 |
commit | e601bbdc43bae9a08e2e10c5139a6f76b47860d7 (patch) | |
tree | 1913f0b369ead3f2ea5557e5649d8281eca9871c /vid-app-common/src/main/java/org/onap/vid/asdc/parser | |
parent | 76c6ee4a697617ec4cdee2f3b48bc83136c858c5 (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.java | 101 | ||||
-rw-r--r-- | vid-app-common/src/main/java/org/onap/vid/asdc/parser/VidNotionsBuilder.java | 142 |
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) { |