summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxuegao <xg353y@intl.att.com>2019-12-06 10:40:49 +0100
committerxuegao <xg353y@intl.att.com>2019-12-09 14:31:19 +0100
commit69c24994501aead95d5ee9fa172fff659ae34fa4 (patch)
tree671522a2b1e0a7eb545059d7a75b1a03e9787087
parent1ebfe6b467e5a6a42c756f225397da76f9e3dfc2 (diff)
Update service object
Seperate the procedure to install service and loops. Issue-ID: CLAMP-566 Change-Id: Ied7143ce8849baffda7678e82f4d6c4d9f1443d9 Signed-off-by: xuegao <xg353y@intl.att.com>
-rw-r--r--extra/sql/bulkload/create-tables.sql1
-rw-r--r--src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java4
-rw-r--r--src/main/java/org/onap/clamp/clds/sdc/controller/SdcSingleController.java2
-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.java2
-rw-r--r--src/main/java/org/onap/clamp/loop/service/Service.java6
-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
-rw-r--r--src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java2
-rw-r--r--src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java9
-rw-r--r--src/test/java/org/onap/clamp/loop/LoopToJsonTest.java2
-rw-r--r--src/test/java/org/onap/clamp/loop/ServiceTest.java6
-rw-r--r--src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java2
12 files changed, 102 insertions, 47 deletions
diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql
index dafd80034..85b8f85f9 100644
--- a/extra/sql/bulkload/create-tables.sql
+++ b/extra/sql/bulkload/create-tables.sql
@@ -57,6 +57,7 @@
name varchar(255) not null,
resource_details json,
service_details json,
+ version varchar(255),
primary key (service_uuid)
) engine=InnoDB;
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;
}
diff --git a/src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java b/src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java
index 695b85166..2cbabbe8c 100644
--- a/src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java
+++ b/src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java
@@ -45,7 +45,7 @@ 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.CsarHandler;
-import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller;
+import org.onap.clamp.loop.CsarInstaller;
import org.onap.sdc.api.notification.IArtifactInfo;
import org.onap.sdc.api.notification.INotificationData;
import org.onap.sdc.api.notification.IResourceInstance;
diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
index e3271c7a6..df952aa16 100644
--- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
+++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
@@ -48,9 +48,9 @@ import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException;
import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException;
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.JsonUtils;
import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.onap.clamp.loop.service.ServiceRepository;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.sdc.api.notification.IArtifactInfo;
import org.onap.sdc.api.notification.INotificationData;
@@ -83,7 +83,10 @@ public class CsarInstallerItCase {
private LoopsRepository loopsRepo;
@Autowired
- @Qualifier("loopInstaller")
+ ServiceRepository serviceRepository;
+
+ @Autowired
+ @Qualifier("csarInstaller")
private CsarInstaller csarInstaller;
private BlueprintArtifact buildFakeBuildprintArtifact(String instanceName, String invariantResourceUuid,
@@ -186,6 +189,8 @@ public class CsarInstallerItCase {
String generatedName = RandomStringUtils.randomAlphanumeric(5);
CsarHandler csar = buildFakeCsarHandler(generatedName);
csarInstaller.installTheCsar(csar);
+ assertThat(serviceRepository
+ .existsById("63cac700-ab9a-4115-a74f-7eac85e3fce0")).isTrue();
assertThat(loopsRepo
.existsById(Loop.generateLoopName(generatedName, "1.0", RESOURCE_INSTANCE_NAME_RESOURCE1, "tca.yaml")))
.isTrue();
diff --git a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
index b68bf48a0..68fe487ef 100644
--- a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
+++ b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
@@ -126,7 +126,7 @@ public class LoopToJsonTest {
JsonObject jsonModel = new GsonBuilder().create()
.fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"), JsonObject.class);
Service service = new Service(jsonModel.get("serviceDetails").getAsJsonObject(),
- jsonModel.get("resourceDetails").getAsJsonObject());
+ jsonModel.get("resourceDetails").getAsJsonObject(), "1.0");
loopTest2.setModelService(service);
String jsonSerialized = JsonUtils.GSON_JPA_MODEL.toJson(loopTest2);
diff --git a/src/test/java/org/onap/clamp/loop/ServiceTest.java b/src/test/java/org/onap/clamp/loop/ServiceTest.java
index 45de5385e..2b6fab8b6 100644
--- a/src/test/java/org/onap/clamp/loop/ServiceTest.java
+++ b/src/test/java/org/onap/clamp/loop/ServiceTest.java
@@ -41,12 +41,12 @@ public class ServiceTest {
String resourceStr = "{\"CP\": {}}";
Service service1 = new Service(JsonUtils.GSON.fromJson(serviceStr1, JsonObject.class),
- JsonUtils.GSON.fromJson(resourceStr, JsonObject.class));
+ JsonUtils.GSON.fromJson(resourceStr, JsonObject.class), "1.0");
- Service service2 = new Service(JsonUtils.GSON.fromJson(serviceStr2, JsonObject.class), null);
+ Service service2 = new Service(JsonUtils.GSON.fromJson(serviceStr2, JsonObject.class), null, "1.0");
Service service3 = new Service(JsonUtils.GSON.fromJson(serviceStr3, JsonObject.class),
- JsonUtils.GSON.fromJson(resourceStr, JsonObject.class));
+ JsonUtils.GSON.fromJson(resourceStr, JsonObject.class), "1.0");
assertThat(service1.equals(service2)).isEqualTo(true);
assertThat(service1.equals(service3)).isEqualTo(false);
diff --git a/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java b/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
index 673ac323d..12ddbaa71 100644
--- a/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
+++ b/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
@@ -42,7 +42,7 @@ public class OperationalPolicyRepresentationBuilderTest {
JsonObject jsonModel = new GsonBuilder().create()
.fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"), JsonObject.class);
Service service = new Service(jsonModel.get("serviceDetails").getAsJsonObject(),
- jsonModel.get("resourceDetails").getAsJsonObject());
+ jsonModel.get("resourceDetails").getAsJsonObject(), "1.0");
JsonObject jsonSchema = OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(service);