aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsService.java17
-rwxr-xr-xsrc/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java70
-rwxr-xr-xsrc/main/java/org/onap/clamp/clds/util/drawing/Painter.java31
-rw-r--r--src/main/java/org/onap/clamp/clds/util/drawing/SvgLoopGenerator.java (renamed from src/main/java/org/onap/clamp/clds/util/drawing/SvgFacade.java)45
-rw-r--r--src/main/java/org/onap/clamp/loop/CsarInstaller.java27
-rw-r--r--src/main/java/org/onap/clamp/loop/Loop.java34
-rw-r--r--src/main/java/org/onap/clamp/loop/LoopService.java35
-rw-r--r--src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java11
-rw-r--r--src/main/java/org/onap/clamp/loop/template/LoopElementModel.java28
-rw-r--r--src/main/java/org/onap/clamp/loop/template/LoopTemplate.java49
-rw-r--r--src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java44
-rw-r--r--src/main/java/org/onap/clamp/policy/Policy.java27
-rw-r--r--src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java93
-rw-r--r--src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java2
-rw-r--r--src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java19
-rw-r--r--src/main/java/org/onap/clamp/policy/operational/OperationalPolicyService.java22
-rw-r--r--src/main/java/org/onap/clamp/util/SemanticVersioning.java12
-rw-r--r--src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java56
-rw-r--r--src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java77
-rw-r--r--src/test/java/org/onap/clamp/loop/DcaeComponentTest.java21
-rw-r--r--src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java52
-rw-r--r--src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java14
-rw-r--r--src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java40
-rw-r--r--src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java80
-rw-r--r--src/test/java/org/onap/clamp/loop/LoopToJsonTest.java17
-rw-r--r--src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java14
-rw-r--r--src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java8
-rw-r--r--src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java8
28 files changed, 579 insertions, 374 deletions
diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java
index 783ee7032..3b84e360c 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsService.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java
@@ -102,11 +102,16 @@ public class CldsService extends SecureServiceBase {
@Autowired
public CldsService(
@Value("${clamp.config.security.permission.type.cl:permission-type-cl}") String cldsPersmissionTypeCl,
- @Value("${clamp.config.security.permission.type.cl.manage:permission-type-cl-manage}") String cldsPermissionTypeClManage,
- @Value("${clamp.config.security.permission.type.cl.event:permission-type-cl-event}") String cldsPermissionTypeClEvent,
- @Value("${clamp.config.security.permission.type.filter.vf:permission-type-filter-vf}") String cldsPermissionTypeFilterVf,
- @Value("${clamp.config.security.permission.type.template:permission-type-template}") String cldsPermissionTypeTemplate,
- @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") String cldsPermissionTypeTosca,
+ @Value("${clamp.config.security.permission.type.cl.manage:permission-type-cl-manage}")
+ String cldsPermissionTypeClManage,
+ @Value("${clamp.config.security.permission.type.cl.event:permission-type-cl-event}")
+ String cldsPermissionTypeClEvent,
+ @Value("${clamp.config.security.permission.type.filter.vf:permission-type-filter-vf}")
+ String cldsPermissionTypeFilterVf,
+ @Value("${clamp.config.security.permission.type.template:permission-type-template}")
+ String cldsPermissionTypeTemplate,
+ @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}")
+ String cldsPermissionTypeTosca,
@Value("${clamp.config.security.permission.instance:dev}") String cldsPermissionInstance) {
this.cldsPermissionTypeFilterVf = cldsPermissionTypeFilterVf;
this.cldsPermissionInstance = cldsPermissionInstance;
@@ -125,7 +130,7 @@ public class CldsService extends SecureServiceBase {
* Gets clds info. CLDS IFO service will return 3 things 1. User Name 2. CLDS
* code version that is currently installed from pom.xml file 3. User
* permissions
- *
+ *
* @return the clds info
*/
public CldsInfo getCldsInfo() {
diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java
index 6ce89873b..7edf6c1a4 100755
--- a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java
+++ b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java
@@ -24,16 +24,17 @@
package org.onap.clamp.clds.util.drawing;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService;
+import java.util.HashSet;
+import java.util.Set;
+import org.onap.clamp.loop.template.LoopElementModel;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.onap.clamp.policy.operational.OperationalPolicy;
public class ClampGraphBuilder {
- private String policy;
+ private Set<OperationalPolicy> policies = new HashSet<>();
private String collector;
- private List<BlueprintMicroService> microServices = new ArrayList<>();
+ private Set<MicroServicePolicy> microServices = new HashSet<>();
+ private Set<LoopElementModel> loopElementModels = new HashSet<>();
private final Painter painter;
public ClampGraphBuilder(Painter painter) {
@@ -45,33 +46,64 @@ public class ClampGraphBuilder {
return this;
}
- public ClampGraphBuilder policy(String policy) {
- this.policy = policy;
+ public ClampGraphBuilder addPolicy(OperationalPolicy policy) {
+ this.policies.add(policy);
return this;
}
- public ClampGraphBuilder addMicroService(BlueprintMicroService ms) {
+ public ClampGraphBuilder addAllPolicies(Set<OperationalPolicy> policies) {
+ this.policies.addAll(policies);
+ return this;
+ }
+
+ public ClampGraphBuilder addMicroService(MicroServicePolicy ms) {
microServices.add(ms);
return this;
}
- public ClampGraphBuilder addAllMicroServices(List<BlueprintMicroService> msList) {
+ public ClampGraphBuilder addAllMicroServices(Set<MicroServicePolicy> msList) {
microServices.addAll(msList);
return this;
}
/**
+ * This method adds all loop element specified in input to the current structure.
+ *
+ * @param loopElementModels A set of LoopElementModels
+ * @return Return the current ClampGraphBuilder
+ */
+ public ClampGraphBuilder addAllLoopElementModels(Set<LoopElementModel> loopElementModels) {
+ for (LoopElementModel elem : loopElementModels) {
+ this.addLoopElementModel(elem);
+ }
+ return this;
+ }
+
+ /**
+ * This method adds one loop element specified in input to the current structure.
+ *
+ * @param loopElementModel A LoopElementModels
+ * @return Return the current ClampGraphBuilder
+ */
+ public ClampGraphBuilder addLoopElementModel(LoopElementModel loopElementModel) {
+ if (LoopElementModel.MICRO_SERVICE_TYPE.equals(loopElementModel.getLoopElementType())) {
+ microServices.add(new MicroServicePolicy(loopElementModel.getName(),
+ loopElementModel.getPolicyModels().first(),
+ false,
+ null));
+ } else if (LoopElementModel.OPERATIONAL_POLICY_TYPE.equals(loopElementModel.getLoopElementType())) {
+ policies.add(new OperationalPolicy(loopElementModel.getName(), null, null,
+ loopElementModel.getPolicyModels().first()));
+ }
+ return this;
+ }
+
+ /**
* Build the SVG.
- *
+ *
* @return Clamp graph (SVG)
*/
public ClampGraph build() {
- if (microServices.isEmpty()) {
- throw new InvalidStateException("At least one microservice is required");
- }
- if (Objects.isNull(policy) || policy.trim().isEmpty()) {
- throw new InvalidStateException("Policy element must be present");
- }
- return new ClampGraph(painter.doPaint(collector, microServices, policy));
+ return new ClampGraph(painter.doPaint(collector, microServices, policies));
}
}
diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java b/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java
index d96c9e537..af62d84a8 100755
--- a/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java
+++ b/src/main/java/org/onap/clamp/clds/util/drawing/Painter.java
@@ -28,17 +28,17 @@ import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Point;
import java.awt.RenderingHints;
-import java.util.List;
-
+import java.util.Set;
import org.apache.batik.svggen.SVGGraphics2D;
-import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.onap.clamp.policy.operational.OperationalPolicy;
public class Painter {
private final int canvasSize;
private final SVGGraphics2D g2d;
private final DocumentBuilder documentBuilder;
- private static final int DEFALUT_CANVAS_SIZE = 900;
+ private static final int DEFAULT_CANVAS_SIZE = 900;
private static final int SLIM_LINE = 2;
private static final int THICK_LINE = 4;
private static final double RECT_RATIO = 3.0 / 2.0;
@@ -54,10 +54,10 @@ public class Painter {
public Painter(SVGGraphics2D svgGraphics2D, DocumentBuilder documentBuilder) {
this.g2d = svgGraphics2D;
this.documentBuilder = documentBuilder;
- this.canvasSize = DEFALUT_CANVAS_SIZE;
+ this.canvasSize = DEFAULT_CANVAS_SIZE;
}
- DocumentBuilder doPaint(String collector, List<BlueprintMicroService> microServices, String policy) {
+ DocumentBuilder doPaint(String collector, Set<MicroServicePolicy> microServices, Set<OperationalPolicy> policies) {
int numOfRectangles = 2 + microServices.size();
int numOfArrows = numOfRectangles + 1;
int baseLength = (canvasSize - 2 * CIRCLE_RADIUS) / (numOfArrows + numOfRectangles);
@@ -71,20 +71,25 @@ public class Painter {
Point origin = new Point(1, rectHeight / 2);
ImageBuilder ib = new ImageBuilder(g2d, documentBuilder, origin, baseLength, rectHeight);
- doTheActualDrawing(collector, microServices, policy, ib);
+ doTheActualDrawing(collector, microServices, policies, ib);
return ib.getDocumentBuilder();
}
- private void doTheActualDrawing(String collector, List<BlueprintMicroService> microServices, String policy,
- ImageBuilder ib) {
+ private void doTheActualDrawing(String collector, Set<MicroServicePolicy> microServices,
+ Set<OperationalPolicy> policies,
+ ImageBuilder ib) {
ib.circle("start-circle", SLIM_LINE).arrow().rectangle(collector, RectTypes.COLECTOR, collector);
- for (BlueprintMicroService ms : microServices) {
- ib.arrow().rectangle(ms.getModelType(), RectTypes.MICROSERVICE, ms.getName());
+ for (MicroServicePolicy ms : microServices) {
+ ib.arrow().rectangle(ms.getName(),
+ RectTypes.MICROSERVICE, ms.getPolicyModel().getPolicyAcronym());
}
-
- ib.arrow().rectangle(policy, RectTypes.POLICY, policy).arrow().circle("stop-circle", THICK_LINE);
+ for (OperationalPolicy policy : policies) {
+ ib.arrow().rectangle(policy.getName(), RectTypes.POLICY, policy.getPolicyModel().getPolicyAcronym())
+ .arrow();
+ }
+ ib.circle("stop-circle", THICK_LINE);
}
private void adjustGraphics2DProperties() {
diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/SvgFacade.java b/src/main/java/org/onap/clamp/clds/util/drawing/SvgLoopGenerator.java
index 251f48864..f289d9798 100644
--- a/src/main/java/org/onap/clamp/clds/util/drawing/SvgFacade.java
+++ b/src/main/java/org/onap/clamp/clds/util/drawing/SvgLoopGenerator.java
@@ -24,30 +24,51 @@
package org.onap.clamp.clds.util.drawing;
-import java.util.List;
-
+import java.util.HashSet;
+import java.util.Set;
import org.apache.batik.svggen.SVGGraphics2D;
-import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService;
import org.onap.clamp.clds.util.XmlTools;
-import org.springframework.stereotype.Component;
+import org.onap.clamp.loop.Loop;
+import org.onap.clamp.loop.template.LoopElementModel;
+import org.onap.clamp.loop.template.LoopTemplate;
+import org.onap.clamp.loop.template.LoopTemplateLoopElementModel;
import org.w3c.dom.Document;
-@Component
-public class SvgFacade {
+public class SvgLoopGenerator {
+ /**
+ * Generate the SVG images from the loop.
+ *
+ * @param loop The loop object, so it won't use the loop template
+ * @return A String containing the SVG
+ */
+ public static String getSvgImage(Loop loop) {
+ SVGGraphics2D svgGraphics2D = new SVGGraphics2D(XmlTools.createEmptySvgDocument());
+ Document document = XmlTools.createEmptySvgDocument();
+ DocumentBuilder dp = new DocumentBuilder(document, svgGraphics2D.getDOMFactory());
+ Painter painter = new Painter(svgGraphics2D, dp);
+ ClampGraphBuilder cgp = new ClampGraphBuilder(painter).collector("VES");
+ cgp.addAllMicroServices(loop.getMicroServicePolicies());
+ ClampGraph cg = cgp.addAllPolicies(loop.getOperationalPolicies()).build();
+ return cg.getAsSvg();
+ }
+
/**
- * Generate the SVG images from the microservice Chain.
- *
- * @param microServicesChain THe chain of microservices
+ * Generate the SVG images from the loop template.
+ *
+ * @param loopTemplate The loop template
* @return A String containing the SVG
*/
- public String getSvgImage(List<BlueprintMicroService> microServicesChain) {
+ public static String getSvgImage(LoopTemplate loopTemplate) {
SVGGraphics2D svgGraphics2D = new SVGGraphics2D(XmlTools.createEmptySvgDocument());
Document document = XmlTools.createEmptySvgDocument();
DocumentBuilder dp = new DocumentBuilder(document, svgGraphics2D.getDOMFactory());
Painter painter = new Painter(svgGraphics2D, dp);
ClampGraphBuilder cgp = new ClampGraphBuilder(painter).collector("VES");
- cgp.addAllMicroServices(microServicesChain);
- ClampGraph cg = cgp.policy("OperationalPolicy").build();
+ Set<LoopElementModel> elementModelsSet = new HashSet<>();
+ for (LoopTemplateLoopElementModel elementModelLink:loopTemplate.getLoopElementModelsUsed()) {
+ elementModelsSet.add(elementModelLink.getLoopElementModel());
+ }
+ ClampGraph cg = cgp.addAllLoopElementModels(elementModelsSet).build();
return cg.getAsSvg();
}
diff --git a/src/main/java/org/onap/clamp/loop/CsarInstaller.java b/src/main/java/org/onap/clamp/loop/CsarInstaller.java
index c0cfac960..b5ebdb949 100644
--- a/src/main/java/org/onap/clamp/loop/CsarInstaller.java
+++ b/src/main/java/org/onap/clamp/loop/CsarInstaller.java
@@ -25,12 +25,10 @@ package org.onap.clamp.loop;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
-
import org.json.simple.parser.ParseException;
import org.onap.clamp.clds.client.DcaeInventoryServices;
import org.onap.clamp.clds.client.PolicyEngineServices;
@@ -42,7 +40,6 @@ import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService;
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.util.drawing.SvgFacade;
import org.onap.clamp.loop.service.CsarServiceInstaller;
import org.onap.clamp.loop.service.Service;
import org.onap.clamp.loop.template.LoopElementModel;
@@ -79,9 +76,6 @@ public class CsarInstaller {
private DcaeInventoryServices dcaeInventoryService;
@Autowired
- private SvgFacade svgFacade;
-
- @Autowired
private CsarServiceInstaller csarServiceInstaller;
@Autowired
@@ -89,7 +83,7 @@ public class CsarInstaller {
/**
* Verify whether Csar is deployed.
- *
+ *
* @param csar The Csar Handler
* @return The flag indicating whether Csar is deployed
* @throws SdcArtifactInstallerException The SdcArtifactInstallerException
@@ -100,16 +94,16 @@ public class CsarInstaller {
for (Entry<String, BlueprintArtifact> blueprint : csar.getMapOfBlueprints().entrySet()) {
alreadyInstalled = alreadyInstalled
&& loopTemplatesRepository.existsById(LoopTemplate.generateLoopTemplateName(
- csar.getSdcNotification().getServiceName(), csar.getSdcNotification().getServiceVersion(),
- blueprint.getValue().getResourceAttached().getResourceInstanceName(),
- blueprint.getValue().getBlueprintArtifactName()));
+ csar.getSdcNotification().getServiceName(), csar.getSdcNotification().getServiceVersion(),
+ blueprint.getValue().getResourceAttached().getResourceInstanceName(),
+ blueprint.getValue().getBlueprintArtifactName()));
}
return alreadyInstalled;
}
/**
* Install the service and loop templates from the csar.
- *
+ *
* @param csar The Csar Handler
* @throws SdcArtifactInstallerException The SdcArtifactInstallerException
* @throws InterruptedException The InterruptedException
@@ -125,7 +119,7 @@ public class CsarInstaller {
/**
* Install the loop templates from the csar.
- *
+ *
* @param csar The Csar Handler
* @param service The service object that is related to the loop
* @throws SdcArtifactInstallerException The SdcArtifactInstallerException
@@ -150,7 +144,8 @@ public class CsarInstaller {
}
private LoopTemplate createLoopTemplateFromBlueprint(CsarHandler csar, BlueprintArtifact blueprintArtifact,
- Service service) throws IOException, ParseException, InterruptedException, BlueprintParserException {
+ Service service)
+ throws IOException, ParseException, InterruptedException, BlueprintParserException {
LoopTemplate newLoopTemplate = new LoopTemplate();
newLoopTemplate.setBlueprint(blueprintArtifact.getDcaeBlueprint());
newLoopTemplate.setName(LoopTemplate.generateLoopTemplateName(csar.getSdcNotification().getServiceName(),
@@ -165,7 +160,6 @@ public class CsarInstaller {
newLoopTemplate.setModelService(service);
newLoopTemplate.addLoopElementModels(createMicroServiceModels(microServicesChain));
newLoopTemplate.setMaximumInstancesAllowed(0);
- newLoopTemplate.setSvgRepresentation(svgFacade.getSvgImage(microServicesChain));
DcaeInventoryResponse dcaeResponse = queryDcaeToGetServiceTypeId(blueprintArtifact);
newLoopTemplate.setDcaeBlueprintId(dcaeResponse.getTypeId());
return newLoopTemplate;
@@ -175,8 +169,9 @@ public class CsarInstaller {
throws InterruptedException {
HashSet<LoopElementModel> newSet = new HashSet<>();
for (BlueprintMicroService microService : microServicesChain) {
- LoopElementModel loopElementModel = new LoopElementModel(microService.getModelType(), "CONFIG_POLICY",
- null);
+ LoopElementModel loopElementModel =
+ new LoopElementModel(microService.getModelType(), LoopElementModel.MICRO_SERVICE_TYPE,
+ null);
newSet.add(loopElementModel);
loopElementModel.addPolicyModel(getPolicyModel(microService));
}
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java
index 0ac8030d3..676626a1f 100644
--- a/src/main/java/org/onap/clamp/loop/Loop.java
+++ b/src/main/java/org/onap/clamp/loop/Loop.java
@@ -27,7 +27,6 @@ import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.google.gson.JsonObject;
import com.google.gson.annotations.Expose;
-
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
@@ -35,7 +34,6 @@ import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
-
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -50,11 +48,11 @@ import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
-
import org.hibernate.annotations.SortNatural;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
+import org.onap.clamp.clds.util.drawing.SvgLoopGenerator;
import org.onap.clamp.dao.model.jsontype.StringJsonUserType;
import org.onap.clamp.loop.common.AuditEntity;
import org.onap.clamp.loop.components.external.DcaeComponent;
@@ -68,7 +66,7 @@ import org.onap.clamp.policy.operational.OperationalPolicy;
@Entity
@Table(name = "loops")
-@TypeDefs({ @TypeDef(name = "json", typeClass = StringJsonUserType.class) })
+@TypeDefs({@TypeDef(name = "json", typeClass = StringJsonUserType.class)})
public class Loop extends AuditEntity implements Serializable {
/**
@@ -101,7 +99,7 @@ public class Loop extends AuditEntity implements Serializable {
private JsonObject globalPropertiesJson;
@Expose
- @ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH })
+ @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(name = "service_uuid")
private Service modelService;
@@ -119,7 +117,7 @@ public class Loop extends AuditEntity implements Serializable {
private Set<OperationalPolicy> operationalPolicies = new HashSet<>();
@Expose
- @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.EAGER)
+ @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER)
@JoinTable(name = "loops_to_microservicepolicies", joinColumns = @JoinColumn(name = "loop_name"),
inverseJoinColumns = @JoinColumn(name = "microservicepolicy_name"))
private Set<MicroServicePolicy> microServicePolicies = new HashSet<>();
@@ -130,8 +128,8 @@ public class Loop extends AuditEntity implements Serializable {
private SortedSet<LoopLog> loopLogs = new TreeSet<>();
@Expose
- @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }, fetch = FetchType.EAGER)
- @JoinColumn(name = "loop_template_name", nullable=false)
+ @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER)
+ @JoinColumn(name = "loop_template_name", nullable = false)
private LoopTemplate loopTemplate;
private void initializeExternalComponents() {
@@ -229,14 +227,28 @@ public class Loop extends AuditEntity implements Serializable {
this.loopLogs = loopLogs;
}
- void addOperationalPolicy(OperationalPolicy opPolicy) {
+ /**
+ * This method adds an operational policy to the loop.
+ * It re-computes the Svg as well.
+ *
+ * @param opPolicy the operationalPolicy to add
+ */
+ public void addOperationalPolicy(OperationalPolicy opPolicy) {
operationalPolicies.add(opPolicy);
opPolicy.setLoop(this);
+ this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this));
}
- void addMicroServicePolicy(MicroServicePolicy microServicePolicy) {
+ /**
+ * This method adds an micro service policy to the loop.
+ * It re-computes the Svg as well.
+ *
+ * @param microServicePolicy the micro service to add
+ */
+ public void addMicroServicePolicy(MicroServicePolicy microServicePolicy) {
microServicePolicies.add(microServicePolicy);
microServicePolicy.getUsedByLoops().add(this);
+ this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this));
}
public void addLog(LoopLog log) {
@@ -295,7 +307,7 @@ public class Loop extends AuditEntity implements Serializable {
* @return The generated loop name
*/
public static String generateLoopName(String serviceName, String serviceVersion, String resourceName,
- String blueprintFileName) {
+ String blueprintFileName) {
StringBuilder buffer = new StringBuilder("LOOP_").append(serviceName).append("_v").append(serviceVersion)
.append("_").append(resourceName).append("_").append(blueprintFileName.replaceAll(".yaml", ""));
return buffer.toString().replace('.', '_').replaceAll(" ", "");
diff --git a/src/main/java/org/onap/clamp/loop/LoopService.java b/src/main/java/org/onap/clamp/loop/LoopService.java
index fb857fbf4..6ea412c00 100644
--- a/src/main/java/org/onap/clamp/loop/LoopService.java
+++ b/src/main/java/org/onap/clamp/loop/LoopService.java
@@ -24,12 +24,13 @@
package org.onap.clamp.loop;
import com.google.gson.JsonObject;
-
import java.util.List;
import java.util.Set;
-
import javax.persistence.EntityNotFoundException;
-
+import org.apache.commons.lang3.RandomStringUtils;
+import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.loop.template.PolicyModelsService;
+import org.onap.clamp.policy.Policy;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.clamp.policy.microservice.MicroServicePolicyService;
import org.onap.clamp.policy.operational.OperationalPolicy;
@@ -49,6 +50,9 @@ public class LoopService {
@Autowired
private OperationalPolicyService operationalPolicyService;
+ @Autowired
+ private PolicyModelsService policyModelsService;
+
Loop saveOrUpdateLoop(Loop loop) {
return loopsRepository.save(loop);
}
@@ -67,7 +71,7 @@ public class LoopService {
/**
* This method is used to refresh the DCAE deployment status fields.
- *
+ *
* @param loop The loop instance to be modified
* @param deploymentId The deployment ID as returned by DCAE
* @param deploymentUrl The Deployment URL as returned by DCAE
@@ -83,6 +87,19 @@ public class LoopService {
loopsRepository.save(loop);
}
+ Loop addOperationalPolicy(String loopName, String policyType, String policyVersion) {
+ Loop loop = findClosedLoopByName(loopName);
+ PolicyModel policyModel = policyModelsService.getPolicyModel(policyType, policyVersion);
+ if (policyModel == null) {
+ return null;
+ }
+ loop.addOperationalPolicy(
+ new OperationalPolicy(Policy.generatePolicyName("OPERATIONAL", loop.getModelService().getName(),
+ loop.getModelService().getVersion(), RandomStringUtils.randomAlphanumeric(3),
+ RandomStringUtils.randomAlphanumeric(4)), loop, null, policyModel));
+ return loopsRepository.save(loop);
+ }
+
Loop updateAndSaveOperationalPolicies(String loopName, List<OperationalPolicy> newOperationalPolicies) {
Loop loop = findClosedLoopByName(loopName);
Set<OperationalPolicy> newPolicies = operationalPolicyService.updatePolicies(loop, newOperationalPolicies);
@@ -114,11 +131,11 @@ public class LoopService {
}
/**
- * Api to refresh the Operational Policy UI window.
- *
- * @param loopName The loop Name
- * @return The refreshed loop object
- */
+ * Api to refresh the Operational Policy UI window.
+ *
+ * @param loopName The loop Name
+ * @return The refreshed loop object
+ */
public Loop refreshOpPolicyJsonRepresentation(String loopName) {
Loop loop = findClosedLoopByName(loopName);
Set<OperationalPolicy> policyList = loop.getOperationalPolicies();
diff --git a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java
index ca26b136d..89332bbd0 100644
--- a/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java
+++ b/src/main/java/org/onap/clamp/loop/components/external/DcaeComponent.java
@@ -54,7 +54,7 @@ public class DcaeComponent extends ExternalComponent {
"The DCAE blueprint has been found in the DCAE inventory but not yet instancianted for this loop");
public static final ExternalComponentState PROCESSING_MICROSERVICE_INSTALLATION = new ExternalComponentState(
"PROCESSING_MICROSERVICE_INSTALLATION", "Clamp has requested DCAE to install the microservices "
- + "defined in the DCAE blueprint and it's currently processing the request");
+ + "defined in the DCAE blueprint and it's currently processing the request");
public static final ExternalComponentState MICROSERVICE_INSTALLATION_FAILED = new ExternalComponentState(
"MICROSERVICE_INSTALLATION_FAILED",
"Clamp has requested DCAE to install the microservices defined in the DCAE blueprint and it failed");
@@ -63,7 +63,7 @@ public class DcaeComponent extends ExternalComponent {
"Clamp has requested DCAE to install the DCAE blueprint and it has been installed successfully");
public static final ExternalComponentState PROCESSING_MICROSERVICE_UNINSTALLATION = new ExternalComponentState(
"PROCESSING_MICROSERVICE_UNINSTALLATION", "Clamp has requested DCAE to uninstall the microservices "
- + "defined in the DCAE blueprint and it's currently processing the request");
+ + "defined in the DCAE blueprint and it's currently processing the request");
public static final ExternalComponentState MICROSERVICE_UNINSTALLATION_FAILED = new ExternalComponentState(
"MICROSERVICE_UNINSTALLATION_FAILED",
"Clamp has requested DCAE to uninstall the microservices defined in the DCAE blueprint and it failed");
@@ -91,7 +91,7 @@ public class DcaeComponent extends ExternalComponent {
/**
* Convert the json response to a DcaeOperationStatusResponse.
- *
+ *
* @param responseBody The DCAE response Json paylaod
* @return The dcae object provisioned
*/
@@ -146,13 +146,14 @@ public class DcaeComponent extends ExternalComponent {
/**
* Return the deploy payload for DCAE.
*
- * @param loop The loop object
+ * @param loop The loop object
* @param microServicePolicy The micro service policy
* @return The payload used to send deploy closed loop request
*/
public static String getDeployPayload(Loop loop, MicroServicePolicy microServicePolicy) {
JsonObject globalProp = loop.getGlobalPropertiesJson();
- JsonObject deploymentProp = globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER).getAsJsonObject(microServicePolicy.getName());
+ JsonObject deploymentProp =
+ globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER).getAsJsonObject(microServicePolicy.getName());
String serviceTypeId = microServicePolicy.getDcaeBlueprintId();
diff --git a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java
index e6ba98151..479605983 100644
--- a/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java
+++ b/src/main/java/org/onap/clamp/loop/template/LoopElementModel.java
@@ -43,13 +43,13 @@ import org.hibernate.annotations.SortNatural;
import org.onap.clamp.loop.common.AuditEntity;
/**
- * This class represents a micro service model for a loop template.
+ * This class represents a micro service/operational/... model for a loop template.
+ * So it's an element in the flow (a box shown in the loop).
*/
@Entity
@Table(name = "loop_element_models")
public class LoopElementModel extends AuditEntity implements Serializable {
- public static final String DEFAULT_GROUP_NAME = "DEFAULT";
/**
* The serial version id.
*/
@@ -65,11 +65,13 @@ public class LoopElementModel extends AuditEntity implements Serializable {
private String dcaeBlueprintId;
/**
- * Here we store the blueprint coming from DCAE.
+ * Here we store the blueprint coming from DCAE, it can be null if this is not a micro service model.
*/
@Column(columnDefinition = "MEDIUMTEXT", name = "blueprint_yaml")
private String blueprint;
+ public static String MICRO_SERVICE_TYPE = "MICRO_SERVICE_TYPE";
+ public static String OPERATIONAL_POLICY_TYPE = "OPERATIONAL_POLICY_TYPE";
/**
* The type of element.
*/
@@ -89,14 +91,14 @@ public class LoopElementModel extends AuditEntity implements Serializable {
*/
@Expose
@ManyToMany(
- fetch = FetchType.EAGER,
- cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
+ fetch = FetchType.EAGER,
+ cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@JoinTable(
- name = "loopelementmodels_to_policymodels",
- joinColumns = @JoinColumn(name = "loop_element_name", referencedColumnName = "name"),
- inverseJoinColumns = {
- @JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"),
- @JoinColumn(name = "policy_model_version", referencedColumnName = "version")})
+ name = "loopelementmodels_to_policymodels",
+ joinColumns = @JoinColumn(name = "loop_element_name", referencedColumnName = "name"),
+ inverseJoinColumns = {
+ @JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"),
+ @JoinColumn(name = "policy_model_version", referencedColumnName = "version")})
@SortNatural
private SortedSet<PolicyModel> policyModels = new TreeSet<>();
@@ -228,10 +230,10 @@ public class LoopElementModel extends AuditEntity implements Serializable {
/**
* Constructor.
*
- * @param name The name id
+ * @param name The name id
* @param loopElementType The type of loop element
- * @param blueprint The blueprint defined for dcae that contains the
- * policy type to use
+ * @param blueprint The blueprint defined for dcae that contains the
+ * policy type to use
*/
public LoopElementModel(String name, String loopElementType, String blueprint) {
this.name = name;
diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java
index 54096cb8f..a7bbd9dd3 100644
--- a/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java
+++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplate.java
@@ -39,6 +39,7 @@ import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.SortNatural;
+import org.onap.clamp.clds.util.drawing.SvgLoopGenerator;
import org.onap.clamp.loop.common.AuditEntity;
import org.onap.clamp.loop.service.Service;
@@ -73,17 +74,17 @@ public class LoopTemplate extends AuditEntity implements Serializable {
@Expose
@OneToMany(
- cascade = CascadeType.ALL,
- fetch = FetchType.EAGER,
- mappedBy = "loopTemplate",
- orphanRemoval = true)
+ cascade = CascadeType.ALL,
+ fetch = FetchType.EAGER,
+ mappedBy = "loopTemplate",
+ orphanRemoval = true)
@SortNatural
private SortedSet<LoopTemplateLoopElementModel> loopElementModelsUsed = new TreeSet<>();
@Expose
@ManyToOne(
- fetch = FetchType.EAGER,
- cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
+ fetch = FetchType.EAGER,
+ cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(name = "service_uuid")
private Service modelService;
@@ -244,10 +245,7 @@ public class LoopTemplate extends AuditEntity implements Serializable {
* @param loopElementModel The loopElementModel to add
*/
public void addLoopElementModel(LoopElementModel loopElementModel) {
- LoopTemplateLoopElementModel jointEntry = new LoopTemplateLoopElementModel(this,
- loopElementModel, this.loopElementModelsUsed.size());
- this.loopElementModelsUsed.add(jointEntry);
- loopElementModel.getUsedByLoopTemplates().add(jointEntry);
+ this.addLoopElementModel(loopElementModel,this.loopElementModelsUsed.size());
}
/**
@@ -255,13 +253,14 @@ public class LoopTemplate extends AuditEntity implements Serializable {
* specified manually.
*
* @param loopElementModel The loopElementModel to add
- * @param listPosition The position in the flow
+ * @param listPosition The position in the flow
*/
public void addLoopElementModel(LoopElementModel loopElementModel, Integer listPosition) {
LoopTemplateLoopElementModel jointEntry =
- new LoopTemplateLoopElementModel(this, loopElementModel, listPosition);
+ new LoopTemplateLoopElementModel(this, loopElementModel, listPosition);
this.loopElementModelsUsed.add(jointEntry);
loopElementModel.getUsedByLoopTemplates().add(jointEntry);
+ this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this));
}
/**
@@ -301,16 +300,16 @@ public class LoopTemplate extends AuditEntity implements Serializable {
/**
* Constructor.
*
- * @param name The loop template name id
- * @param blueprint The blueprint containing all microservices (legacy
- * case)
- * @param svgRepresentation The svg representation of that loop template
+ * @param name The loop template name id
+ * @param blueprint The blueprint containing all microservices (legacy
+ * case)
+ * @param svgRepresentation The svg representation of that loop template
* @param maxInstancesAllowed The maximum number of instances that can be
- * created from that template
- * @param service The service associated to that loop template
+ * created from that template
+ * @param service The service associated to that loop template
*/
public LoopTemplate(String name, String blueprint, String svgRepresentation,
- Integer maxInstancesAllowed, Service service) {
+ Integer maxInstancesAllowed, Service service) {
this.name = name;
this.setBlueprint(blueprint);
this.svgRepresentation = svgRepresentation;
@@ -352,17 +351,17 @@ public class LoopTemplate extends AuditEntity implements Serializable {
/**
* Generate the loop template name.
*
- * @param serviceName The service name
- * @param serviceVersion The service version
- * @param resourceName The resource name
+ * @param serviceName The service name
+ * @param serviceVersion The service version
+ * @param resourceName The resource name
* @param blueprintFileName The blueprint file name
* @return The generated loop template name
*/
public static String generateLoopTemplateName(String serviceName, String serviceVersion,
- String resourceName, String blueprintFileName) {
+ String resourceName, String blueprintFileName) {
StringBuilder buffer = new StringBuilder("LOOP_TEMPLATE_").append(serviceName).append("_v")
- .append(serviceVersion).append("_").append(resourceName).append("_")
- .append(blueprintFileName.replaceAll(".yaml", ""));
+ .append(serviceVersion).append("_").append(resourceName).append("_")
+ .append(blueprintFileName.replaceAll(".yaml", ""));
return buffer.toString().replace('.', '_').replaceAll(" ", "");
}
}
diff --git a/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java b/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java
index 279d602c8..29382137e 100644
--- a/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java
+++ b/src/main/java/org/onap/clamp/loop/template/LoopTemplatesService.java
@@ -24,11 +24,7 @@
package org.onap.clamp.loop.template;
import java.util.List;
-import org.onap.clamp.clds.exception.sdc.controller.BlueprintParserException;
-import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService;
-import org.onap.clamp.clds.sdc.controller.installer.BlueprintParser;
import org.onap.clamp.clds.sdc.controller.installer.ChainGenerator;
-import org.onap.clamp.clds.util.drawing.SvgFacade;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -40,9 +36,6 @@ public class LoopTemplatesService {
@Autowired
ChainGenerator chainGenerator;
- @Autowired
- private SvgFacade svgFacade;
-
/**
* Constructor.
*/
@@ -56,24 +49,6 @@ public class LoopTemplatesService {
return loopTemplatesRepository.save(loopTemplate);
}
- /**
- * Saves or updates loop template Object.
- *
- * @param templateName the loop template name
- * @param loopTemplate the loop template object
- * @return the loop template
- * @throws BlueprintParserException In case of issues with the blueprint
- * parsing
- */
- public LoopTemplate saveOrUpdateLoopTemplateByName(String templateName,
- LoopTemplate loopTemplate) throws BlueprintParserException {
-
- if (getLoopTemplate(templateName) != null) {
- loopTemplate.setName(getLoopTemplate(templateName).getName());
- }
- return saveOrUpdateLoopTemplate(createTemplateFromBlueprint(templateName, loopTemplate));
- }
-
public List<String> getLoopTemplateNames() {
return loopTemplatesRepository.getAllLoopTemplateNames();
}
@@ -89,23 +64,4 @@ public class LoopTemplatesService {
public void deleteLoopTemplate(String name) {
loopTemplatesRepository.deleteById(name);
}
-
- private LoopTemplate createTemplateFromBlueprint(String templateName, LoopTemplate loopTemplate)
- throws BlueprintParserException {
-
- String blueprintYaml = loopTemplate.getBlueprint();
- List<BlueprintMicroService> microServicesChain =
- chainGenerator.getChainOfMicroServices(BlueprintParser.getMicroServices(blueprintYaml));
- if (microServicesChain.isEmpty()) {
- microServicesChain = BlueprintParser.fallbackToOneMicroService();
- }
- loopTemplate.setSvgRepresentation(svgFacade.getSvgImage(microServicesChain));
- loopTemplate.setName(templateName);
-
- LoopTemplate existingTemplate = getLoopTemplate(templateName);
- if (existingTemplate != null) {
- loopTemplate.setName(existingTemplate.getName());
- }
- return loopTemplate;
- }
}
diff --git a/src/main/java/org/onap/clamp/policy/Policy.java b/src/main/java/org/onap/clamp/policy/Policy.java
index c65682059..e1c08eeaa 100644
--- a/src/main/java/org/onap/clamp/policy/Policy.java
+++ b/src/main/java/org/onap/clamp/policy/Policy.java
@@ -42,7 +42,7 @@ import org.onap.clamp.loop.common.AuditEntity;
import org.onap.clamp.loop.template.LoopElementModel;
@MappedSuperclass
-@TypeDefs({ @TypeDef(name = "json", typeClass = StringJsonUserType.class) })
+@TypeDefs({@TypeDef(name = "json", typeClass = StringJsonUserType.class)})
public abstract class Policy extends AuditEntity {
@Expose
@@ -55,6 +55,10 @@ public abstract class Policy extends AuditEntity {
@Column(columnDefinition = "json", name = "configurations_json")
private JsonObject configurationsJson;
+ /**
+ * This attribute can be null when the user add a policy on the loop instance, not the template.
+ * When null, It therefore indicates that this policy is not by default in the loop template.
+ */
@Expose
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "loop_element_model_id")
@@ -68,20 +72,19 @@ public abstract class Policy extends AuditEntity {
/**
* Name getter.
- *
+ *
* @return the name
*/
public abstract String getName();
/**
* Name setter.
- *
*/
public abstract void setName(String name);
/**
* jsonRepresentation getter.
- *
+ *
* @return the jsonRepresentation
*/
public JsonObject getJsonRepresentation() {
@@ -90,7 +93,7 @@ public abstract class Policy extends AuditEntity {
/**
* jsonRepresentation setter.
- *
+ *
* @param jsonRepresentation The jsonRepresentation to set
*/
public void setJsonRepresentation(JsonObject jsonRepresentation) {
@@ -99,7 +102,7 @@ public abstract class Policy extends AuditEntity {
/**
* configurationsJson getter.
- *
+ *
* @return The configurationsJson
*/
public JsonObject getConfigurationsJson() {
@@ -108,7 +111,7 @@ public abstract class Policy extends AuditEntity {
/**
* configurationsJson setter.
- *
+ *
* @param configurationsJson the configurationsJson to set
*/
public void setConfigurationsJson(JsonObject configurationsJson) {
@@ -117,7 +120,7 @@ public abstract class Policy extends AuditEntity {
/**
* loopElementModel getter.
- *
+ *
* @return the loopElementModel
*/
public LoopElementModel getLoopElementModel() {
@@ -126,7 +129,7 @@ public abstract class Policy extends AuditEntity {
/**
* loopElementModel setter.
- *
+ *
* @param loopElementModel the loopElementModel to set
*/
public void setLoopElementModel(LoopElementModel loopElementModel) {
@@ -135,7 +138,7 @@ public abstract class Policy extends AuditEntity {
/**
* pdpGroup getter.
- *
+ *
* @return the pdpGroup
*/
public String getPdpGroup() {
@@ -144,7 +147,7 @@ public abstract class Policy extends AuditEntity {
/**
* pdpGroup setter.
- *
+ *
* @param pdpGroup the pdpGroup to set
*/
public void setPdpGroup(String pdpGroup) {
@@ -162,7 +165,7 @@ public abstract class Policy extends AuditEntity {
* @return The generated policy name
*/
public static String generatePolicyName(String policyType, String serviceName, String serviceVersion,
- String resourceName, String blueprintFilename) {
+ String resourceName, String blueprintFilename) {
StringBuilder buffer = new StringBuilder(policyType).append("_").append(serviceName).append("_v")
.append(serviceVersion).append("_").append(resourceName).append("_")
.append(blueprintFilename.replaceAll(".yaml", ""));
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 43c8d6e05..8d9017eae 100644
--- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
+++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
@@ -30,20 +30,20 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.annotations.Expose;
-
import java.io.Serializable;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinColumns;
import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
-
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import org.json.JSONObject;
@@ -51,12 +51,13 @@ import org.onap.clamp.clds.tosca.ToscaYamlToJsonConvertor;
import org.onap.clamp.clds.util.JsonUtils;
import org.onap.clamp.dao.model.jsontype.StringJsonUserType;
import org.onap.clamp.loop.Loop;
+import org.onap.clamp.loop.template.PolicyModel;
import org.onap.clamp.policy.Policy;
import org.yaml.snakeyaml.Yaml;
@Entity
@Table(name = "micro_service_policies")
-@TypeDefs({ @TypeDef(name = "json", typeClass = StringJsonUserType.class) })
+@TypeDefs({@TypeDef(name = "json", typeClass = StringJsonUserType.class)})
public class MicroServicePolicy extends Policy implements Serializable {
/**
* The serial version ID.
@@ -72,10 +73,6 @@ public class MicroServicePolicy extends Policy implements Serializable {
private String name;
@Expose
- @Column(nullable = false, name = "policy_model_type")
- private String modelType;
-
- @Expose
@Column(name = "context")
private String context;
@@ -87,9 +84,6 @@ public class MicroServicePolicy extends Policy implements Serializable {
@Column(name = "shared", nullable = false)
private Boolean shared;
- @Column(columnDefinition = "MEDIUMTEXT", name = "policy_tosca", nullable = false)
- private String policyTosca;
-
@ManyToMany(mappedBy = "microServicePolicies", fetch = FetchType.EAGER)
private Set<Loop> usedByLoops = new HashSet<>();
@@ -105,6 +99,12 @@ public class MicroServicePolicy extends Policy implements Serializable {
@Column(name = "dcae_blueprint_id")
private String dcaeBlueprintId;
+ @Expose
+ @ManyToOne(fetch = FetchType.EAGER)
+ @JoinColumns({@JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"),
+ @JoinColumn(name = "policy_model_version", referencedColumnName = "version")})
+ private PolicyModel policyModel;
+
public MicroServicePolicy() {
// serialization
}
@@ -114,24 +114,23 @@ public class MicroServicePolicy extends Policy implements Serializable {
* using the ToscaYamlToJsonConvertor.
*
* @param name The name of the MicroService
- * @param modelType The model type of the MicroService
- * @param policyTosca The policy Tosca of the MicroService
+ * @param policyModel The policy model of the MicroService
* @param shared The flag indicate whether the MicroService is shared
* @param usedByLoops The list of loops that uses this MicroService
*/
- public MicroServicePolicy(String name, String modelType, String policyTosca, Boolean shared,
- Set<Loop> usedByLoops) {
+ public MicroServicePolicy(String name, PolicyModel policyModel, Boolean shared,
+ Set<Loop> usedByLoops) {
this.name = name;
- this.modelType = modelType;
- this.policyTosca = policyTosca;
+ this.policyModel = policyModel;
this.shared = shared;
this.setJsonRepresentation(JsonUtils.GSON_JPA_MODEL
- .fromJson(new ToscaYamlToJsonConvertor().parseToscaYaml(policyTosca, modelType), JsonObject.class));
+ .fromJson(new ToscaYamlToJsonConvertor().parseToscaYaml(policyModel.getPolicyModelTosca(),
+ policyModel.getPolicyModelType()), JsonObject.class));
this.usedByLoops = usedByLoops;
}
private JsonObject createJsonFromPolicyTosca() {
- Map<String, Object> map = new Yaml().load(this.getPolicyTosca());
+ Map<String, Object> map = new Yaml().load(this.getPolicyModel().getPolicyModelTosca());
JSONObject jsonObject = new JSONObject(map);
return new Gson().fromJson(jsonObject.toString(), JsonObject.class);
}
@@ -141,18 +140,16 @@ public class MicroServicePolicy extends Policy implements Serializable {
* the jsonRepresentation instead.
*
* @param name The name of the MicroService
- * @param modelType The model type of the MicroService
- * @param policyTosca The policy Tosca of the MicroService
+ * @param policyModel The policy model type of the MicroService
* @param shared The flag indicate whether the MicroService is
* shared
* @param jsonRepresentation The UI representation in json format
* @param usedByLoops The list of loops that uses this MicroService
*/
- public MicroServicePolicy(String name, String modelType, String policyTosca, Boolean shared,
- JsonObject jsonRepresentation, Set<Loop> usedByLoops) {
+ public MicroServicePolicy(String name, PolicyModel policyModel, Boolean shared,
+ JsonObject jsonRepresentation, Set<Loop> usedByLoops) {
this.name = name;
- this.modelType = modelType;
- this.policyTosca = policyTosca;
+ this.policyModel = policyModel;
this.shared = shared;
this.usedByLoops = usedByLoops;
this.setJsonRepresentation(jsonRepresentation);
@@ -165,7 +162,7 @@ public class MicroServicePolicy extends Policy implements Serializable {
/**
* name setter.
- *
+ *
* @param name the name to set
*/
@Override
@@ -173,14 +170,6 @@ public class MicroServicePolicy extends Policy implements Serializable {
this.name = name;
}
- public String getModelType() {
- return modelType;
- }
-
- void setModelType(String modelType) {
- this.modelType = modelType;
- }
-
public Boolean getShared() {
return shared;
}
@@ -189,14 +178,6 @@ public class MicroServicePolicy extends Policy implements Serializable {
this.shared = shared;
}
- public String getPolicyTosca() {
- return policyTosca;
- }
-
- void setPolicyTosca(String policyTosca) {
- this.policyTosca = policyTosca;
- }
-
public Set<Loop> getUsedByLoops() {
return usedByLoops;
}
@@ -221,9 +202,17 @@ public class MicroServicePolicy extends Policy implements Serializable {
this.deviceTypeScope = deviceTypeScope;
}
+ public PolicyModel getPolicyModel() {
+ return policyModel;
+ }
+
+ public void setPolicyModel(PolicyModel policyModel) {
+ this.policyModel = policyModel;
+ }
+
/**
* dcaeDeploymentId getter.
- *
+ *
* @return the dcaeDeploymentId
*/
public String getDcaeDeploymentId() {
@@ -232,7 +221,7 @@ public class MicroServicePolicy extends Policy implements Serializable {
/**
* dcaeDeploymentId setter.
- *
+ *
* @param dcaeDeploymentId the dcaeDeploymentId to set
*/
public void setDcaeDeploymentId(String dcaeDeploymentId) {
@@ -241,7 +230,7 @@ public class MicroServicePolicy extends Policy implements Serializable {
/**
* dcaeDeploymentStatusUrl getter.
- *
+ *
* @return the dcaeDeploymentStatusUrl
*/
public String getDcaeDeploymentStatusUrl() {
@@ -250,7 +239,7 @@ public class MicroServicePolicy extends Policy implements Serializable {
/**
* dcaeDeploymentStatusUrl setter.
- *
+ *
* @param dcaeDeploymentStatusUrl the dcaeDeploymentStatusUrl to set
*/
public void setDcaeDeploymentStatusUrl(String dcaeDeploymentStatusUrl) {
@@ -259,7 +248,7 @@ public class MicroServicePolicy extends Policy implements Serializable {
/**
* dcaeBlueprintId getter.
- *
+ *
* @return the dcaeBlueprintId
*/
public String getDcaeBlueprintId() {
@@ -268,7 +257,7 @@ public class MicroServicePolicy extends Policy implements Serializable {
/**
* dcaeBlueprintId setter.
- *
+ *
* @param dcaeBlueprintId the dcaeBlueprintId to set
*/
void setDcaeBlueprintId(String dcaeBlueprintId) {
@@ -306,7 +295,9 @@ public class MicroServicePolicy extends Policy implements Serializable {
}
private String getMicroServicePropertyNameFromTosca(JsonObject object) {
- return object.getAsJsonObject("policy_types").getAsJsonObject(this.modelType).getAsJsonObject("properties")
+ return object.getAsJsonObject("policy_types").getAsJsonObject(this.getPolicyModel().getPolicyModelType())
+ .getAsJsonObject(
+ "properties")
.keySet().toArray(new String[1])[0];
}
@@ -329,8 +320,8 @@ public class MicroServicePolicy extends Policy implements Serializable {
JsonObject policyDetails = new JsonObject();
thisPolicy.add(this.getName(), policyDetails);
- policyDetails.addProperty("type", this.getModelType());
- policyDetails.addProperty("version", "1.0.0");
+ policyDetails.addProperty("type", this.getPolicyModel().getPolicyModelType());
+ policyDetails.addProperty("version", this.getPolicyModel().getVersion());
JsonObject policyMetadata = new JsonObject();
policyDetails.add("metadata", policyMetadata);
diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java
index 29a4e56d0..b17bf1ac4 100644
--- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java
+++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicyService.java
@@ -65,7 +65,7 @@ public class MicroServicePolicyService implements PolicyService<MicroServicePoli
public MicroServicePolicy getAndUpdateMicroServicePolicy(Loop loop, MicroServicePolicy policy) {
return repository.save(
repository.findById(policy.getName()).map(p -> updateMicroservicePolicyProperties(p, policy, loop))
- .orElse(new MicroServicePolicy(policy.getName(), policy.getModelType(), policy.getPolicyTosca(),
+ .orElse(new MicroServicePolicy(policy.getName(), policy.getPolicyModel(),
policy.getShared(), policy.getJsonRepresentation(), Sets.newHashSet(loop))));
}
diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
index a1c8cdbdb..0825ea9e5 100644
--- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
+++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
@@ -62,7 +62,7 @@ import org.yaml.snakeyaml.Yaml;
@Entity
@Table(name = "operational_policies")
-@TypeDefs({ @TypeDef(name = "json", typeClass = StringJsonUserType.class) })
+@TypeDefs({@TypeDef(name = "json", typeClass = StringJsonUserType.class)})
public class OperationalPolicy extends Policy implements Serializable {
/**
* The serial version ID.
@@ -83,8 +83,8 @@ public class OperationalPolicy extends Policy implements Serializable {
@Expose
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumns({ @JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"),
- @JoinColumn(name = "policy_model_version", referencedColumnName = "version") })
+ @JoinColumns({@JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"),
+ @JoinColumn(name = "policy_model_version", referencedColumnName = "version")})
private PolicyModel policyModel;
public OperationalPolicy() {
@@ -98,10 +98,12 @@ public class OperationalPolicy extends Policy implements Serializable {
* @param loop The loop that uses this operational policy
* @param configurationsJson The operational policy property in the format of
* json
+ * @param policyModel The policy model associated if any, can be null
*/
- public OperationalPolicy(String name, Loop loop, JsonObject configurationsJson) {
+ public OperationalPolicy(String name, Loop loop, JsonObject configurationsJson, PolicyModel policyModel) {
this.name = name;
this.loop = loop;
+ this.setPolicyModel(policyModel);
this.setConfigurationsJson(configurationsJson);
LegacyOperationalPolicy.preloadConfiguration(configurationsJson, loop);
try {
@@ -128,7 +130,7 @@ public class OperationalPolicy extends Policy implements Serializable {
/**
* name setter.
- *
+ *
* @param name the name to set
*/
@Override
@@ -138,7 +140,7 @@ public class OperationalPolicy extends Policy implements Serializable {
/**
* policyModel getter.
- *
+ *
* @return the policyModel
*/
public PolicyModel getPolicyModel() {
@@ -147,7 +149,7 @@ public class OperationalPolicy extends Policy implements Serializable {
/**
* policyModel setter.
- *
+ *
* @param policyModel the policyModel to set
*/
public void setPolicyModel(PolicyModel policyModel) {
@@ -186,7 +188,7 @@ public class OperationalPolicy extends Policy implements Serializable {
/**
* Create policy Yaml from json defined here.
- *
+ *
* @return A string containing Yaml
*/
public String createPolicyPayloadYaml() {
@@ -260,7 +262,6 @@ public class OperationalPolicy extends Policy implements Serializable {
/**
* Regenerate the Operational Policy Json Representation.
- *
*/
public void updateJsonRepresentation() {
try {
diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyService.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyService.java
index 95f4f7be8..174912b22 100644
--- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyService.java
+++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyService.java
@@ -35,28 +35,30 @@ import org.springframework.stereotype.Service;
@Service
public class OperationalPolicyService implements PolicyService<OperationalPolicy> {
- private final OperationalPolicyRepository repository;
+ private final OperationalPolicyRepository operationalPolicyRepository;
@Autowired
public OperationalPolicyService(OperationalPolicyRepository repository) {
- this.repository = repository;
+ this.operationalPolicyRepository = repository;
}
@Override
public Set<OperationalPolicy> updatePolicies(Loop loop, List<OperationalPolicy> operationalPolicies) {
return operationalPolicies
- .stream()
- .map(policy ->
- repository
- .findById(policy.getName())
- .map(p -> setConfigurationJson(p, policy.getConfigurationsJson()))
- .orElse(new OperationalPolicy(policy.getName(), loop, policy.getConfigurationsJson())))
- .collect(Collectors.toSet());
+ .parallelStream()
+ .map(policy ->
+ operationalPolicyRepository
+ .findById(policy.getName())
+ .map(p -> setConfigurationJson(p, policy.getConfigurationsJson()))
+ .orElse(new OperationalPolicy(policy.getName(), loop,
+ policy.getConfigurationsJson(),
+ policy.getPolicyModel())))
+ .collect(Collectors.toSet());
}
@Override
public boolean isExisting(String policyName) {
- return repository.existsById(policyName);
+ return operationalPolicyRepository.existsById(policyName);
}
private OperationalPolicy setConfigurationJson(OperationalPolicy policy, JsonObject configurationsJson) {
diff --git a/src/main/java/org/onap/clamp/util/SemanticVersioning.java b/src/main/java/org/onap/clamp/util/SemanticVersioning.java
index 102284494..8852e2a4f 100644
--- a/src/main/java/org/onap/clamp/util/SemanticVersioning.java
+++ b/src/main/java/org/onap/clamp/util/SemanticVersioning.java
@@ -26,8 +26,6 @@ package org.onap.clamp.util;
/**
* This class is the base class for object that requires semantic versioning.
* ... This class supports also a.b.c.d... etc ... as a version.
- *
- *
*/
public class SemanticVersioning {
public static final int BEFORE = -1;
@@ -41,7 +39,7 @@ public class SemanticVersioning {
* @param arg0 A version in string for semantic versioning (a.b.c.d...)
* @param arg1 A version in string for semantic versioning (a.b.c.d...)
* @return objects (arg0, arg1) given as parameters. It returns the value: 0: if
- * (arg0==arg1) -1: if (arg0 < arg1) 1: if (arg0 > arg1)
+ * (arg0==arg1) -1: if (arg0 < arg1) 1: if (arg0 > arg1)
*/
public static int compare(String arg0, String arg1) {
@@ -60,12 +58,12 @@ public class SemanticVersioning {
int smalestStringLength = Math.min(arg0Array.length, arg1Array.length);
for (int currentVersionIndex =
- 0; currentVersionIndex < smalestStringLength; ++currentVersionIndex) {
+ 0; currentVersionIndex < smalestStringLength; ++currentVersionIndex) {
if (Integer.parseInt(arg0Array[currentVersionIndex]) < Integer
- .parseInt(arg1Array[currentVersionIndex])) {
+ .parseInt(arg1Array[currentVersionIndex])) {
return BEFORE;
} else if (Integer.parseInt(arg0Array[currentVersionIndex]) > Integer
- .parseInt(arg1Array[currentVersionIndex])) {
+ .parseInt(arg1Array[currentVersionIndex])) {
return AFTER;
}
// equals, so do not return anything, continue
@@ -88,6 +86,6 @@ public class SemanticVersioning {
return DEFAULT_VERSION;
}
String[] versionArray = currentVersion.split("\\.");
- return String.valueOf(Integer.parseInt(versionArray[0]) + 1)+".0.0";
+ return String.valueOf(Integer.parseInt(versionArray[0]) + 1) + ".0.0";
}
}
diff --git a/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java b/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java
index 65eb2696f..63209e9f9 100644
--- a/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java
+++ b/src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java
@@ -26,12 +26,12 @@
package org.onap.clamp.clds.util.drawing;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
-import java.util.Arrays;
-import java.util.List;
-
+import com.google.gson.JsonObject;
+import java.util.Set;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -39,7 +39,10 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
-import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService;
+import org.onap.clamp.loop.Loop;
+import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.onap.clamp.policy.operational.OperationalPolicy;
@RunWith(MockitoJUnitRunner.class)
public class ClampGraphBuilderTest {
@@ -50,47 +53,52 @@ public class ClampGraphBuilderTest {
private ArgumentCaptor<String> collectorCaptor;
@Captor
- private ArgumentCaptor<List<BlueprintMicroService>> microServicesCaptor;
+ private ArgumentCaptor<Set<MicroServicePolicy>> microServicesCaptor;
@Captor
- private ArgumentCaptor<String> policyCaptor;
+ private ArgumentCaptor<Set<OperationalPolicy>> policyCaptor;
+ /**
+ * Do a quick test of the graphBuilder chain.
+ */
@Test
public void clampGraphBuilderCompleteChainTest() {
String collector = "VES";
- BlueprintMicroService ms1 = new BlueprintMicroService("ms1", "", "", "1.0.0");
- BlueprintMicroService ms2 = new BlueprintMicroService("ms2", "", "", "1.0.0");
+ MicroServicePolicy ms1 = new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0"), false,
+ null);
+ MicroServicePolicy ms2 = new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0"), false,
+ null);
- String policy = "OperationalPolicy";
- final List<BlueprintMicroService> microServices = Arrays.asList(ms1, ms2);
+ OperationalPolicy opPolicy = new OperationalPolicy("OperationalPolicy", new Loop(), new JsonObject(),
+ new PolicyModel("org.onap.opolicy", null, "1.0.0", "opolicy1"));
+ final Set<OperationalPolicy> opPolicies = Set.of(opPolicy);
+ final Set<MicroServicePolicy> microServices = Set.of(ms1, ms2);
ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter);
- clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).policy(policy).build();
+ clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).addPolicy(opPolicy).build();
verify(mockPainter, times(1)).doPaint(collectorCaptor.capture(), microServicesCaptor.capture(),
policyCaptor.capture());
Assert.assertEquals(collector, collectorCaptor.getValue());
Assert.assertEquals(microServices, microServicesCaptor.getValue());
- Assert.assertEquals(policy, policyCaptor.getValue());
+ Assert.assertEquals(opPolicies, policyCaptor.getValue());
}
- @Test(expected = InvalidStateException.class)
+ /**
+ * Do a quick test of the graphBuilder chain when no policy is given.
+ */
+ @Test
public void clampGraphBuilderNoPolicyGivenTest() {
String collector = "VES";
- BlueprintMicroService ms1 = new BlueprintMicroService("ms1", "", "", "1.0.0");
- BlueprintMicroService ms2 = new BlueprintMicroService("ms2", "", "", "1.0.0");
+ MicroServicePolicy ms1 =
+ new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0"), false, null);
+ MicroServicePolicy ms2 =
+ new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0"), false, null);
ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter);
- clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).build();
- }
+ assertThat(clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).build())
+ .isNotNull();
- @Test(expected = InvalidStateException.class)
- public void clampGraphBuilderNoMicroServiceGivenTest() {
- String collector = "VES";
- String policy = "OperationalPolicy";
-
- ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter);
- clampGraphBuilder.collector(collector).policy(policy).build();
}
}
diff --git a/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java b/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java
new file mode 100644
index 000000000..aad11adb2
--- /dev/null
+++ b/src/test/java/org/onap/clamp/clds/util/drawing/SvgLoopGeneratorTest.java
@@ -0,0 +1,77 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 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.clds.util.drawing;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.gson.JsonObject;
+import java.io.IOException;
+import java.util.HashSet;
+import javax.xml.parsers.ParserConfigurationException;
+import org.junit.Test;
+import org.onap.clamp.loop.Loop;
+import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.onap.clamp.policy.operational.OperationalPolicy;
+import org.xml.sax.SAXException;
+
+public class SvgLoopGeneratorTest {
+ private Loop getLoop() {
+ MicroServicePolicy ms1 =
+ new MicroServicePolicy("ms1", new PolicyModel("org.onap.ms1", "", "1.0.0", "short.ms1"),
+ false,
+ new HashSet<Loop>());
+ MicroServicePolicy ms2 =
+ new MicroServicePolicy("ms2", new PolicyModel("org.onap.ms2", "", "1.0.0", "short.ms2"),
+ false, new HashSet<Loop>());
+ OperationalPolicy opPolicy = new OperationalPolicy("OperationalPolicy", new Loop(), new JsonObject(),
+ new PolicyModel("org.onap.opolicy", null, "1.0.0", "short.OperationalPolicy"));
+ Loop loop = new Loop();
+ loop.addMicroServicePolicy(ms1);
+ loop.addMicroServicePolicy(ms2);
+ loop.addOperationalPolicy(opPolicy);
+ return loop;
+ }
+
+ /**
+ * Test a Svg rendering with all objects.
+ *
+ * @throws IOException In case of isssues
+ * @throws ParserConfigurationException In case of isssues
+ * @throws SAXException In case of isssues
+ */
+ @Test
+ public void getAsSvgTest() throws IOException, ParserConfigurationException, SAXException {
+ String xml = SvgLoopGenerator.getSvgImage(getLoop());
+ assertThat(xml).contains("data-element-id=\"VES\"");
+ assertThat(xml).contains(">VES<");
+ assertThat(xml).contains("data-element-id=\"ms1\"");
+ assertThat(xml).contains("data-element-id=\"ms2\"");
+ assertThat(xml).contains(">short.ms1<");
+ assertThat(xml).contains(">short.ms2<");
+ assertThat(xml).contains("data-element-id=\"OperationalPolicy\"");
+ assertThat(xml).contains(">short.OperationalPolicy<");
+
+ }
+}
diff --git a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
index fa9cc063a..57e99a3da 100644
--- a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
+++ b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
@@ -27,11 +27,9 @@ import static org.assertj.core.api.Assertions.assertThat;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
-
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
-
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.json.simple.parser.ParseException;
@@ -42,6 +40,7 @@ import org.onap.clamp.clds.model.dcae.DcaeOperationStatusResponse;
import org.onap.clamp.loop.components.external.DcaeComponent;
import org.onap.clamp.loop.components.external.ExternalComponentState;
import org.onap.clamp.loop.template.LoopTemplate;
+import org.onap.clamp.loop.template.PolicyModel;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
public class DcaeComponentTest {
@@ -54,8 +53,8 @@ public class DcaeComponentTest {
loopTest.setDcaeDeploymentId("123456789");
loopTest.setDcaeDeploymentStatusUrl("http4://localhost:8085");
- MicroServicePolicy microServicePolicy = new MicroServicePolicy("configPolicyTest", "",
- "tosca_definitions_version: tosca_simple_yaml_1_0_0", true,
+ MicroServicePolicy microServicePolicy = new MicroServicePolicy("configPolicyTest", new PolicyModel("policy1",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0","1.0.0"), true,
new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), new HashSet<>());
microServicePolicy.setConfigurationsJson(new Gson().fromJson("{\"param1\":\"value1\"}", JsonObject.class));
@@ -67,6 +66,10 @@ public class DcaeComponentTest {
return loopTest;
}
+ /**
+ * Test the DcaeReponse roughly.
+ * @throws IOException In case of issues
+ */
@Test
public void convertDcaeResponseTest() throws IOException {
String dcaeFakeResponse = "{'requestId':'testId','operationType':'install','status':'state',"
@@ -99,6 +102,11 @@ public class DcaeComponentTest {
assertThat(unDeploymentPayload).isEqualTo(expectedPayload);
}
+ /**
+ * Test the computeState method of the DcaeComponent roughly.
+ *
+ * @throws IOException In case of issues
+ */
@Test
public void computeStateTest() throws IOException {
Exchange exchange = Mockito.mock(Exchange.class);
@@ -157,6 +165,11 @@ public class DcaeComponentTest {
assertThat(state9.getStateName()).isEqualTo("IN_ERROR");
}
+ /**
+ * Test the Converter to DcaeInventoryResponse method.
+ * @throws IOException In case of failure
+ * @throws ParseException In case of failure
+ */
@Test
public void convertToDcaeInventoryResponseTest() throws IOException, ParseException {
String dcaeFakeResponse = "{\n" + " \"links\": {\n" + " \"previousLink\": {\n"
diff --git a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java
index c85d5a57c..4fd78d18a 100644
--- a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java
+++ b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java
@@ -28,13 +28,10 @@ import static org.assertj.core.api.Assertions.assertThat;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
-
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
-
import javax.transaction.Transactional;
-
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.builder.ExchangeBuilder;
@@ -42,6 +39,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.clamp.clds.Application;
import org.onap.clamp.loop.template.LoopTemplate;
+import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.loop.template.PolicyModelsService;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@@ -56,11 +55,20 @@ public class DeployFlowTestItCase {
CamelContext camelContext;
@Autowired
+ PolicyModelsService policyModelsService;
+
+ @Autowired
LoopService loopService;
@Autowired
LoopsRepository loopsRepository;
+ /**
+ * This method tests a deployment a single blueprint.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void deployWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
@@ -85,6 +93,12 @@ public class DeployFlowTestItCase {
assertThat(loopAfterTest.getDcaeDeploymentId()).isNotNull();
}
+ /**
+ * This method tests the deployment of multiple separated blueprints.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void deployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException {
@@ -117,6 +131,12 @@ public class DeployFlowTestItCase {
assertThat(loopAfterTest.getDcaeDeploymentId()).isNull();
}
+ /**
+ * This method tests the undeployment of a single blueprint.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void undeployWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
@@ -142,6 +162,12 @@ public class DeployFlowTestItCase {
assertThat(loopAfterTest.getDcaeDeploymentStatusUrl().contains("/uninstall")).isTrue();
}
+ /**
+ * This method tests the undeployment of multiple separated blueprints.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void undeployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException {
@@ -175,7 +201,12 @@ public class DeployFlowTestItCase {
assertThat(loopAfterTest.getDcaeDeploymentId()).isNull();
}
-
+ /**
+ * This method tests the DCAE get status for a single blueprint.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void getStatusWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
@@ -206,6 +237,12 @@ public class DeployFlowTestItCase {
assertThat(loopAfterTest.getComponent("POLICY")).isNotNull();
}
+ /**
+ * This method tests the dcae get status for multiple blueprints.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ */
@Test
@Transactional
public void getStatusWithMultipleBlueprintTest() throws JsonSyntaxException, IOException {
@@ -256,8 +293,13 @@ public class DeployFlowTestItCase {
private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
String policyTosca, String jsonProperties, boolean shared) {
- MicroServicePolicy microService = new MicroServicePolicy(name, modelType, policyTosca, shared,
+
+ PolicyModel policyModel = new PolicyModel(modelType, policyTosca,"1.0.0");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel);
+ MicroServicePolicy microService = new MicroServicePolicy(name, policyModel,
+ shared,
gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>());
+
microService.setConfigurationsJson(new Gson().fromJson(jsonProperties, JsonObject.class));
return microService;
}
diff --git a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java
index f1e5c0927..714cbd592 100644
--- a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java
+++ b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java
@@ -30,16 +30,15 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
-
import java.util.Set;
-
import javax.transaction.Transactional;
-
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.clamp.clds.Application;
import org.onap.clamp.clds.util.JsonUtils;
import org.onap.clamp.loop.template.LoopTemplate;
+import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.loop.template.PolicyModelsService;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.clamp.policy.microservice.MicroServicePolicyService;
import org.onap.clamp.policy.operational.OperationalPolicy;
@@ -64,6 +63,9 @@ public class LoopControllerTestItCase {
MicroServicePolicyService microServicePolicyService;
@Autowired
+ PolicyModelsService policyModelsService;
+
+ @Autowired
LoopController loopController;
private void saveTestLoopToDb() {
@@ -129,8 +131,10 @@ public class LoopControllerTestItCase {
@Transactional
public void testUpdateMicroservicePolicy() {
saveTestLoopToDb();
- MicroServicePolicy policy = new MicroServicePolicy("policyName", "",
- "tosca_definitions_version: tosca_simple_yaml_1_0_0", false,
+ PolicyModel policyModel = new PolicyModel("",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0","1.0.0");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel);
+ MicroServicePolicy policy = new MicroServicePolicy("policyName", policyModel, false,
JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
loopController.updateMicroservicePolicy(EXAMPLE_LOOP_NAME, policy);
assertThat(microServicePolicyService.isExisting("policyName")).isTrue();
diff --git a/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java
index 62b25605e..e6c477b44 100644
--- a/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java
+++ b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java
@@ -30,10 +30,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
-
import java.time.Instant;
import java.util.HashSet;
-
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.clamp.clds.Application;
@@ -92,32 +90,33 @@ public class LoopRepositoriesItCase {
return new Service(serviceDetails, resourceDetails);
}
- private OperationalPolicy getOperationalPolicy(String configJson, String name) {
- return new OperationalPolicy(name, null, new Gson().fromJson(configJson, JsonObject.class));
+ private OperationalPolicy getOperationalPolicy(String configJson, String name, PolicyModel policyModel) {
+ return new OperationalPolicy(name, null, new Gson().fromJson(configJson, JsonObject.class), policyModel);
}
private LoopElementModel getLoopElementModel(String yaml, String name, String policyType, String createdBy,
- PolicyModel policyModel) {
+ PolicyModel policyModel) {
LoopElementModel model = new LoopElementModel(name, policyType, yaml);
model.addPolicyModel(policyModel);
return model;
}
- private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version, String policyAcronym,
- String policyVariant, String createdBy) {
+ private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version,
+ String policyAcronym) {
return new PolicyModel(policyType, policyModelTosca, version, policyAcronym);
}
private LoopTemplate getLoopTemplate(String name, String blueprint, String svgRepresentation, String createdBy,
- Integer maxInstancesAllowed) {
+ Integer maxInstancesAllowed) {
LoopTemplate template = new LoopTemplate(name, blueprint, svgRepresentation, maxInstancesAllowed, null);
template.addLoopElementModel(getLoopElementModel("yaml", "microService1", "org.onap.policy.drools", createdBy,
- getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools", "type1", createdBy)));
+ getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools")));
+ loopTemplateRepository.save(template);
return template;
}
private Loop getLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson,
- String dcaeId, String dcaeUrl, String dcaeBlueprintId) {
+ String dcaeId, String dcaeUrl, String dcaeBlueprintId) {
Loop loop = new Loop();
loop.setName(name);
loop.setSvgRepresentation(svgRepresentation);
@@ -129,9 +128,9 @@ public class LoopRepositoriesItCase {
return loop;
}
- private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
- String policyTosca, String jsonProperties, boolean shared) {
- MicroServicePolicy microService = new MicroServicePolicy(name, modelType, policyTosca, shared,
+ private MicroServicePolicy getMicroServicePolicy(String name, String jsonRepresentation, String jsonProperties,
+ boolean shared, PolicyModel policyModel) {
+ MicroServicePolicy microService = new MicroServicePolicy(name, policyModel, shared,
gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>());
microService.setConfigurationsJson(new Gson().fromJson(jsonProperties, JsonObject.class));
return microService;
@@ -141,17 +140,20 @@ public class LoopRepositoriesItCase {
return new LoopLog(message, type, "CLAMP", loop);
}
+ /**
+ * This method does a crud test and save a loop template and a loop object in db.
+ */
@Test
@Transactional
public void crudTest() {
// Setup
Loop loopTest = getLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
"123456789", "https://dcaetest.org", "UUID-blueprint");
- OperationalPolicy opPolicy = this.getOperationalPolicy("{\"type\":\"GUARD\"}", "GuardOpPolicyTest");
+ OperationalPolicy opPolicy = this.getOperationalPolicy("{\"type\":\"GUARD\"}", "GuardOpPolicyTest",
+ getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools"));
loopTest.addOperationalPolicy(opPolicy);
- MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "",
- "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
- "{\"param1\":\"value1\"}", true);
+ MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "{\"configtype\":\"json\"}",
+ "{\"param1\":\"value1\"}", true, getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools"));
loopTest.addMicroServicePolicy(microServicePolicy);
LoopLog loopLog = getLoopLog(LogType.INFO, "test message", loopTest);
loopTest.addLog(loopLog);
@@ -182,7 +184,7 @@ public class LoopRepositoriesItCase {
assertThat(servicesRepository.existsById(loopInDb.getModelService().getServiceUuid())).isEqualTo(true);
assertThat(microServiceModelsRepository.existsById(
loopInDb.getLoopTemplate().getLoopElementModelsUsed().first().getLoopElementModel().getName()))
- .isEqualTo(true);
+ .isEqualTo(true);
assertThat(policyModelsRepository.existsById(new PolicyModelId(
loopInDb.getLoopTemplate().getLoopElementModelsUsed().first().getLoopElementModel().getPolicyModels()
.first().getPolicyModelType(),
@@ -238,7 +240,7 @@ public class LoopRepositoriesItCase {
assertThat(servicesRepository.existsById(loopInDb.getModelService().getServiceUuid())).isEqualTo(true);
assertThat(microServiceModelsRepository.existsById(
loopInDb.getLoopTemplate().getLoopElementModelsUsed().first().getLoopElementModel().getName()))
- .isEqualTo(true);
+ .isEqualTo(true);
assertThat(policyModelsRepository.existsById(new PolicyModelId(
loopInDb.getLoopTemplate().getLoopElementModelsUsed().first().getLoopElementModel().getPolicyModels()
diff --git a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
index 8089bf1a8..152648712 100644
--- a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
+++ b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
@@ -26,12 +26,9 @@ package org.onap.clamp.loop;
import static org.assertj.core.api.Assertions.assertThat;
import com.google.gson.JsonObject;
-
import java.util.Set;
import java.util.stream.Collectors;
-
import javax.transaction.Transactional;
-
import org.assertj.core.util.Lists;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -41,6 +38,8 @@ import org.onap.clamp.loop.log.LogType;
import org.onap.clamp.loop.log.LoopLog;
import org.onap.clamp.loop.log.LoopLogService;
import org.onap.clamp.loop.template.LoopTemplate;
+import org.onap.clamp.loop.template.PolicyModel;
+import org.onap.clamp.loop.template.PolicyModelsService;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.clamp.policy.microservice.MicroServicePolicyService;
import org.onap.clamp.policy.operational.OperationalPolicy;
@@ -71,6 +70,9 @@ public class LoopServiceTestItCase {
@Autowired
LoopLogService loopLogService;
+ @Autowired
+ PolicyModelsService policyModelsService;
+
@Test
@Transactional
public void shouldCreateEmptyLoop() {
@@ -99,7 +101,7 @@ public class LoopServiceTestItCase {
// given
saveTestLoopToDb();
OperationalPolicy operationalPolicy = new OperationalPolicy("policyName", null,
- JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
// when
Loop actualLoop = loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME,
@@ -123,9 +125,11 @@ public class LoopServiceTestItCase {
public void shouldAddMicroservicePolicyToLoop() {
// given
saveTestLoopToDb();
- MicroServicePolicy microServicePolicy = new MicroServicePolicy("policyName", "",
- "tosca_definitions_version: tosca_simple_yaml_1_0_0", false,
- JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
+ PolicyModel policyModel = new PolicyModel("org.policies.policyModel1",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "1.0.0", "policyModel1");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel);
+ MicroServicePolicy microServicePolicy = new MicroServicePolicy("policyName", policyModel,
+ false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
// when
Loop actualLoop = loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME,
@@ -147,13 +151,18 @@ public class LoopServiceTestItCase {
public void shouldCreateNewMicroservicePolicyAndUpdateJsonRepresentationOfOldOne() {
// given
saveTestLoopToDb();
-
- MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy("firstPolicyName", "", "", false,
+ PolicyModel policyModel1 = new PolicyModel("org.policies.firstPolicyName",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "1.0.0", "firstPolicyName");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel1);
+ PolicyModel policyModel2 = new PolicyModel("org.policies.secondPolicyName",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "1.0.0", "secondPolicyName");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel2);
+ MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy("firstPolicyName", policyModel1, false,
JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
+
loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstMicroServicePolicy));
- MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy("secondPolicyName", "",
- "tosca_definitions_version: tosca_simple_yaml_1_0_0", true,
- JsonUtils.GSON.fromJson("{}", JsonObject.class), null);
+ MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy("secondPolicyName", policyModel2, false,
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
// when
firstMicroServicePolicy
@@ -170,13 +179,12 @@ public class LoopServiceTestItCase {
assertThat(savedPolicies).contains(secondMicroServicePolicy);
assertThat(savedPolicies).usingElementComparatorIgnoringFields("usedByLoops", "createdDate", "updatedDate",
"createdBy", "updatedBy").containsExactlyInAnyOrder(firstMicroServicePolicy, secondMicroServicePolicy);
-
}
private void saveTestLoopToDb() {
Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, "blueprint", "representation");
testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
- LoopTemplate template = new LoopTemplate();
+ LoopTemplate template = new LoopTemplate();
template.setName("testTemplate");
testLoop.setLoopTemplate(template);
loopService.saveOrUpdateLoop(testLoop);
@@ -187,14 +195,18 @@ public class LoopServiceTestItCase {
public void shouldRemoveOldMicroservicePolicyIfNotInUpdatedList() {
// given
saveTestLoopToDb();
-
- MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy("firstPolicyName", "",
- "\"tosca_definitions_version: tosca_simple_yaml_1_0_0\"", false,
- JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
+ PolicyModel policyModel1 = new PolicyModel("org.policies.firstPolicyName",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "1.0.0", "firstPolicyName");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel1);
+ PolicyModel policyModel2 = new PolicyModel("org.policies.secondPolicyName",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "1.0.0", "secondPolicyName");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel2);
+ MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy("firstPolicyName", policyModel1,
+ false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstMicroServicePolicy));
- MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy("policyName", "", "secondPolicyTosca",
- true, JsonUtils.GSON.fromJson("{}", JsonObject.class), null);
+ MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy("secondPolicyName", policyModel2,
+ false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
// when
Loop actualLoop = loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME,
@@ -219,11 +231,11 @@ public class LoopServiceTestItCase {
JsonObject newJsonConfiguration = JsonUtils.GSON.fromJson("{}", JsonObject.class);
OperationalPolicy firstOperationalPolicy = new OperationalPolicy("firstPolicyName", null,
- JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstOperationalPolicy));
OperationalPolicy secondOperationalPolicy = new OperationalPolicy("secondPolicyName", null,
- newJsonConfiguration);
+ newJsonConfiguration, null);
// when
firstOperationalPolicy.setConfigurationsJson(newJsonConfiguration);
@@ -250,11 +262,11 @@ public class LoopServiceTestItCase {
saveTestLoopToDb();
OperationalPolicy firstOperationalPolicy = new OperationalPolicy("firstPolicyName", null,
- JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstOperationalPolicy));
OperationalPolicy secondOperationalPolicy = new OperationalPolicy("policyName", null,
- JsonUtils.GSON.fromJson("{}", JsonObject.class));
+ JsonUtils.GSON.fromJson("{}", JsonObject.class), null);
// when
Loop actualLoop = loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME,
@@ -300,19 +312,21 @@ public class LoopServiceTestItCase {
// Add log
Loop loop = loopsRepository.findById(EXAMPLE_LOOP_NAME).orElse(null);
loop.addLog(new LoopLog("test", LogType.INFO, "CLAMP", loop));
- LoopTemplate template = new LoopTemplate();
+ LoopTemplate template = new LoopTemplate();
template.setName("testTemplate");
loop.setLoopTemplate(template);
loop = loopService.saveOrUpdateLoop(loop);
// Add op policy
OperationalPolicy operationalPolicy = new OperationalPolicy("opPolicy", null,
- JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(operationalPolicy));
+ PolicyModel policyModel = new PolicyModel("org.policies.microPolicy",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "1.0.0", "microPolicy");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel);
// Add Micro service policy
- MicroServicePolicy microServicePolicy = new MicroServicePolicy("microPolicy", "",
- "tosca_definitions_version: tosca_simple_yaml_1_0_0", false,
- JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
+ MicroServicePolicy microServicePolicy = new MicroServicePolicy("microPolicy", policyModel,
+ false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(microServicePolicy));
// Verify it's there
@@ -352,9 +366,11 @@ public class LoopServiceTestItCase {
public void testUpdateMicroservicePolicy() {
saveTestLoopToDb();
assertThat(microServicePolicyService.isExisting("policyName")).isFalse();
- MicroServicePolicy microServicePolicy = new MicroServicePolicy("policyName", "",
- "tosca_definitions_version: tosca_simple_yaml_1_0_0", false,
- JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
+ PolicyModel policyModel = new PolicyModel("org.policies.policyName",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", "1.0.0", "policyName");
+ policyModelsService.saveOrUpdatePolicyModel(policyModel);
+ MicroServicePolicy microServicePolicy = new MicroServicePolicy("policyName", policyModel,
+ false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
loopService.updateMicroservicePolicy(EXAMPLE_LOOP_NAME, microServicePolicy);
assertThat(microServicePolicyService.isExisting("policyName")).isTrue();
}
diff --git a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
index ae4b2564e..a2a4536ff 100644
--- a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
+++ b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
@@ -32,11 +32,9 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
-
import java.io.IOException;
import java.util.HashSet;
import java.util.Random;
-
import org.junit.Test;
import org.onap.clamp.clds.util.JsonUtils;
import org.onap.clamp.clds.util.ResourceFileUtil;
@@ -56,11 +54,13 @@ public class LoopToJsonTest {
private Gson gson = new Gson();
private OperationalPolicy getOperationalPolicy(String configJson, String name) {
- return new OperationalPolicy(name, null, gson.fromJson(configJson, JsonObject.class));
+ return new OperationalPolicy(name, null, gson.fromJson(configJson, JsonObject.class),
+ getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools", "type1"));
}
private Loop getLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson,
- String dcaeId, String dcaeUrl, String dcaeBlueprintId) throws JsonSyntaxException, IOException {
+ String dcaeId, String dcaeUrl, String dcaeBlueprintId)
+ throws JsonSyntaxException, IOException {
Loop loop = new Loop(name, svgRepresentation);
loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class));
loop.setLastComputedState(LoopState.DESIGN);
@@ -70,8 +70,9 @@ public class LoopToJsonTest {
}
private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
- String policyTosca, String jsonProperties, boolean shared) {
- MicroServicePolicy microService = new MicroServicePolicy(name, modelType, policyTosca, shared,
+ String policyTosca, String jsonProperties, boolean shared) {
+ MicroServicePolicy microService = new MicroServicePolicy(name, new PolicyModel(modelType, policyTosca, "1.0.0"),
+ shared,
gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>());
microService.setConfigurationsJson(new Gson().fromJson(jsonProperties, JsonObject.class));
return microService;
@@ -87,12 +88,12 @@ public class LoopToJsonTest {
}
private PolicyModel getPolicyModel(String policyType, String policyModelTosca, String version, String policyAcronym,
- String policyVariant) {
+ String policyVariant) {
return new PolicyModel(policyType, policyModelTosca, version, policyAcronym);
}
private LoopTemplate getLoopTemplate(String name, String blueprint, String svgRepresentation,
- Integer maxInstancesAllowed) {
+ Integer maxInstancesAllowed) {
LoopTemplate template = new LoopTemplate(name, blueprint, svgRepresentation, maxInstancesAllowed, null);
template.addLoopElementModel(getLoopElementModel("yaml", "microService1",
getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools", "type1")));
diff --git a/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java b/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java
index 7762111b0..b42e15367 100644
--- a/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java
+++ b/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java
@@ -25,13 +25,10 @@ package org.onap.clamp.policy.downloader;
import static org.assertj.core.api.Assertions.assertThat;
import com.google.gson.JsonSyntaxException;
-
import java.io.IOException;
import java.time.Instant;
import java.util.List;
-
import javax.transaction.Transactional;
-
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.clamp.clds.Application;
@@ -53,12 +50,19 @@ public class PolicyEngineControllerTestItCase {
@Autowired
PolicyModelsRepository policyModelsRepository;
+ /**
+ * This method tests a fake synchronization with the emulator.
+ *
+ * @throws JsonSyntaxException In case of issues
+ * @throws IOException In case of issues
+ * @throws InterruptedException In case of issues
+ */
@Test
@Transactional
public void synchronizeAllPoliciesTest() throws JsonSyntaxException, IOException, InterruptedException {
policyController.synchronizeAllPolicies();
Instant firstExecution = policyController.getLastInstantExecuted();
- assertThat (firstExecution).isNotNull();
+ assertThat(firstExecution).isNotNull();
List<PolicyModel> policyModelsList = policyModelsRepository.findAll();
assertThat(policyModelsList.size()).isGreaterThanOrEqualTo(8);
assertThat(policyModelsList).contains(new PolicyModel("onap.policies.Monitoring", null, "1.0.0"));
@@ -67,7 +71,7 @@ public class PolicyEngineControllerTestItCase {
// Re-do it to check that there is no issue with duplicate key
policyController.synchronizeAllPolicies();
Instant secondExecution = policyController.getLastInstantExecuted();
- assertThat (secondExecution).isNotNull();
+ assertThat(secondExecution).isNotNull();
assertThat(firstExecution).isBefore(secondExecution);
}
diff --git a/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java b/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java
index 1556ac6d3..3911494f4 100644
--- a/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java
+++ b/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java
@@ -24,21 +24,21 @@
package org.onap.clamp.policy.microservice;
import com.google.gson.JsonObject;
-
import java.io.IOException;
import java.util.HashSet;
-
import org.junit.Test;
import org.onap.clamp.clds.util.JsonUtils;
import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.onap.clamp.loop.template.PolicyModel;
import org.skyscreamer.jsonassert.JSONAssert;
public class MicroServicePayloadTest {
@Test
public void testPayloadConstruction() throws IOException {
- MicroServicePolicy policy = new MicroServicePolicy("testPolicy", "onap.policies.monitoring.cdap.tca.hi.lo.app",
- ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml"), false, new HashSet<>());
+ MicroServicePolicy policy = new MicroServicePolicy("testPolicy", new PolicyModel(
+ "onap.policies.monitoring.cdap.tca.hi.lo.app",
+ ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml"),"1.0.0"), false, new HashSet<>());
policy.setConfigurationsJson(JsonUtils.GSON.fromJson(
ResourceFileUtil.getResourceAsString("tosca/micro-service-policy-properties.json"), JsonObject.class));
JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/micro-service-policy-payload.json"),
diff --git a/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java b/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java
index 728b61cc9..f42bbc1c0 100644
--- a/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java
+++ b/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java
@@ -27,10 +27,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
-
import java.io.IOException;
import java.util.Map;
-
import org.junit.Test;
import org.onap.clamp.clds.util.ResourceFileUtil;
import org.onap.clamp.policy.operational.LegacyOperationalPolicy;
@@ -43,7 +41,7 @@ public class OperationalPolicyPayloadTest {
public void testOperationalPolicyPayloadConstruction() throws IOException {
JsonObject jsonConfig = new GsonBuilder().create().fromJson(
ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
- OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig);
+ OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig, null);
assertThat(policy.createPolicyPayloadYaml())
.isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload.yaml"));
@@ -65,7 +63,7 @@ public class OperationalPolicyPayloadTest {
JsonObject jsonConfig = new GsonBuilder().create().fromJson(
ResourceFileUtil.getResourceAsString("tosca/operational-policy-no-guard-properties.json"),
JsonObject.class);
- OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig);
+ OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig, null);
Map<String, String> guardsMap = policy.createGuardPolicyPayloads();
assertThat(guardsMap).isEmpty();
assertThat(guardsMap.entrySet()).isEmpty();
@@ -75,7 +73,7 @@ public class OperationalPolicyPayloadTest {
public void testGuardPolicyPayloadConstruction() throws IOException {
JsonObject jsonConfig = new GsonBuilder().create().fromJson(
ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
- OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig);
+ OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig, null);
Map<String, String> guardsMap = policy.createGuardPolicyPayloads();