aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/services/CloudOwnerServiceImpl.java
diff options
context:
space:
mode:
authorIttay Stern <ittay.stern@att.com>2019-01-10 12:42:59 +0000
committerGerrit Code Review <gerrit@onap.org>2019-01-10 12:42:59 +0000
commit659874df80409170e57b6dd6197eb3a81eb3468e (patch)
tree08e79fd57aa0ed299586fd88f69f87a5a2f5ded1 /vid-app-common/src/main/java/org/onap/vid/services/CloudOwnerServiceImpl.java
parent143784a849ece4fc35cc290e33f829b72bf1fc79 (diff)
parent6ad41e3ccd398a2721f41ad61c80b7bb03f7d127 (diff)
Merge "Merge from ECOMP's repository"
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/services/CloudOwnerServiceImpl.java')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/services/CloudOwnerServiceImpl.java76
1 files changed, 76 insertions, 0 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/services/CloudOwnerServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/CloudOwnerServiceImpl.java
new file mode 100644
index 000000000..3acab9ff9
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/services/CloudOwnerServiceImpl.java
@@ -0,0 +1,76 @@
+package org.onap.vid.services;
+
+
+import com.google.common.collect.ImmutableList;
+import org.apache.commons.lang3.StringUtils;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.vid.aai.AaiClientInterface;
+import org.onap.vid.exceptions.GenericUncheckedException;
+import org.onap.vid.exceptions.NotFoundException;
+import org.onap.vid.mso.model.CloudConfiguration;
+import org.onap.vid.mso.rest.RequestDetails;
+import org.onap.vid.properties.Features;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.togglz.core.manager.FeatureManager;
+
+import java.util.List;
+import java.util.Map;
+
+public class CloudOwnerServiceImpl implements CloudOwnerService {
+
+ private static final List<String> CLOUD_CONFIGURATION_PATH = ImmutableList.of("requestDetails", "cloudConfiguration");
+ private static final List<String> LCP_CLOUD_REGION_ID_PATH = ImmutableList.of("requestDetails", "cloudConfiguration", "lcpCloudRegionId");
+
+ private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(CloudOwnerService.class);
+
+ private final AaiClientInterface aaiClient;
+ private final FeatureManager featureManager;
+
+ @Autowired
+ public CloudOwnerServiceImpl(AaiClientInterface aaiClient, FeatureManager featureManager) {
+ this.aaiClient = aaiClient;
+ this.featureManager = featureManager;
+ }
+
+ @Override
+ public void enrichRequestWithCloudOwner(RequestDetails msoRequest) {
+ if (!featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)) {
+ return;
+ }
+ try {
+
+ //if cloudConfiguration field contains lcpRegion (e.g. in changeManagement scenarios)
+ if (msoRequest.getCloudConfiguration()!=null && StringUtils.isNotEmpty(msoRequest.getCloudConfiguration().getLcpCloudRegionId())) {
+ enrichCloudConfigurationWithCloudOwner(msoRequest.getCloudConfiguration(), msoRequest.getCloudConfiguration().getLcpCloudRegionId());
+ }
+ //otherwise the cloudConfiguration is in the additionalProperties field of RequestDetails (e.g. in ng1 view/edit scenario)
+ else {
+ enrichRequestWithCloudOwnerByAdditionalProperties(msoRequest);
+ }
+ }
+ catch (Exception e) {
+ throw new GenericUncheckedException("Failed to enrich requestDetails with cloudOwner", e);
+ }
+ }
+
+ protected void enrichRequestWithCloudOwnerByAdditionalProperties(RequestDetails msoRequest) {
+ String lcpCloudRegionId = null;
+ try {
+ lcpCloudRegionId = msoRequest.extractValueByPathUsingAdditionalProperties(LCP_CLOUD_REGION_ID_PATH, String.class);
+ }
+ catch (NotFoundException exception) {
+ LOGGER.debug("Can't find lcp region in RequestDetails. Assume no cloudOwner enrichment is needed. Reason: "+exception.getMessage());
+ return;
+ }
+ String cloudOwner = aaiClient.getCloudOwnerByCloudRegionId(lcpCloudRegionId);
+ msoRequest.extractValueByPathUsingAdditionalProperties(CLOUD_CONFIGURATION_PATH, Map.class).put("cloudOwner", cloudOwner);
+ }
+
+ @Override
+ public void enrichCloudConfigurationWithCloudOwner(CloudConfiguration cloudConfiguration, String lcpCloudRegionId) {
+ if (featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)) {
+ String cloudOwner = aaiClient.getCloudOwnerByCloudRegionId(lcpCloudRegionId);
+ cloudConfiguration.setCloudOwner(cloudOwner);
+ }
+ }
+}