From 8c5ffd0eb1269ceeb9b19a2c274577fae6240840 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Fri, 22 Sep 2017 15:52:45 +0200 Subject: Add the target resource ID Add target resource ID in operational policy code as requested. It changes the UI, the Policy code, the model and the tests. Change-Id: Ie72badde55e7f8b5c2e5234099a09b95958205cf Issue-ID: CLAMP-55 Signed-off-by: Determe, Sebastien (sd378r) --- .../onap/clamp/clds/it/OperationPolicyReqIT.java | 89 ++++++++++++++++ .../clamp/clds/model/prop/ModelPropertiesTest.java | 5 + .../example/model-properties/modelBpmnProp.json | 6 ++ .../model-properties/modelBpmnPropWithGlobal.json | 3 +- src/test/resources/example/modelProp.json | 95 ++++++----------- src/test/resources/example/modelPropForPolicy.json | 28 ++++++ .../operational-policy/yaml-policy-chain-1.yaml | 112 +++++++++++++++++++++ .../operational-policy/yaml-policy-chain-2.yaml | 112 +++++++++++++++++++++ 8 files changed, 382 insertions(+), 68 deletions(-) create mode 100644 src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java create mode 100644 src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml create mode 100644 src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml (limited to 'src/test') diff --git a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java new file mode 100644 index 000000000..e57c9ddea --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java @@ -0,0 +1,89 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.it; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.net.URLDecoder; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.clamp.clds.AbstractIT; +import org.onap.clamp.clds.client.req.OperationalPolicyReq; +import org.onap.clamp.clds.model.CldsEvent; +import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.model.prop.Policy; +import org.onap.clamp.clds.model.prop.PolicyChain; +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.policy.api.AttributeType; +import org.onap.policy.controlloop.policy.builder.BuilderException; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +@TestPropertySource(locations = "classpath:application-no-camunda.properties") +public class OperationPolicyReqIT extends AbstractIT { + + @Test + public void formatAttributesTest() throws IOException, BuilderException { + String modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json"); + String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json"); + ModelProperties prop = new ModelProperties("testModel", "controlNameTest", CldsEvent.ACTION_SUBMIT, true, + modelBpmnProp, modelProp); + List>> attributes = new ArrayList<>(); + if (prop.getType(Policy.class).isFound()) { + for (PolicyChain policyChain : prop.getType(Policy.class).getPolicyChains()) { + + attributes.add(OperationalPolicyReq.formatAttributes(refProp, prop, prop.getType(Policy.class).getId(), + policyChain)); + } + } + assertFalse(attributes.isEmpty()); + assertTrue(attributes.size() == 2); + // now validate the Yaml, to do so we replace the dynamic ID by a known + // key so that we can compare it + String yaml = URLDecoder.decode(attributes.get(0).get(AttributeType.RULE).get("ControlLoopYaml"), "UTF-8"); + yaml = yaml.replaceAll("trigger_policy: (.*)", "trigger_policy: "); + yaml = yaml.replaceAll("id: (.*)", "id: "); + yaml = yaml.replaceAll("success: (.*)", "success: "); + + assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-1.yaml"), yaml); + + yaml = URLDecoder.decode(attributes.get(1).get(AttributeType.RULE).get("ControlLoopYaml"), "UTF-8"); + yaml = yaml.replaceAll("trigger_policy: (.*)", "trigger_policy: "); + yaml = yaml.replaceAll("id: (.*)", "id: "); + yaml = yaml.replaceAll("success: (.*)", "success: "); + + assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-2.yaml"), yaml); + } +} diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java index efeae00d2..f87bd37dd 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java @@ -75,6 +75,11 @@ public class ModelPropertiesTest { assertEquals(1, policy.getPolicyChains().size()); assertEquals("0", policy.getPolicyChains().get(0).getPolicyId()); assertEquals(1, policy.getPolicyChains().get(0).getPolicyItems().size()); + assertEquals("resourceid", policy.getPolicyChains().get(0).getPolicyItems().get(0).getTargetResourceId()); + assertEquals(180, policy.getPolicyChains().get(0).getPolicyItems().get(0).getRetryTimeLimit()); + assertEquals(3, policy.getPolicyChains().get(0).getPolicyItems().get(0).getMaxRetries()); + assertEquals("", policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicy()); + assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions()); Tca tca = prop.getType(Tca.class); assertTrue(tca.isFound()); diff --git a/src/test/resources/example/model-properties/modelBpmnProp.json b/src/test/resources/example/model-properties/modelBpmnProp.json index 413d34009..3b86ad79b 100644 --- a/src/test/resources/example/model-properties/modelBpmnProp.json +++ b/src/test/resources/example/model-properties/modelBpmnProp.json @@ -125,6 +125,12 @@ "value": [ "" ] + }, + { + "name": "targetResourceId", + "value": [ + "resourceid" + ] } ] ] diff --git a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json index 3846f7cf5..fba99c6f4 100644 --- a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json +++ b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json @@ -165,7 +165,8 @@ "Failure_Exception": "Failure: Exception", "Failure": "Failure: Other", "Success": "Success" - } + }, + "targetResourceId": "resourceid" }, "shared": { "byService": { diff --git a/src/test/resources/example/modelProp.json b/src/test/resources/example/modelProp.json index 8b8e984f7..c2262f528 100644 --- a/src/test/resources/example/modelProp.json +++ b/src/test/resources/example/modelProp.json @@ -42,73 +42,6 @@ } ], - "HighlandPark_": - [ - [ - { - "name": "topicPublishes", - "value": "DCAE-HIGHLANDPARK-EVENT-OUTPUT-VOIP" - } - ], - - { - "serviceConfigurations": - [ - [ - { - "name": "alarmCondition", - "value": - [ - "Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session" - ] - }, - - { - "name": "eventSourceType", - "value": - [ - "f5BigIP" - ] - }, - - { - "name": "eventSeverity", - "value": - [ - "NORMAL" - ] - } - ], - - [ - { - "name": "alarmCondition", - "value": - [ - "Reports a transient alarm condition when an incoming ACR message is in conflict with former ACR in one diameter session" - ] - }, - - { - "name": "eventSourceType", - "value": - [ - "f5BigIP" - ] - }, - - { - "name": "eventSeverity", - "value": - [ - "NORMAL" - ] - } - ] - ] - } - ], - "StringMatch_": { "Group1": @@ -472,6 +405,13 @@ [ "" ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] } ], @@ -525,6 +465,13 @@ "Failure_Exception", "Failure" ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] } ] ] @@ -590,6 +537,13 @@ [ "" ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] } ], @@ -643,6 +597,13 @@ "Failure_Exception", "Failure" ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] } ] ] diff --git a/src/test/resources/example/modelPropForPolicy.json b/src/test/resources/example/modelPropForPolicy.json index 6923e1a67..bf3480924 100644 --- a/src/test/resources/example/modelPropForPolicy.json +++ b/src/test/resources/example/modelPropForPolicy.json @@ -87,6 +87,13 @@ [ "" ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] } ], @@ -140,6 +147,13 @@ "Failure_Exception", "Failure" ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] } ] ] @@ -205,6 +219,13 @@ [ "" ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] } ], @@ -258,6 +279,13 @@ "Failure_Exception", "Failure" ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] } ] ] diff --git a/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml b/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml new file mode 100644 index 000000000..029cfbb7d --- /dev/null +++ b/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml @@ -0,0 +1,112 @@ +!!org.onap.policy.controlloop.policy.ControlLoopPolicy +controlLoop: + abatement: false + controlLoopName: controlNameTest + resources: + - resourceInvariantUUID: null + resourceName: 6c7aaec2-59eb-41d9-8681-b7f976ab668d + resourceType: VF + resourceUUID: null + resourceVersion: null + services: + - serviceInvariantUUID: null + serviceName: 0f983e18-4603-4bb4-a98c-e29691fb16a1 + serviceUUID: null + serviceVersion: null + timeout: 500 + trigger_policy: + version: 2.0.0 +policies: +- actor: AOTS + description: checkENodeBTicketHours Policy - the trigger (no parent) policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: checkENodeBTicketHours Policy + operationsAccumulateParams: null + payload: + timeWindow: '35' + recipe: checkENodeBTicketHours + retry: 0 + success: + target: + resourceID: resource-id + type: VM + timeout: 120 +- actor: AOTS + description: checkEquipmentStatus Policy - triggered conditionally by checkENodeBTicketHours Policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: checkEquipmentStatus Policy + operationsAccumulateParams: null + payload: null + recipe: checkEquipmentStatus + retry: 0 + success: + target: + resourceID: resource-id + type: VM + timeout: 120 +- actor: AOTS + description: checkEimStatus Policy - triggered conditionally by checkEquipmentStatus Policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: checkEimStatus Policy + operationsAccumulateParams: null + payload: null + recipe: checkEimStatus + retry: 0 + success: + target: + resourceID: resource-id + type: VM + timeout: 120 +- actor: AOTS + description: checkMaintenanceWindow Policy - triggered conditionally by checkEimStatus Policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: checkMaintenanceWindow Policy + operationsAccumulateParams: null + payload: null + recipe: checkMaintenanceWindow + retry: 0 + success: + target: + resourceID: resource-id + type: VM + timeout: 120 +- actor: SDNR + description: Reset Policy - triggered conditionally by checkMaintenanceWindow Policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: Reset Policy + operationsAccumulateParams: + limit: 2 + period: 10s + payload: null + recipe: Reset + retry: 3 + success: + target: + resourceID: resource-id + type: VM + timeout: 180 diff --git a/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml b/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml new file mode 100644 index 000000000..029cfbb7d --- /dev/null +++ b/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml @@ -0,0 +1,112 @@ +!!org.onap.policy.controlloop.policy.ControlLoopPolicy +controlLoop: + abatement: false + controlLoopName: controlNameTest + resources: + - resourceInvariantUUID: null + resourceName: 6c7aaec2-59eb-41d9-8681-b7f976ab668d + resourceType: VF + resourceUUID: null + resourceVersion: null + services: + - serviceInvariantUUID: null + serviceName: 0f983e18-4603-4bb4-a98c-e29691fb16a1 + serviceUUID: null + serviceVersion: null + timeout: 500 + trigger_policy: + version: 2.0.0 +policies: +- actor: AOTS + description: checkENodeBTicketHours Policy - the trigger (no parent) policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: checkENodeBTicketHours Policy + operationsAccumulateParams: null + payload: + timeWindow: '35' + recipe: checkENodeBTicketHours + retry: 0 + success: + target: + resourceID: resource-id + type: VM + timeout: 120 +- actor: AOTS + description: checkEquipmentStatus Policy - triggered conditionally by checkENodeBTicketHours Policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: checkEquipmentStatus Policy + operationsAccumulateParams: null + payload: null + recipe: checkEquipmentStatus + retry: 0 + success: + target: + resourceID: resource-id + type: VM + timeout: 120 +- actor: AOTS + description: checkEimStatus Policy - triggered conditionally by checkEquipmentStatus Policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: checkEimStatus Policy + operationsAccumulateParams: null + payload: null + recipe: checkEimStatus + retry: 0 + success: + target: + resourceID: resource-id + type: VM + timeout: 120 +- actor: AOTS + description: checkMaintenanceWindow Policy - triggered conditionally by checkEimStatus Policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: checkMaintenanceWindow Policy + operationsAccumulateParams: null + payload: null + recipe: checkMaintenanceWindow + retry: 0 + success: + target: + resourceID: resource-id + type: VM + timeout: 120 +- actor: SDNR + description: Reset Policy - triggered conditionally by checkMaintenanceWindow Policy - created by CLDS + failure: FINAL_FAILURE + failure_exception: FINAL_FAILURE_EXCEPTION + failure_guard: FINAL_FAILURE_GUARD + failure_retries: FINAL_FAILURE_RETRIES + failure_timeout: FINAL_FAILURE_TIMEOUT + id: + name: Reset Policy + operationsAccumulateParams: + limit: 2 + period: 10s + payload: null + recipe: Reset + retry: 3 + success: + target: + resourceID: resource-id + type: VM + timeout: 180 -- cgit 1.2.3-korg