summaryrefslogtreecommitdiffstats
path: root/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImpl.java
blob: 8bdc7fdfcef6739874fd2f7c35c8908e7475b34a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package org.openecomp.sdc.vendorsoftwareproduct.impl;

import org.apache.commons.collections4.MapUtils;
import org.openecomp.sdc.datatypes.error.ErrorLevel;
import org.openecomp.sdc.generator.core.services.ManualVspToscaGenerationService;
import org.openecomp.sdc.generator.datatypes.tosca.DeploymentFlavorModel;
import org.openecomp.sdc.generator.datatypes.tosca.MultiFlavorVfcImage;
import org.openecomp.sdc.generator.datatypes.tosca.VspModelInfo;
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
import org.openecomp.sdc.logging.types.LoggerConstants;
import org.openecomp.sdc.logging.types.LoggerErrorCode;
import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
import org.openecomp.sdc.vendorsoftwareproduct.ManualVspToscaManager;
import org.openecomp.sdc.vendorsoftwareproduct.services.ManualVspDataCollectionService;
import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
import org.openecomp.sdc.versioning.dao.types.Version;

import java.util.List;
import java.util.Map;
import java.util.Optional;

public class ManualVspToscaManagerImpl implements ManualVspToscaManager {

  private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
  private ManualVspDataCollectionService
      manualVspDataCollectionService = new ManualVspDataCollectionService();

  private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName());

  @Override
  public VspModelInfo gatherVspInformation(String vspId, Version version, String user) {
    mdcDataDebugMessage.debugEntryMessage(null, null);
    VspModelInfo vspModelInfo = new VspModelInfo();
    //Get Release Vendor Name
    Optional<String> releaseVendor;
    try {
      releaseVendor = manualVspDataCollectionService.getReleaseVendor(vspId, version, user);
    } catch (Exception ex) {
      log.debug("", ex);
      releaseVendor = Optional.empty();
      MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
          LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
          LoggerErrorCode.DATA_ERROR.getErrorCode(), "Release Vendor not found : "
              + ex.getMessage());
    }
    releaseVendor.ifPresent(vspModelInfo::setReleaseVendor);

    //Get Allowed Deployment flavors information
    Map<String, DeploymentFlavorModel> allowedFlavors;
    try {
      allowedFlavors = manualVspDataCollectionService.getAllowedFlavors(vspId, version, user);
    } catch (Exception ex) {
      log.debug("", ex);
      MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
          LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
          LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect allowed flavors : "
              + ex.getMessage());
      allowedFlavors = null;
    }
    if (MapUtils.isNotEmpty(allowedFlavors)) {
      vspModelInfo.setAllowedFlavors(allowedFlavors);
    }

    //Get VFC Image information
    Map<String, List<MultiFlavorVfcImage>> vspComponentImages;
    try {
      vspComponentImages =
          manualVspDataCollectionService.getVspComponentImages(vspId, version, user);
    } catch (Exception ex) {
      log.debug("", ex);
      MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
          LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
          LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp component images : "
              + ex.getMessage());
      vspComponentImages = null;
    }
    if (MapUtils.isNotEmpty(vspComponentImages)) {
      vspModelInfo.setMultiFlavorVfcImages(vspComponentImages);
    }

    //Get VFC component information
    Map<String, String> vspComponents;
    try {
      vspComponents = manualVspDataCollectionService.getVspComponents(vspId, version, user);
    } catch (Exception ex) {
      log.debug("", ex);
      MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
          LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
          LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp components : "
              + ex.getMessage());
      vspComponents = null;
    }
    if (MapUtils.isNotEmpty(vspComponents)) {
      vspModelInfo.setComponents(vspComponents);
    }

    //Get VSP component nic information
    Map<String, List<Nic>> vspComponentNics;
    try {
      vspComponentNics = manualVspDataCollectionService.getVspComponentNics(vspId, version, user);
    } catch (Exception ex) {
      log.debug("", ex);
      MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
          LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(),
          LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp component nics : "
              + ex.getMessage());
      vspComponentNics = null;
    }
    if (MapUtils.isNotEmpty(vspComponentNics)) {
      vspModelInfo.setNics(vspComponentNics);
    }

    mdcDataDebugMessage.debugExitMessage(null, null);
    return vspModelInfo;
  }

  @Override
  public ToscaServiceModel generateToscaModel(VspModelInfo vspModelInfo) {
    mdcDataDebugMessage.debugEntryMessage(null, null);
    ManualVspToscaGenerationService vspToscaGenerator = new ManualVspToscaGenerationService();
    ToscaServiceModel manualVspToscaServiceModel =
        vspToscaGenerator.createManualVspToscaServiceModel(vspModelInfo);
    mdcDataDebugMessage.debugExitMessage(null, null);
    return manualVspToscaServiceModel;
  }
}