diff options
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java | 4 | ||||
-rw-r--r-- | src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java | 2 | ||||
-rw-r--r-- | src/main/java/org/onap/clamp/loop/CsarInstaller.java (renamed from src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java) | 99 | ||||
-rw-r--r-- | src/main/java/org/onap/clamp/loop/Loop.java | 2 | ||||
-rw-r--r-- | src/main/java/org/onap/clamp/loop/service/Service.java | 6 | ||||
-rw-r--r-- | src/main/java/org/onap/clamp/loop/service/ServiceRepository.java (renamed from src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java) | 14 |
6 files changed, 88 insertions, 39 deletions
diff --git a/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java index b4794c940..261288503 100644 --- a/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java @@ -37,7 +37,7 @@ import org.onap.clamp.clds.config.sdc.SdcControllersConfiguration; import org.onap.clamp.clds.exception.sdc.controller.SdcControllerException; import org.onap.clamp.clds.sdc.controller.SdcSingleController; import org.onap.clamp.clds.sdc.controller.SdcSingleControllerStatus; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; +import org.onap.clamp.loop.CsarInstaller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; @@ -58,7 +58,7 @@ public class SdcControllerConfiguration { @Autowired public SdcControllerConfiguration(ClampProperties clampProp, - @Qualifier("loopInstaller") CsarInstaller csarInstaller) { + @Qualifier("csarInstaller") CsarInstaller csarInstaller) { this.clampProp = clampProp; this.csarInstaller = csarInstaller; } diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java b/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java index 3e684f425..bd18baea6 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java @@ -39,8 +39,8 @@ import org.onap.clamp.clds.exception.sdc.controller.SdcControllerException; import org.onap.clamp.clds.exception.sdc.controller.SdcDownloadException; import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact; import org.onap.clamp.clds.sdc.controller.installer.CsarHandler; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; import org.onap.clamp.clds.util.LoggingUtils; +import org.onap.clamp.loop.CsarInstaller; import org.onap.sdc.api.IDistributionClient; import org.onap.sdc.api.consumer.IDistributionStatusMessage; import org.onap.sdc.api.consumer.INotificationCallback; diff --git a/src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java b/src/main/java/org/onap/clamp/loop/CsarInstaller.java index 55009bc22..3f69e116c 100644 --- a/src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java +++ b/src/main/java/org/onap/clamp/loop/CsarInstaller.java @@ -42,11 +42,11 @@ import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact; import org.onap.clamp.clds.sdc.controller.installer.BlueprintParser; import org.onap.clamp.clds.sdc.controller.installer.ChainGenerator; import org.onap.clamp.clds.sdc.controller.installer.CsarHandler; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; import org.onap.clamp.clds.sdc.controller.installer.MicroService; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.drawing.SvgFacade; import org.onap.clamp.loop.service.Service; +import org.onap.clamp.loop.service.ServiceRepository; import org.onap.clamp.policy.Policy; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -70,10 +70,10 @@ import org.yaml.snakeyaml.Yaml; * received from SDC in DB. */ @Component -@Qualifier("loopInstaller") -public class LoopCsarInstaller implements CsarInstaller { +@Qualifier("csarInstaller") +public class CsarInstaller { - private static final EELFLogger logger = EELFManager.getInstance().getLogger(LoopCsarInstaller.class); + private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstaller.class); public static final String CONTROL_NAME_PREFIX = "ClosedLoop-"; public static final String GET_INPUT_BLUEPRINT_PARAM = "get_input"; // This will be used later as the policy scope @@ -83,6 +83,9 @@ public class LoopCsarInstaller implements CsarInstaller { LoopsRepository loopRepository; @Autowired + ServiceRepository serviceRepository; + + @Autowired BlueprintParser blueprintParser; @Autowired @@ -94,9 +97,20 @@ public class LoopCsarInstaller implements CsarInstaller { @Autowired private SvgFacade svgFacade; - @Override + /** + * Verify whether Csar is deployed. + * + * @param csar The Csar Handler + * @return The flag indicating whether Csar is deployed + * @throws SdcArtifactInstallerException The SdcArtifactInstallerException + */ public boolean isCsarAlreadyDeployed(CsarHandler csar) throws SdcArtifactInstallerException { boolean alreadyInstalled = true; + JsonObject serviceDetails = JsonUtils.GSON.fromJson( + JsonUtils.GSON.toJson(csar.getSdcCsarHelper().getServiceMetadataAllProperties()), JsonObject.class); + alreadyInstalled = alreadyInstalled + && serviceRepository.existsById(serviceDetails.get("UUID").getAsString()); + for (Entry<String, BlueprintArtifact> blueprint : csar.getMapOfBlueprints().entrySet()) { alreadyInstalled = alreadyInstalled && loopRepository.existsById(Loop.generateLoopName(csar.getSdcNotification().getServiceName(), @@ -104,27 +118,73 @@ public class LoopCsarInstaller implements CsarInstaller { blueprint.getValue().getResourceAttached().getResourceInstanceName(), blueprint.getValue().getBlueprintArtifactName())); } + return alreadyInstalled; } - @Override - @Transactional(propagation = Propagation.REQUIRED) + /** + * Install the service and loops from the csar. + * + * @param csar The Csar Handler + * @throws SdcArtifactInstallerException The SdcArtifactInstallerException + * @throws InterruptedException The InterruptedException + */ public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException, InterruptedException { + logger.info("Installing the CSAR " + csar.getFilePath()); + installTheLoop(csar, installTheService(csar)); + logger.info("Successfully installed the CSAR " + csar.getFilePath()); + } + + /** + * Install the Loop from the csar. + * + * @param csar The Csar Handler + * @param service The service object that is related to the loop + * @throws SdcArtifactInstallerException The SdcArtifactInstallerException + * @throws InterruptedException The InterruptedException + */ + @Transactional(propagation = Propagation.REQUIRED) + public void installTheLoop(CsarHandler csar, Service service) + throws SdcArtifactInstallerException, InterruptedException { try { - logger.info("Installing the CSAR " + csar.getFilePath()); + logger.info("Installing the Loops"); for (Entry<String, BlueprintArtifact> blueprint : csar.getMapOfBlueprints().entrySet()) { logger.info("Processing blueprint " + blueprint.getValue().getBlueprintArtifactName()); - loopRepository.save(createLoopFromBlueprint(csar, blueprint.getValue())); + loopRepository.save(createLoopFromBlueprint(csar, blueprint.getValue(), service)); } - logger.info("Successfully installed the CSAR " + csar.getFilePath()); + logger.info("Successfully installed the Loops "); } catch (IOException e) { - throw new SdcArtifactInstallerException("Exception caught during the Csar installation in database", e); + throw new SdcArtifactInstallerException("Exception caught during the Loop installation in database", e); } catch (ParseException e) { throw new SdcArtifactInstallerException("Exception caught during the Dcae query to get ServiceTypeId", e); } } - private Loop createLoopFromBlueprint(CsarHandler csar, BlueprintArtifact blueprintArtifact) + /** + * Install the Service from the csar. + * + * @param csar The Csar Handler + * @return The service object + */ + @Transactional + public Service installTheService(CsarHandler csar) { + logger.info("Start to install the Service from csar"); + JsonObject serviceDetails = JsonUtils.GSON.fromJson( + JsonUtils.GSON.toJson(csar.getSdcCsarHelper().getServiceMetadataAllProperties()), JsonObject.class); + + // Add properties details for each type, VfModule, VF, VFC, .... + JsonObject resourcesProp = createServicePropertiesByType(csar); + resourcesProp.add("VFModule", createVfModuleProperties(csar)); + + Service modelService = new Service(serviceDetails, resourcesProp, + csar.getSdcNotification().getServiceVersion()); + + serviceRepository.save(modelService); + logger.info("Successfully installed the Service"); + return modelService; + } + + private Loop createLoopFromBlueprint(CsarHandler csar, BlueprintArtifact blueprintArtifact, Service service) throws IOException, ParseException, InterruptedException { Loop newLoop = new Loop(); newLoop.setBlueprint(blueprintArtifact.getDcaeBlueprint()); @@ -139,7 +199,7 @@ public class LoopCsarInstaller implements CsarInstaller { if (microServicesChain.isEmpty()) { microServicesChain = blueprintParser.fallbackToOneMicroService(blueprintArtifact.getDcaeBlueprint()); } - newLoop.setModelService(createServiceModel(csar)); + newLoop.setModelService(service); newLoop.setMicroServicePolicies( createMicroServicePolicies(microServicesChain, csar, blueprintArtifact, newLoop)); newLoop.setOperationalPolicies(createOperationalPolicies(csar, blueprintArtifact, newLoop)); @@ -220,19 +280,6 @@ public class LoopCsarInstaller implements CsarInstaller { return resourcesProp; } - private Service createServiceModel(CsarHandler csar) { - JsonObject serviceDetails = JsonUtils.GSON.fromJson( - JsonUtils.GSON.toJson(csar.getSdcCsarHelper().getServiceMetadataAllProperties()), JsonObject.class); - - // Add properties details for each type, VfModule, VF, VFC, .... - JsonObject resourcesProp = createServicePropertiesByType(csar); - resourcesProp.add("VFModule", createVfModuleProperties(csar)); - - Service modelService = new Service(serviceDetails, resourcesProp); - - return modelService; - } - private JsonObject getAllBlueprintParametersInJson(BlueprintArtifact blueprintArtifact, Loop newLoop) { JsonObject node = new JsonObject(); Yaml yaml = new Yaml(); diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index ef70ba80e..bf6836607 100644 --- a/src/main/java/org/onap/clamp/loop/Loop.java +++ b/src/main/java/org/onap/clamp/loop/Loop.java @@ -111,7 +111,7 @@ public class Loop implements Serializable { private JsonObject globalPropertiesJson; @Expose - @ManyToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL) + @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "service_uuid") private Service modelService; diff --git a/src/main/java/org/onap/clamp/loop/service/Service.java b/src/main/java/org/onap/clamp/loop/service/Service.java index ac1216b9d..115f9f768 100644 --- a/src/main/java/org/onap/clamp/loop/service/Service.java +++ b/src/main/java/org/onap/clamp/loop/service/Service.java @@ -62,6 +62,9 @@ public class Service implements Serializable { @Column(nullable = false, name = "name") private String name; + @Column(name = "version") + private String version; + @Expose @Type(type = "json") @Column(columnDefinition = "json", name = "service_details") @@ -81,11 +84,12 @@ public class Service implements Serializable { /** * Constructor. */ - public Service(JsonObject serviceDetails, JsonObject resourceDetails) { + public Service(JsonObject serviceDetails, JsonObject resourceDetails, String version) { this.name = serviceDetails.get("name").getAsString(); this.serviceUuid = serviceDetails.get("UUID").getAsString(); this.serviceDetails = serviceDetails; this.resourceDetails = resourceDetails; + this.version = version; } public String getServiceUuid() { diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java b/src/main/java/org/onap/clamp/loop/service/ServiceRepository.java index 10e2790f6..a6c5ff187 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstaller.java +++ b/src/main/java/org/onap/clamp/loop/service/ServiceRepository.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights + * Copyright (C) 2019 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,14 +21,12 @@ * */ -package org.onap.clamp.clds.sdc.controller.installer; +package org.onap.clamp.loop.service; -import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; -public interface CsarInstaller { - String TEMPLATE_NAME_PREFIX = "DCAE-Designer-Template-"; +@Repository +public interface ServiceRepository extends CrudRepository<Service, String> { - boolean isCsarAlreadyDeployed(CsarHandler csar) throws SdcArtifactInstallerException; - - public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException, InterruptedException; } |