1 package org.onap.vid.aai.util;
3 import org.apache.commons.lang3.StringUtils;
4 import org.onap.vid.model.aaiTree.*;
5 import org.onap.vid.mso.model.ModelInfo;
6 import org.onap.vid.services.AAITreeNodeBuilder;
7 import org.springframework.stereotype.Component;
9 import java.util.Objects;
11 import static java.util.function.Function.identity;
12 import static java.util.stream.Collectors.counting;
13 import static java.util.stream.Collectors.groupingBy;
14 import static org.onap.vid.asdc.parser.ToscaParserImpl2.Constants.A_LA_CARTE;
17 public class AAITreeConverter {
19 public static final String VNF_TYPE = "vnf-type";
20 public static final String NETWORK_TYPE = "network-type";
22 public static final String IS_BASE_VF_MODULE = "is-base-vf-module";
24 public enum ModelType {
32 public ServiceInstance convertTreeToUIModel(AAITreeNode rootNode, String globalCustomerId, String serviceType, String instantiationType) {
33 ServiceInstance serviceInstance = new ServiceInstance();
34 serviceInstance.setInstanceId(rootNode.getId());
35 serviceInstance.setInstanceName(rootNode.getName());
36 serviceInstance.setOrchStatus(rootNode.getOrchestrationStatus());
37 serviceInstance.setGlobalSubscriberId(globalCustomerId);
38 serviceInstance.setSubscriptionServiceType(serviceType);
39 serviceInstance.setIsALaCarte(StringUtils.equals(instantiationType, A_LA_CARTE));
41 serviceInstance.setModelInfo(createModelInfo(rootNode, ModelType.service));
43 //set children: vnf, network,group
44 rootNode.getChildren().forEach(child -> {
45 if (child.getType().equals(AAITreeNodeBuilder.GENERIC_VNF)) {
46 serviceInstance.getVnfs().put(child.getUniqueNodeKey(), Vnf.from(child));
47 } else if (child.getType().equals(AAITreeNodeBuilder.NETWORK)) {
48 serviceInstance.getNetworks().put(child.getUniqueNodeKey(), Network.from(child));
49 } else if (child.getType().equals(AAITreeNodeBuilder.INSTANCE_GROUP)) {
50 serviceInstance.getVnfGroups().put(child.getUniqueNodeKey(), VnfGroup.from(child));
54 serviceInstance.setExistingVNFCounterMap(
55 serviceInstance.getVnfs().entrySet().stream()
56 .map(k -> k.getValue().getModelInfo().getModelVersionId())
57 .collect(groupingBy(identity(), counting()))
60 serviceInstance.setExistingNetworksCounterMap(
61 serviceInstance.getNetworks().entrySet().stream()
62 .map(k -> k.getValue().getModelInfo().getModelVersionId())
63 .filter(Objects::nonNull)
64 .collect(groupingBy(identity(), counting()))
68 serviceInstance.setExistingVnfGroupCounterMap(
69 serviceInstance.getVnfGroups().entrySet().stream()
70 .map(k -> k.getValue().getModelInfo().getModelVersionId())
71 .filter(Objects::nonNull)
72 .collect(groupingBy(identity(), counting()))
75 return serviceInstance;
78 private static ModelInfo createModelInfo(AAITreeNode aaiNode, ModelType modelType) {
79 ModelInfo modelInfo = new ModelInfo();
80 modelInfo.setModelType(modelType.name());
81 modelInfo.setModelName(aaiNode.getModelName());
82 modelInfo.setModelVersion(aaiNode.getModelVersion());
83 modelInfo.setModelVersionId(aaiNode.getModelVersionId());
84 modelInfo.setModelInvariantId(aaiNode.getModelInvariantId());
85 modelInfo.setModelCustomizationId(aaiNode.getModelCustomizationId());