X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=mod2%2Fcatalog-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdcaegen2%2Fplatform%2Fmod%2Fweb%2Fservice%2Fblueprintdistributionservice%2FBlueprintDistributionServiceImpl.java;fp=mod2%2Fcatalog-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdcaegen2%2Fplatform%2Fmod%2Fweb%2Fservice%2Fblueprintdistributionservice%2FBlueprintDistributionServiceImpl.java;h=6ae367ce51bf320559f513493d8a4ca6bcc24fb4;hb=9347a895ad097b0e67dd0208bc824672940d23cd;hp=0000000000000000000000000000000000000000;hpb=0a405a9b4515f960d36d254032db680e97ab1e94;p=dcaegen2%2Fplatform.git diff --git a/mod2/catalog-service/src/main/java/org/onap/dcaegen2/platform/mod/web/service/blueprintdistributionservice/BlueprintDistributionServiceImpl.java b/mod2/catalog-service/src/main/java/org/onap/dcaegen2/platform/mod/web/service/blueprintdistributionservice/BlueprintDistributionServiceImpl.java new file mode 100644 index 0000000..6ae367c --- /dev/null +++ b/mod2/catalog-service/src/main/java/org/onap/dcaegen2/platform/mod/web/service/blueprintdistributionservice/BlueprintDistributionServiceImpl.java @@ -0,0 +1,113 @@ +/* + * ============LICENSE_START======================================================= + * org.onap.dcae + * ================================================================================ + * Copyright (c) 2021 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcaegen2.platform.mod.web.service.blueprintdistributionservice; + +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.json.JSONObject; +import org.onap.dcaegen2.platform.mod.model.deploymentartifact.DeploymentArtifact; +import org.onap.dcaegen2.platform.mod.model.policymodel.DistributionInfo; +import org.onap.dcaegen2.platform.mod.model.policymodel.PolicyModelStatus; +import org.onap.dcaegen2.platform.mod.model.restapi.ErrorResponse; +import org.onap.dcaegen2.platform.mod.model.restapi.SuccessResponse; +import org.onap.dcaegen2.platform.mod.util.BlueprintDistributionUtils; +import org.onap.dcaegen2.platform.mod.util.SSLUtils; +import org.onap.dcaegen2.platform.mod.web.service.deploymentartifact.DeploymentArtifactGateway; +import org.onap.dcaegen2.platform.mod.web.service.deploymentartifact.DeploymentArtifactService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +@Setter +@Slf4j +public class BlueprintDistributionServiceImpl implements BlueprintDistributionService{ + + @Autowired + private DeploymentArtifactService deploymentArtifactService; + + @Autowired + private BlueprintDistributionUtils blueprintDistributionUtils; + + @Autowired + private DeploymentArtifactGateway deploymentArtifactGateway; + + @Autowired + private RestTemplate restTemplate; + + public ResponseEntity distributeBlueprint(String deploymentArtifactId, String env){ + DeploymentArtifact deploymentArtifact = deploymentArtifactService.findDeploymentArtifactById(deploymentArtifactId); + return postBlueprintToDcae(deploymentArtifact,env); + } + + private ResponseEntity postBlueprintToDcae(DeploymentArtifact deploymentArtifact, String env){ + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setBasicAuth(blueprintDistributionUtils.getBlueprintDashboardUserName(env),blueprintDistributionUtils.getBlueprintDashboardPassword(env)); + + DistributionInfo distributionInfo = DistributionInfo.builder().url(blueprintDistributionUtils.getBlueprintDashboardURL(env)).build(); + deploymentArtifact.setDistributionInfo(distributionInfo); + JSONObject blueprintJsonObject = prepareBlueprintJsonObject(deploymentArtifact); + HttpEntity request = new HttpEntity<>(blueprintJsonObject.toString(), headers); + + try{ + SSLUtils.turnOffSslChecking(); + String response = restTemplate.postForObject(blueprintDistributionUtils.getBlueprintDashboardURL(env),request,String.class); + log.info(response); + log.info(String.format("Distributed Blueprint to DCAE: %s", blueprintJsonObject.toString())); + distributionInfo.setStatus(PolicyModelStatus.SUCCESS); + deploymentArtifactGateway.save(deploymentArtifact); + blueprintJsonObject.put("distributionInfoStatus", PolicyModelStatus.SUCCESS.name()); + return new ResponseEntity<>(new SuccessResponse(blueprintJsonObject.toString()), HttpStatus.OK); + }catch (Exception e) { + log.error("Failed to push Blueprint to DCAE"); + log.error(e.getMessage()); + distributionInfo.setStatus(PolicyModelStatus.FAILED); + deploymentArtifactGateway.save(deploymentArtifact); + return new ResponseEntity<>(new ErrorResponse(e.getMessage()), HttpStatus.BAD_REQUEST); + } + } + + private JSONObject prepareBlueprintJsonObject(DeploymentArtifact deploymentArtifact) { + JSONObject blueprintJsonObject = new JSONObject(); + blueprintJsonObject.put("owner","dcae_mod"); + blueprintJsonObject.put("typeName",deploymentArtifact.getFileName()); + blueprintJsonObject.put("typeVersion",deploymentArtifact.getVersion()); + blueprintJsonObject.put("blueprintTemplate",deploymentArtifact.getContent()); + blueprintJsonObject.put("application","DCAE"); + blueprintJsonObject.put("component","dcae"); + blueprintJsonObject.put("distributionInfoUrl", deploymentArtifact.getDistributionInfo().getUrl()); + return blueprintJsonObject; + } + + @Bean + private RestTemplate getRestTemplate(){ + return new RestTemplate(); + } + +}