Add collaboration feature
[sdc.git] / openecomp-be / backend / openecomp-sdc-vendor-software-product-manager / src / main / java / org / openecomp / sdc / vendorsoftwareproduct / impl / ManualVspToscaManagerImpl.java
1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
2
3 import org.apache.commons.collections4.MapUtils;
4 import org.openecomp.sdc.datatypes.error.ErrorLevel;
5 import org.openecomp.sdc.generator.core.services.ManualVspToscaGenerationService;
6 import org.openecomp.sdc.generator.datatypes.tosca.DeploymentFlavorModel;
7 import org.openecomp.sdc.generator.datatypes.tosca.MultiFlavorVfcImage;
8 import org.openecomp.sdc.generator.datatypes.tosca.VspModelInfo;
9 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
10 import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
11 import org.openecomp.sdc.logging.types.LoggerConstants;
12 import org.openecomp.sdc.logging.types.LoggerErrorCode;
13 import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
14 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
15 import org.openecomp.sdc.vendorsoftwareproduct.ManualVspToscaManager;
16 import org.openecomp.sdc.vendorsoftwareproduct.services.ManualVspDataCollectionService;
17 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
18 import org.openecomp.sdc.versioning.dao.types.Version;
19
20 import java.util.List;
21 import java.util.Map;
22 import java.util.Optional;
23
24 public class ManualVspToscaManagerImpl implements ManualVspToscaManager {
25
26   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
27   private ManualVspDataCollectionService
28       manualVspDataCollectionService = new ManualVspDataCollectionService();
29
30   @Override
31   public VspModelInfo gatherVspInformation(String vspId, Version version) {
32     mdcDataDebugMessage.debugEntryMessage(null, null);
33     VspModelInfo vspModelInfo = new VspModelInfo();
34     //Get Release Vendor Name
35     Optional<String> releaseVendor;
36     try {
37       releaseVendor = manualVspDataCollectionService.getReleaseVendor(vspId, version);
38     } catch (Exception ex) {
39       releaseVendor = Optional.empty();
40       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
41           LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
42           LoggerErrorCode.DATA_ERROR.getErrorCode(), "Release Vendor not found : "
43               + ex.getMessage());
44     }
45     releaseVendor.ifPresent(vspModelInfo::setReleaseVendor);
46
47     //Get Allowed Deployment flavors information
48     Map<String, DeploymentFlavorModel> allowedFlavors;
49     try {
50       allowedFlavors = manualVspDataCollectionService.getAllowedFlavors(vspId, version);
51     } catch (Exception ex) {
52       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
53           LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
54           LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect allowed flavors : "
55               + ex.getMessage());
56       allowedFlavors = null;
57     }
58     if (MapUtils.isNotEmpty(allowedFlavors)) {
59       vspModelInfo.setAllowedFlavors(allowedFlavors);
60     }
61
62     //Get VFC Image information
63     Map<String, List<MultiFlavorVfcImage>> vspComponentImages;
64     try {
65       vspComponentImages =
66           manualVspDataCollectionService.getVspComponentImages(vspId, version);
67     } catch (Exception ex) {
68       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
69           LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
70           LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp component images : "
71               + ex.getMessage());
72       vspComponentImages = null;
73     }
74     if (MapUtils.isNotEmpty(vspComponentImages)) {
75       vspModelInfo.setMultiFlavorVfcImages(vspComponentImages);
76     }
77
78     //Get VFC component information
79     Map<String, String> vspComponents;
80     try {
81       vspComponents = manualVspDataCollectionService.getVspComponents(vspId, version);
82     } catch (Exception ex) {
83       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
84           LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
85           LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp components : "
86               + ex.getMessage());
87       vspComponents = null;
88     }
89     if (MapUtils.isNotEmpty(vspComponents)) {
90       vspModelInfo.setComponents(vspComponents);
91     }
92
93     //Get VSP component nic information
94     Map<String, List<Nic>> vspComponentNics;
95     try {
96       vspComponentNics = manualVspDataCollectionService.getVspComponentNics(vspId, version);
97     } catch (Exception ex) {
98       MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
99           LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
100           LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp component nics : "
101               + ex.getMessage());
102       vspComponentNics = null;
103     }
104     if (MapUtils.isNotEmpty(vspComponentNics)) {
105       vspModelInfo.setNics(vspComponentNics);
106     }
107
108     mdcDataDebugMessage.debugExitMessage(null, null);
109     return vspModelInfo;
110   }
111
112   @Override
113   public ToscaServiceModel generateToscaModel(VspModelInfo vspModelInfo) {
114     mdcDataDebugMessage.debugEntryMessage(null, null);
115     ManualVspToscaGenerationService vspToscaGenerator = new ManualVspToscaGenerationService();
116     ToscaServiceModel manualVspToscaServiceModel =
117         vspToscaGenerator.createManualVspToscaServiceModel(vspModelInfo);
118     mdcDataDebugMessage.debugExitMessage(null, null);
119     return manualVspToscaServiceModel;
120   }
121 }