aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INFO.yaml4
-rw-r--r--pom.xml13
-rw-r--r--src/main/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupsAnalyzer.java6
-rw-r--r--src/main/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMerger.java4
-rw-r--r--src/main/resources/clds/camel/rest/clamp-api-v2.xml212
-rw-r--r--src/main/resources/clds/camel/routes/loop-flows.xml7
-rw-r--r--src/main/resources/clds/camel/routes/policy-flows.xml4
-rw-r--r--src/test/java/org/onap/policy/clamp/loop/PolicyModelServiceItCase.java12
-rw-r--r--src/test/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupAnalyzerTest.java35
-rw-r--r--src/test/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMergerTest.java24
-rw-r--r--tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoops.java10
-rw-r--r--tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessage.java5
-rw-r--r--tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseDetails.java11
-rw-r--r--tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseStatus.java7
-rw-r--r--tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatus.java16
-rw-r--r--tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoopTest.java2
-rw-r--r--tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopStateChangeTest.java5
-rw-r--r--tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopUpdateTest.java5
-rw-r--r--tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantHealthCheckTest.java5
-rw-r--r--tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageTest.java13
-rw-r--r--tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageUtils.java2
-rw-r--r--tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStateChangeTest.java5
-rw-r--r--tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatusTest.java5
-rw-r--r--ui-react/src/api/PolicyService.js23
-rw-r--r--ui-react/src/components/dialogs/Policy/ViewAllPolicies.js95
-rw-r--r--ui-react/src/components/menu/MenuBar.js24
-rw-r--r--ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap42
-rw-r--r--version.properties2
28 files changed, 367 insertions, 231 deletions
diff --git a/INFO.yaml b/INFO.yaml
index beafaed62..67c665b47 100644
--- a/INFO.yaml
+++ b/INFO.yaml
@@ -68,12 +68,12 @@ committers:
timezone: 'Europe/Ireland'
- name: 'Ram Krishna Verma'
email: 'ram_krishna.verma@bell.ca'
- company: 'Ericsson'
+ company: 'Bell Canada'
id: 'ramverma'
timezone: 'America/Montreal'
- name: 'Ajith Sreekumar'
email: 'ajith.sreekumar@bell.ca'
- company: 'Ericsson'
+ company: 'Bell Canada'
id: 'a.sreekumar'
timezone: 'Europe/Ireland'
tsc:
diff --git a/pom.xml b/pom.xml
index dabaa5e71..23a5d91ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.onap.policy</groupId>
<artifactId>clamp</artifactId>
- <version>6.0.0-SNAPSHOT</version>
+ <version>6.0.1-SNAPSHOT</version>
<name>policy-clamp</name>
@@ -52,7 +52,7 @@
- The POLICY-CLAMP backend, JAVA unit testing
- The POLICY-CLAMP backend, JAVA integration tests (with Spring + docker mariadb database + docker policy/dcae
emulator written in python)
- - The POLICY-CLAMP frontend, Javascrip tests (NodeJS(NPM) + JEST and Enzyme for React)
+ - The POLICY-CLAMP frontend, Javascript tests (NodeJS(NPM) + JEST and Enzyme for React)
The test coverage for dev's can be found after a "clean install" build in:
- Clamp backend: target/jacoco-dev.exec (unit tests + integration tests merged)
@@ -80,8 +80,8 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<eelf.core.version>1.0.0</eelf.core.version>
- <camel.version>2.25.2</camel.version>
- <springboot.version>2.2.10.RELEASE</springboot.version>
+ <camel.version>2.25.3</camel.version>
+ <springboot.version>2.2.13.RELEASE</springboot.version>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.surefire.reportsPath>${project.build.directory}/surefire-reports</sonar.surefire.reportsPath>
@@ -110,6 +110,8 @@
<ui.react.src>ui-react</ui.react.src>
<ui.react.lib.src>ui-react-lib</ui.react.lib.src>
<npm.publish.url>https://nexus3.onap.org/repository/npm.snapshot/</npm.publish.url>
+
+ <policy.models.version>2.4.0</policy.models.version>
</properties>
<profiles>
@@ -382,7 +384,7 @@
<dependency>
<groupId>org.onap.policy.models</groupId>
<artifactId>policy-models-pdp</artifactId>
- <version>2.3.5</version>
+ <version>${policy.models.version}</version>
</dependency>
<!-- Others dependencies -->
@@ -512,6 +514,7 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
+ <version>4.13</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
diff --git a/src/main/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupsAnalyzer.java b/src/main/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupsAnalyzer.java
index 1d6d21977..768872750 100644
--- a/src/main/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupsAnalyzer.java
+++ b/src/main/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupsAnalyzer.java
@@ -33,7 +33,7 @@ import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
/**
* This is an utility class to do searching in pdp groups and create json object describing the result.
@@ -118,12 +118,12 @@ public class PdpGroupsAnalyzer {
JsonObject assignedPdpGroups = new JsonObject();
pdpGroupInfo.add(ASSIGNED_PDP_GROUPS_INFO, assignedPdpGroups);
- ToscaPolicyIdentifier toscaPolicyIdentifier = new ToscaPolicyIdentifier(policyName, version);
+ ToscaConceptIdentifier toscaConceptIdentifier = new ToscaConceptIdentifier(policyName, version);
pdpGroups.getGroups().stream().anyMatch(pdpGroup ->
pdpGroup.getPdpSubgroups().stream().anyMatch(
pdpSubGroup -> {
if (pdpSubGroup.getPolicies() != null && pdpSubGroup.getPolicies()
- .contains(toscaPolicyIdentifier)) {
+ .contains(toscaConceptIdentifier)) {
assignedPdpGroups.addProperty("pdpGroup", pdpGroup.getName());
assignedPdpGroups.addProperty("pdpSubGroup", pdpSubGroup.getPdpType());
return true;
diff --git a/src/main/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMerger.java b/src/main/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMerger.java
index cf3c1656c..44b11119b 100644
--- a/src/main/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMerger.java
+++ b/src/main/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMerger.java
@@ -105,9 +105,11 @@ public class PoliciesPdpMerger {
/**
* This method removes the pdp States added for one policy.
*
- * @param policyJsonNode The policy node in Json
+ * @param policyJsonNode The policy node Json as String
+ * @return The Json with pdp group info removed
*/
public static JsonObject removePdpStatesOnePolicy(JsonObject policyJsonNode) {
+ //JsonObject policyJson = JsonUtils.GSON.fromJson(policyJsonNode, JsonObject.class);
// Simply remove the nodes we have added.
policyJsonNode.remove(PdpGroupsAnalyzer.ASSIGNED_PDP_GROUPS_INFO);
policyJsonNode.remove(PdpGroupsAnalyzer.SUPPORTED_PDP_GROUPS_INFO);
diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml
index bcad3ea33..f924a8a24 100644
--- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml
+++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml
@@ -803,6 +803,107 @@
</doTry>
</route>
</post>
+ <get uri="/v2/templates"
+ outType="org.onap.policy.clamp.loop.template.LoopTemplate"
+ produces="application/json">
+ <route>
+ <removeHeaders pattern="*"/>
+ <doTry>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Templates')"/>
+ <to
+ uri="bean:org.onap.policy.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')"/>
+ <to
+ uri="bean:org.onap.policy.clamp.loop.template.LoopTemplatesService?method=getAllLoopTemplates()"/>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=endLog()"/>
+ <doCatch>
+ <exception>java.lang.Exception</exception>
+ <handled>
+ <constant>true</constant>
+ </handled>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=errorLog()"/>
+ <log loggingLevel="ERROR"
+ message="GET ALL templates request failed: ${exception.stacktrace}"/>
+ <setHeader headerName="CamelHttpResponseCode">
+ <constant>500</constant>
+ </setHeader>
+ <setBody>
+ <simple>GET ALL templates FAILED</simple>
+ </setBody>
+ </doCatch>
+ </doTry>
+ </route>
+ </get>
+ <get uri="/v2/templates/{templateName}"
+ outType="org.onap.policy.clamp.loop.template.LoopTemplate"
+ produces="application/json">
+ <route>
+ <removeHeaders pattern="*"
+ excludePattern="templateName"/>
+ <doTry>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET a Template by NAME')"/>
+ <to
+ uri="bean:org.onap.policy.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')"/>
+ <to
+ uri="bean:org.onap.policy.clamp.loop.template.LoopTemplatesService?method=getLoopTemplate(${header.templateName})"/>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=endLog()"/>
+ <doCatch>
+ <exception>java.lang.Exception</exception>
+ <handled>
+ <constant>true</constant>
+ </handled>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=errorLog()"/>
+ <log loggingLevel="ERROR"
+ message="GET Template request failed for template: ${header.templateName}, ${exception.stacktrace}"/>
+ <setHeader headerName="CamelHttpResponseCode">
+ <constant>500</constant>
+ </setHeader>
+ <setBody>
+ <simple>GET Template FAILED</simple>
+ </setBody>
+ </doCatch>
+ </doTry>
+ </route>
+ </get>
+ <get uri="/v2/templates/names" outType="java.lang.String[]"
+ produces="application/json">
+ <route>
+ <removeHeaders pattern="*"/>
+ <doTry>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Loop Template Names')"/>
+ <to
+ uri="bean:org.onap.policy.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')"/>
+ <to
+ uri="bean:org.onap.policy.clamp.loop.template.LoopTemplatesService?method=getLoopTemplateNames()"/>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=endLog()"/>
+ <doCatch>
+ <exception>java.lang.Exception</exception>
+ <handled>
+ <constant>true</constant>
+ </handled>
+ <to
+ uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=errorLog()"/>
+ <log loggingLevel="ERROR"
+ message="GET All Template names request failed for template: ${exception.stacktrace}"/>
+ <setHeader headerName="CamelHttpResponseCode">
+ <constant>500</constant>
+ </setHeader>
+ <setBody>
+ <simple>GET All Template names FAILED</simple>
+ </setBody>
+ </doCatch>
+ </doTry>
+ </route>
+ </get>
+
+ <!-- NON LOOP related endpoints -->
<get uri="/v2/dictionary"
outType="org.onap.policy.clamp.tosca.Dictionary" produces="application/json">
<route>
@@ -1217,106 +1318,6 @@
</route>
</put>
- <get uri="/v2/templates"
- outType="org.onap.policy.clamp.loop.template.LoopTemplate"
- produces="application/json">
- <route>
- <removeHeaders pattern="*"/>
- <doTry>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Templates')"/>
- <to
- uri="bean:org.onap.policy.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')"/>
- <to
- uri="bean:org.onap.policy.clamp.loop.template.LoopTemplatesService?method=getAllLoopTemplates()"/>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=endLog()"/>
- <doCatch>
- <exception>java.lang.Exception</exception>
- <handled>
- <constant>true</constant>
- </handled>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=errorLog()"/>
- <log loggingLevel="ERROR"
- message="GET ALL templates request failed: ${exception.stacktrace}"/>
- <setHeader headerName="CamelHttpResponseCode">
- <constant>500</constant>
- </setHeader>
- <setBody>
- <simple>GET ALL templates FAILED</simple>
- </setBody>
- </doCatch>
- </doTry>
- </route>
- </get>
- <get uri="/v2/templates/{templateName}"
- outType="org.onap.policy.clamp.loop.template.LoopTemplate"
- produces="application/json">
- <route>
- <removeHeaders pattern="*"
- excludePattern="templateName"/>
- <doTry>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET a Template by NAME')"/>
- <to
- uri="bean:org.onap.policy.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')"/>
- <to
- uri="bean:org.onap.policy.clamp.loop.template.LoopTemplatesService?method=getLoopTemplate(${header.templateName})"/>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=endLog()"/>
- <doCatch>
- <exception>java.lang.Exception</exception>
- <handled>
- <constant>true</constant>
- </handled>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=errorLog()"/>
- <log loggingLevel="ERROR"
- message="GET Template request failed for template: ${header.templateName}, ${exception.stacktrace}"/>
- <setHeader headerName="CamelHttpResponseCode">
- <constant>500</constant>
- </setHeader>
- <setBody>
- <simple>GET Template FAILED</simple>
- </setBody>
- </doCatch>
- </doTry>
- </route>
- </get>
- <get uri="/v2/templates/names" outType="java.lang.String[]"
- produces="application/json">
- <route>
- <removeHeaders pattern="*"/>
- <doTry>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=startLog(*, 'GET ALL Loop Template Names')"/>
- <to
- uri="bean:org.onap.policy.clamp.authorization.AuthorizationController?method=authorize(*,'template','','read')"/>
- <to
- uri="bean:org.onap.policy.clamp.loop.template.LoopTemplatesService?method=getLoopTemplateNames()"/>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=endLog()"/>
- <doCatch>
- <exception>java.lang.Exception</exception>
- <handled>
- <constant>true</constant>
- </handled>
- <to
- uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=errorLog()"/>
- <log loggingLevel="ERROR"
- message="GET All Template names request failed for template: ${exception.stacktrace}"/>
- <setHeader headerName="CamelHttpResponseCode">
- <constant>500</constant>
- </setHeader>
- <setBody>
- <simple>GET All Template names FAILED</simple>
- </setBody>
- </doCatch>
- </doTry>
- </route>
- </get>
-
<!-- Policy Related endpoints, not related to LOOP -->
<get uri="/v2/policies" outType="com.google.gson.JsonObject" produces="application/json">
<route>
@@ -1360,11 +1361,13 @@
</doTry>
</route>
</get>
- <!-- Update an existing policy, therefore it removes it from pdp first, delete it and then recreate it -->
- <!-- TO BE DONE -->
<!-- Create a new policy -->
- <post uri="/v2/policies/{policyModelName}/{policyModelVersion}" outType="com.google.gson.JsonObject" produces="application/json">
+ <post uri="/v2/policies/{policyModelName}/{policyModelVersion}"
+ type="com.google.gson.JsonElement"
+ consumes="application/json"
+ outType="com.google.gson.JsonObject"
+ produces="application/json">
<route>
<removeHeaders pattern="*"
excludePattern="policyModelName|policyModelVersion"/>
@@ -1382,6 +1385,9 @@
<setBody>
<method ref="org.onap.policy.clamp.policy.pdpgroup.PoliciesPdpMerger"
method="removePdpStatesOnePolicy(${body})"/>
+ </setBody>
+ <setBody>
+ <simple>${body.toString()}</simple>
</setBody>
<to uri="direct:create-policy"/>
<to
diff --git a/src/main/resources/clds/camel/routes/loop-flows.xml b/src/main/resources/clds/camel/routes/loop-flows.xml
index d5ab050cf..f6a838ef0 100644
--- a/src/main/resources/clds/camel/routes/loop-flows.xml
+++ b/src/main/resources/clds/camel/routes/loop-flows.xml
@@ -43,6 +43,9 @@
<setProperty propertyName="policyTypeVersion">
<simple>${body.getPolicyModel().getVersion()}</simple>
</setProperty>
+ <setProperty propertyName="policyPdpGroup">
+ <simple>${body.getPdpGroup()}</simple>
+ </setProperty>
<setProperty propertyName="policyVersion">
<simple>1.0.0</simple>
</setProperty>
@@ -70,8 +73,8 @@
<setProperty propertyName="policyVersion">
<simple>1.0.0</simple>
</setProperty>
- <setProperty propertyName="operationalPolicy">
- <simple>${body}</simple>
+ <setProperty propertyName="policyPdpGroup">
+ <simple>${body.getPdpGroup()}</simple>
</setProperty>
<setBody>
<constant>null</constant>
diff --git a/src/main/resources/clds/camel/routes/policy-flows.xml b/src/main/resources/clds/camel/routes/policy-flows.xml
index dda5f2cf2..0a9c1f511 100644
--- a/src/main/resources/clds/camel/routes/policy-flows.xml
+++ b/src/main/resources/clds/camel/routes/policy-flows.xml
@@ -107,9 +107,9 @@
</simple>
</setHeader>
<log loggingLevel="INFO"
- message="Endpoint to get policy deployment status: {{clamp.config.policy.pap.url}}/policy/pap/v1/policies/deployed/${exchangeProperty[policyName]}/1.0.0"></log>
+ message="Endpoint to get policy deployment status: {{clamp.config.policy.pap.url}}/policy/pap/v1/policies/status/${exchangeProperty[policyPdpGroup]}/${exchangeProperty[policyName]}/1.0.0"></log>
<toD
- uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/policies/deployed/${exchangeProperty[policyName]}/1.0.0?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authMethod=Basic&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true"/>
+ uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/policies/status/${exchangeProperty[policyPdpGroup]}/${exchangeProperty[policyName]}/1.0.0?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authMethod=Basic&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true"/>
<doCatch>
<exception>java.lang.Exception</exception>
<handled>
diff --git a/src/test/java/org/onap/policy/clamp/loop/PolicyModelServiceItCase.java b/src/test/java/org/onap/policy/clamp/loop/PolicyModelServiceItCase.java
index 35ae9ed64..b6c60d84c 100644
--- a/src/test/java/org/onap/policy/clamp/loop/PolicyModelServiceItCase.java
+++ b/src/test/java/org/onap/policy/clamp/loop/PolicyModelServiceItCase.java
@@ -47,7 +47,7 @@ import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.skyscreamer.jsonassert.JSONAssert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@@ -275,20 +275,20 @@ public class PolicyModelServiceItCase {
policyModelsService.saveOrUpdatePolicyModel(getPolicyModel(POLICY_MODEL_TYPE_3, "yaml",
POLICY_MODEL_TYPE_3_VERSION_1, "TEST", "VARIANT", "user"));
- ToscaPolicyTypeIdentifier type1 = new ToscaPolicyTypeIdentifier("org.onap.testos", "1.0.0");
- ToscaPolicyTypeIdentifier type2 = new ToscaPolicyTypeIdentifier("org.onap.testos2", "2.0.0");
+ ToscaConceptIdentifier type1 = new ToscaConceptIdentifier("org.onap.testos", "1.0.0");
+ ToscaConceptIdentifier type2 = new ToscaConceptIdentifier("org.onap.testos2", "2.0.0");
PdpSubGroup pdpSubgroup1 = new PdpSubGroup();
pdpSubgroup1.setPdpType("subGroup1");
- List<ToscaPolicyTypeIdentifier> pdpTypeList = new LinkedList<>();
+ List<ToscaConceptIdentifier> pdpTypeList = new LinkedList<>();
pdpTypeList.add(type1);
pdpTypeList.add(type2);
pdpSubgroup1.setSupportedPolicyTypes(pdpTypeList);
- ToscaPolicyTypeIdentifier type3 = new ToscaPolicyTypeIdentifier("org.onap.testos3", "2.0.0");
+ ToscaConceptIdentifier type3 = new ToscaConceptIdentifier("org.onap.testos3", "2.0.0");
PdpSubGroup pdpSubgroup2 = new PdpSubGroup();
pdpSubgroup2.setPdpType("subGroup2");
- List<ToscaPolicyTypeIdentifier> pdpTypeList2 = new LinkedList<>();
+ List<ToscaConceptIdentifier> pdpTypeList2 = new LinkedList<>();
pdpTypeList2.add(type2);
pdpTypeList2.add(type3);
pdpSubgroup2.setSupportedPolicyTypes(pdpTypeList2);
diff --git a/src/test/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupAnalyzerTest.java b/src/test/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupAnalyzerTest.java
index 5a9cac07b..e6717418a 100644
--- a/src/test/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupAnalyzerTest.java
+++ b/src/test/java/org/onap/policy/clamp/policy/pdpgroup/PdpGroupAnalyzerTest.java
@@ -33,8 +33,7 @@ import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
/**
* This test class validates the PdpGroupAnalyzer class.
@@ -52,33 +51,33 @@ public class PdpGroupAnalyzerTest {
// Those that do not work first
PdpSubGroup pdpSubgroupBad = new PdpSubGroup();
pdpSubgroupBad.setPdpType("subGroupBad");
- pdpSubgroupBad.setSupportedPolicyTypes(Arrays.asList(new ToscaPolicyTypeIdentifier("org.onap.test", "2.0.0"),
- new ToscaPolicyTypeIdentifier("org.onap.test.*", "1.0.0"),
- new ToscaPolicyTypeIdentifier("org.onip.testos", "1.0.0"),
- new ToscaPolicyTypeIdentifier("org.onap.testos3", "2.0.0"),
- new ToscaPolicyTypeIdentifier("org.onap.tes", "1.0.0"),
- new ToscaPolicyTypeIdentifier("org.onap", "1.0.0")
+ pdpSubgroupBad.setSupportedPolicyTypes(Arrays.asList(new ToscaConceptIdentifier("org.onap.test", "2.0.0"),
+ new ToscaConceptIdentifier("org.onap.test.*", "1.0.0"),
+ new ToscaConceptIdentifier("org.onip.testos", "1.0.0"),
+ new ToscaConceptIdentifier("org.onap.testos3", "2.0.0"),
+ new ToscaConceptIdentifier("org.onap.tes", "1.0.0"),
+ new ToscaConceptIdentifier("org.onap", "1.0.0")
));
- pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("org.onap", "1.0.0")));
- pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("org.onap.testos", "2.0.0")));
- pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("org.onap.testos", "1.0.1")));
- pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("org.onap.testos.new", "1.0.0")));
- pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("org.onap.*", "1.0.0")));
+ pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaConceptIdentifier("org.onap", "1.0.0")));
+ pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaConceptIdentifier("org.onap.testos", "2.0.0")));
+ pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaConceptIdentifier("org.onap.testos", "1.0.1")));
+ pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaConceptIdentifier("org.onap.testos.new", "1.0.0")));
+ pdpSubgroupBad.setPolicies(Arrays.asList(new ToscaConceptIdentifier("org.onap.*", "1.0.0")));
PdpSubGroup pdpSubgroup1 = new PdpSubGroup();
pdpSubgroup1.setPdpType("subGroup1");
pdpSubgroup1.setSupportedPolicyTypes(
- Arrays.asList(new ToscaPolicyTypeIdentifier("org.onap.*", "1.0.0")));
+ Arrays.asList(new ToscaConceptIdentifier("org.onap.*", "1.0.0")));
PdpSubGroup pdpSubgroup2 = new PdpSubGroup();
pdpSubgroup2.setPdpType("subGroup2");
- pdpSubgroup2.setSupportedPolicyTypes(Arrays.asList(new ToscaPolicyTypeIdentifier("org.onap.test", "1.0.0")));
- pdpSubgroup2.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("org.onap.testos", "1.0.0")));
+ pdpSubgroup2.setSupportedPolicyTypes(Arrays.asList(new ToscaConceptIdentifier("org.onap.test", "1.0.0")));
+ pdpSubgroup2.setPolicies(Arrays.asList(new ToscaConceptIdentifier("org.onap.testos", "1.0.0")));
PdpSubGroup pdpSubgroup3 = new PdpSubGroup();
pdpSubgroup3.setPdpType("subGroup3");
- pdpSubgroup3.setSupportedPolicyTypes(Arrays.asList(new ToscaPolicyTypeIdentifier("org.onap.test*", "1.0.0")));
- pdpSubgroup3.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("org.onap.testos", "2.0.0")));
+ pdpSubgroup3.setSupportedPolicyTypes(Arrays.asList(new ToscaConceptIdentifier("org.onap.test*", "1.0.0")));
+ pdpSubgroup3.setPolicies(Arrays.asList(new ToscaConceptIdentifier("org.onap.testos", "2.0.0")));
// Should match pdpSubgroup1
PdpGroup pdpGroup1 = new PdpGroup();
diff --git a/src/test/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMergerTest.java b/src/test/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMergerTest.java
index adb797897..7b8cbd824 100644
--- a/src/test/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMergerTest.java
+++ b/src/test/java/org/onap/policy/clamp/policy/pdpgroup/PoliciesPdpMergerTest.java
@@ -36,8 +36,7 @@ import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.skyscreamer.jsonassert.JSONAssert;
/**
@@ -56,23 +55,23 @@ public class PoliciesPdpMergerTest {
PdpSubGroup pdpSubgroup1 = new PdpSubGroup();
pdpSubgroup1.setPdpType("subGroup1");
pdpSubgroup1.setSupportedPolicyTypes(
- Arrays.asList(new ToscaPolicyTypeIdentifier("org.onap.*", "1.0.0")));
+ Arrays.asList(new ToscaConceptIdentifier("org.onap.*", "1.0.0")));
PdpSubGroup pdpSubgroup2 = new PdpSubGroup();
pdpSubgroup2.setPdpType("subGroup2");
pdpSubgroup2.setSupportedPolicyTypes(
- Arrays.asList(new ToscaPolicyTypeIdentifier("onap.policies.monitoring.tcagen2", "1.0.0"),
- new ToscaPolicyTypeIdentifier("onap.policies.controlloop.operational.common.Drools", "1.0.0")));
+ Arrays.asList(new ToscaConceptIdentifier("onap.policies.monitoring.tcagen2", "1.0.0"),
+ new ToscaConceptIdentifier("onap.policies.controlloop.operational.common.Drools", "1.0.0")));
pdpSubgroup2.setPolicies(Arrays.asList(
- new ToscaPolicyIdentifier("MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", "1.0.0")));
+ new ToscaConceptIdentifier("MICROSERVICE_vLoadBalancerMS_v1_0_tcagen2_1_0_0_AV0", "1.0.0")));
PdpSubGroup pdpSubgroup3 = new PdpSubGroup();
pdpSubgroup3.setPdpType("subGroup3");
pdpSubgroup3.setSupportedPolicyTypes(
- Arrays.asList(new ToscaPolicyTypeIdentifier("onap.policies.monitoring.tcagen2", "1.0.0"),
- new ToscaPolicyTypeIdentifier("onap.policies.controlloop.operational.common.Drools", "1.0.0")));
- pdpSubgroup3.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("org.onap.testos", "2.0.0"),
- new ToscaPolicyIdentifier("OPERATIONAL_vLoadBalancerMS_v1_0_Drools_1_0_0_7xd", "1.0.0")));
+ Arrays.asList(new ToscaConceptIdentifier("onap.policies.monitoring.tcagen2", "1.0.0"),
+ new ToscaConceptIdentifier("onap.policies.controlloop.operational.common.Drools", "1.0.0")));
+ pdpSubgroup3.setPolicies(Arrays.asList(new ToscaConceptIdentifier("org.onap.testos", "2.0.0"),
+ new ToscaConceptIdentifier("OPERATIONAL_vLoadBalancerMS_v1_0_Drools_1_0_0_7xd", "1.0.0")));
// Should match pdpSubgroup1
PdpGroup pdpGroup1 = new PdpGroup();
@@ -103,9 +102,8 @@ public class PoliciesPdpMergerTest {
@Test
public void testRemovePdpStatesOnePolicy() throws IOException {
- JsonObject policiesList = PoliciesPdpMerger.removePdpStatesOnePolicy(JsonUtils.GSON
- .fromJson(ResourceFileUtils.getResourceAsString("example/policy/single-policy-enriched.json"),
- JsonObject.class));
+ JsonObject policiesList = PoliciesPdpMerger.removePdpStatesOnePolicy(JsonUtils.GSON.fromJson(
+ ResourceFileUtils.getResourceAsString("example/policy/single-policy-enriched.json"), JsonObject.class));
assertThat(policiesList.get(PdpGroupsAnalyzer.ASSIGNED_PDP_GROUPS_INFO)).isNull();
assertThat(policiesList.get(PdpGroupsAnalyzer.SUPPORTED_PDP_GROUPS_INFO)).isNull();
diff --git a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoops.java b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoops.java
index 3a5ab59d8..8edcc3c11 100644
--- a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoops.java
+++ b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoops.java
@@ -25,6 +25,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
+import org.onap.policy.models.base.PfUtils;
@Getter
@Setter
@@ -34,4 +35,13 @@ import lombok.ToString;
@EqualsAndHashCode
public class ControlLoops {
private List<ControlLoop> controlLoopList;
+
+ /**
+ * Copy contructor, does a deep copy.
+ *
+ * @param otherControlLoops the other element to copy from
+ */
+ public ControlLoops(final ControlLoops otherControlLoops) {
+ this.controlLoopList = PfUtils.mapList(controlLoopList, ControlLoop::new);
+ }
}
diff --git a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessage.java b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessage.java
index 2146f7dc2..4b27e0df3 100644
--- a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessage.java
+++ b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessage.java
@@ -20,6 +20,7 @@
package org.onap.policy.clamp.controlloop.models.messages.dmaap.participant;
+import java.time.Instant;
import java.util.UUID;
import lombok.AccessLevel;
import lombok.Getter;
@@ -39,13 +40,13 @@ public class ParticipantMessage {
@Setter(AccessLevel.NONE)
private ParticipantMessageType messageType;
- private UUID requestId = UUID.randomUUID();
+ private UUID messageId = UUID.randomUUID();
/**
* Time-stamp, in milliseconds, when the message was created. Defaults to the current
* time.
*/
- private long timestampMs = System.currentTimeMillis();
+ private Instant timestamp = Instant.now();
/**
* Participant ID, or {@code null} for state-change broadcast messages.
diff --git a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseDetails.java b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseDetails.java
index 2c9bcd911..4c771b405 100644
--- a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseDetails.java
+++ b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseDetails.java
@@ -41,6 +41,17 @@ public class ParticipantResponseDetails {
private String responseMessage;
/**
+ * Constructs the object as a response to.
+ *
+ * @param triggerMessage the message to which this is a response
+ */
+ public ParticipantResponseDetails(ParticipantMessage triggerMessage) {
+ this.responseMessage = null;
+ this.responseStatus = ParticipantResponseStatus.FAIL;
+ this.responseTo = triggerMessage.getMessageId();
+ }
+
+ /**
* Constructs the object, making a deep copy.
*
* @param source source from which to copy
diff --git a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseStatus.java b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseStatus.java
index 95e9d7429..f014529b3 100644
--- a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseStatus.java
+++ b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantResponseStatus.java
@@ -33,5 +33,10 @@ public enum ParticipantResponseStatus {
/**
* participant operation failed.
*/
- FAIL
+ FAIL,
+
+ /**
+ * periodic response.
+ */
+ PERIODIC
}
diff --git a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatus.java b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatus.java
index 4bc865c3f..b7140d4b8 100644
--- a/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatus.java
+++ b/tosca-controlloop/models/src/main/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatus.java
@@ -20,17 +20,12 @@
package org.onap.policy.clamp.controlloop.models.messages.dmaap.participant;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.UUID;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
-import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
+import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantHealthStatus;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState;
-import org.onap.policy.models.base.PfUtils;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
/**
* Class to represent the PARTICIPANT_STATUS message that all the participants send to the control loop runtime.
@@ -46,11 +41,8 @@ public class ParticipantStatus extends ParticipantMessage {
private ParticipantState state;
private ParticipantHealthStatus healthStatus;
- // This map is a map of the state of all control loop elements the participant has. The ToscaConceptIdentifier key
- // of the outer map is a key that identifies the control loop. There is an inner map for each control loop the
- // participant has. Each inner map has the UUID that identifies the ControlLoopElement instance, and the value is
- // the ControlLoopInstance itself.
- private Map<ToscaConceptIdentifier, Map<UUID, ControlLoopElement>> elements;
+ // Control Loops on the participant
+ private ControlLoops controlLoops;
// Description. May be left {@code null}.
private String message;
@@ -74,7 +66,7 @@ public class ParticipantStatus extends ParticipantMessage {
this.state = source.state;
this.healthStatus = source.healthStatus;
this.message = source.message;
- this.elements = PfUtils.mapMap(elements, LinkedHashMap::new);
+ this.controlLoops = (source.controlLoops == null ? null : new ControlLoops(source.controlLoops));
this.response = (source.response == null ? null : new ParticipantResponseDetails(source.response));
}
}
diff --git a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoopTest.java b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoopTest.java
index 05721b6a4..2c0a45541 100644
--- a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoopTest.java
+++ b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/controlloop/concepts/ControlLoopTest.java
@@ -53,7 +53,7 @@ public class ControlLoopTest {
ControlLoop cl0 = new ControlLoop();
assertThat(cl0.toString()).contains("ControlLoop(");
- assertEquals(false, cl0.hashCode() == 0);
+ assertThat(cl0.hashCode()).isNotZero();
assertEquals(true, cl0.equals(cl0));
assertEquals(false, cl0.equals(null));
diff --git a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopStateChangeTest.java b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopStateChangeTest.java
index 3250ce713..06d6ecf77 100644
--- a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopStateChangeTest.java
+++ b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopStateChangeTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageUtils.removeVariableFields;
+import java.time.Instant;
import java.util.UUID;
import org.junit.Test;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState;
@@ -50,9 +51,9 @@ public class ParticipantControlLoopStateChangeTest {
id.setVersion("1.2.3");
orig.setControlLoopId(id);
orig.setParticipantId(id);
- orig.setRequestId(UUID.randomUUID());
+ orig.setMessageId(UUID.randomUUID());
orig.setOrderedState(ControlLoopOrderedState.RUNNING);
- orig.setTimestampMs(Long.valueOf(3000));
+ orig.setTimestamp(Instant.ofEpochMilli(3000));
assertEquals(removeVariableFields(orig.toString()),
removeVariableFields(new ParticipantControlLoopStateChange(orig).toString()));
diff --git a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopUpdateTest.java b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopUpdateTest.java
index 6be84ca8b..4397bf158 100644
--- a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopUpdateTest.java
+++ b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantControlLoopUpdateTest.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;
import static org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageUtils.removeVariableFields;
+import java.time.Instant;
import java.util.UUID;
import org.junit.Test;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
@@ -46,8 +47,8 @@ public class ParticipantControlLoopUpdateTest {
id.setVersion("1.2.3");
orig.setControlLoopId(id);
orig.setParticipantId(id);
- orig.setRequestId(UUID.randomUUID());
- orig.setTimestampMs(Long.valueOf(3000));
+ orig.setMessageId(UUID.randomUUID());
+ orig.setTimestamp(Instant.ofEpochMilli(3000));
ControlLoop controlLoop = new ControlLoop();
controlLoop.setName("controlLoop");
diff --git a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantHealthCheckTest.java b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantHealthCheckTest.java
index f78365c00..1cc356627 100644
--- a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantHealthCheckTest.java
+++ b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantHealthCheckTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageUtils.removeVariableFields;
+import java.time.Instant;
import java.util.UUID;
import org.junit.Test;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState;
@@ -50,9 +51,9 @@ public class ParticipantHealthCheckTest {
id.setVersion("1.2.3");
orig.setControlLoopId(id);
orig.setParticipantId(id);
- orig.setRequestId(UUID.randomUUID());
+ orig.setMessageId(UUID.randomUUID());
orig.setState(ParticipantState.ACTIVE);
- orig.setTimestampMs(Long.valueOf(3000));
+ orig.setTimestamp(Instant.ofEpochMilli(3000));
assertEquals(removeVariableFields(orig.toString()),
removeVariableFields(new ParticipantHealthCheck(orig).toString()));
diff --git a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageTest.java b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageTest.java
index a17b0f873..f66c99262 100644
--- a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageTest.java
+++ b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageTest.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.time.Instant;
import java.util.UUID;
import org.junit.Test;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
@@ -40,15 +41,15 @@ public class ParticipantMessageTest {
// verify with null values
message = new ParticipantMessage(ParticipantMessageType.PARTICIPANT_STATE_CHANGE);
ParticipantMessage newmsg = new ParticipantMessage(message);
- newmsg.setRequestId(message.getRequestId());
- newmsg.setTimestampMs(message.getTimestampMs());
+ newmsg.setMessageId(message.getMessageId());
+ newmsg.setTimestamp(message.getTimestamp());
assertEquals(message.toString(), newmsg.toString());
// verify with all values
message = makeMessage();
newmsg = new ParticipantMessage(message);
- newmsg.setRequestId(message.getRequestId());
- newmsg.setTimestampMs(message.getTimestampMs());
+ newmsg.setMessageId(message.getMessageId());
+ newmsg.setTimestamp(message.getTimestamp());
assertEquals(message.toString(), newmsg.toString());
}
@@ -93,8 +94,8 @@ public class ParticipantMessageTest {
id.setVersion("1.2.3");
msg.setControlLoopId(id);
msg.setParticipantId(id);
- msg.setRequestId(UUID.randomUUID());
- msg.setTimestampMs(Long.valueOf(3000));
+ msg.setMessageId(UUID.randomUUID());
+ msg.setTimestamp(Instant.ofEpochMilli(3000));
return msg;
}
diff --git a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageUtils.java b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageUtils.java
index a7a76c05b..dfbc25d1b 100644
--- a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageUtils.java
+++ b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantMessageUtils.java
@@ -30,6 +30,6 @@ public class ParticipantMessageUtils {
}
public static String removeVariableFields(String text) {
- return text.replaceAll("requestId=[^,]*", "requestId=xxx").replaceAll("timestampMs=[^,]*", "timestampMs=nnn");
+ return text.replaceAll("messageId=[^,]*", "messageId=xxx").replaceAll("timestamp=[^,]*", "timestamp=nnn");
}
}
diff --git a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStateChangeTest.java b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStateChangeTest.java
index 192f36342..235532681 100644
--- a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStateChangeTest.java
+++ b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStateChangeTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageUtils.removeVariableFields;
+import java.time.Instant;
import java.util.UUID;
import org.junit.Test;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState;
@@ -50,9 +51,9 @@ public class ParticipantStateChangeTest {
id.setVersion("1.2.3");
orig.setControlLoopId(id);
orig.setParticipantId(id);
- orig.setRequestId(UUID.randomUUID());
+ orig.setMessageId(UUID.randomUUID());
orig.setState(ParticipantState.ACTIVE);
- orig.setTimestampMs(Long.valueOf(3000));
+ orig.setTimestamp(Instant.ofEpochMilli(3000));
assertEquals(removeVariableFields(orig.toString()),
removeVariableFields(new ParticipantStateChange(orig).toString()));
diff --git a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatusTest.java b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatusTest.java
index 62b3d9d02..9b5722bce 100644
--- a/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatusTest.java
+++ b/tosca-controlloop/models/src/test/java/org/onap/policy/clamp/controlloop/models/messages/dmaap/participant/ParticipantStatusTest.java
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantMessageUtils.removeVariableFields;
+import java.time.Instant;
import java.util.UUID;
import org.junit.Test;
import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState;
@@ -47,9 +48,9 @@ public class ParticipantStatusTest {
id.setVersion("1.2.3");
orig.setControlLoopId(id);
orig.setParticipantId(id);
- orig.setRequestId(UUID.randomUUID());
+ orig.setMessageId(UUID.randomUUID());
orig.setState(ParticipantState.ACTIVE);
- orig.setTimestampMs(Long.valueOf(3000));
+ orig.setTimestamp(Instant.ofEpochMilli(3000));
final ParticipantResponseDetails resp = new ParticipantResponseDetails();
resp.setResponseMessage("my-response");
diff --git a/ui-react/src/api/PolicyService.js b/ui-react/src/api/PolicyService.js
index fdbb5d5ea..16cc1f322 100644
--- a/ui-react/src/api/PolicyService.js
+++ b/ui-react/src/api/PolicyService.js
@@ -40,4 +40,27 @@ export default class PolicyService {
return {};
});
}
+ static createNewPolicy(policyModelType, policyModelVersion, policyJson) {
+ return fetch(window.location.pathname + 'restservices/clds/v2/policies/' + policyModelType + '/' + policyModelVersion, {
+ method: 'POST',
+ credentials: 'same-origin',
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(policyJson)
+ })
+ .then(function (response) {
+ console.debug("createNewPolicy response received: ", response.status);
+ if (response.ok) {
+ return response.text;
+ } else {
+ console.error("createNewPolicy query failed");
+ return "";
+ }
+ })
+ .catch(function (error) {
+ console.error("createNewPolicy error received", error);
+ throw new Error(error)
+ });
+ }
}
diff --git a/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js b/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js
index a1cf9d5c1..dfebc51d8 100644
--- a/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js
+++ b/ui-react/src/components/dialogs/Policy/ViewAllPolicies.js
@@ -47,6 +47,12 @@ import PolicyService from '../../../api/PolicyService';
import PolicyToscaService from '../../../api/PolicyToscaService';
import Select from 'react-select';
import JSONEditor from '@json-editor/json-editor';
+import OnapUtils from '../../../utils/OnapUtils';
+import Alert from 'react-bootstrap/Alert';
+
+const DivWhiteSpaceStyled = styled.div`
+ white-space: pre;
+`
const ModalStyled = styled(Modal)`
@media (min-width: 1200px) {
@@ -76,9 +82,11 @@ export default class ViewAllPolicies extends React.Component {
state = {
show: true,
content: 'Please select a policy to display it',
- selectedRow: -1,
+ selectedRowId: -1,
policiesListData: [],
prefixGrouping: false,
+ showSuccessAlert: false,
+ showFailAlert: false,
policyColumnsDefinition: [
{
title: "Policy Name", field: "name",
@@ -148,7 +156,8 @@ export default class ViewAllPolicies extends React.Component {
this.handlePrefixGrouping = this.handlePrefixGrouping.bind(this);
this.handleDeletePolicy = this.handleDeletePolicy.bind(this);
this.handleUpdatePolicy = this.handleUpdatePolicy.bind(this);
- this.handleCreateNewVersion = this.handleCreateNewVersion(this);
+ this.handleCreateNewVersion = this.handleCreateNewVersion.bind(this);
+ this.disableAlert = this.disableAlert.bind(this);
this.getAllPolicies();
}
@@ -159,10 +168,10 @@ export default class ViewAllPolicies extends React.Component {
let selectedSubPdpGroup = pdpSplit[1];
if (typeof selectedSubPdpGroup !== "undefined") {
let temp = this.state.policiesListData;
- temp[this.state.selectedRow]["pdpGroupInfo"] = {"pdpGroup":selectedPdpGroup,"pdpSubGroup":selectedSubPdpGroup};
+ temp[this.state.selectedRowId]["pdpGroupInfo"] = {"pdpGroup":selectedPdpGroup,"pdpSubGroup":selectedSubPdpGroup};
this.setState({policiesListData: temp});
} else {
- delete this.state.policiesListData[this.state.selectedRow]["pdpGroupInfo"];
+ delete this.state.policiesListData[this.state.selectedRowId]["pdpGroupInfo"];
}
}
@@ -237,9 +246,9 @@ export default class ViewAllPolicies extends React.Component {
handleOnRowClick(rowData) {
PolicyToscaService.getToscaPolicyModel(rowData["type"], rowData["type_version"]).then(respJsonPolicyTosca => {
this.setState({
- selectedRow: rowData.tableData.id,
- selectedRowJsonSchema: respJsonPolicyTosca,
- selectedRowPolicyProperties: rowData["properties"],
+ selectedRowId: rowData.tableData.id,
+ selectedRowIdJsonSchema: respJsonPolicyTosca,
+ selectedRowIdPolicyProperties: rowData["properties"],
jsonEditorForPolicy: this.createJsonEditor(respJsonPolicyTosca, rowData["properties"])
});
});
@@ -253,8 +262,52 @@ export default class ViewAllPolicies extends React.Component {
return null;
}
- handleCreateNewVersion(event,rowData) {
- return null;
+ customValidation(editorData) {
+ // method for sub-classes to override with customized validation
+ return [];
+ }
+
+ handleCreateNewVersion() {
+ var editorData = this.state.jsonEditorForPolicy.getValue();
+ var errors = this.state.jsonEditorForPolicy.validate();
+ errors = errors.concat(this.customValidation(editorData));
+
+ if (errors.length !== 0) {
+ console.error("Errors detected during policy data validation ", errors);
+ this.setState({
+ showFailAlert: true,
+ showMessage: 'Errors detected during policy data validation:\n' + OnapUtils.jsonEditorErrorFormatter(errors)
+ });
+ return;
+ } else {
+ console.info("NO validation errors found in policy data");
+ let newPolicy = JSON.parse(JSON.stringify(this.state.policiesListData[this.state.selectedRowId]));
+ newPolicy["properties"] = editorData;
+ let newVersion = this.bumpVersion(newPolicy["version"]);
+ newPolicy["version"] = newVersion;
+ newPolicy["metadata"]["policy-version"] = newVersion;
+ // Remove stuff added by UI
+ delete newPolicy["tableData"];
+ PolicyService.createNewPolicy(newPolicy["type"], newPolicy["type_version"], newPolicy).then(respPolicyCreation => {
+ if (respPolicyCreation === "") {
+ //it indicates a failure
+ this.setState({
+ showFailAlert: true,
+ showMessage: 'Policy Creation Failure'
+ });
+ } else {
+ this.setState({
+ showSuccessAlert: true,
+ showMessage: 'Policy in version ' + newVersion + ' created successfully'
+ });
+ }
+ })
+ }
+ }
+
+ bumpVersion(versionToBump) {
+ let semVer = versionToBump.split(".");
+ return parseInt(semVer[0])+1 + "." + semVer[1] + "." + semVer[2];
}
handleUpdatePolicy() {
@@ -262,11 +315,16 @@ export default class ViewAllPolicies extends React.Component {
this.props.history.push('/')
}
+ disableAlert() {
+ this.setState ({ showSuccessAlert: false, showFailAlert: false });
+ }
+
render() {
return (
<ModalStyled size="xl" show={this.state.show} onHide={this.handleClose} backdrop="static" keyboard={false}>
<Modal.Header closeButton>
</Modal.Header>
+
<Modal.Body>
<FormControlLabel
control={<Switch checked={this.state.prefixGrouping} onChange={this.handlePrefixGrouping} />}
@@ -283,7 +341,7 @@ export default class ViewAllPolicies extends React.Component {
exportButton: true,
headerStyle:rowHeaderStyle,
rowStyle: rowData => ({
- backgroundColor: (this.state.selectedRow !== -1 && this.state.selectedRow === rowData.tableData.id) ? '#EEE' : '#FFF'
+ backgroundColor: (this.state.selectedRowId !== -1 && this.state.selectedRowId === rowData.tableData.id) ? '#EEE' : '#FFF'
})
}}
actions={[
@@ -293,14 +351,25 @@ export default class ViewAllPolicies extends React.Component {
onClick: (event, rowData) => this.handleDeletePolicy(event, rowData)
}
]}
-
/>
<JsonEditorDiv>
<h5>Policy Properties Editor</h5>
<div id="policy-editor" title="Policy Properties"/>
- <Button variant="secondary" title="Create a new policy version from the defined parameters" onClick={this.handleCreateNewVersion}>Create New Version</Button>
- <Button variant="secondary" title="Update the current policy version, BE CAREFUL this will undeploy the policy from PDP, delete it and then recreate the policy" onClick={this.handleUpdatePolicy}>Update Current Version</Button>
+ <Button variant="secondary" title="Create a new policy version from the defined parameters"
+ onClick={this.handleCreateNewVersion}>Create New Version</Button>
+ <Button variant="secondary" title="Update the current policy version, BE CAREFUL this will undeploy the policy from PDP, delete it and then recreate the policy"
+ onClick={this.handleUpdatePolicy}>Update Current Version</Button>
</JsonEditorDiv>
+ <Alert variant="success" show={this.state.showSuccessAlert} onClose={this.disableAlert} dismissible>
+ <DivWhiteSpaceStyled>
+ {this.state.showMessage}
+ </DivWhiteSpaceStyled>
+ </Alert>
+ <Alert variant="danger" show={this.state.showFailAlert} onClose={this.disableAlert} dismissible>
+ <DivWhiteSpaceStyled>
+ {this.state.showMessage}
+ </DivWhiteSpaceStyled>
+ </Alert>
</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={this.handleClose}>Close</Button>
diff --git a/ui-react/src/components/menu/MenuBar.js b/ui-react/src/components/menu/MenuBar.js
index 40a3890a5..ae1387912 100644
--- a/ui-react/src/components/menu/MenuBar.js
+++ b/ui-react/src/components/menu/MenuBar.js
@@ -86,16 +86,18 @@ export default class MenuBar extends React.Component {
render () {
return (
<Navbar.Collapse>
- <StyledNavDropdown title="Loop Templates">
- <NavDropdown.Item as={StyledLink} to="/viewLoopTemplatesModal">View All Templates</NavDropdown.Item>
- </StyledNavDropdown>
- <StyledNavDropdown title="Policy Models">
- <NavDropdown.Item as={StyledLink} to="/uploadToscaPolicyModal">Upload Tosca Model</NavDropdown.Item>
- <NavDropdown.Item as={StyledLink} to="/viewToscaPolicyModal">View Tosca Models</NavDropdown.Item>
+ <StyledNavDropdown title="POLICY Framework">
<NavDropdown.Item as={StyledLink} to="/manageDictionaries">Manage Metadata Dictionaries</NavDropdown.Item>
+ <NavDropdown.Divider />
<NavDropdown.Item as={StyledLink} to="/viewAllPolicies">View All Policies</NavDropdown.Item>
+ <NavDropdown.Item as={StyledLink} to="/viewToscaPolicyModal">View Tosca Models</NavDropdown.Item>
+ <NavDropdown.Divider />
+ <NavDropdown.Item as={StyledLink} to="/uploadToscaPolicyModal">Upload Tosca Model</NavDropdown.Item>
+ </StyledNavDropdown>
+ <StyledNavDropdown title="LOOP Templates">
+ <NavDropdown.Item as={StyledLink} to="/viewLoopTemplatesModal">View All Templates</NavDropdown.Item>
</StyledNavDropdown>
- <StyledNavDropdown title="Loop Instance">
+ <StyledNavDropdown title="LOOP Instance">
<NavDropdown.Item as={StyledLink} to="/createLoop">Create</NavDropdown.Item>
<NavDropdown.Item as={StyledLink} to="/openLoop">Open</NavDropdown.Item>
<NavDropdown.Item as={StyledLink} to="/closeLoop" disabled={this.state.disabled}>Close</NavDropdown.Item>
@@ -104,10 +106,10 @@ export default class MenuBar extends React.Component {
<NavDropdown.Item as={StyledLink} to="/loopProperties" disabled={this.state.disabled}>Properties</NavDropdown.Item>
<NavDropdown.Item as={StyledLink} to="/refreshStatus" disabled={this.state.disabled}>Refresh Status</NavDropdown.Item>
</StyledNavDropdown>
- <StyledNavDropdown title="Loop Operations">
- <NavDropdown.Item as={StyledLink} to="/submit" disabled={this.state.disabled}>Create and deploy to Policy Engine(SUBMIT)</NavDropdown.Item>
- <NavDropdown.Item as={StyledLink} to="/stop" disabled={this.state.disabled}>Undeploy from Policy Engine (STOP)</NavDropdown.Item>
- <NavDropdown.Item as={StyledLink} to="/restart" disabled={this.state.disabled}>ReDeploy to Policy Engine (RESTART)</NavDropdown.Item>
+ <StyledNavDropdown title="LOOP Operations">
+ <NavDropdown.Item as={StyledLink} to="/submit" disabled={this.state.disabled}>Create and deploy to Policy Framework (SUBMIT)</NavDropdown.Item>
+ <NavDropdown.Item as={StyledLink} to="/stop" disabled={this.state.disabled}>Undeploy from Policy Framework (STOP)</NavDropdown.Item>
+ <NavDropdown.Item as={StyledLink} to="/restart" disabled={this.state.disabled}>ReDeploy to Policy Framework (RESTART)</NavDropdown.Item>
<NavDropdown.Item as={StyledLink} to="/delete" disabled={this.state.disabled}>Delete loop instance (DELETE)</NavDropdown.Item>
<NavDropdown.Divider />
<NavDropdown.Item as={StyledLink} to="/deploy" disabled={this.state.disabled}>Deploy to DCAE (DEPLOY)</NavDropdown.Item>
diff --git a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
index 69a0e85db..fd9956ed2 100644
--- a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
+++ b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
@@ -3,7 +3,7 @@
exports[`Verify MenuBar Test the render method 1`] = `
<NavbarCollapse>
<Styled(NavDropdown)
- title="Loop Templates"
+ title="POLICY Framework"
>
<DropdownItem
as={
@@ -52,14 +52,13 @@ exports[`Verify MenuBar Test the render method 1`] = `
}
}
disabled={false}
- to="/viewLoopTemplatesModal"
+ to="/manageDictionaries"
>
- View All Templates
+ Manage Metadata Dictionaries
</DropdownItem>
- </Styled(NavDropdown)>
- <Styled(NavDropdown)
- title="Policy Models"
- >
+ <DropdownDivider
+ role="separator"
+ />
<DropdownItem
as={
Object {
@@ -107,9 +106,9 @@ exports[`Verify MenuBar Test the render method 1`] = `
}
}
disabled={false}
- to="/uploadToscaPolicyModal"
+ to="/viewAllPolicies"
>
- Upload Tosca Model
+ View All Policies
</DropdownItem>
<DropdownItem
as={
@@ -162,6 +161,9 @@ exports[`Verify MenuBar Test the render method 1`] = `
>
View Tosca Models
</DropdownItem>
+ <DropdownDivider
+ role="separator"
+ />
<DropdownItem
as={
Object {
@@ -209,10 +211,14 @@ exports[`Verify MenuBar Test the render method 1`] = `
}
}
disabled={false}
- to="/manageDictionaries"
+ to="/uploadToscaPolicyModal"
>
- Manage Metadata Dictionaries
+ Upload Tosca Model
</DropdownItem>
+ </Styled(NavDropdown)>
+ <Styled(NavDropdown)
+ title="LOOP Templates"
+ >
<DropdownItem
as={
Object {
@@ -260,13 +266,13 @@ exports[`Verify MenuBar Test the render method 1`] = `
}
}
disabled={false}
- to="/viewAllPolicies"
+ to="/viewLoopTemplatesModal"
>
- View All Policies
+ View All Templates
</DropdownItem>
</Styled(NavDropdown)>
<Styled(NavDropdown)
- title="Loop Instance"
+ title="LOOP Instance"
>
<DropdownItem
as={
@@ -579,7 +585,7 @@ exports[`Verify MenuBar Test the render method 1`] = `
</DropdownItem>
</Styled(NavDropdown)>
<Styled(NavDropdown)
- title="Loop Operations"
+ title="LOOP Operations"
>
<DropdownItem
as={
@@ -630,7 +636,7 @@ exports[`Verify MenuBar Test the render method 1`] = `
disabled={true}
to="/submit"
>
- Create and deploy to Policy Engine(SUBMIT)
+ Create and deploy to Policy Framework (SUBMIT)
</DropdownItem>
<DropdownItem
as={
@@ -681,7 +687,7 @@ exports[`Verify MenuBar Test the render method 1`] = `
disabled={true}
to="/stop"
>
- Undeploy from Policy Engine (STOP)
+ Undeploy from Policy Framework (STOP)
</DropdownItem>
<DropdownItem
as={
@@ -732,7 +738,7 @@ exports[`Verify MenuBar Test the render method 1`] = `
disabled={true}
to="/restart"
>
- ReDeploy to Policy Engine (RESTART)
+ ReDeploy to Policy Framework (RESTART)
</DropdownItem>
<DropdownItem
as={
diff --git a/version.properties b/version.properties
index 35775d32e..a55d4d200 100644
--- a/version.properties
+++ b/version.properties
@@ -27,7 +27,7 @@
major=6
minor=0
-patch=0
+patch=1
base_version=${major}.${minor}.${patch}