aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java4
-rw-r--r--src/main/java/org/onap/clamp/configuration/ClampGsonDataFormat.java24
-rw-r--r--src/main/java/org/onap/clamp/loop/CsarInstaller.java107
-rw-r--r--src/main/java/org/onap/clamp/loop/Loop.java3
-rw-r--r--src/main/java/org/onap/clamp/loop/service/CsarServiceInstaller.java130
-rw-r--r--src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java36
6 files changed, 196 insertions, 108 deletions
diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java b/src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java
index 4b887e4d8..f63ead8e7 100644
--- a/src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java
+++ b/src/main/java/org/onap/clamp/clds/util/drawing/ImageBuilder.java
@@ -78,8 +78,8 @@ public class ImageBuilder {
}
ImageBuilder circle(String dataElementId, int lineThickness) {
- Shape circleStart = new Ellipse2D.Double(currentPoint.x, currentPoint.y - CIRCLE_RADIUS, 2 * CIRCLE_RADIUS,
- 2 * CIRCLE_RADIUS);
+ Shape circleStart = new Ellipse2D.Double(currentPoint.x, ((double) currentPoint.y) - CIRCLE_RADIUS,
+ 2.0 * CIRCLE_RADIUS, 2.0 * CIRCLE_RADIUS);
Stroke oldStroke = g2d.getStroke();
g2d.setStroke(new BasicStroke(lineThickness));
diff --git a/src/main/java/org/onap/clamp/configuration/ClampGsonDataFormat.java b/src/main/java/org/onap/clamp/configuration/ClampGsonDataFormat.java
index c4d28be2a..ca5f37656 100644
--- a/src/main/java/org/onap/clamp/configuration/ClampGsonDataFormat.java
+++ b/src/main/java/org/onap/clamp/configuration/ClampGsonDataFormat.java
@@ -53,8 +53,7 @@ public class ClampGsonDataFormat extends ServiceSupport implements DataFormat, D
/**
* Use the default Gson {@link Gson} and with a custom unmarshal type.
*
- * @param unmarshalType
- * the custom unmarshal type
+ * @param unmarshalType the custom unmarshal type
*/
public ClampGsonDataFormat(Class<?> unmarshalType) {
this(null, unmarshalType);
@@ -63,10 +62,8 @@ public class ClampGsonDataFormat extends ServiceSupport implements DataFormat, D
/**
* Use a custom Gson mapper and and unmarshal type.
*
- * @param gson
- * the custom mapper
- * @param unmarshalType
- * the custom unmarshal type
+ * @param gson the custom mapper
+ * @param unmarshalType the custom unmarshal type
*/
public ClampGsonDataFormat(Gson gson, Class<?> unmarshalType) {
this.gson = gson;
@@ -76,8 +73,7 @@ public class ClampGsonDataFormat extends ServiceSupport implements DataFormat, D
/**
* Use the default Gson {@link Gson} and with a custom unmarshal generic type.
*
- * @param unmarshalGenericType
- * the custom unmarshal generic type
+ * @param unmarshalGenericType the custom unmarshal generic type
*/
public ClampGsonDataFormat(Type unmarshalGenericType) {
this(null, unmarshalGenericType);
@@ -86,10 +82,8 @@ public class ClampGsonDataFormat extends ServiceSupport implements DataFormat, D
/**
* Use a custom Gson mapper and and unmarshal token type.
*
- * @param gson
- * the custom mapper
- * @param unmarshalGenericType
- * the custom unmarshal generic type
+ * @param gson the custom mapper
+ * @param unmarshalGenericType the custom unmarshal generic type
*/
public ClampGsonDataFormat(Gson gson, Type unmarshalGenericType) {
this.gson = gson;
@@ -104,7 +98,7 @@ public class ClampGsonDataFormat extends ServiceSupport implements DataFormat, D
@Override
public void marshal(final Exchange exchange, final Object graph, final OutputStream stream) throws Exception {
try (final OutputStreamWriter osw = new OutputStreamWriter(stream, StandardCharsets.UTF_8);
- final BufferedWriter writer = IOHelper.buffered(osw)) {
+ final BufferedWriter writer = IOHelper.buffered(osw)) {
gson.toJson(graph, writer);
}
@@ -120,7 +114,7 @@ public class ClampGsonDataFormat extends ServiceSupport implements DataFormat, D
@Override
public Object unmarshal(final Exchange exchange, final InputStream stream) throws Exception {
try (final InputStreamReader isr = new InputStreamReader(stream, StandardCharsets.UTF_8);
- final BufferedReader reader = IOHelper.buffered(isr)) {
+ final BufferedReader reader = IOHelper.buffered(isr)) {
if (unmarshalGenericType == null) {
return gson.fromJson(reader, unmarshalType);
} else {
@@ -153,7 +147,7 @@ public class ClampGsonDataFormat extends ServiceSupport implements DataFormat, D
}
public Type getUnmarshalGenericType() {
- return this.unmarshalType;
+ return this.unmarshalGenericType;
}
public void setUnmarshalGenericType(Type unmarshalGenericType) {
diff --git a/src/main/java/org/onap/clamp/loop/CsarInstaller.java b/src/main/java/org/onap/clamp/loop/CsarInstaller.java
index 16351b820..38a6f9317 100644
--- a/src/main/java/org/onap/clamp/loop/CsarInstaller.java
+++ b/src/main/java/org/onap/clamp/loop/CsarInstaller.java
@@ -42,27 +42,18 @@ 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.MicroService;
-import org.onap.clamp.clds.util.JsonUtils;
import org.onap.clamp.clds.util.drawing.SvgFacade;
import org.onap.clamp.loop.deploy.DcaeDeployParameters;
+import org.onap.clamp.loop.service.CsarServiceInstaller;
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;
-import org.onap.sdc.tosca.parser.api.IEntityDetails;
-import org.onap.sdc.tosca.parser.elements.queries.EntityQuery;
-import org.onap.sdc.tosca.parser.elements.queries.TopologyTemplateQuery;
-import org.onap.sdc.tosca.parser.enums.EntityTemplateType;
-import org.onap.sdc.tosca.parser.enums.SdcTypes;
-import org.onap.sdc.toscaparser.api.NodeTemplate;
-import org.onap.sdc.toscaparser.api.Property;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
-import org.yaml.snakeyaml.Yaml;
/**
* This class will be instantiated by spring config, and used by Sdc Controller.
@@ -83,9 +74,6 @@ public class CsarInstaller {
LoopsRepository loopRepository;
@Autowired
- ServiceRepository serviceRepository;
-
- @Autowired
BlueprintParser blueprintParser;
@Autowired
@@ -97,19 +85,18 @@ public class CsarInstaller {
@Autowired
private SvgFacade svgFacade;
+ @Autowired
+ CsarServiceInstaller csarServiceInstaller;
+
/**
- * Verify whether Csar is deployed.
- *
- * @param csar The Csar Handler
- * @return The flag indicating whether Csar is deployed
- * @throws SdcArtifactInstallerException The SdcArtifactInstallerException
- */
+ * 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());
+ boolean alreadyInstalled = csarServiceInstaller.isServiceAlreadyDeployed(csar);
for (Entry<String, BlueprintArtifact> blueprint : csar.getMapOfBlueprints().entrySet()) {
alreadyInstalled = alreadyInstalled
@@ -118,7 +105,6 @@ public class CsarInstaller {
blueprint.getValue().getResourceAttached().getResourceInstanceName(),
blueprint.getValue().getBlueprintArtifactName()));
}
-
return alreadyInstalled;
}
@@ -127,24 +113,24 @@ public class CsarInstaller {
*
* @param csar The Csar Handler
* @throws SdcArtifactInstallerException The SdcArtifactInstallerException
- * @throws InterruptedException The InterruptedException
+ * @throws InterruptedException The InterruptedException
*/
public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException, InterruptedException {
logger.info("Installing the CSAR " + csar.getFilePath());
- installTheLoop(csar, installTheService(csar));
+ installTheLoop(csar, csarServiceInstaller.installTheService(csar));
logger.info("Successfully installed the CSAR " + csar.getFilePath());
}
/**
* Install the Loop from the csar.
*
- * @param csar The Csar Handler
+ * @param csar The Csar Handler
* @param service The service object that is related to the loop
* @throws SdcArtifactInstallerException The SdcArtifactInstallerException
- * @throws InterruptedException The InterruptedException
+ * @throws InterruptedException The InterruptedException
*/
- @Transactional(propagation = Propagation.REQUIRED)
- public void installTheLoop(CsarHandler csar, Service service)
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
+ public void installTheLoop(CsarHandler csar, Service service)
throws SdcArtifactInstallerException, InterruptedException {
try {
logger.info("Installing the Loops");
@@ -160,30 +146,6 @@ public class CsarInstaller {
}
}
- /**
- * 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();
@@ -243,41 +205,6 @@ public class CsarInstaller {
return DcaeDeployParameters.getDcaeDeploymentParametersInJson(blueprintArtifact, newLoop);
}
- private static JsonObject createVfModuleProperties(CsarHandler csar) {
- JsonObject vfModuleProps = new JsonObject();
- // Loop on all Groups defined in the service (VFModule entries type:
- // org.openecomp.groups.VfModule)
- for (IEntityDetails entity : csar.getSdcCsarHelper().getEntity(
- EntityQuery.newBuilder(EntityTemplateType.GROUP).build(),
- TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE).build(), false)) {
- // Get all metadata info
- JsonObject allVfProps = (JsonObject) JsonUtils.GSON.toJsonTree(entity.getMetadata().getAllProperties());
- vfModuleProps.add(entity.getMetadata().getAllProperties().get("vfModuleModelName"), allVfProps);
- // now append the properties section so that we can also have isBase,
- // volume_group, etc ... fields under the VFmodule name
- for (Entry<String, Property> additionalProp : entity.getProperties().entrySet()) {
- allVfProps.add(additionalProp.getValue().getName(),
- JsonUtils.GSON.toJsonTree(additionalProp.getValue().getValue()));
- }
- }
- return vfModuleProps;
- }
-
- private static JsonObject createServicePropertiesByType(CsarHandler csar) {
- JsonObject resourcesProp = new JsonObject();
- // Iterate on all types defined in the tosca lib
- for (SdcTypes type : SdcTypes.values()) {
- JsonObject resourcesPropByType = new JsonObject();
- // For each type, get the metadata of each nodetemplate
- for (NodeTemplate nodeTemplate : csar.getSdcCsarHelper().getServiceNodeTemplateBySdcType(type)) {
- resourcesPropByType.add(nodeTemplate.getName(),
- JsonUtils.GSON.toJsonTree(nodeTemplate.getMetaData().getAllProperties()));
- }
- resourcesProp.add(type.getValue(), resourcesPropByType);
- }
- return resourcesProp;
- }
-
/**
* ll get the latest version of the artifact (version can be specified to DCAE
* call).
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java
index 66046f02b..383783047 100644
--- a/src/main/java/org/onap/clamp/loop/Loop.java
+++ b/src/main/java/org/onap/clamp/loop/Loop.java
@@ -127,7 +127,8 @@ public class Loop extends AuditEntity implements Serializable {
@Expose
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.EAGER)
- @JoinTable(name = "loops_microservicepolicies", joinColumns = @JoinColumn(name = "loop_id"), inverseJoinColumns = @JoinColumn(name = "microservicepolicy_id"))
+ @JoinTable(name = "loops_microservicepolicies", joinColumns = @JoinColumn(name = "loop_id"),
+ inverseJoinColumns = @JoinColumn(name = "microservicepolicy_id"))
private Set<MicroServicePolicy> microServicePolicies = new HashSet<>();
@Expose
diff --git a/src/main/java/org/onap/clamp/loop/service/CsarServiceInstaller.java b/src/main/java/org/onap/clamp/loop/service/CsarServiceInstaller.java
new file mode 100644
index 000000000..277fe004a
--- /dev/null
+++ b/src/main/java/org/onap/clamp/loop/service/CsarServiceInstaller.java
@@ -0,0 +1,130 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2020 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.clamp.loop.service;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.google.gson.JsonObject;
+
+import java.util.Map.Entry;
+
+import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException;
+import org.onap.clamp.clds.sdc.controller.installer.CsarHandler;
+import org.onap.clamp.clds.util.JsonUtils;
+import org.onap.sdc.tosca.parser.api.IEntityDetails;
+import org.onap.sdc.tosca.parser.elements.queries.EntityQuery;
+import org.onap.sdc.tosca.parser.elements.queries.TopologyTemplateQuery;
+import org.onap.sdc.tosca.parser.enums.EntityTemplateType;
+import org.onap.sdc.tosca.parser.enums.SdcTypes;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.Property;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+@Component
+@Qualifier("csarInstaller")
+public class CsarServiceInstaller {
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarServiceInstaller.class);
+
+ @Autowired
+ ServiceRepository serviceRepository;
+
+ /**
+ * Install the Service from the csar.
+ *
+ * @param csar The Csar Handler
+ * @return The service object
+ */
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
+ 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 static JsonObject createServicePropertiesByType(CsarHandler csar) {
+ JsonObject resourcesProp = new JsonObject();
+ // Iterate on all types defined in the tosca lib
+ for (SdcTypes type : SdcTypes.values()) {
+ JsonObject resourcesPropByType = new JsonObject();
+ // For each type, get the metadata of each nodetemplate
+ for (NodeTemplate nodeTemplate : csar.getSdcCsarHelper().getServiceNodeTemplateBySdcType(type)) {
+ resourcesPropByType.add(nodeTemplate.getName(),
+ JsonUtils.GSON.toJsonTree(nodeTemplate.getMetaData().getAllProperties()));
+ }
+ resourcesProp.add(type.getValue(), resourcesPropByType);
+ }
+ return resourcesProp;
+ }
+
+ private static JsonObject createVfModuleProperties(CsarHandler csar) {
+ JsonObject vfModuleProps = new JsonObject();
+ // Loop on all Groups defined in the service (VFModule entries type:
+ // org.openecomp.groups.VfModule)
+ for (IEntityDetails entity : csar.getSdcCsarHelper().getEntity(
+ EntityQuery.newBuilder(EntityTemplateType.GROUP).build(),
+ TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE).build(), false)) {
+ // Get all metadata info
+ JsonObject allVfProps = (JsonObject) JsonUtils.GSON.toJsonTree(entity.getMetadata().getAllProperties());
+ vfModuleProps.add(entity.getMetadata().getAllProperties().get("vfModuleModelName"), allVfProps);
+ // now append the properties section so that we can also have isBase,
+ // volume_group, etc ... fields under the VFmodule name
+ for (Entry<String, Property> additionalProp : entity.getProperties().entrySet()) {
+ allVfProps.add(additionalProp.getValue().getName(),
+ JsonUtils.GSON.toJsonTree(additionalProp.getValue().getValue()));
+ }
+ }
+ return vfModuleProps;
+ }
+
+ /**
+ * Verify whether Service in Csar is deployed.
+ *
+ * @param csar The Csar Handler
+ * @return The flag indicating whether Service is deployed
+ * @throws SdcArtifactInstallerException The SdcArtifactInstallerException
+ */
+ public boolean isServiceAlreadyDeployed(CsarHandler csar) throws SdcArtifactInstallerException {
+ boolean alreadyInstalled = true;
+ JsonObject serviceDetails = JsonUtils.GSON.fromJson(
+ JsonUtils.GSON.toJson(csar.getSdcCsarHelper().getServiceMetadataAllProperties()), JsonObject.class);
+ alreadyInstalled = serviceRepository.existsById(serviceDetails.get("UUID").getAsString());
+
+ return alreadyInstalled;
+ }
+}
diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
index 98742d22b..3e4dd8fd9 100644
--- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
+++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
@@ -113,6 +113,14 @@ public class MicroServicePolicy extends AuditEntity implements Serializable, Pol
@JoinColumn(name = "micro_service_model_id")
private MicroServiceModel microServiceModel;
+ @Expose
+ @Column(name = "dcae_deployment_id")
+ private String dcaeDeploymentId;
+
+ @Expose
+ @Column(name = "dcae_deployment_status_url")
+ private String dcaeDeploymentStatusUrl;
+
public MicroServicePolicy() {
// serialization
}
@@ -255,6 +263,34 @@ public class MicroServicePolicy extends AuditEntity implements Serializable, Pol
}
/**
+ * @return the dcaeDeploymentId
+ */
+ public String getDcaeDeploymentId() {
+ return dcaeDeploymentId;
+ }
+
+ /**
+ * @param dcaeDeploymentId the dcaeDeploymentId to set
+ */
+ public void setDcaeDeploymentId(String dcaeDeploymentId) {
+ this.dcaeDeploymentId = dcaeDeploymentId;
+ }
+
+ /**
+ * @return the dcaeDeploymentStatusUrl
+ */
+ public String getDcaeDeploymentStatusUrl() {
+ return dcaeDeploymentStatusUrl;
+ }
+
+ /**
+ * @param dcaeDeploymentStatusUrl the dcaeDeploymentStatusUrl to set
+ */
+ public void setDcaeDeploymentStatusUrl(String dcaeDeploymentStatusUrl) {
+ this.dcaeDeploymentStatusUrl = dcaeDeploymentStatusUrl;
+ }
+
+ /**
* name setter.
*
* @param name the name to set