From c182c8b95eda734f9d12dfa41e2959a1fc32ce42 Mon Sep 17 00:00:00 2001 From: "Gao, Chenfei (cg287m)" Date: Fri, 21 Jul 2017 17:03:44 -0400 Subject: [POLICY-76] Remove/rename ATT internal stuffs Change-Id: I251bd2c4f6852a563a4899024d138ebad6c52999 Signed-off-by: Gao, Chenfei (cg287m) --- ...licy.controlloop.actorServiceProvider.spi.Actor | 1 - ...licy.controlloop.actorServiceProvider.spi.Actor | 1 + ...licy.controlloop.actorServiceProvider.spi.Actor | 1 - ...licy.controlloop.actorServiceProvider.spi.Actor | 1 + controlloop/common/eventmanager/README.md | 2 +- controlloop/common/guard/README.md | 2 +- .../onap/policy/guard/PolicyGuardXacmlHelper.java | 1 - .../src/main/resources/META-INF/persistence.xml | 1 - controlloop/common/model-impl/events/README.md | 2 +- .../events/src/main/resources/definitions.yaml | 10 +- .../test/java/org/onap/policy/mso/TestDemo.java | 172 ++++ .../java/org/openecomp/policy/mso/TestDemo.java | 172 ---- controlloop/common/model-impl/sdc/README.md | 2 +- .../basex/src/files/bin/create-closed-loop-demo.sh | 6 +- controlloop/common/policy-yaml/README- v1.0.0.md | 259 ------ controlloop/common/policy-yaml/README-v1.0.0.md | 259 ++++++ .../policy/builder/ControlLoopPolicyBuilder.java | 2 +- .../resource-59a2ee3fB58045feB5a1-template.yml | 86 +- .../resource-Eace933104d443b496b8-template.yml | 116 +-- .../service-57e66ea70ed645c7970f-template.yml | 24 +- .../service-D473899264974dca9db9-template.yml | 24 +- .../src/main/resources/archetype-resources/pom.xml | 14 +- .../config/__artifactId__-controller.rest.json | 20 +- .../ControlLoopDemo__closedLoopControlName__.drl | 2 +- .../resources/projects/basic/archetype.properties | 4 +- .../ControlLoopDemo__closedLoopControlName__.drl | 1 - .../ControlLoop_Template_1610_v1.1_xacml_guard.drl | 867 ------------------- ...ontrolLoop_Template_1707_xacml_guard_enodeb.drl | 952 --------------------- .../resources/xacml/old/frequency_limiter_1.xml | 37 - .../resources/xacml/old/frequency_limiter_2.xml | 52 -- .../resources/xacml/old/frequency_limiter_3.xml | 37 - .../resources/xacml/old/frequency_limiter_4.xml | 51 -- .../src/test/resources/xacml/old/xacml.properties | 119 --- .../src/test/resources/xacml/old/xacml2.properties | 120 --- .../src/test/resources/xacml/old/xacml3.properties | 123 --- .../resources/xacml/xacml_guard_old.properties | 277 ------ 36 files changed, 591 insertions(+), 3229 deletions(-) delete mode 100644 controlloop/common/actors/actor.appc/src/main/resources/META-INF/services/com.att.ecomp.policy.controlloop.actorServiceProvider.spi.Actor create mode 100644 controlloop/common/actors/actor.appc/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorServiceProvider.spi.Actor delete mode 100644 controlloop/common/actors/actor.mso/src/main/resources/META-INF/services/com.att.ecomp.policy.controlloop.actorServiceProvider.spi.Actor create mode 100644 controlloop/common/actors/actor.mso/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorServiceProvider.spi.Actor create mode 100644 controlloop/common/model-impl/mso/src/test/java/org/onap/policy/mso/TestDemo.java delete mode 100644 controlloop/common/model-impl/mso/src/test/java/org/openecomp/policy/mso/TestDemo.java delete mode 100644 controlloop/common/policy-yaml/README- v1.0.0.md create mode 100644 controlloop/common/policy-yaml/README-v1.0.0.md delete mode 100644 controlloop/templates/template.demo/src/main/resources/old/ControlLoop_Template_1610_v1.1_xacml_guard.drl delete mode 100644 controlloop/templates/template.demo/src/main/resources/old/ControlLoop_Template_1707_xacml_guard_enodeb.drl delete mode 100644 controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_1.xml delete mode 100644 controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_2.xml delete mode 100644 controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_3.xml delete mode 100644 controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_4.xml delete mode 100644 controlloop/templates/template.demo/src/test/resources/xacml/old/xacml.properties delete mode 100644 controlloop/templates/template.demo/src/test/resources/xacml/old/xacml2.properties delete mode 100644 controlloop/templates/template.demo/src/test/resources/xacml/old/xacml3.properties delete mode 100644 controlloop/templates/template.demo/src/test/resources/xacml/xacml_guard_old.properties (limited to 'controlloop') diff --git a/controlloop/common/actors/actor.appc/src/main/resources/META-INF/services/com.att.ecomp.policy.controlloop.actorServiceProvider.spi.Actor b/controlloop/common/actors/actor.appc/src/main/resources/META-INF/services/com.att.ecomp.policy.controlloop.actorServiceProvider.spi.Actor deleted file mode 100644 index 5e76150c4..000000000 --- a/controlloop/common/actors/actor.appc/src/main/resources/META-INF/services/com.att.ecomp.policy.controlloop.actorServiceProvider.spi.Actor +++ /dev/null @@ -1 +0,0 @@ -com.att.ecomp.policy.controlloop.actor.appc.APPCActorServiceProvider \ No newline at end of file diff --git a/controlloop/common/actors/actor.appc/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorServiceProvider.spi.Actor b/controlloop/common/actors/actor.appc/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorServiceProvider.spi.Actor new file mode 100644 index 000000000..8181582b5 --- /dev/null +++ b/controlloop/common/actors/actor.appc/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorServiceProvider.spi.Actor @@ -0,0 +1 @@ +org.onap.policy.controlloop.actor.appc.APPCActorServiceProvider \ No newline at end of file diff --git a/controlloop/common/actors/actor.mso/src/main/resources/META-INF/services/com.att.ecomp.policy.controlloop.actorServiceProvider.spi.Actor b/controlloop/common/actors/actor.mso/src/main/resources/META-INF/services/com.att.ecomp.policy.controlloop.actorServiceProvider.spi.Actor deleted file mode 100644 index aeed27b3b..000000000 --- a/controlloop/common/actors/actor.mso/src/main/resources/META-INF/services/com.att.ecomp.policy.controlloop.actorServiceProvider.spi.Actor +++ /dev/null @@ -1 +0,0 @@ -com.att.ecomp.policy.controlloop.actor.mso.MSOActorServiceProvider \ No newline at end of file diff --git a/controlloop/common/actors/actor.mso/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorServiceProvider.spi.Actor b/controlloop/common/actors/actor.mso/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorServiceProvider.spi.Actor new file mode 100644 index 000000000..90d6c7f0e --- /dev/null +++ b/controlloop/common/actors/actor.mso/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorServiceProvider.spi.Actor @@ -0,0 +1 @@ +org.onap.policy.controlloop.actor.mso.MSOActorServiceProvider \ No newline at end of file diff --git a/controlloop/common/eventmanager/README.md b/controlloop/common/eventmanager/README.md index 38f62de82..7ad2bf7b7 100644 --- a/controlloop/common/eventmanager/README.md +++ b/controlloop/common/eventmanager/README.md @@ -1,3 +1,3 @@ -ECOMP Policy Closed Loop Event Management Code +ONAP Policy Closed Loop Event Management Code diff --git a/controlloop/common/guard/README.md b/controlloop/common/guard/README.md index ba8593462..6135701d9 100644 --- a/controlloop/common/guard/README.md +++ b/controlloop/common/guard/README.md @@ -1,2 +1,2 @@ -ECOMP Policy Guard Implementation +ONAP Policy Guard Implementation diff --git a/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java b/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java index 66d2f288e..20d50fd3b 100644 --- a/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java +++ b/controlloop/common/guard/src/main/java/org/onap/policy/guard/PolicyGuardXacmlHelper.java @@ -30,7 +30,6 @@ import java.util.UUID; import org.apache.commons.io.IOUtils; import org.apache.http.entity.ContentType; -//import org.openecomp.policy.appc.Response; import com.att.research.xacml.api.Attribute; import com.att.research.xacml.api.AttributeCategory; diff --git a/controlloop/common/guard/src/main/resources/META-INF/persistence.xml b/controlloop/common/guard/src/main/resources/META-INF/persistence.xml index 74edd566e..bc8381f50 100644 --- a/controlloop/common/guard/src/main/resources/META-INF/persistence.xml +++ b/controlloop/common/guard/src/main/resources/META-INF/persistence.xml @@ -7,7 +7,6 @@ org.eclipse.persistence.jpa.PersistenceProvider - diff --git a/controlloop/common/model-impl/events/README.md b/controlloop/common/model-impl/events/README.md index 1347d78a6..0588ff903 100644 --- a/controlloop/common/model-impl/events/README.md +++ b/controlloop/common/model-impl/events/README.md @@ -1,6 +1,6 @@ Policy Control Loop -This is the implementation of the Policy's Control Loop messages. This includes the Events consumed and Notifications produced by the ECOMP Policy Platform. +This is the implementation of the Policy's Control Loop messages. This includes the Events consumed and Notifications produced by the ONAP Policy Platform. diff --git a/controlloop/common/model-impl/events/src/main/resources/definitions.yaml b/controlloop/common/model-impl/events/src/main/resources/definitions.yaml index cbe422b82..153fb9b93 100644 --- a/controlloop/common/model-impl/events/src/main/resources/definitions.yaml +++ b/controlloop/common/model-impl/events/src/main/resources/definitions.yaml @@ -37,12 +37,12 @@ ControlLoop: type: string description: A UNIQUE string identifying the Closed Loop ID this event is for. There are no semantics behind this string. serviceInstance: - $ref: '../../../com.att.ecomp.policy.asdc/src/main/resources/definitions.yaml#/serviceInstance' + $ref: '../../../../sdc/src/main/resources/definitions.yaml#/serviceInstance' resourceInstance: - $ref: '../../../com.att.ecomp.policy.asdc/src/main/resources/definitions.yaml#/resourceInstance' + $ref: '../../../../sdc/src/main/resources/definitions.yaml#/resourceInstance' requestID: type: string - description: This is required via ECOMP Platform Logging Requirements. + description: This is required via ONAP Platform Logging Requirements. pattern: /[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}/ triggerID: type: string @@ -52,10 +52,10 @@ ControlLoop: description: pulled from eventSourceName of trigger H.P. alarm. The contents of this field should also be contained in the AAI Json sub-tag (see below). closedLoopAlarmStart: type: string - description: firstEpoch. UTC Timestamp when this event was detected by DCAE. Conform to ECOMP Logging requirements. + description: firstEpoch. UTC Timestamp when this event was detected by DCAE. Conform to ONAP Logging requirements. closedLoopAlarmEnd: type: string - description: lastEpoch. UTC Timestamp when this event was detected as cleared by DCAE. Conform to ECOMP Logging requirements. + description: lastEpoch. UTC Timestamp when this event was detected as cleared by DCAE. Conform to ONAP Logging requirements. closedLoopEventClient: type: string description: Open DCAE sub-system that detected the event and published this event message. diff --git a/controlloop/common/model-impl/mso/src/test/java/org/onap/policy/mso/TestDemo.java b/controlloop/common/model-impl/mso/src/test/java/org/onap/policy/mso/TestDemo.java new file mode 100644 index 000000000..c840894e8 --- /dev/null +++ b/controlloop/common/model-impl/mso/src/test/java/org/onap/policy/mso/TestDemo.java @@ -0,0 +1,172 @@ +/*- + * ============LICENSE_START======================================================= + * mso + * ================================================================================ + * 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========================================================= + */ + +package org.onap.policy.mso; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.Test; +import org.onap.policy.mso.MSOCloudConfiguration; +import org.onap.policy.mso.MSOModelInfo; +import org.onap.policy.mso.MSORelatedInstance; +import org.onap.policy.mso.MSORelatedInstanceListElement; +import org.onap.policy.mso.MSORequest; +import org.onap.policy.mso.MSORequestDetails; +import org.onap.policy.mso.MSORequestInfo; +import org.onap.policy.mso.MSORequestParameters; +import org.onap.policy.mso.util.Serialization; + +public class TestDemo { + + @Test + public void test() { + + MSORequest request = new MSORequest(); + request.requestDetails = new MSORequestDetails(); + request.requestDetails.modelInfo = new MSOModelInfo(); + request.requestDetails.cloudConfiguration = new MSOCloudConfiguration(); + request.requestDetails.requestInfo = new MSORequestInfo(); + request.requestDetails.requestParameters = new MSORequestParameters(); + + request.requestDetails.modelInfo.modelType = "vfModule"; + request.requestDetails.modelInfo.modelInvariantId = "ff5256d2-5a33-55df-13ab-12abad84e7ff"; + request.requestDetails.modelInfo.modelNameVersionId = "fe6478e5-ea33-3346-ac12-ab121484a3fe"; + request.requestDetails.modelInfo.modelName = "vSAMP12..base..module-0"; + request.requestDetails.modelInfo.modelVersion = "1"; + + request.requestDetails.cloudConfiguration.lcpCloudRegionId = "mdt1"; + request.requestDetails.cloudConfiguration.tenantId = "88a6ca3ee0394ade9403f075db23167e"; + + request.requestDetails.requestInfo.instanceName = "MSOTEST103a-vSAMP12_base_module-0"; + request.requestDetails.requestInfo.source = "VID"; + request.requestDetails.requestInfo.suppressRollback = true; + + MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement(); + MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement(); + MSORelatedInstanceListElement relatedInstanceListElement3 = new MSORelatedInstanceListElement(); + relatedInstanceListElement1.relatedInstance = new MSORelatedInstance(); + relatedInstanceListElement2.relatedInstance = new MSORelatedInstance(); + relatedInstanceListElement3.relatedInstance = new MSORelatedInstance(); + + relatedInstanceListElement1.relatedInstance.instanceId = "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c"; + relatedInstanceListElement1.relatedInstance.instanceName = "MSOTESTVOL103a-vSAMP12_base_module-0_vol"; + relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo(); + relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "volumeGroup"; + + relatedInstanceListElement2.relatedInstance.instanceId = "serviceInstanceId"; + relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo(); + relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "service"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = "ff3514e3-5a33-55df-13ab-12abad84e7ff"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = "fe6985cd-ea33-3346-ac12-ab121484a3fe"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelName = "parent service model name"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = "1.0"; + + relatedInstanceListElement3.relatedInstance.instanceId = "vnfInstanceId"; + relatedInstanceListElement3.relatedInstance.modelInfo = new MSOModelInfo(); + relatedInstanceListElement3.relatedInstance.modelInfo.modelType = "vnf"; + relatedInstanceListElement3.relatedInstance.modelInfo.modelInvariantId = "ff5256d1-5a33-55df-13ab-12abad84e7ff"; + relatedInstanceListElement3.relatedInstance.modelInfo.modelNameVersionId = "fe6478e4-ea33-3346-ac12-ab121484a3fe"; + relatedInstanceListElement3.relatedInstance.modelInfo.modelName = "vSAMP12"; + relatedInstanceListElement3.relatedInstance.modelInfo.modelVersion = "1.0"; + relatedInstanceListElement3.relatedInstance.modelInfo.modelCustomizationName = "vSAMP12 1"; + + request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1); + request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2); + request.requestDetails.relatedInstanceList.add(relatedInstanceListElement3); + + Map userParam1 = new HashMap(); + userParam1.put("name1", "value1"); + + Map userParam2 = new HashMap(); + userParam2.put("name2", "value2"); + + request.requestDetails.requestParameters.userParams.add(userParam1); + request.requestDetails.requestParameters.userParams.add(userParam2); + + String body = Serialization.gsonPretty.toJson(request); + System.out.println(body); + + //MSOResponse response = MSOManager.createModuleInstance("http://localhost:7780/", "my_username", "my_passwd", request); + + //body = Serialization.gsonPretty.toJson(response); + //System.out.println(body); + + } + + @Test + public void testHack() { + + System.out.println("** HACK **"); + + MSORequest request = new MSORequest(); + // + request.requestDetails = new MSORequestDetails(); + request.requestDetails.modelInfo = new MSOModelInfo(); + request.requestDetails.cloudConfiguration = new MSOCloudConfiguration(); + request.requestDetails.requestInfo = new MSORequestInfo(); + request.requestDetails.requestParameters = new MSORequestParameters(); + request.requestDetails.requestParameters.userParams = null; + + request.requestDetails.modelInfo.modelType = "vfModule"; + request.requestDetails.modelInfo.modelInvariantId = "a9c4a35a-de48-451a-9e4e-343f2ac52928"; + request.requestDetails.modelInfo.modelNameVersionId = "e0d98ad1-238d-4555-b439-023d3f9079f6"; + request.requestDetails.modelInfo.modelName = "0d9e0d9d352749f4B3cb..dnsscaling..module-0"; + request.requestDetails.modelInfo.modelVersion = "2.0"; + + request.requestDetails.cloudConfiguration.lcpCloudRegionId = "DFW"; + request.requestDetails.cloudConfiguration.tenantId = "1015548"; + + request.requestDetails.requestInfo.instanceName = "Vfmodule_Ete_Name1eScaling63928f-ccdc-4b34-bdef-9bf64109026e"; + request.requestDetails.requestInfo.source = "POLICY"; + request.requestDetails.requestInfo.suppressRollback = false; + + MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement(); + MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement(); + relatedInstanceListElement1.relatedInstance = new MSORelatedInstance(); + relatedInstanceListElement2.relatedInstance = new MSORelatedInstance(); + + String serviceInstanceId = "98af39ce-6408-466b-921f-c2c7a8f59ed6"; + relatedInstanceListElement1.relatedInstance.instanceId = serviceInstanceId; + relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo(); + relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service"; + relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = "24329a0c-1d57-4210-b1af-a65df64e9d59"; + relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = "ac642881-8e7e-4217-bd64-16ad41c42e30"; + relatedInstanceListElement1.relatedInstance.modelInfo.modelName = "5116d67e-0b4f-46bf-a46f"; + relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = "2.0"; + + String vnfInstanceId = "8eb411b8-a936-412f-b01f-9a9a435c0e93"; + relatedInstanceListElement2.relatedInstance.instanceId = vnfInstanceId; + relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo(); + relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = "09fd971e-db5f-475d-997c-cf6704b6b8fe"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = "152ed917-6dcc-46ee-bf8a-a775c5aa5a74"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelName = "9e4c31d2-4b25-4d9e-9fb4"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = "2.0"; + relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = "0d9e0d9d-3527-49f4-b3cb 2"; + + request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1); + request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2); + + String body = Serialization.gsonPretty.toJson(request); + System.out.println(body); + } + +} diff --git a/controlloop/common/model-impl/mso/src/test/java/org/openecomp/policy/mso/TestDemo.java b/controlloop/common/model-impl/mso/src/test/java/org/openecomp/policy/mso/TestDemo.java deleted file mode 100644 index c6c750568..000000000 --- a/controlloop/common/model-impl/mso/src/test/java/org/openecomp/policy/mso/TestDemo.java +++ /dev/null @@ -1,172 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * mso - * ================================================================================ - * 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========================================================= - */ - -package org.openecomp.policy.mso; - -import java.util.HashMap; -import java.util.Map; - -import org.junit.Test; -import org.onap.policy.mso.MSOCloudConfiguration; -import org.onap.policy.mso.MSOModelInfo; -import org.onap.policy.mso.MSORelatedInstance; -import org.onap.policy.mso.MSORelatedInstanceListElement; -import org.onap.policy.mso.MSORequest; -import org.onap.policy.mso.MSORequestDetails; -import org.onap.policy.mso.MSORequestInfo; -import org.onap.policy.mso.MSORequestParameters; -import org.onap.policy.mso.util.Serialization; - -public class TestDemo { - - @Test - public void test() { - - MSORequest request = new MSORequest(); - request.requestDetails = new MSORequestDetails(); - request.requestDetails.modelInfo = new MSOModelInfo(); - request.requestDetails.cloudConfiguration = new MSOCloudConfiguration(); - request.requestDetails.requestInfo = new MSORequestInfo(); - request.requestDetails.requestParameters = new MSORequestParameters(); - - request.requestDetails.modelInfo.modelType = "vfModule"; - request.requestDetails.modelInfo.modelInvariantId = "ff5256d2-5a33-55df-13ab-12abad84e7ff"; - request.requestDetails.modelInfo.modelNameVersionId = "fe6478e5-ea33-3346-ac12-ab121484a3fe"; - request.requestDetails.modelInfo.modelName = "vSAMP12..base..module-0"; - request.requestDetails.modelInfo.modelVersion = "1"; - - request.requestDetails.cloudConfiguration.lcpCloudRegionId = "mdt1"; - request.requestDetails.cloudConfiguration.tenantId = "88a6ca3ee0394ade9403f075db23167e"; - - request.requestDetails.requestInfo.instanceName = "MSOTEST103a-vSAMP12_base_module-0"; - request.requestDetails.requestInfo.source = "VID"; - request.requestDetails.requestInfo.suppressRollback = true; - - MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement(); - MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement(); - MSORelatedInstanceListElement relatedInstanceListElement3 = new MSORelatedInstanceListElement(); - relatedInstanceListElement1.relatedInstance = new MSORelatedInstance(); - relatedInstanceListElement2.relatedInstance = new MSORelatedInstance(); - relatedInstanceListElement3.relatedInstance = new MSORelatedInstance(); - - relatedInstanceListElement1.relatedInstance.instanceId = "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c"; - relatedInstanceListElement1.relatedInstance.instanceName = "MSOTESTVOL103a-vSAMP12_base_module-0_vol"; - relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo(); - relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "volumeGroup"; - - relatedInstanceListElement2.relatedInstance.instanceId = "serviceInstanceId"; - relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo(); - relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "service"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = "ff3514e3-5a33-55df-13ab-12abad84e7ff"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = "fe6985cd-ea33-3346-ac12-ab121484a3fe"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelName = "parent service model name"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = "1.0"; - - relatedInstanceListElement3.relatedInstance.instanceId = "vnfInstanceId"; - relatedInstanceListElement3.relatedInstance.modelInfo = new MSOModelInfo(); - relatedInstanceListElement3.relatedInstance.modelInfo.modelType = "vnf"; - relatedInstanceListElement3.relatedInstance.modelInfo.modelInvariantId = "ff5256d1-5a33-55df-13ab-12abad84e7ff"; - relatedInstanceListElement3.relatedInstance.modelInfo.modelNameVersionId = "fe6478e4-ea33-3346-ac12-ab121484a3fe"; - relatedInstanceListElement3.relatedInstance.modelInfo.modelName = "vSAMP12"; - relatedInstanceListElement3.relatedInstance.modelInfo.modelVersion = "1.0"; - relatedInstanceListElement3.relatedInstance.modelInfo.modelCustomizationName = "vSAMP12 1"; - - request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1); - request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2); - request.requestDetails.relatedInstanceList.add(relatedInstanceListElement3); - - Map userParam1 = new HashMap(); - userParam1.put("name1", "value1"); - - Map userParam2 = new HashMap(); - userParam2.put("name2", "value2"); - - request.requestDetails.requestParameters.userParams.add(userParam1); - request.requestDetails.requestParameters.userParams.add(userParam2); - - String body = Serialization.gsonPretty.toJson(request); - System.out.println(body); - - //MSOResponse response = MSOManager.createModuleInstance("http://localhost:7780/", "my_username", "my_passwd", request); - - //body = Serialization.gsonPretty.toJson(response); - //System.out.println(body); - - } - - @Test - public void testHack() { - - System.out.println("** HACK **"); - - MSORequest request = new MSORequest(); - // - request.requestDetails = new MSORequestDetails(); - request.requestDetails.modelInfo = new MSOModelInfo(); - request.requestDetails.cloudConfiguration = new MSOCloudConfiguration(); - request.requestDetails.requestInfo = new MSORequestInfo(); - request.requestDetails.requestParameters = new MSORequestParameters(); - request.requestDetails.requestParameters.userParams = null; - - request.requestDetails.modelInfo.modelType = "vfModule"; - request.requestDetails.modelInfo.modelInvariantId = "a9c4a35a-de48-451a-9e4e-343f2ac52928"; - request.requestDetails.modelInfo.modelNameVersionId = "e0d98ad1-238d-4555-b439-023d3f9079f6"; - request.requestDetails.modelInfo.modelName = "0d9e0d9d352749f4B3cb..dnsscaling..module-0"; - request.requestDetails.modelInfo.modelVersion = "2.0"; - - request.requestDetails.cloudConfiguration.lcpCloudRegionId = "DFW"; - request.requestDetails.cloudConfiguration.tenantId = "1015548"; - - request.requestDetails.requestInfo.instanceName = "Vfmodule_Ete_Name1eScaling63928f-ccdc-4b34-bdef-9bf64109026e"; - request.requestDetails.requestInfo.source = "POLICY"; - request.requestDetails.requestInfo.suppressRollback = false; - - MSORelatedInstanceListElement relatedInstanceListElement1 = new MSORelatedInstanceListElement(); - MSORelatedInstanceListElement relatedInstanceListElement2 = new MSORelatedInstanceListElement(); - relatedInstanceListElement1.relatedInstance = new MSORelatedInstance(); - relatedInstanceListElement2.relatedInstance = new MSORelatedInstance(); - - String serviceInstanceId = "98af39ce-6408-466b-921f-c2c7a8f59ed6"; - relatedInstanceListElement1.relatedInstance.instanceId = serviceInstanceId; - relatedInstanceListElement1.relatedInstance.modelInfo = new MSOModelInfo(); - relatedInstanceListElement1.relatedInstance.modelInfo.modelType = "service"; - relatedInstanceListElement1.relatedInstance.modelInfo.modelInvariantId = "24329a0c-1d57-4210-b1af-a65df64e9d59"; - relatedInstanceListElement1.relatedInstance.modelInfo.modelNameVersionId = "ac642881-8e7e-4217-bd64-16ad41c42e30"; - relatedInstanceListElement1.relatedInstance.modelInfo.modelName = "5116d67e-0b4f-46bf-a46f"; - relatedInstanceListElement1.relatedInstance.modelInfo.modelVersion = "2.0"; - - String vnfInstanceId = "8eb411b8-a936-412f-b01f-9a9a435c0e93"; - relatedInstanceListElement2.relatedInstance.instanceId = vnfInstanceId; - relatedInstanceListElement2.relatedInstance.modelInfo = new MSOModelInfo(); - relatedInstanceListElement2.relatedInstance.modelInfo.modelType = "vnf"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelInvariantId = "09fd971e-db5f-475d-997c-cf6704b6b8fe"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelNameVersionId = "152ed917-6dcc-46ee-bf8a-a775c5aa5a74"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelName = "9e4c31d2-4b25-4d9e-9fb4"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelVersion = "2.0"; - relatedInstanceListElement2.relatedInstance.modelInfo.modelCustomizationName = "0d9e0d9d-3527-49f4-b3cb 2"; - - request.requestDetails.relatedInstanceList.add(relatedInstanceListElement1); - request.requestDetails.relatedInstanceList.add(relatedInstanceListElement2); - - String body = Serialization.gsonPretty.toJson(request); - System.out.println(body); - } - -} diff --git a/controlloop/common/model-impl/sdc/README.md b/controlloop/common/model-impl/sdc/README.md index 2a17461e5..9431bf045 100644 --- a/controlloop/common/model-impl/sdc/README.md +++ b/controlloop/common/model-impl/sdc/README.md @@ -1,3 +1,3 @@ -ECOMP ASDC +ONAP SDC diff --git a/controlloop/common/packages/basex/src/files/bin/create-closed-loop-demo.sh b/controlloop/common/packages/basex/src/files/bin/create-closed-loop-demo.sh index 3cd191f03..5fe83532c 100644 --- a/controlloop/common/packages/basex/src/files/bin/create-closed-loop-demo.sh +++ b/controlloop/common/packages/basex/src/files/bin/create-closed-loop-demo.sh @@ -27,10 +27,10 @@ echo "Closed Loop Demo Creator for standalone PDP-D" echo "----------------------------------------------" echo -GROUPID="org.openecomp.policy.demo.rules" +GROUPID="org.onap.policy.demo.rules" ARTIFACTID="closed-loop-demo-rules" VERSION="1.1.0-SNAPSHOT" -PACKAGE="org.openecomp.policy.demo.rules" +PACKAGE="org.onap.policy.demo.rules" CLOSEDLOOPCONTROLNAME="CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8" POLICYSCOPE="service=test;resource=FRWL;type=configuration" POLICYNAME="FirewallDemo" @@ -198,7 +198,7 @@ if [ ! -w "${DIR_TMP}" ]; then exit 1 fi -ARCHETYPE_GROUP_ID="org.openecomp.policy.drools-applications" +ARCHETYPE_GROUP_ID="org.onap.policy.drools-applications" ARCHETYPE_ARTIFACT_ID="archetype-closedloop-demo-rules" if [ -d "${DIR_TMP}/${ARTIFACTID}/" ]; then diff --git a/controlloop/common/policy-yaml/README- v1.0.0.md b/controlloop/common/policy-yaml/README- v1.0.0.md deleted file mode 100644 index 65b11adb2..000000000 --- a/controlloop/common/policy-yaml/README- v1.0.0.md +++ /dev/null @@ -1,259 +0,0 @@ -ONAP Control Loop Policy v1.0.0 - -A control loop policy is a YAML specification for creating and chaining policies for ControlLoop. - -Features of ONAP Control Loop Policy v1.0.0: - -* A single DCAE Closed Loop Event is the trigger for the overall Control Loop Policy -* APPC is the only Actor that Policy will interact with. The operations available are: RESTART, REBUILD, MIGRATE. -* An overall timeout for the Control Loop Policy must be provided -* The Control Loop Policy can contain zero or more Operational Policies each chained together via outcomes of each policy. -* If there are zero Operational Policies, i.e. no automated action is to be taken, then the policy is an Open Loop policy. -* Operational Policies can have retries and timeout's given to control how they are processed. - -This SDK helps build the YAML specification for ONAP Control Loop Policy v1.0.0. - -# Create Builder Object - -To begin with, the ControlLoopPolicyBuilder.Factory class has static methods that one should use to begin building a Control Loop Policy. It will return a [ControlLoopPolicyBuilder object](src/main/java/org/onap/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java) that can then be used to continue to build and define the Control Loop Policy. - -```java - ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop( - UUID.randomUUID().toString(), - 2400, - new Resource("sampleResource", ResourceType.VF), - new Service("sampleService") - ); -``` - -# Define the Trigger Policy - -After the name of the Control Loop and the resource and services have been defined, the next step would be to define the Operation Policy that is first to respond to an incoming DCAE Closed Loop Event. Use the setTriggerPolicy() method to do so. - -```java - Policy triggerPolicy = builder.setTriggerPolicy( - "Restart the VM", - "Upon getting the trigger event, restart the VM", - Actor.APPC, - Target.VM, - "Restart", - 2, - 300); -``` - -# Chain Operational Policies Together Using Operational Results - -Operational Policies are chained together using the results of each Operational Policy. The results are defined in [PolicyResult.java](src/main/java/org/onap/policy/controlloop/policy/PolicyResult.java). To create an Operational Policy that is tied to the result of another, use the -setPolicyForPolicyResult() method. - -```java - Policy onRestartFailurePolicy = builder.setPolicyForPolicyResult( - "Rebuild VM", - "If the restart fails, rebuild it.", - Actor.APPC, - Target.VM, - "Rebuild", - 1, - 600, - triggerPolicy.id, - PolicyResult.FAILURE, - PolicyResult.FAILURE_RETRIES, - PolicyResult.FAILURE_TIMEOUT); -``` - -An Operational Policy MUST have place to go for every one of its results. By default, each result type goes to a Final Result. Optionally, using the setPolicyForPolicyResult() method is what allows the chaining of policies. Be aware of creating loops and set the overall Control Loop timeout to reasonable value. All paths MUST lead to a Final Result. - -# Build the YAML Specification - -When finished defining the Policies, build the specification and analyze the [Results.java](src/main/java/org/onap/policy/controlloop/policy/builder/Results.java) - -```java - Results results = builder.buildSpecification(); - if (results.isValid()) { - System.out.println(results.getSpecification()); - } else { - System.err.println("Builder failed"); - for (Message message : results.getMessages()) { - System.err.println(message.getMessage()); - } - } -``` - - -# Use the YAML Specification to call the Create Policy API - -Now that you have a valid YAML specification, call the createPolicy API via the ONAP Policy Platform API. - -# YAML Specification - -The YAML specification has 2 sections to it: [controlLoop](#controlloop-object) and [policies](#policies-array). The [controlLoop section](#controlloop-object) section is simply a header defining the Control Loop Policy, what services its for, which resource its for, or if its for a pnf, the overall timeout, and which Operational Policy is triggered upon receiving the event. The [policies section](#policies-array) is simply an array of [Policy Objects](#policy-object). - -## controlLoop Object - -| Field Name | Type | Required | Description | -| ------------- |:-------------:| -----------| ------------:| -| controlLoopName | string | required | Unique ID for the control Loop | -| version | string | required | Value for this release if 1.0.0 | -| services | array of [service](#service-object) objects | optional | Zero or more services associated with this Control Loop | -| resources | array of [resource](#resource-object) object | required (If NOT a pnf control loop) | The resource's associated with this Control Loop. | -| pnf | [pnf](#pnf-object) object | required (If NOT a resource control loop) | The physical network function associated with this Control Loop. | -| trigger_policy | string | required | Either this is the ID of an Operation Policy (see policy object), or "Final_OpenLoop" indicating an Open Loop | -| timeout | int | required | This is the overall timeout for the Control Loop Policy. It can be 0 for an Open Loop, but otherwise should total more than the timeouts specified in any Operational Policies | - -### resource Object - -This object was derived via SDC Catalog API and SDC Data Dictionary (POC) in an attempt to use common naming conventions. - -| Field Name | Type | Required | Description | -| ------------- |:-------------:| -----------| ------------:| -| resourceInvariantUUID | string - UUID | optional | via SDC, the unique ID for the resource version | -| resourceName | string | required if NO resourceUUID available | Name of the resource, ideally from SDC catalog. But if not available, use well-known name. | -| resourceType | string | optional | Use values defined by SDC: VF, VFC, VL, CP. | -| resourceUUID | string - UUID | required IF available, else populate resourceName | Unique ID for the resource as assigned via SDC. -| resourceVersion | string | optional | string version of the resource via SDC catalog - -SDC catalog is not fully available and resources have not been defined yet, use resourceName. Eg. vFW - -### service Object - -This object was derived via SDC Catalog API and SDC Data Dictionary (POC) in an attempt to use common naming conventions. - -| Field Name | Type | Required | Description | -| ------------- |:-------------:| -----------| ------------:| -| serviceInvariantUUID | string - UUID | optional | via SDC catalog, the unique ID for the service version | -| serviceName | string | required if NO serviceUUID available | Name of the service, ideally from SDC catalog. But if not available, use well-known name. | -| serviceUUID | string - UUID | required IF available, else populate serviceName | Unique ID fort he service as assigned via SDC -| serviceVersion | string | optional | string version of the service via SDC catalog - -SDC catalog is not fully available and some services have not been defined yet, use serviceName. Eg. vLB. - -### pnf Object - -This object is used for a physical network function. Expect this object to change in the future when ONAP Policy fully integrates with A&AI. - -| Field Name | Type | Required | Description | -| ------------- |:-------------:| -----------| ------------:| -| PNFName | string | required | Name of the PNF. Should be supplied via A&AI. If not available use a well-known name. | -| PNFType | string | optional | Type of PNF if available. | - - -## policies array - -The policies section is an array of [Policy objects](#policy-object). - -### Policy Object - -This is an Operation Policy. It is used to instruct an actor (eg. APPC) to invoke a recipe (eg. "Restart") on a target entity (eg. a "VM"). An operation is simply defined as performing a recipe (or operation) on an actor. - -| Field Name | Type | Required | Description | -| ------------- |:-------------:| -----------| ------------:| -| id | string | required | Unique ID for the policy. -| name | string | required | Policy name | -| description | string | optional | Policy description | -| actor | string | required | Name of the actor for this operation: Example: APPC | -| recipe | string | required | Name of recipe to be performed. Example "Restart" | -| target | string | required | Entity being targeted. Example: VM | -| timeout | int | required | Timeout for the actor to perform the recipe. | -| retry | int | optional | Optional number of retries for ECOMP Policy to invoke the recipe on the actor. | -| success | string | required | By default, this value should be FINAL_SUCCESS. Otherwise this can be the ID of the operational Policy (included in this specification) to invoke upon successfully completing the recipe on the actor. -| failure | string | required | By default, this value should be FINAL_FAILURE. Otherwise this can be the ID of the operational Policy (included in this specification) to invoke upon failure to perform the operation. | -| failure_exception | string | required | By default, this value should be FINAL_FAILURE_EXCEPTION. Otherwise this can be the ID of an Operational Policy (included in this specification) to invoke upon an exception occurring while attempting to perform the operation. | -| failure_retries | string | required | By default, this value should be the FINAL_FAILURE_RETRIES. Otherwise this can be the ID of an Operational Policy (included in this specification) to invoke upon maxing out on retries while attempting to perform the operation. | -| failure_timeout | string | required | By default, this value should be FINAL_FAILURE_TIMEOUT. Otherwise this can be the ID of the operational Policy (included in this specification) to invoke upon a timeout occuring while performing an operation. | - -Every Operational Policy MUST have a place to go for every possible result (success, failure, failure_retries, failure_timeout, failure_exception). By default, all the results are final results. - -## Examples of YAML Control Loops v1.0.0 - -[vService](src/test/resources/v1.0.0/policy_vService.yaml) -[Open-Loop](src/test/resources/v1.0.0/policy_OpenLoop.yaml) - - -### vService -``` -controlLoop: - version: 1.0.0 - controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda - services: - - serviceName: service1 - resources: - - resourceName: resource1 - resourceType: VF - - resourceName: resource2 - resourceType: VF - - resourceName: resource3 - resourceType: VF - - resourceName: resource4 - resourceType: VF - - resourceName: resource5 - resourceType: VF - trigger_policy: unique-policy-id-1-restart - timeout: 1200 - -policies: - - id: unique-policy-id-1-restart - name: Restart Policy - description: - actor: APPC - recipe: Restart - target: VM - retry: 2 - timeout: 300 - success: final_success - failure: unique-policy-id-2-rebuild - failure_timeout: unique-policy-id-2-rebuild - failure_retries: unique-policy-id-2-rebuild - failure_exception: final_failure_exception - - - id: unique-policy-id-2-rebuild - name: Rebuild Policy - description: - actor: APPC - recipe: Rebuild - target: VM - retry: 0 - timeout: 600 - success: final_success - failure: unique-policy-id-3-migrate - failure_timeout: unique-policy-id-3-migrate - failure_retries: unique-policy-id-3-migrate - failure_exception: final_failure_exception - - - id: unique-policy-id-3-migrate - name: Migrate Policy - description: - actor: APPC - recipe: Migrate - target: VM - retry: 0 - timeout: 600 - success: final_success - failure: final_failure - failure_timeout: final_failure_timeout - failure_retries: final_failure_retries - failure_exception: final_failure_exception - -``` - -### Open Loop -``` -controlLoop: - version: 1.0.0 - controlLoopName: ControlLoop-Open-fac4ae3d-c3f5-4bab-8e54-0a8581ede132 - services: - - serviceName: service1 - resources: - - resourceType: VF - resourceName: resource1 - trigger_policy: final_openloop - timeout: 0 - -policies: -``` - - - -# Control Loop Final Results Explained - -A Control Loop Policy has the following set of final results, as defined in [FinalResult.java](src/main/java/org/onap/policy/controlloop/policy/FinalResult.java). A final result indicates when a Control Loop Policy has finished execution and is finished processing a Closed Loop Event. All paths must lead to a Final Result. - diff --git a/controlloop/common/policy-yaml/README-v1.0.0.md b/controlloop/common/policy-yaml/README-v1.0.0.md new file mode 100644 index 000000000..1506b6834 --- /dev/null +++ b/controlloop/common/policy-yaml/README-v1.0.0.md @@ -0,0 +1,259 @@ +ONAP Control Loop Policy v1.0.0 + +A control loop policy is a YAML specification for creating and chaining policies for ControlLoop. + +Features of ONAP Control Loop Policy v1.0.0: + +* A single DCAE Closed Loop Event is the trigger for the overall Control Loop Policy +* APPC is the only Actor that Policy will interact with. The operations available are: RESTART, REBUILD, MIGRATE. +* An overall timeout for the Control Loop Policy must be provided +* The Control Loop Policy can contain zero or more Operational Policies each chained together via outcomes of each policy. +* If there are zero Operational Policies, i.e. no automated action is to be taken, then the policy is an Open Loop policy. +* Operational Policies can have retries and timeout's given to control how they are processed. + +This SDK helps build the YAML specification for ONAP Control Loop Policy v1.0.0. + +# Create Builder Object + +To begin with, the ControlLoopPolicyBuilder.Factory class has static methods that one should use to begin building a Control Loop Policy. It will return a [ControlLoopPolicyBuilder object](src/main/java/org/onap/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java) that can then be used to continue to build and define the Control Loop Policy. + +```java + ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop( + UUID.randomUUID().toString(), + 2400, + new Resource("sampleResource", ResourceType.VF), + new Service("sampleService") + ); +``` + +# Define the Trigger Policy + +After the name of the Control Loop and the resource and services have been defined, the next step would be to define the Operation Policy that is first to respond to an incoming DCAE Closed Loop Event. Use the setTriggerPolicy() method to do so. + +```java + Policy triggerPolicy = builder.setTriggerPolicy( + "Restart the VM", + "Upon getting the trigger event, restart the VM", + Actor.APPC, + Target.VM, + "Restart", + 2, + 300); +``` + +# Chain Operational Policies Together Using Operational Results + +Operational Policies are chained together using the results of each Operational Policy. The results are defined in [PolicyResult.java](src/main/java/org/onap/policy/controlloop/policy/PolicyResult.java). To create an Operational Policy that is tied to the result of another, use the +setPolicyForPolicyResult() method. + +```java + Policy onRestartFailurePolicy = builder.setPolicyForPolicyResult( + "Rebuild VM", + "If the restart fails, rebuild it.", + Actor.APPC, + Target.VM, + "Rebuild", + 1, + 600, + triggerPolicy.id, + PolicyResult.FAILURE, + PolicyResult.FAILURE_RETRIES, + PolicyResult.FAILURE_TIMEOUT); +``` + +An Operational Policy MUST have place to go for every one of its results. By default, each result type goes to a Final Result. Optionally, using the setPolicyForPolicyResult() method is what allows the chaining of policies. Be aware of creating loops and set the overall Control Loop timeout to reasonable value. All paths MUST lead to a Final Result. + +# Build the YAML Specification + +When finished defining the Policies, build the specification and analyze the [Results.java](src/main/java/org/onap/policy/controlloop/policy/builder/Results.java) + +```java + Results results = builder.buildSpecification(); + if (results.isValid()) { + System.out.println(results.getSpecification()); + } else { + System.err.println("Builder failed"); + for (Message message : results.getMessages()) { + System.err.println(message.getMessage()); + } + } +``` + + +# Use the YAML Specification to call the Create Policy API + +Now that you have a valid YAML specification, call the createPolicy API via the ONAP Policy Platform API. + +# YAML Specification + +The YAML specification has 2 sections to it: [controlLoop](#controlloop-object) and [policies](#policies-array). The [controlLoop section](#controlloop-object) section is simply a header defining the Control Loop Policy, what services its for, which resource its for, or if its for a pnf, the overall timeout, and which Operational Policy is triggered upon receiving the event. The [policies section](#policies-array) is simply an array of [Policy Objects](#policy-object). + +## controlLoop Object + +| Field Name | Type | Required | Description | +| ------------- |:-------------:| -----------| ------------:| +| controlLoopName | string | required | Unique ID for the control Loop | +| version | string | required | Value for this release if 1.0.0 | +| services | array of [service](#service-object) objects | optional | Zero or more services associated with this Control Loop | +| resources | array of [resource](#resource-object) object | required (If NOT a pnf control loop) | The resource's associated with this Control Loop. | +| pnf | [pnf](#pnf-object) object | required (If NOT a resource control loop) | The physical network function associated with this Control Loop. | +| trigger_policy | string | required | Either this is the ID of an Operation Policy (see policy object), or "Final_OpenLoop" indicating an Open Loop | +| timeout | int | required | This is the overall timeout for the Control Loop Policy. It can be 0 for an Open Loop, but otherwise should total more than the timeouts specified in any Operational Policies | + +### resource Object + +This object was derived via SDC Catalog API and SDC Data Dictionary (POC) in an attempt to use common naming conventions. + +| Field Name | Type | Required | Description | +| ------------- |:-------------:| -----------| ------------:| +| resourceInvariantUUID | string - UUID | optional | via SDC, the unique ID for the resource version | +| resourceName | string | required if NO resourceUUID available | Name of the resource, ideally from SDC catalog. But if not available, use well-known name. | +| resourceType | string | optional | Use values defined by SDC: VF, VFC, VL, CP. | +| resourceUUID | string - UUID | required IF available, else populate resourceName | Unique ID for the resource as assigned via SDC. +| resourceVersion | string | optional | string version of the resource via SDC catalog + +SDC catalog is not fully available and resources have not been defined yet, use resourceName. Eg. vFW + +### service Object + +This object was derived via SDC Catalog API and SDC Data Dictionary (POC) in an attempt to use common naming conventions. + +| Field Name | Type | Required | Description | +| ------------- |:-------------:| -----------| ------------:| +| serviceInvariantUUID | string - UUID | optional | via SDC catalog, the unique ID for the service version | +| serviceName | string | required if NO serviceUUID available | Name of the service, ideally from SDC catalog. But if not available, use well-known name. | +| serviceUUID | string - UUID | required IF available, else populate serviceName | Unique ID fort he service as assigned via SDC +| serviceVersion | string | optional | string version of the service via SDC catalog + +SDC catalog is not fully available and some services have not been defined yet, use serviceName. Eg. vLB. + +### pnf Object + +This object is used for a physical network function. Expect this object to change in the future when ONAP Policy fully integrates with A&AI. + +| Field Name | Type | Required | Description | +| ------------- |:-------------:| -----------| ------------:| +| PNFName | string | required | Name of the PNF. Should be supplied via A&AI. If not available use a well-known name. | +| PNFType | string | optional | Type of PNF if available. | + + +## policies array + +The policies section is an array of [Policy objects](#policy-object). + +### Policy Object + +This is an Operation Policy. It is used to instruct an actor (eg. APPC) to invoke a recipe (eg. "Restart") on a target entity (eg. a "VM"). An operation is simply defined as performing a recipe (or operation) on an actor. + +| Field Name | Type | Required | Description | +| ------------- |:-------------:| -----------| ------------:| +| id | string | required | Unique ID for the policy. +| name | string | required | Policy name | +| description | string | optional | Policy description | +| actor | string | required | Name of the actor for this operation: Example: APPC | +| recipe | string | required | Name of recipe to be performed. Example "Restart" | +| target | string | required | Entity being targeted. Example: VM | +| timeout | int | required | Timeout for the actor to perform the recipe. | +| retry | int | optional | Optional number of retries for ONAP Policy to invoke the recipe on the actor. | +| success | string | required | By default, this value should be FINAL_SUCCESS. Otherwise this can be the ID of the operational Policy (included in this specification) to invoke upon successfully completing the recipe on the actor. +| failure | string | required | By default, this value should be FINAL_FAILURE. Otherwise this can be the ID of the operational Policy (included in this specification) to invoke upon failure to perform the operation. | +| failure_exception | string | required | By default, this value should be FINAL_FAILURE_EXCEPTION. Otherwise this can be the ID of an Operational Policy (included in this specification) to invoke upon an exception occurring while attempting to perform the operation. | +| failure_retries | string | required | By default, this value should be the FINAL_FAILURE_RETRIES. Otherwise this can be the ID of an Operational Policy (included in this specification) to invoke upon maxing out on retries while attempting to perform the operation. | +| failure_timeout | string | required | By default, this value should be FINAL_FAILURE_TIMEOUT. Otherwise this can be the ID of the operational Policy (included in this specification) to invoke upon a timeout occuring while performing an operation. | + +Every Operational Policy MUST have a place to go for every possible result (success, failure, failure_retries, failure_timeout, failure_exception). By default, all the results are final results. + +## Examples of YAML Control Loops v1.0.0 + +[vService](src/test/resources/v1.0.0/policy_vService.yaml) +[Open-Loop](src/test/resources/v1.0.0/policy_OpenLoop.yaml) + + +### vService +``` +controlLoop: + version: 1.0.0 + controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda + services: + - serviceName: service1 + resources: + - resourceName: resource1 + resourceType: VF + - resourceName: resource2 + resourceType: VF + - resourceName: resource3 + resourceType: VF + - resourceName: resource4 + resourceType: VF + - resourceName: resource5 + resourceType: VF + trigger_policy: unique-policy-id-1-restart + timeout: 1200 + +policies: + - id: unique-policy-id-1-restart + name: Restart Policy + description: + actor: APPC + recipe: Restart + target: VM + retry: 2 + timeout: 300 + success: final_success + failure: unique-policy-id-2-rebuild + failure_timeout: unique-policy-id-2-rebuild + failure_retries: unique-policy-id-2-rebuild + failure_exception: final_failure_exception + + - id: unique-policy-id-2-rebuild + name: Rebuild Policy + description: + actor: APPC + recipe: Rebuild + target: VM + retry: 0 + timeout: 600 + success: final_success + failure: unique-policy-id-3-migrate + failure_timeout: unique-policy-id-3-migrate + failure_retries: unique-policy-id-3-migrate + failure_exception: final_failure_exception + + - id: unique-policy-id-3-migrate + name: Migrate Policy + description: + actor: APPC + recipe: Migrate + target: VM + retry: 0 + timeout: 600 + success: final_success + failure: final_failure + failure_timeout: final_failure_timeout + failure_retries: final_failure_retries + failure_exception: final_failure_exception + +``` + +### Open Loop +``` +controlLoop: + version: 1.0.0 + controlLoopName: ControlLoop-Open-fac4ae3d-c3f5-4bab-8e54-0a8581ede132 + services: + - serviceName: service1 + resources: + - resourceType: VF + resourceName: resource1 + trigger_policy: final_openloop + timeout: 0 + +policies: +``` + + + +# Control Loop Final Results Explained + +A Control Loop Policy has the following set of final results, as defined in [FinalResult.java](src/main/java/org/onap/policy/controlloop/policy/FinalResult.java). A final result indicates when a Control Loop Policy has finished execution and is finished processing a Closed Loop Event. All paths must lead to a Final Result. + diff --git a/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java b/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java index fcc783570..1947c53fc 100644 --- a/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java +++ b/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java @@ -120,7 +120,7 @@ public interface ControlLoopPolicyBuilder { public Integer calculateTimeout(); /** - * Sets the initial trigger policy when a DCAE Closed Loop Event arrives in the ECOMP Policy Platform. + * Sets the initial trigger policy when a DCAE Closed Loop Event arrives in the ONAP Policy Platform. * * * @param name diff --git a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/resource-59a2ee3fB58045feB5a1-template.yml b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/resource-59a2ee3fB58045feB5a1-template.yml index f3e9bc4e4..4b501953c 100644 --- a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/resource-59a2ee3fB58045feB5a1-template.yml +++ b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/resource-59a2ee3fB58045feB5a1-template.yml @@ -22,10 +22,10 @@ topology_template: inputs: vf_module_id: type: string - description: The vLoadBalancer Module ID is provided by ECOMP - ecomp_private_subnet_id: + description: The vLoadBalancer Module ID is provided by ONAP + onap_private_subnet_id: type: string - description: Private sub-network that connects ECOMP component and the VNF + description: Private sub-network that connects ONAP component and the VNF repo_url_blob: type: string description: URL of the repository that hosts the demo packages @@ -42,15 +42,15 @@ topology_template: demo_artifacts_version: type: string description: Artifacts (jar, tar.gz) version used in demo vnfs - ecomp_private_net_id: + onap_private_net_id: type: string - description: Private network that connects ECOMP component and the VNF + description: Private network that connects ONAP component and the VNF pub_key: type: string description: Public key to be installed on the compute instance vlb_private_ip_1: type: string - description: Private IP address that is assigned to the vLoadBalancer to communicate with ECOMP components + description: Private IP address that is assigned to the vLoadBalancer to communicate with ONAP components key_name: type: string description: Public/Private key pair name @@ -68,13 +68,13 @@ topology_template: description: Private IP address that is assigned to the vDNS to communicate with the vLoadBalancer vnf_id: type: string - description: The VNF ID is provided by ECOMP + description: The VNF ID is provided by ONAP dcae_collector_ip: type: string description: IP address of the DCAE collector vdns_private_ip_1: type: string - description: Private IP address that is assigned to the vDNS to communicate with ECOMP components + description: Private IP address that is assigned to the vDNS to communicate with ONAP components dcae_collector_port: type: string description: Port of the DCAE collector @@ -89,12 +89,12 @@ topology_template: vlb_private_ip_0: type: string description: Private IP address that is assigned to the vLoadBalancer to communicate with the vDNSs - ecomp_private_net_cidr: + onap_private_net_cidr: type: string description: The CIDR of the protected private network node_templates: vdns_private_1_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -107,18 +107,18 @@ topology_template: properties: fixed_ips: - subnet: - get_input: ecomp_private_subnet_id + get_input: onap_private_subnet_id ip_address: get_input: vdns_private_ip_1 network: - get_input: ecomp_private_net_id + get_input: onap_private_net_id requirements: - binding: capability: tosca.capabilities.network.Bindable node: vdns_0 relationship: tosca.relationships.network.BindsTo vlb_private_network: - type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net + type: org.onap.resource.vl.nodes.heat.network.neutron.Net metadata: invariantUUID: 2870cc3a-d6cd-4423-b7f6-2d63619b0eeb UUID: b7e764ba-17f9-4f0a-ad29-29877766ef21 @@ -138,7 +138,7 @@ topology_template: cidr: get_input: vlb_private_net_cidr vlb_private_1_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -151,18 +151,18 @@ topology_template: properties: fixed_ips: - subnet: - get_input: ecomp_private_subnet_id + get_input: onap_private_subnet_id ip_address: get_input: vlb_private_ip_1 network: - get_input: ecomp_private_net_id + get_input: onap_private_net_id requirements: - binding: capability: tosca.capabilities.network.Bindable node: vlb_0 relationship: tosca.relationships.network.BindsTo vdns_0: - type: org.openecomp.resource.vfc.59a2ee3fB58045feB5a1.abstact.nodes.heat.vdns + type: org.onap.resource.vfc.59a2ee3fB58045feB5a1.abstact.nodes.heat.vdns metadata: invariantUUID: ee585c30-127b-492e-b2c1-871dc61d1dde UUID: d816cb01-b5d0-4bbb-b614-f7c3e230ab19 @@ -187,7 +187,7 @@ topology_template: name: get_input: vdns_name_0 vlb_private_0_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -213,7 +213,7 @@ topology_template: node: vlb_0 relationship: tosca.relationships.network.BindsTo vdns_private_0_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -237,7 +237,7 @@ topology_template: node: vdns_0 relationship: tosca.relationships.network.BindsTo vlb_0: - type: org.openecomp.resource.vfc.59a2ee3fB58045feB5a1.abstact.nodes.heat.vlb + type: org.onap.resource.vfc.59a2ee3fB58045feB5a1.abstact.nodes.heat.vlb metadata: invariantUUID: f7f1d745-cfb1-4aa9-83fc-31280d0ce513 UUID: 1821f13e-411f-4b29-87a5-ae935897b2e1 @@ -263,7 +263,7 @@ topology_template: get_input: vlb_name_0 groups: base_vlb: - type: org.openecomp.groups.heat.HeatStack + type: org.onap.groups.heat.HeatStack members: - vdns_private_1_port - vlb_private_network @@ -278,7 +278,7 @@ topology_template: version: '1' name: base_vlb 59a2ee3fB58045feB5a1..dnsscaling..module-1: - type: org.openecomp.groups.VfModule + type: org.onap.groups.VfModule members: - vdns_private_1_port - vdns_0 @@ -293,7 +293,7 @@ topology_template: vf_module_description: volume_group: false 59a2ee3fB58045feB5a1..base_vlb..module-0: - type: org.openecomp.groups.VfModule + type: org.onap.groups.VfModule members: - vdns_private_1_port - vlb_private_network @@ -312,7 +312,7 @@ topology_template: vf_module_description: volume_group: false dnsscaling: - type: org.openecomp.groups.heat.HeatStack + type: org.onap.groups.heat.HeatStack members: - vdns_private_1_port - vdns_0 @@ -323,10 +323,10 @@ topology_template: version: '1' name: dnsscaling substitution_mappings: - node_type: org.openecomp.resource.vf.59a2ee3fB58045feB5a1 + node_type: org.onap.resource.vf.59a2ee3fB58045feB5a1 capabilities: vdns_0.memory: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM allocated to the instance occurrences: - 1 @@ -384,7 +384,7 @@ topology_template: type: string required: false vdns_0.memory.resident: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance on the physical machine occurrences: - 1 @@ -442,7 +442,7 @@ topology_template: type: string required: false vdns_0.cpu: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used occurrences: - 1 @@ -568,7 +568,7 @@ topology_template: - 1 - UNBOUNDED vlb_0.memory: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM allocated to the instance occurrences: - 1 @@ -650,7 +650,7 @@ topology_template: - 0 - UNBOUNDED vlb_0.vcpus: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average disk latency occurrences: - 1 @@ -708,7 +708,7 @@ topology_template: type: string required: false vlb_0.instance: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance occurrences: - 1 @@ -794,7 +794,7 @@ topology_template: - 1 - UNBOUNDED vlb_0.cpu: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used occurrences: - 1 @@ -852,7 +852,7 @@ topology_template: type: string required: false vdns_0.cpu.delta: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used since previous datapoint occurrences: - 1 @@ -910,7 +910,7 @@ topology_template: type: string required: false vlb_0.memory.resident: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance on the physical machine occurrences: - 1 @@ -968,7 +968,7 @@ topology_template: type: string required: false vdns_0.vcpus: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average disk latency occurrences: - 1 @@ -1026,7 +1026,7 @@ topology_template: type: string required: false vdns_0.memory.usage: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance from the amount of its allocated memory occurrences: - 1 @@ -1084,7 +1084,7 @@ topology_template: type: string required: false vlb_0.cpu.delta: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used since previous datapoint occurrences: - 1 @@ -1142,7 +1142,7 @@ topology_template: type: string required: false vdns_0.instance:type: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance (OpenStack types) occurrences: - 1 @@ -1243,7 +1243,7 @@ topology_template: type: scalar-unit.size required: false vlb_0.instance:type: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance (OpenStack types) occurrences: - 1 @@ -1316,7 +1316,7 @@ topology_template: - 0 - UNBOUNDED vlb_0.cpu_util: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average CPU utilization occurrences: - 1 @@ -1384,7 +1384,7 @@ topology_template: - 1 - UNBOUNDED vdns_0.cpu_util: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average CPU utilization occurrences: - 1 @@ -1442,7 +1442,7 @@ topology_template: type: string required: false vdns_0.instance: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance occurrences: - 1 @@ -1524,7 +1524,7 @@ topology_template: - 1 - UNBOUNDED vlb_0.memory.usage: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance from the amount of its allocated memory occurrences: - 1 diff --git a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/resource-Eace933104d443b496b8-template.yml b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/resource-Eace933104d443b496b8-template.yml index 3ce20b597..c0f4f4d39 100644 --- a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/resource-Eace933104d443b496b8-template.yml +++ b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/resource-Eace933104d443b496b8-template.yml @@ -24,7 +24,7 @@ topology_template: inputs: vf_module_id: type: string - description: The vFirewall Module ID is provided by ECOMP + description: The vFirewall Module ID is provided by onap repo_url_blob: type: string description: URL of the repository that hosts the demo packages @@ -40,13 +40,13 @@ topology_template: description: Private IP address that is assigned to the vFirewall to communicate with the vPacketGenerator vfw_private_ip_2: type: string - description: Private IP address that is assigned to the vFirewall to communicate with ECOMP components + description: Private IP address that is assigned to the vFirewall to communicate with ONAP components vfw_name_0: type: string description: Name of the vFirewall vnf_id: type: string - description: The VNF ID is provided by ECOMP + description: The VNF ID is provided by onap dcae_collector_ip: type: string description: IP address of the DCAE collector @@ -55,7 +55,7 @@ topology_template: description: Port of the DCAE collector vpg_private_ip_1: type: string - description: Private IP address that is assigned to the vPacketGenerator to communicate with ECOMP components + description: Private IP address that is assigned to the vPacketGenerator to communicate with ONAP components vsn_private_ip_0: type: string description: Private IP address that is assigned to the vSink to communicate with the vFirewall @@ -67,19 +67,19 @@ topology_template: description: Private IP address that is assigned to the vPacketGenerator to communicate with the vFirewall vsn_private_ip_1: type: string - description: Private IP address that is assigned to the vSink to communicate with ECOMP components + description: Private IP address that is assigned to the vSink to communicate with ONAP components protected_private_net_cidr: type: string description: The CIDR of the protected private network - ecomp_private_net_cidr: + onap_private_net_cidr: type: string description: The CIDR of the protected private network unprotected_private_net_cidr: type: string description: The CIDR of the unprotected private network - ecomp_private_subnet_id: + onap_private_subnet_id: type: string - description: Private sub-network that connects ECOMP component and the VNF + description: Private sub-network that connects ONAP component and the VNF vsn_name_0: type: string description: Name of the vSink @@ -93,9 +93,9 @@ topology_template: demo_artifacts_version: type: string description: Artifacts (jar, tar.gz) version used in demo vnfs - ecomp_private_net_id: + onap_private_net_id: type: string - description: Private network that connects ECOMP component and the VNF + description: Private network that connects ONAP component and the VNF pub_key: type: string description: Public key to be installed on the compute instance @@ -114,7 +114,7 @@ topology_template: description: Private network that connects vFirewall with vSink node_templates: vfw_private_0_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -140,7 +140,7 @@ topology_template: node: vfw_0 relationship: tosca.relationships.network.BindsTo vsn_private_1_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -153,18 +153,18 @@ topology_template: properties: fixed_ips: - subnet: - get_input: ecomp_private_subnet_id + get_input: onap_private_subnet_id ip_address: get_input: vsn_private_ip_1 network: - get_input: ecomp_private_net_id + get_input: onap_private_net_id requirements: - binding: capability: tosca.capabilities.network.Bindable node: vsn_0 relationship: tosca.relationships.network.BindsTo unprotected_private_network: - type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net + type: org.onap.resource.vl.nodes.heat.network.neutron.Net metadata: invariantUUID: 2870cc3a-d6cd-4423-b7f6-2d63619b0eeb UUID: b7e764ba-17f9-4f0a-ad29-29877766ef21 @@ -182,7 +182,7 @@ topology_template: cidr: get_input: unprotected_private_net_cidr vpg_private_1_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -195,18 +195,18 @@ topology_template: properties: fixed_ips: - subnet: - get_input: ecomp_private_subnet_id + get_input: onap_private_subnet_id ip_address: get_input: vpg_private_ip_1 network: - get_input: ecomp_private_net_id + get_input: onap_private_net_id requirements: - binding: capability: tosca.capabilities.network.Bindable node: vpg_0 relationship: tosca.relationships.network.BindsTo vfw_0: - type: org.openecomp.resource.vfc.Eace933104d443b496b8.abstact.nodes.heat.vfw + type: org.onap.resource.vfc.Eace933104d443b496b8.abstact.nodes.heat.vfw metadata: invariantUUID: 0129e34c-d9fa-442d-bb2c-f925d018000a UUID: 7fa1f6c7-c6bd-4444-8db2-63334a5aed1b @@ -231,7 +231,7 @@ topology_template: name: get_input: vfw_name_0 vsn_0: - type: org.openecomp.resource.vfc.Eace933104d443b496b8.abstact.nodes.heat.vsn + type: org.onap.resource.vfc.Eace933104d443b496b8.abstact.nodes.heat.vsn metadata: invariantUUID: b19f6643-3db0-4d73-b280-94d6f21caa71 UUID: 6dca6eb9-330c-4090-a542-7aca5f446e21 @@ -256,7 +256,7 @@ topology_template: name: get_input: vsn_name_0 vpg_private_0_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -282,7 +282,7 @@ topology_template: node: vpg_0 relationship: tosca.relationships.network.BindsTo vsn_private_0_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -308,7 +308,7 @@ topology_template: node: vsn_0 relationship: tosca.relationships.network.BindsTo vfw_private_1_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -334,7 +334,7 @@ topology_template: node: vfw_0 relationship: tosca.relationships.network.BindsTo vfw_private_2_port: - type: org.openecomp.resource.cp.nodes.heat.network.neutron.Port + type: org.onap.resource.cp.nodes.heat.network.neutron.Port metadata: invariantUUID: 7feb77d3-dcc5-4826-8a78-0c9089814a45 UUID: 06bc8ea7-0f6a-489a-9f8f-c7253653b457 @@ -347,18 +347,18 @@ topology_template: properties: fixed_ips: - subnet: - get_input: ecomp_private_subnet_id + get_input: onap_private_subnet_id ip_address: get_input: vfw_private_ip_2 network: - get_input: ecomp_private_net_id + get_input: onap_private_net_id requirements: - binding: capability: tosca.capabilities.network.Bindable node: vfw_0 relationship: tosca.relationships.network.BindsTo vpg_0: - type: org.openecomp.resource.vfc.Eace933104d443b496b8.abstact.nodes.heat.vpg + type: org.onap.resource.vfc.Eace933104d443b496b8.abstact.nodes.heat.vpg metadata: invariantUUID: 7654ae14-4e98-45bc-a8c0-2c43e1805bb4 UUID: 5267d6dd-f676-4f98-abec-6387ce6beaf2 @@ -383,7 +383,7 @@ topology_template: name: get_input: vpg_name_0 protected_private_network: - type: org.openecomp.resource.vl.nodes.heat.network.neutron.Net + type: org.onap.resource.vl.nodes.heat.network.neutron.Net metadata: invariantUUID: 2870cc3a-d6cd-4423-b7f6-2d63619b0eeb UUID: b7e764ba-17f9-4f0a-ad29-29877766ef21 @@ -402,7 +402,7 @@ topology_template: get_input: protected_private_net_cidr groups: base_vfw: - type: org.openecomp.groups.heat.HeatStack + type: org.onap.groups.heat.HeatStack members: - vfw_private_0_port - vsn_private_1_port @@ -422,7 +422,7 @@ topology_template: version: '1' name: base_vfw Eace933104d443b496b8..base_vfw..module-0: - type: org.openecomp.groups.VfModule + type: org.onap.groups.VfModule members: - vfw_private_0_port - vsn_private_1_port @@ -446,10 +446,10 @@ topology_template: vf_module_description: volume_group: false substitution_mappings: - node_type: org.openecomp.resource.vf.Eace933104d443b496b8 + node_type: org.onap.resource.vf.Eace933104d443b496b8 capabilities: vfw_0.instance: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance occurrences: - 1 @@ -521,7 +521,7 @@ topology_template: default_instances: type: integer vfw_0.instance:type: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance (OpenStack types) occurrences: - 1 @@ -584,7 +584,7 @@ topology_template: - 0 - UNBOUNDED vsn_0.cpu: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used occurrences: - 1 @@ -642,7 +642,7 @@ topology_template: type: string required: false vpg_0.instance:type: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance (OpenStack types) occurrences: - 1 @@ -705,7 +705,7 @@ topology_template: - 1 - UNBOUNDED vfw_0.memory: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM allocated to the instance occurrences: - 1 @@ -763,7 +763,7 @@ topology_template: type: string required: false vpg_0.cpu_util: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average CPU utilization occurrences: - 1 @@ -869,7 +869,7 @@ topology_template: - 1 - UNBOUNDED vpg_0.cpu: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used occurrences: - 1 @@ -932,7 +932,7 @@ topology_template: - 1 - UNBOUNDED vsn_0.vcpus: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average disk latency occurrences: - 1 @@ -990,7 +990,7 @@ topology_template: type: string required: false vpg_0.cpu.delta: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used since previous datapoint occurrences: - 1 @@ -1053,7 +1053,7 @@ topology_template: - 1 - UNBOUNDED vsn_0.cpu_util: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average CPU utilization occurrences: - 1 @@ -1111,7 +1111,7 @@ topology_template: type: string required: false vpg_0.instance: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance occurrences: - 1 @@ -1188,7 +1188,7 @@ topology_template: default_instances: type: integer vpg_0.memory: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM allocated to the instance occurrences: - 1 @@ -1269,7 +1269,7 @@ topology_template: type: string required: false vfw_0.memory.resident: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance on the physical machine occurrences: - 1 @@ -1341,7 +1341,7 @@ topology_template: default_instances: type: integer vsn_0.instance: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance occurrences: - 1 @@ -1432,7 +1432,7 @@ topology_template: type: string required: false vsn_0.cpu.delta: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used since previous datapoint occurrences: - 1 @@ -1518,7 +1518,7 @@ topology_template: - 1 - UNBOUNDED vfw_0.memory.usage: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance from the amount of its allocated memory occurrences: - 1 @@ -1596,7 +1596,7 @@ topology_template: type: scalar-unit.size required: false vsn_0.memory: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM allocated to the instance occurrences: - 1 @@ -1694,7 +1694,7 @@ topology_template: - 1 - UNBOUNDED vpg_0.vcpus: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average disk latency occurrences: - 1 @@ -1792,7 +1792,7 @@ topology_template: - 0 - UNBOUNDED vpg_0.memory.usage: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance from the amount of its allocated memory occurrences: - 1 @@ -1898,7 +1898,7 @@ topology_template: - 1 - UNBOUNDED vfw_0.cpu: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used occurrences: - 1 @@ -1956,7 +1956,7 @@ topology_template: type: string required: false vsn_0.instance:type: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance (OpenStack types) occurrences: - 1 @@ -2037,7 +2037,7 @@ topology_template: - 1 - UNBOUNDED vfw_0.vcpus: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average disk latency occurrences: - 1 @@ -2095,7 +2095,7 @@ topology_template: type: string required: false vfw_0.cpu.delta: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used since previous datapoint occurrences: - 1 @@ -2153,7 +2153,7 @@ topology_template: type: string required: false vsn_0.memory.resident: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance on the physical machine occurrences: - 1 @@ -2211,7 +2211,7 @@ topology_template: type: string required: false vsn_0.memory.usage: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance from the amount of its allocated memory occurrences: - 1 @@ -2274,7 +2274,7 @@ topology_template: - 1 - UNBOUNDED vfw_0.cpu_util: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average CPU utilization occurrences: - 1 @@ -2332,7 +2332,7 @@ topology_template: type: string required: false vpg_0.memory.resident: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance on the physical machine occurrences: - 1 diff --git a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/service-57e66ea70ed645c7970f-template.yml b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/service-57e66ea70ed645c7970f-template.yml index b59c85269..4bfd629e9 100644 --- a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/service-57e66ea70ed645c7970f-template.yml +++ b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/service-57e66ea70ed645c7970f-template.yml @@ -6,7 +6,7 @@ metadata: description: catalog service description type: Service category: Network L1-3 - serviceEcompNaming: false + serviceOnapNaming: false serviceHoming: false imports: - eace9331-04d4-43b4-96b8: @@ -14,7 +14,7 @@ imports: topology_template: node_templates: eace9331-04d4-43b4-96b8 1: - type: org.openecomp.resource.vf.Eace933104d443b496b8 + type: org.onap.resource.vf.Eace933104d443b496b8 metadata: invariantUUID: 06fe411e-d006-4ac3-8b0e-fb4f13cd78d3 UUID: 172ce7c5-c2e4-4f8d-b66c-edb49e8e548a @@ -25,10 +25,10 @@ topology_template: category: Generic subcategory: Abstract substitution_mappings: - node_type: org.openecomp.service.57e66ea70ed645c7970f + node_type: org.onap.service.57e66ea70ed645c7970f capabilities: eace9331-04d4-43b4-96b8 1.memory.resident: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance on the physical machine occurrences: - 1 @@ -129,7 +129,7 @@ topology_template: type: scalar-unit.size required: false eace9331-04d4-43b4-96b8 1.instance: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance occurrences: - 1 @@ -201,7 +201,7 @@ topology_template: default_instances: type: integer eace9331-04d4-43b4-96b8 1.memory: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM allocated to the instance occurrences: - 1 @@ -264,7 +264,7 @@ topology_template: - 1 - UNBOUNDED eace9331-04d4-43b4-96b8 1.vcpus: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average disk latency occurrences: - 1 @@ -322,7 +322,7 @@ topology_template: type: string required: false eace9331-04d4-43b4-96b8 1.cpu_util: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average CPU utilization occurrences: - 1 @@ -380,7 +380,7 @@ topology_template: type: string required: false eace9331-04d4-43b4-96b8 1.cpu.delta: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used since previous datapoint occurrences: - 1 @@ -443,7 +443,7 @@ topology_template: - 1 - UNBOUNDED eace9331-04d4-43b4-96b8 1.cpu: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used occurrences: - 1 @@ -501,7 +501,7 @@ topology_template: type: string required: false eace9331-04d4-43b4-96b8 1.instance:type: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance (OpenStack types) occurrences: - 1 @@ -564,7 +564,7 @@ topology_template: - 0 - UNBOUNDED eace9331-04d4-43b4-96b8 1.memory.usage: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance from the amount of its allocated memory occurrences: - 1 diff --git a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/service-D473899264974dca9db9-template.yml b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/service-D473899264974dca9db9-template.yml index 302cacc0a..2293b3aca 100644 --- a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/service-D473899264974dca9db9-template.yml +++ b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/Demo-1.0.0-HeatTemplates/service-D473899264974dca9db9-template.yml @@ -6,7 +6,7 @@ metadata: description: catalog service description type: Service category: Network L1-3 - serviceEcompNaming: false + serviceOnapNaming: false serviceHoming: false imports: - 59a2ee3f-b580-45fe-b5a1: @@ -14,7 +14,7 @@ imports: topology_template: node_templates: 59a2ee3f-b580-45fe-b5a1 1: - type: org.openecomp.resource.vf.59a2ee3fB58045feB5a1 + type: org.onap.resource.vf.59a2ee3fB58045feB5a1 metadata: invariantUUID: 4b8d4018-068b-4c33-b9bb-d980798e52c2 UUID: d7d28881-b24d-4512-bfee-1e2eb335591f @@ -25,10 +25,10 @@ topology_template: category: Generic subcategory: Abstract substitution_mappings: - node_type: org.openecomp.service.D473899264974dca9db9 + node_type: org.onap.service.D473899264974dca9db9 capabilities: 59a2ee3f-b580-45fe-b5a1 1.memory.resident: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance on the physical machine occurrences: - 1 @@ -134,7 +134,7 @@ topology_template: - 0 - UNBOUNDED 59a2ee3f-b580-45fe-b5a1 1.vcpus: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average disk latency occurrences: - 1 @@ -212,7 +212,7 @@ topology_template: type: scalar-unit.size required: false 59a2ee3f-b580-45fe-b5a1 1.memory.usage: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM used by the instance from the amount of its allocated memory occurrences: - 1 @@ -270,7 +270,7 @@ topology_template: type: string required: false 59a2ee3f-b580-45fe-b5a1 1.instance: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance occurrences: - 1 @@ -342,7 +342,7 @@ topology_template: default_instances: type: integer 59a2ee3f-b580-45fe-b5a1 1.cpu_util: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Average CPU utilization occurrences: - 1 @@ -400,7 +400,7 @@ topology_template: type: string required: false 59a2ee3f-b580-45fe-b5a1 1.instance:type: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Existence of instance (OpenStack types) occurrences: - 1 @@ -458,7 +458,7 @@ topology_template: type: string required: false 59a2ee3f-b580-45fe-b5a1 1.cpu.delta: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used since previous datapoint occurrences: - 1 @@ -516,7 +516,7 @@ topology_template: type: string required: false 59a2ee3f-b580-45fe-b5a1 1.memory: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: Volume of RAM allocated to the instance occurrences: - 1 @@ -579,7 +579,7 @@ topology_template: - 0 - UNBOUNDED 59a2ee3f-b580-45fe-b5a1 1.cpu: - type: org.openecomp.capabilities.metric.Ceilometer + type: org.onap.capabilities.metric.Ceilometer description: CPU time used occurrences: - 1 diff --git a/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/pom.xml b/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/pom.xml index c3973a7d9..370431dfb 100644 --- a/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/pom.xml +++ b/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/pom.xml @@ -37,37 +37,37 @@ - org.openecomp.policy.drools-applications + org.onap.policy.drools-applications demo ${dependenciesVersion} - org.openecomp.policy.drools-applications + org.onap.policy.drools-applications controlloop ${dependenciesVersion} - org.openecomp.policy.drools-applications + org.onap.policy.drools-applications rest ${dependenciesVersion} - org.openecomp.policy.drools-applications + org.onap.policy.drools-applications appc ${dependenciesVersion} - org.openecomp.policy.drools-applications + org.onap.policy.drools-applications aai ${dependenciesVersion} - org.openecomp.policy.drools-applications + org.onap.policy.drools-applications mso ${dependenciesVersion} - org.openecomp.policy.drools-applications + org.onap.policy.drools-applications trafficgenerator ${dependenciesVersion} diff --git a/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json b/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json index de5db52df..712cf7034 100644 --- a/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json +++ b/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/src/main/config/__artifactId__-controller.rest.json @@ -6,30 +6,30 @@ "ueb.source.topics.${dcaeTopic}.servers": "${dcaeServers}", "ueb.source.topics.${dcaeTopic}.apiKey": "${dcaeApiKey}", "ueb.source.topics.${dcaeTopic}.apiSecret": "${dcaeApiSecret}", - "ueb.source.topics.${dcaeTopic}.events": "org.openecomp.policy.controlloop.VirtualControlLoopEvent", - "ueb.source.topics.${dcaeTopic}.events.org.openecomp.policy.controlloop.VirtualControlLoopEvent.filter": "closedLoopEventStatus=.*", - "ueb.source.topics.${dcaeTopic}.events.custom.gson": "org.openecomp.policy.controlloop.util.Serialization,gsonPretty", + "ueb.source.topics.${dcaeTopic}.events": "org.onap.policy.controlloop.VirtualControlLoopEvent", + "ueb.source.topics.${dcaeTopic}.events.org.onap.policy.controlloop.VirtualControlLoopEvent.filter": "closedLoopEventStatus=.*", + "ueb.source.topics.${dcaeTopic}.events.custom.gson": "org.onap.policy.controlloop.util.Serialization,gsonPretty", "ueb.source.topics.${appcTopic}.servers": "${appcServers}", "ueb.source.topics.${appcTopic}.apiKey": "${appcApiKey}", "ueb.source.topics.${appcTopic}.apiSecret": "${appcApiSecret}", - "ueb.source.topics.${appcTopic}.events": "org.openecomp.policy.appc.Response", - "ueb.source.topics.${appcTopic}.events.org.openecomp.policy.appc.Response.filter": "CommonHeader=.*,Status=.*", - "ueb.source.topics.${appcTopic}.events.custom.gson": "org.openecomp.policy.appc.util.Serialization,gsonPretty", + "ueb.source.topics.${appcTopic}.events": "org.onap.policy.appc.Response", + "ueb.source.topics.${appcTopic}.events.org.onap.policy.appc.Response.filter": "CommonHeader=.*,Status=.*", + "ueb.source.topics.${appcTopic}.events.custom.gson": "org.onap.policy.appc.util.Serialization,gsonPretty", "ueb.sink.topics": "${appcTopic},${notificationTopic}", "ueb.sink.topics.${appcTopic}.servers": "${appcServers}", "ueb.sink.topics.${appcTopic}.apiKey": "${appcApiKey}", "ueb.sink.topics.${appcTopic}.apiSecret": "${appcApiSecret}", - "ueb.sink.topics.${appcTopic}.events": "org.openecomp.policy.appc.Request", - "ueb.sink.topics.${appcTopic}.events.custom.gson": "org.openecomp.policy.appc.util.Serialization,gsonPretty", + "ueb.sink.topics.${appcTopic}.events": "org.onap.policy.appc.Request", + "ueb.sink.topics.${appcTopic}.events.custom.gson": "org.onap.policy.appc.util.Serialization,gsonPretty", "ueb.sink.topics.${notificationTopic}.servers": "${notificationServers}", "ueb.sink.topics.${notificationTopic}.apiKey": "${notificationApiKey}", "ueb.sink.topics.${notificationTopic}.apiSecret": "${notificationApiSecret}", - "ueb.sink.topics.${notificationTopic}.events": "org.openecomp.policy.controlloop.VirtualControlLoopNotification", - "ueb.sink.topics.${notificationTopic}.events.custom.gson": "org.openecomp.policy.controlloop.util.Serialization,gsonPretty", + "ueb.sink.topics.${notificationTopic}.events": "org.onap.policy.controlloop.VirtualControlLoopNotification", + "ueb.sink.topics.${notificationTopic}.events.custom.gson": "org.onap.policy.controlloop.util.Serialization,gsonPretty", "rules.groupId": "${groupId}", "rules.artifactId": "${artifactId}", diff --git a/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl b/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl index 98b7b060c..ff5d82e5e 100644 --- a/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl +++ b/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl @@ -78,7 +78,7 @@ import org.onap.policy.mso.MSORelatedInstanceListElement; import org.onap.policy.mso.MSORelatedInstance; import org.onap.policy.mso.MSOResponse; -import org.openecomp.policy.drools.system.PolicyEngine; +import org.onap.policy.drools.system.PolicyEngine; // // These parameters are required to build the runtime policy diff --git a/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/test/resources/projects/basic/archetype.properties b/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/test/resources/projects/basic/archetype.properties index 6dce9747d..0b077b052 100644 --- a/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/test/resources/projects/basic/archetype.properties +++ b/controlloop/templates/template.demo.v1.0.0/archetype-closedloop-demo-rules/src/test/resources/projects/basic/archetype.properties @@ -18,10 +18,10 @@ # ============LICENSE_END========================================================= ### -groupId=org.openecomp.policy.demo.drools +groupId=org.onap.policy.demo.drools artifactId=closedloop-demo-rules version=1.0.0-SNAPSHOT -package=org.openecomp.policy.demo.drools +package=org.onap.policy.demo.drools closedLoopControlName=CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8 policyScope=service=test;resource=FRWL;type=configuration policyName=FirewallDemo diff --git a/controlloop/templates/template.demo.v1.0.0/template.demo/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl b/controlloop/templates/template.demo.v1.0.0/template.demo/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl index 4ac822661..2f1155e56 100644 --- a/controlloop/templates/template.demo.v1.0.0/template.demo/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl +++ b/controlloop/templates/template.demo.v1.0.0/template.demo/src/main/resources/archetype-resources/src/main/resources/ControlLoopDemo__closedLoopControlName__.drl @@ -78,7 +78,6 @@ import org.onap.policy.mso.MSORelatedInstanceListElement; import org.onap.policy.mso.MSORelatedInstance; import org.onap.policy.mso.MSOResponse; -//import org.openecomp.policy.drools.system.PolicyEngine; // // These parameters are required to build the runtime policy diff --git a/controlloop/templates/template.demo/src/main/resources/old/ControlLoop_Template_1610_v1.1_xacml_guard.drl b/controlloop/templates/template.demo/src/main/resources/old/ControlLoop_Template_1610_v1.1_xacml_guard.drl deleted file mode 100644 index a743502ce..000000000 --- a/controlloop/templates/template.demo/src/main/resources/old/ControlLoop_Template_1610_v1.1_xacml_guard.drl +++ /dev/null @@ -1,867 +0,0 @@ -/* - * AT&T - PROPRIETARY - * THIS FILE CONTAINS PROPRIETARY INFORMATION OF - * AT&T AND IS NOT TO BE DISCLOSED OR USED EXCEPT IN - * ACCORDANCE WITH APPLICABLE AGREEMENTS. - * - * Copyright (c) 2016 AT&T Knowledge Ventures - * Unpublished and Not for Publication - * All Rights Reserved - */ -package com.att.ecomp.policy.controlloop; - -import com.att.ecomp.policy.controlloop.ATTControlLoopEvent; -import org.openecomp.policy.controlloop.VirtualControlLoopEvent; -import org.openecomp.policy.controlloop.VirtualControlLoopNotification; -import org.openecomp.policy.controlloop.ControlLoopEventStatus; -import com.att.ecomp.policy.controlloop.ATTControlLoopNotification; -import org.openecomp.policy.controlloop.ControlLoopNotificationType; -import com.att.ecomp.policy.controlloop.ControlLoopLogger; -import com.att.ecomp.policy.controlloop.policy.PolicyResult; -import com.att.ecomp.policy.controlloop.eventmanager.ControlLoopEventManager; -import com.att.ecomp.policy.controlloop.eventmanager.ControlLoopEventManager.NEW_EVENT_STATUS; -import com.att.ecomp.policy.controlloop.eventmanager.ControlLoopOperationManager; -import org.openecomp.policy.appc.Request; -import org.openecomp.policy.appc.Response; -import org.openecomp.policy.appc.CommonHeader; -import com.att.ecomp.policy.guard.PolicyGuard; -import com.att.ecomp.policy.guard.PolicyGuard.LockResult; -import com.att.ecomp.policy.guard.TargetLock; -import com.att.ecomp.policy.guard.GuardResult; -import com.att.ecomp.policy.guard.PolicyGuardRequest; -import com.att.ecomp.policy.guard.PolicyGuardResponse; -import com.att.ecomp.policy.guard.PolicyGuardXacmlRequestAttributes; -import com.att.research.xacml.api.pdp.PDPEngine; -import com.att.research.xacml.std.annotations.RequestParser; -import com.att.ecomp.policy.guard.PolicyGuardXacmlHelper; - -// -// REPLACE THESE WITH PRODUCTION VERSIONS -// -import com.att.ecomp.policy.controlloop.ControlLoopLogger; -import com.att.ecomp.policy.drools.PolicyEngine; - -global ControlLoopLogger Logger; -global PolicyEngine Engine; -global PDPEngine XacmlPdpEngine; - -import java.time.Instant; -import java.util.LinkedList; -import java.util.Iterator; - -declare Params - closedLoopControlName : String - controlLoopYaml : String -end - -declare OperationTimer - closedLoopControlName : String - requestID : String - delay : String -end - -declare ControlLoopTimer - closedLoopControlName : String - requestID : String - delay : String -end - - -/* -* -* Called once and only once to insert the parameters into working memory for this Closed Loop policy. -* -*/ -rule "${policyName}.SETUP" - when - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Params params = new Params(); - params.setClosedLoopControlName("${closedLoopControlName}"); - params.setControlLoopYaml("${controlLoopYaml}"); - insert(params); - Logger.metrics("Inserted " + params); - Logger.info("------------------------------------------------------------------------------------------------"); -end - -/* -* -* This rule responds to DCAE Events where there is no manager yet. Either it is -* the first ONSET, or a subsequent badly formed Event (i.e. Syntax error, or is-closed-loop-disabled) -* -*/ -rule "${policyName}.EVENT" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - not ( ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) ) - then - try { - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - // - // Check the event, because we need it to not be null when - // we create the ControlLoopEventManager. The ControlLoopEventManager - // will do extra syntax checking as well check if the closed loop is disabled. - // - if ($event.requestID == null) { - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.REJECTED; - notification.from = "policy"; - notification.message = "Missing requestID"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Retract it from memory - // - retract($event); - } else { - // - // Create an EventManager - // - ControlLoopEventManager manager = new ControlLoopEventManager($params.getClosedLoopControlName(), $event.requestID); - // - // Determine if EventManager can actively process the event (i.e. syntax, is_closed_loop_disabled checks etc.) - // - VirtualControlLoopNotification notification = manager.activate($params.getControlLoopYaml(), $event); - notification.from = "pdp-0001-controller=controlloop"; // Engine.getInstanceName() - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // Are we actively pursuing this event? - // - if (notification.notification == ControlLoopNotificationType.ACTIVE) { - // - // Insert Event Manager into memory, this will now kick off processing. - // - insert(manager); - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Setup the Overall Control Loop timer - // - ControlLoopTimer clTimer = new ControlLoopTimer(); - clTimer.setClosedLoopControlName($event.closedLoopControlName); - clTimer.setRequestID($event.requestID.toString()); - clTimer.setDelay(manager.getControlLoopTimeout(1500) + "s"); - // - // Insert it - // - insert(clTimer); - } else { - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Retract it from memory - // - retract($event); - } - // - // Now that the manager is inserted into Drools working memory, we'll wait for - // another rule to fire in order to continue processing. This way we can also - // then screen for additional ONSET and ABATED events for this RequestID. - // - } - } catch (Exception e) { - e.printStackTrace(); - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.REJECTED; - notification.message = "Exception occurred " + e.getMessage(); - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Retract the event - // - retract($event); - } -end - -/* -* -* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager -* is now created. We can start processing the yaml specification via the Event Manager. -* -*/ -rule "${policyName}.EVENT.MANAGER" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $clTimer : ControlLoopTimer ( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($event); - Logger.metrics($manager); - Logger.metrics($clTimer); - // - // Check which event this is. - // - ControlLoopEventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event); - Logger.info("Event status is " + eventStatus); - // - // Check what kind of event this is - // - if (eventStatus == NEW_EVENT_STATUS.SUBSEQUENT_ONSET) { - // - // We don't care about subsequent onsets - // - Logger.info("Retracting Subsequent Onset " + $event); - retract($event); - return; - } - if (eventStatus == NEW_EVENT_STATUS.SYNTAX_ERROR) { - // - // Ignore any bad syntax events - // - Logger.info("Retracting Bad Syntax Event " + $event); - retract($event); - return; - } - // - // We only want the initial ONSET event in memory, - // all the other events need to be retracted to support - // cleanup and avoid the other rules being fired for this event. - // - if (eventStatus != NEW_EVENT_STATUS.FIRST_ONSET) { - Logger.info("Retracting Event " + $event); - retract($event); - } - Logger.info("Checking due to new event " + $event.triggerID); - // - // Now start seeing if we need to process this event - // - try { - // - // Check if this is a Final Event - // - ATTControlLoopNotification notification = $manager.isControlLoopFinal(); - - - if (notification != null) { - // - // Its final, but are we waiting for abatement? - // - if ($manager.getNumAbatements() > 0) { - Logger.info("Abatement received, close out the control loop for " + $event.requestID); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // In this case, we are done - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Unlock the target - // - TargetLock lock = $manager.unlockCurrentOperation(); - if (lock != null) { - System.out.println("retracting lock " + lock); - retract(lock); - } - // - // Retract everything from memory - // - System.out.println("retracting onset"); - retract($manager.getOnsetEvent()); - retract($manager); - retract($clTimer); - // - // TODO - what if we get subsequent Events for this RequestID? - // By default, it will all start over again. May be confusing for Ruby. - // Or, we could track this and then subsequently ignore the events - // - } else { - // - // Check whether we need to wait for abatement - // - if ($manager.getProcessor().getControlLoop().abatement == true && notification.notification == ControlLoopNotificationType.FINAL_SUCCESS) { - Logger.info("Waiting for abatement."); - } else { - Logger.info("No abatement is promised to come, close out the control loop for " + $event.requestID); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // In this case, we are done - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Unlock the target - // - TargetLock lock = $manager.unlockCurrentOperation(); - if (lock != null) { - System.out.println("retracting lock " + lock); - retract(lock); - } - // - // Retract everything from memory - // - System.out.println("retracting onset"); - retract($manager.getOnsetEvent()); - retract($manager); - retract($clTimer); - } - } - } else { - // - // NOT final, so let's ask for the next operation - // - ControlLoopOperationManager operation = $manager.processControlLoop(); - if (operation != null) { - Logger.info("starting a new operation" + operation); - // - // insert into memory - // - insert(operation); - // - // insert operation timeout object - // - OperationTimer opTimer = new OperationTimer(); - opTimer.setClosedLoopControlName($event.closedLoopControlName); - opTimer.setRequestID($event.requestID.toString()); - opTimer.setDelay(operation.getOperationTimeout().toString() + "s"); - insert(opTimer); - - // - // Let's ask for a lock right away - // - LockResult result = $manager.lockCurrentOperation(); - if (result.getA().equals(GuardResult.LOCK_ACQUIRED)) { - Logger.info("manager returned lock " + result.getB()); - // - // Insert into memory - // - insert(result.getB()); - } - } else { - // - // Probably waiting for abatement - // - } - } - } catch (Exception e) { - e.printStackTrace(); - /* - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.REJECTED; - notification.from = "policy"; - notification.message = "Exception occurred " + e.getMessage(); - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // TODO should we abort if we get an exception? - // - */ - } - -end - -/* -* -* -* -*/ -rule "${policyName}.EVENT.MANAGER.OPERATION.NOT_LOCKED.TIMEOUT" - timer (int: 5s 5s) - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) - not ( TargetLock (requestID == $event.requestID) ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($operation); - // - // Need to ask for a Lock - // - LockResult result = $manager.lockCurrentOperation(); - if (result.getA().equals(GuardResult.LOCK_ACQUIRED)) { - Logger.info("Lock acquired: " + result.getB()); - // - // Insert into memory - // - insert(result.getB()); - } -end - -/* -* -* -* -*/ -rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID, getGuardApprovalStatus() == "Permit" ) - $lock : TargetLock (requestID == $event.requestID) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($operation); - Logger.metrics($lock); - // - // Start the Operation - // - //Object request = $operation.startOperation($event); - //$operation.startOperation($event); - Object request = $operation.getOperationRequest(); - - if (request != null) { - Logger.info("Starting operation"); - // - // Tell interested parties we are performing this Operation - // - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.OPERATION; - notification.message = $operation.getOperationMessage(); - notification.history = $operation.getHistory(); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Send the APPC request - // - if (request instanceof Request) { - Engine.deliver("UEB", "APPC-CL", request); - } - // - // TODO: send different types of requests - // - - } else { - // - // What happens if its null? - // - } -end - - -/* -* -* -* -*/ -rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID, getGuardApprovalStatus() == "NONE" ) - $lock : TargetLock (requestID == $event.requestID) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($operation); - Logger.metrics($lock); - - $operation.startOperation($event); - // - // Now send Guard Request to XACML Guard - // - PolicyGuardXacmlRequestAttributes xacmlReq = new PolicyGuardXacmlRequestAttributes($operation.policy.actor.toString(), $operation.policy.recipe, $event.target, $event.requestID.toString()); - //Engine.deliver("UEB", "GUARD-CL", xacmlReq/*request*/); - System.out.println("\n********** XACML REQUEST START ********"); - System.out.println(RequestParser.parseRequest(xacmlReq)); - System.out.println("********** XACML REQUEST END ********\n"); - - com.att.research.xacml.api.Response xacmlResponse = PolicyGuardXacmlHelper.callPDP(XacmlPdpEngine, "", (com.att.research.xacml.api.Request) RequestParser.parseRequest(xacmlReq), false); - - System.out.println("\n********** XACML RESPONSE 1 START ********"); - System.out.println(xacmlResponse); - System.out.println("********** XACML RESPONSE 1 END ********\n"); - - PolicyGuardResponse guardResponse = PolicyGuardXacmlHelper.ParseXacmlPdpResponse(xacmlResponse); - System.out.println("\n\n============ Guard inserted with decision "+ guardResponse.result + " !!! ===========\n\n"); - - - insert(guardResponse); - -end - - - -rule "${policyName}.GUARD.RESPONSE" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) - $lock : TargetLock (requestID == $event.requestID) - $opTimer : OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) - $guardResponse : PolicyGuardResponse(/*requestID == $event.requestID, $operation.policy.recipe == operation*/) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($event); - Logger.metrics($operation); - Logger.metrics($lock); - Logger.metrics($guardResponse); - - - //we will permit the operation if there was no Guard for it - if($guardResponse.result == "Indeterminate"){ - $guardResponse.result = "Permit"; - } - - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.OPERATION; - notification.message = $operation.getOperationMessage($guardResponse.result);//"Guard result: " + $guardResponse.result; - notification.history = $operation.getHistory(); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - - - - if($guardResponse.result == "Permit"){ - - modify($operation){setGuardApprovalStatus($guardResponse.result)}; - } - else { - //This is the Deny case - $operation.setOperationHasGuardDeny(); - retract($opTimer); - retract($operation); - modify($manager) {finishOperation($operation)}; - } - - retract($guardResponse); - -end - - - - -/* -* -* This rule responds to APPC Response Events -* -* I would have like to be consistent and write the Response like this: -* $response : Response( CommonHeader.RequestID == $onset.requestID ) -* -* However, no compile error was given. But a runtime error was given. I think -* because drools is confused between the classname CommonHeader vs the property CommonHeader. -* -*/ -rule "${policyName}.APPC.RESPONSE" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) - $opTimer : OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) - $lock : TargetLock (requestID == $event.requestID) - $response : Response( getCommonHeader().RequestID == $event.requestID ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($event); - Logger.metrics($manager); - Logger.metrics($operation); - Logger.metrics($opTimer); - Logger.metrics($lock); - Logger.metrics($response); - // - // Get the result of the operation - // - PolicyResult policyResult = $operation.onResponse($response); - if (policyResult != null) { - Logger.info("operation finished with result: " + policyResult); - // - // This Operation has completed, construct a notification showing our results - // - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - notification.message = $operation.getOperationHistory(); - notification.history = $operation.getHistory(); - if (policyResult.equals(PolicyResult.SUCCESS)) { - notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS; - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - } else { - notification.notification = ControlLoopNotificationType.OPERATION_FAILURE; - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - } - // - // Ensure the operation is complete - // - if ($operation.isOperationComplete() == true) { - // - // It is complete, remove it from memory - // - retract($operation); - // - // We must also retract the timer object - // NOTE: We could write a Rule to do this - // - retract($opTimer); - // - // Complete the operation - // - modify($manager) {finishOperation($operation)}; - } else { - // - // Just doing this will kick off the LOCKED rule again - // - modify($operation) {}; - } - } else { - // - // Its not finished yet (i.e. expecting more Response objects) - // - // Or possibly it is a leftover response that we timed the request out previously - // - } - // - // We are going to retract these objects from memory - // - retract($response); -end - -/* -* -* The problem with Responses is that they don't have a controlLoopControlName -* field in them, so the only way to attach them is via RequestID. If we have multiple -* control loop .drl's loaded in the same container, we need to be sure the cleanup -* rules don't remove Responses for other control loops. -* -*/ -rule "${policyName}.APPC.RESPONSE.CLEANUP" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $response : Response($id : getCommonHeader().RequestID ) - not ( ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - // - // Retract it - // - retract($response); -end -/* -* -* This is the timer that manages the timeout for an individual operation. -* -*/ -rule "${policyName}.EVENT.MANAGER.OPERATION.TIMEOUT" - timer (expr: $to ) - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) - $opTimer : OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString(), $to : getDelay() ) - $lock : TargetLock (requestID == $event.requestID) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($operation); - Logger.metrics($opTimer); - Logger.metrics($lock); - // - // Tell it its timed out - // - $operation.setOperationHasTimedOut(); - // - // Create a notification for it - // - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - notification.notification = ControlLoopNotificationType.OPERATION_FAILURE; - notification.message = $operation.getOperationHistory(); - notification.history = $operation.getHistory(); - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Get rid of the timer - // - retract($opTimer); - // - // Ensure the operation is complete - // - if ($operation.isOperationComplete() == true) { - // - // It is complete, remove it from memory - // - retract($operation); - // - // Complete the operation - // - modify($manager) {finishOperation($operation)}; - } else { - // - // Just doing this will kick off the LOCKED rule again - // - modify($operation) {}; - } -end - -/* -* -* This is the timer that manages the overall control loop timeout. -* -*/ -rule "${policyName}.EVENT.MANAGER.TIMEOUT" - timer (expr: $to ) - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $clTimer : ControlLoopTimer ( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString(), $to : getDelay() ) - $operations : LinkedList() - from collect( ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) ) - $opTimers : LinkedList() - from collect( OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) ) - $locks : LinkedList() - from collect( TargetLock (requestID == $event.requestID) ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($clTimer); - if ($operations == null) { - Logger.info("no operations found"); - } else { - Logger.info("found " + $operations.size() + " operations"); - } - // - // Tell the Event Manager it has timed out - // - VirtualControlLoopNotification notification = $manager.setControlLoopTimedOut(); - if (notification != null) { - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - } - // - // Retract EVERYTHING - // - retract($event); - retract($manager); - retract($clTimer); - if ($operations != null && $operations.size() > 0) { - Iterator iter = $operations.iterator(); - while (iter.hasNext()) { - ControlLoopOperationManager manager = iter.next(); - retract(manager); - } - } - if ($opTimers != null && $opTimers.size() > 0) { - Iterator iter = $opTimers.iterator(); - while (iter.hasNext()) { - OperationTimer opTimer = iter.next(); - retract(opTimer); - } - } - if ($locks != null && $locks.size() > 0) { - Iterator iter = $locks.iterator(); - while (iter.hasNext()) { - TargetLock lock = iter.next(); - // - // Ensure we release the lock - // - PolicyGuard.unlockTarget(lock); - // - // - // - retract(lock); - } - } -end diff --git a/controlloop/templates/template.demo/src/main/resources/old/ControlLoop_Template_1707_xacml_guard_enodeb.drl b/controlloop/templates/template.demo/src/main/resources/old/ControlLoop_Template_1707_xacml_guard_enodeb.drl deleted file mode 100644 index b4f160951..000000000 --- a/controlloop/templates/template.demo/src/main/resources/old/ControlLoop_Template_1707_xacml_guard_enodeb.drl +++ /dev/null @@ -1,952 +0,0 @@ -/* - * AT&T - PROPRIETARY - * THIS FILE CONTAINS PROPRIETARY INFORMATION OF - * AT&T AND IS NOT TO BE DISCLOSED OR USED EXCEPT IN - * ACCORDANCE WITH APPLICABLE AGREEMENTS. - * - * Copyright (c) 2016 AT&T Knowledge Ventures - * Unpublished and Not for Publication - * All Rights Reserved - */ -package com.att.ecomp.policy.controlloop; - -import com.att.ecomp.policy.controlloop.ATTControlLoopEvent; -import org.openecomp.policy.controlloop.VirtualControlLoopEvent; -import org.openecomp.policy.controlloop.VirtualControlLoopNotification; -import org.openecomp.policy.controlloop.ControlLoopEventStatus; -import com.att.ecomp.policy.controlloop.ATTControlLoopNotification; -import org.openecomp.policy.controlloop.ControlLoopNotificationType; -import com.att.ecomp.policy.controlloop.ControlLoopLogger; -import com.att.ecomp.policy.controlloop.policy.PolicyResult; -import com.att.ecomp.policy.controlloop.eventmanager.ControlLoopEventManager; -import com.att.ecomp.policy.controlloop.eventmanager.ControlLoopEventManager.NEW_EVENT_STATUS; -import com.att.ecomp.policy.controlloop.eventmanager.ControlLoopOperationManager; -import org.openecomp.policy.appc.Request; -import org.openecomp.policy.appc.Response; -import org.openecomp.policy.appc.CommonHeader; -import com.att.ecomp.policy.guard.PolicyGuard; -import com.att.ecomp.policy.guard.PolicyGuard.LockResult; -import com.att.ecomp.policy.guard.TargetLock; -import com.att.ecomp.policy.guard.GuardResult; -import com.att.ecomp.policy.guard.PolicyGuardRequest; -import com.att.ecomp.policy.guard.PolicyGuardResponse; -import com.att.ecomp.policy.guard.PolicyGuardXacmlRequestAttributes; -import com.att.research.xacml.api.pdp.PDPEngine; -import com.att.research.xacml.std.annotations.RequestParser; -import com.att.ecomp.policy.guard.PolicyGuardXacmlHelper; -import com.att.ecomp.policy.controlloop.policy.ControlLoopPolicy; -import com.att.ecomp.policy.controlloop.policy.Policy; -import java.net.URLDecoder; -import org.eclipse.persistence.exceptions.DatabaseException; - -// -// REPLACE THESE WITH PRODUCTION VERSIONS -// -import com.att.ecomp.policy.controlloop.ControlLoopLogger; -import com.att.ecomp.policy.drools.PolicyEngine; -import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.constructor.Constructor; - -global ControlLoopLogger Logger; -global PolicyEngine Engine; -global PDPEngine XacmlPdpEngine; - -import java.time.Instant; -import java.util.LinkedList; -import java.util.Iterator; - -declare Params - closedLoopControlName : String - controlLoopYaml : String -end - -declare EnbParams - enbOperationsPeriodicTimer : String -end - - -declare OperationTimer - closedLoopControlName : String - requestID : String - delay : String -end - -declare ControlLoopTimer - closedLoopControlName : String - requestID : String - delay : String -end - - -/* -* -* Called once and only once to insert the parameters into working memory for this Closed Loop policy. -* -*/ -rule "${policyName}.SETUP" - when - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Params params = new Params(); - params.setClosedLoopControlName("${closedLoopControlName}"); - params.setControlLoopYaml("${controlLoopYaml}"); - insert(params); - Logger.metrics("Inserted " + params); - Logger.info("------------------------------------------------------------------------------------------------"); - EnbParams enbParams = new EnbParams(); - - // - //Fetching the eNodeB timer from the Yaml - // - Yaml yaml = new Yaml(new Constructor(ControlLoopPolicy.class)); - Object obj = yaml.load(URLDecoder.decode(params.getControlLoopYaml(), "UTF-8")); - - enbParams.setEnbOperationsPeriodicTimer("0s"); - for(Policy policy : ((ControlLoopPolicy)obj).policies){ - if(policy.actor.equals("APPC")){ - if(policy.payload != null){ - if(policy.payload.containsKey("enbOperationPeriodicTimer")){ - enbParams.setEnbOperationsPeriodicTimer(policy.payload.get("enbOperationPeriodicTimer")); - } - } - break; - } - } - insert(enbParams); - System.out.println("################ got timer: " + enbParams.getEnbOperationsPeriodicTimer()); - -end - -/* -* -* This rule responds to DCAE Events where there is no manager yet. Either it is -* the first ONSET, or a subsequent badly formed Event (i.e. Syntax error, or is-closed-loop-disabled) -* -*/ -rule "${policyName}.EVENT" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - not ( ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) ) - then - try { - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - // - // Check the event, because we need it to not be null when - // we create the ControlLoopEventManager. The ControlLoopEventManager - // will do extra syntax checking as well check if the closed loop is disabled. - // - if ($event.requestID == null) { - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.REJECTED; - notification.from = "policy"; - notification.message = "Missing requestID"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Retract it from memory - // - retract($event); - } else { - // - // Create an EventManager - // - ControlLoopEventManager manager = new ControlLoopEventManager($params.getClosedLoopControlName(), $event.requestID); - // - // Determine if EventManager can actively process the event (i.e. syntax, is_closed_loop_disabled checks etc.) - // - VirtualControlLoopNotification notification = manager.activate($params.getControlLoopYaml(), $event); - notification.from = "pdp-0001-controller=controlloop"; // Engine.getInstanceName() - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // Are we actively pursuing this event? - // - if (notification.notification == ControlLoopNotificationType.ACTIVE) { - // - // Insert Event Manager into memory, this will now kick off processing. - // - insert(manager); - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Setup the Overall Control Loop timer - // - ControlLoopTimer clTimer = new ControlLoopTimer(); - clTimer.setClosedLoopControlName($event.closedLoopControlName); - clTimer.setRequestID($event.requestID.toString()); - clTimer.setDelay(manager.getControlLoopTimeout(1500) + "s"); - // - // Insert it - // - insert(clTimer); - } else { - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Retract it from memory - // - retract($event); - } - // - // Now that the manager is inserted into Drools working memory, we'll wait for - // another rule to fire in order to continue processing. This way we can also - // then screen for additional ONSET and ABATED events for this RequestID. - // - } - } catch (Exception e) { - e.printStackTrace(); - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.REJECTED; - notification.message = "Exception occurred " + e.getMessage(); - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Retract the event - // - retract($event); - } -end - -/* -* -* This rule happens when we got a valid ONSET, closed loop is enabled and an Event Manager -* is now created. We can start processing the yaml specification via the Event Manager. -* -*/ -rule "${policyName}.EVENT.MANAGER" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $clTimer : ControlLoopTimer ( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($event); - Logger.metrics($manager); - Logger.metrics($clTimer); - // - // Check which event this is. - // - ControlLoopEventManager.NEW_EVENT_STATUS eventStatus = $manager.onNewEvent($event); - Logger.info("Event status is " + eventStatus); - // - // Check what kind of event this is - // - if (eventStatus == NEW_EVENT_STATUS.SUBSEQUENT_ONSET) { - // - // We don't care about subsequent onsets - // - Logger.info("Retracting Subsequent Onset " + $event); - retract($event); - return; - } - if (eventStatus == NEW_EVENT_STATUS.SYNTAX_ERROR) { - // - // Ignore any bad syntax events - // - Logger.info("Retracting Bad Syntax Event " + $event); - retract($event); - return; - } - // - // We only want the initial ONSET event in memory, - // all the other events need to be retracted to support - // cleanup and avoid the other rules being fired for this event. - // - if (eventStatus != NEW_EVENT_STATUS.FIRST_ONSET) { - Logger.info("Retracting Event " + $event); - retract($event); - } - Logger.info("Checking due to new event " + $event.triggerID); - // - // Now start seeing if we need to process this event - // - try { - // - // Check if this is a Final Event - // - ATTControlLoopNotification notification = $manager.isControlLoopFinal(); - - - if (notification != null) { - // - // Its final, but are we waiting for abatement? - // - if ($manager.getNumAbatements() > 0) { - Logger.info("Abatement received, close out the control loop for " + $event.requestID); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // In this case, we are done - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Unlock the target - // - TargetLock lock = $manager.unlockCurrentOperation(); - if (lock != null) { - System.out.println("retracting lock " + lock); - retract(lock); - } - // - // Retract everything from memory - // - System.out.println("retracting onset"); - retract($manager.getOnsetEvent()); - retract($manager); - retract($clTimer); - // - // TODO - what if we get subsequent Events for this RequestID? - // By default, it will all start over again. May be confusing for Ruby. - // Or, we could track this and then subsequently ignore the events - // - } else { - // - // Check whether we need to wait for abatement - // - if ($manager.getProcessor().getControlLoop().abatement == true && notification.notification == ControlLoopNotificationType.FINAL_SUCCESS) { - Logger.info("Waiting for abatement."); - } else { - Logger.info("No abatement is promised to come, close out the control loop for " + $event.requestID); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // In this case, we are done - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Unlock the target - // - TargetLock lock = $manager.unlockCurrentOperation(); - if (lock != null) { - System.out.println("retracting lock " + lock); - retract(lock); - } - // - // Retract everything from memory - // - System.out.println("retracting onset"); - retract($manager.getOnsetEvent()); - retract($manager); - retract($clTimer); - } - } - } else { - // - // NOT final, so let's ask for the next operation - // - ControlLoopOperationManager operation = $manager.processControlLoop(); - if (operation != null) { - Logger.info("starting a new operation" + operation); - // - // insert into memory - // - insert(operation); - // - // insert operation timeout object - // - OperationTimer opTimer = new OperationTimer(); - opTimer.setClosedLoopControlName($event.closedLoopControlName); - opTimer.setRequestID($event.requestID.toString()); - opTimer.setDelay(operation.getOperationTimeout().toString() + "s"); - insert(opTimer); - - // - // Let's ask for a lock right away - // - LockResult result = $manager.lockCurrentOperation(); - if (result.getA().equals(GuardResult.LOCK_ACQUIRED)) { - Logger.info("manager returned lock " + result.getB()); - // - // Insert into memory - // - insert(result.getB()); - } - } else { - // - // Probably waiting for abatement - // - } - } - } catch (Exception e) { - e.printStackTrace(); - /* - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.REJECTED; - notification.from = "policy"; - notification.message = "Exception occurred " + e.getMessage(); - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // TODO should we abort if we get an exception? - // - */ - } - -end - -/* -* -* -* -*/ -rule "${policyName}.PERIODIC_CHECK_OF_PENDING_ENB_OPERATIONS" - timer (expr: "0s", $t) - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $enbParams : EnbParams($t : getEnbOperationsPeriodicTimer()) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $operations : LinkedList(size() > 0) - from collect( ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName) ) - - then - System.out.println(drools.getRule().getName() + " ********** operations size: " + $operations.size()); - //System.out.println(drools.getRule().getName()); - //The limt of 5 should also be defined in Yaml. -end - - -/* -* -* -* -*/ -rule "${policyName}.EVENT.MANAGER.OPERATION.NOT_LOCKED.TIMEOUT" - timer (int: 5s 5s) - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) - not ( TargetLock (requestID == $event.requestID) ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($operation); - // - // Need to ask for a Lock - // - LockResult result = $manager.lockCurrentOperation(); - if (result.getA().equals(GuardResult.LOCK_ACQUIRED)) { - Logger.info("Lock acquired: " + result.getB()); - // - // Insert into memory - // - insert(result.getB()); - } -end - -/* -* -* Guard Permitted, let's send request to the actor. -* -*/ -rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_PERMITTED" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID, getGuardApprovalStatus() == "Permit" ) - $lock : TargetLock (requestID == $event.requestID) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($operation); - Logger.metrics($lock); - - - Object request = $operation.getOperationRequest(); - - if (request != null) { - Logger.info("Starting operation"); - // - // Tell interested parties we are performing this Operation - // - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.OPERATION; - notification.message = $operation.getOperationMessage(); - notification.history = $operation.getHistory(); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - - switch ($operation.policy.actor){ - - case "APPC": - - if (request instanceof Request) { - Engine.deliver("UEB", "APPC-CL", request); - } - case "SDNR": - default: - } - - - } else { - // - // What happens if its null? - // - } -end - - -/* -* -* We were able to acquire a lock so now let's ask Xacml Guard whether we are allowed to proceed with the request to the actor. -* -*/ -rule "${policyName}.EVENT.MANAGER.OPERATION.LOCKED.GUARD_NOT_YET_QUERIED" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID, getGuardApprovalStatus() == "NONE" ) - $lock : TargetLock (requestID == $event.requestID) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($operation); - Logger.metrics($lock); - - - - - // - // We are starting the operation but the actor won't be contacted until Guard is queried and permitted. - // - $operation.startOperation($event); - - // - // Sending notification that we are about to query Guard ("DB write - start operation") - // - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.OPERATION; - notification.message = $operation.getOperationMessage(); - notification.history = $operation.getHistory(); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - - // - // Now send Guard Request to XACML Guard. In order to bypass the call to Guard, just change guardEnabled to false. - // - // In order to use REST XACML, provide a URL instead of "" as a second argument o the CallGuardTask() and set the first - // argument to null (instead of XacmlPdpEngine). - // - boolean guardEnabled = true; - - if(guardEnabled){ - - Thread t = new Thread(new com.att.ecomp.policy.guard.CallGuardTask( - XacmlPdpEngine, - "", - drools.getWorkingMemory(), - $operation.policy.actor.toString(), - $operation.policy.recipe, - $event.target, - $event.requestID.toString() - )); - t.start(); - } - else{ - insert(new PolicyGuardResponse("Permit", $event.requestID, $operation.policy.recipe)); - } - - - - -end - -// -//This rule will be triggered when a thread talking to the XACML Guard inserts a guardResponse object into the working memory -// -rule "${policyName}.GUARD.RESPONSE" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) - $lock : TargetLock (requestID == $event.requestID) - $opTimer : OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) - $guardResponse : PolicyGuardResponse(requestID == $event.requestID, $operation.policy.recipe == operation) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($event); - Logger.metrics($operation); - Logger.metrics($lock); - Logger.metrics($guardResponse); - - - //we will permit the operation if there was no Guard for it - if($guardResponse.result == "Indeterminate"){ - $guardResponse.result = "Permit"; - } - - // - // This notification has Guard result in "message". ("DB write - end operation in case of Guard Deny") - // - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.notification = ControlLoopNotificationType.OPERATION; - notification.message = $operation.getOperationMessage($guardResponse.result); - notification.history = $operation.getHistory(); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - - - - if($guardResponse.result == "Permit"){ - - modify($operation){setGuardApprovalStatus($guardResponse.result)}; - } - else { - //This is the Deny case - $operation.setOperationHasGuardDeny(); - retract($opTimer); - retract($operation); - modify($manager) {finishOperation($operation)}; - } - - retract($guardResponse); - -end - - - - -/* -* -* This rule responds to APPC Response Events -* -* I would have like to be consistent and write the Response like this: -* $response : Response( CommonHeader.RequestID == $onset.requestID ) -* -* However, no compile error was given. But a runtime error was given. I think -* because drools is confused between the classname CommonHeader vs the property CommonHeader. -* -*/ -rule "${policyName}.APPC.RESPONSE" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), closedLoopEventStatus == ControlLoopEventStatus.ONSET ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) - $opTimer : OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) - $lock : TargetLock (requestID == $event.requestID) - $response : Response( getCommonHeader().RequestID == $event.requestID ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($event); - Logger.metrics($manager); - Logger.metrics($operation); - Logger.metrics($opTimer); - Logger.metrics($lock); - Logger.metrics($response); - // - // Get the result of the operation - // - PolicyResult policyResult = $operation.onResponse($response); - if (policyResult != null) { - Logger.info("operation finished with result: " + policyResult); - // - // This Operation has completed, construct a notification showing our results. (DB write - end operation) - // - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - notification.message = $operation.getOperationHistory(); - notification.history = $operation.getHistory(); - if (policyResult.equals(PolicyResult.SUCCESS)) { - notification.notification = ControlLoopNotificationType.OPERATION_SUCCESS; - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - } else { - notification.notification = ControlLoopNotificationType.OPERATION_FAILURE; - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - } - // - // Ensure the operation is complete - // - if ($operation.isOperationComplete() == true) { - // - // It is complete, remove it from memory - // - retract($operation); - // - // We must also retract the timer object - // NOTE: We could write a Rule to do this - // - retract($opTimer); - // - // Complete the operation - // - modify($manager) {finishOperation($operation)}; - } else { - // - // Just doing this will kick off the LOCKED rule again - // - modify($operation) {}; - } - } else { - // - // Its not finished yet (i.e. expecting more Response objects) - // - // Or possibly it is a leftover response that we timed the request out previously - // - } - // - // We are going to retract these objects from memory - // - retract($response); -end - -/* -* -* The problem with Responses is that they don't have a controlLoopControlName -* field in them, so the only way to attach them is via RequestID. If we have multiple -* control loop .drl's loaded in the same container, we need to be sure the cleanup -* rules don't remove Responses for other control loops. -* -*/ -rule "${policyName}.APPC.RESPONSE.CLEANUP" - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $response : Response($id : getCommonHeader().RequestID ) - not ( ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName(), requestID == $id, closedLoopEventStatus == ControlLoopEventStatus.ONSET ) ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - // - // Retract it - // - retract($response); -end -/* -* -* This is the timer that manages the timeout for an individual operation. -* -*/ -rule "${policyName}.EVENT.MANAGER.OPERATION.TIMEOUT" - timer (expr: $to ) - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $operation : ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) - $opTimer : OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString(), $to : getDelay() ) - $lock : TargetLock (requestID == $event.requestID) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($operation); - Logger.metrics($opTimer); - Logger.metrics($lock); - // - // Tell it its timed out - // - $operation.setOperationHasTimedOut(); - // - // Create a notification for it ("DB Write - end operation") - // - ATTControlLoopNotification notification = new ATTControlLoopNotification($event); - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - notification.notification = ControlLoopNotificationType.OPERATION_FAILURE; - notification.message = $operation.getOperationHistory(); - notification.history = $operation.getHistory(); - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - // - // Get rid of the timer - // - retract($opTimer); - // - // Ensure the operation is complete - // - if ($operation.isOperationComplete() == true) { - // - // It is complete, remove it from memory - // - retract($operation); - // - // Complete the operation - // - modify($manager) {finishOperation($operation)}; - } else { - // - // Just doing this will kick off the LOCKED rule again - // - modify($operation) {}; - } -end - -/* -* -* This is the timer that manages the overall control loop timeout. -* -*/ -rule "${policyName}.EVENT.MANAGER.TIMEOUT" - timer (expr: $to ) - when - $params : Params( getClosedLoopControlName() == "${closedLoopControlName}" ) - $event : ATTControlLoopEvent( closedLoopControlName == $params.getClosedLoopControlName() ) - $manager : ControlLoopEventManager( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID ) - $clTimer : ControlLoopTimer ( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString(), $to : getDelay() ) - $operations : LinkedList() - from collect( ControlLoopOperationManager( onset.closedLoopControlName == $event.closedLoopControlName, onset.requestID == $event.requestID ) ) - $opTimers : LinkedList() - from collect( OperationTimer( closedLoopControlName == $event.closedLoopControlName, requestID == $event.requestID.toString() ) ) - $locks : LinkedList() - from collect( TargetLock (requestID == $event.requestID) ) - then - // - // Logging - // - Logger.info("------------------------------------------------------------------------------------------------"); - Logger.metrics(Instant.now() + " " + drools.getRule().getName() + " " + drools.getRule().getPackage()); - Logger.metrics($params); - Logger.metrics($manager); - Logger.metrics($clTimer); - if ($operations == null) { - Logger.info("no operations found"); - } else { - Logger.info("found " + $operations.size() + " operations"); - } - // - // Tell the Event Manager it has timed out - // - VirtualControlLoopNotification notification = $manager.setControlLoopTimedOut(); - if (notification != null) { - notification.from = "policy"; - notification.policyName = drools.getRule().getName(); - notification.policyScope = "${policyScope}"; - notification.policyVersion = "${policyVersion}"; - // - // Let interested parties know - // - Engine.deliver("UEB", "POLICY-CL-MGT", notification); - } - // - // Retract EVERYTHING - // - retract($event); - retract($manager); - retract($clTimer); - if ($operations != null && $operations.size() > 0) { - Iterator iter = $operations.iterator(); - while (iter.hasNext()) { - ControlLoopOperationManager manager = iter.next(); - retract(manager); - } - } - if ($opTimers != null && $opTimers.size() > 0) { - Iterator iter = $opTimers.iterator(); - while (iter.hasNext()) { - OperationTimer opTimer = iter.next(); - retract(opTimer); - } - } - if ($locks != null && $locks.size() > 0) { - Iterator iter = $locks.iterator(); - while (iter.hasNext()) { - TargetLock lock = iter.next(); - // - // Ensure we release the lock - // - PolicyGuard.unlockTarget(lock); - // - // - // - retract(lock); - } - } -end diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_1.xml b/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_1.xml deleted file mode 100644 index 1a70d0468..000000000 --- a/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_1.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - Policy for frequency limiter. - - - - - APPC - - - - Restart - - - - - - - PERMIT - only if number of operations performed in the past is less than the limit. - - - - - - - - - - - 1 - - - - DENY - default. - - - diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_2.xml b/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_2.xml deleted file mode 100644 index e7e34feeb..000000000 --- a/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_2.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - Policy for frequency limiter. - - - - - APPC - - - - Restart - - - - - - - PERMIT - only if number of operations performed in the past is less than the limit. - - - - - - - - - - - - - - - PT10M - - - - - - 22 - - - - - - - - DENY - default. - - - - diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_3.xml b/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_3.xml deleted file mode 100644 index c171968d2..000000000 --- a/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_3.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - Policy for frequency limiter. - - - - - APPC - - - - Restart - - - - - - - PERMIT - only if number of operations performed in the past is less than the limit. - - - - - - - - - - - 1 - - - - DENY - default. - - - diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_4.xml b/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_4.xml deleted file mode 100644 index 53e83d9cd..000000000 --- a/controlloop/templates/template.demo/src/test/resources/xacml/old/frequency_limiter_4.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - Policy for frequency limiter. - - - - - APPC - - - - Restart - - - - - - - PERMIT - only if number of operations performed in the past is less than the limit. - - - - - - - - - - - - - - - 05:00:00-05:00 - 23:59:59-05:00 - - - - - - - - - 1 - - - - DENY - default. - - - diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml.properties b/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml.properties deleted file mode 100644 index e51f038e9..000000000 --- a/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml.properties +++ /dev/null @@ -1,119 +0,0 @@ -# -# -# This is test set that tests configurable SQL PIP engine. It uses sample data from MySQL world database -# -# http://dev.mysql.com/doc/world-setup/en/index.html -# -# The Policy was created using the PAP Admin Tool. -# -# - -# -# Default XACML Properties File -# Standard API Factories -# -xacml.dataTypeFactory=com.att.research.xacml.std.StdDataTypeFactory -xacml.pdpEngineFactory=com.att.research.xacmlatt.pdp.ATTPDPEngineFactory -xacml.pepEngineFactory=com.att.research.xacml.std.pep.StdEngineFactory -xacml.pipFinderFactory=com.att.research.xacml.std.pip.StdPIPFinderFactory -xacml.traceEngineFactory=com.att.research.xacml.std.trace.LoggingTraceEngineFactory -# -# AT&T PDP Implementation Factories -# -xacml.att.evaluationContextFactory=com.att.research.xacmlatt.pdp.std.StdEvaluationContextFactory -xacml.att.combiningAlgorithmFactory=com.att.research.xacmlatt.pdp.std.StdCombiningAlgorithmFactory -xacml.att.functionDefinitionFactory=com.att.research.xacmlatt.pdp.std.StdFunctionDefinitionFactory -xacml.att.policyFinderFactory=com.att.research.xacmlatt.pdp.std.StdPolicyFinderFactory - -# -# NOTE: If you are testing against a RESTful PDP, then the PDP must be configured with the -# policies and PIP configuration as defined below. Otherwise, this is the configuration that -# the embedded PDP uses. -# - -# Policies to load -# -xacml.rootPolicies=sql -sql.file=src/test/resources/xacml/frequency_limiter_1.xml - -# PIP Engine Definition -# -xacml.pip.engines=sql1 - -sql1.classname=com.att.research.xacml.std.pip.engines.jdbc.JDBCEngine -sql1.name=World -sql1.description=World Database from MySQL website. Copyright Statistics Finland, http://www.stat.fi/worldinfigures. -# This will be the default issuer for the resolvers. NOTE: Issuer only used for attributes provided by the engine. -sql1.issuer=com:att:research:xacml:test:sql -# -# This is the configuration for JDBC. You will have to setup the database and run the data\world*.sql script to -# create the tables and load the data. -# -sql1.type=jdbc - -# Postgres DB -#sql1.jdbc.driver=org.postgresql.Driver -#sql1.jdbc.url=jdbc:postgresql://localhost:7778/postgres -#sql1.jdbc.conn.user=postgres -#sql1.jdbc.conn.password= - -# MariaDB -sql1.jdbc.driver=org.mariadb.jdbc.Driver -sql1.jdbc.url=jdbc:mariadb://localhost:7779/policy -sql1.jdbc.conn.user=root -sql1.jdbc.conn.password=lmpg - -# -# This is the configuration for JNDI datasource. -# -#sql1.type=jndi -#sql1.datasource=jdbc/xacml - -sql1.resolvers=langer - -sql1.resolver.langer.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.langer.name=Language -sql1.resolver.langer.description=This returns the number of previous operations within the given time window - -# Query for Postgres DB -#sql1.resolver.langer.select=select count(*) from operationshistory where actor=? and operation=? and target=? and endtime between now()::timestamp with time zone - (interval '1000000000s') and now()::timestamp with time zone - -# Query for MariaDB -#sql1.resolver.langer.select=select count(*) as count from operationshistory where actor=? and operation=? and target=? and convert_tz(endtime,@@session.time_zone,'-05:00') between date_sub(convert_tz(now(),@@session.time_zone,'-05:00'),interval 100 hour) and convert_tz(now(),@@session.time_zone,'-05:00') -sql1.resolver.langer.select=select count(*) as count from operationshistory9 where actor=? and operation=? and target=? and endtime between date_sub(now(),interval 100 hour) and now() - -sql1.resolver.langer.fields=count -sql1.resolver.langer.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.langer.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.langer.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - -#You can override the default issuer that is set in the JDBCEngine definition if you want. -#sql1.resolver.langer.field.language.issuer=com:att:research:xacml:test:sql -sql1.resolver.langer.parameters=actor,operation,target - -sql1.resolver.langer.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.langer.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.langer.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject - -sql1.resolver.langer.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.langer.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.langer.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action - -sql1.resolver.langer.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.langer.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.langer.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - -# -# These properties are for an attribute generator to build into requests. -# -xacml.attribute.generator=generate_subjectid - -xacml.attribute.generator.generate_subjectid.file=generate.data -xacml.attribute.generator.generate_subjectid.attributes=city - -xacml.attribute.generator.generate_subjectid.attributes.city.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -xacml.attribute.generator.generate_subjectid.attributes.city.datatype=http://www.w3.org/2001/XMLSchema#string -xacml.attribute.generator.generate_subjectid.attributes.city.id=urn:oasis:names:tc:xacml:1.0:resource:resource-id -xacml.attribute.generator.generate_subjectid.attributes.city.field=0 - diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml2.properties b/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml2.properties deleted file mode 100644 index 2d1276b51..000000000 --- a/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml2.properties +++ /dev/null @@ -1,120 +0,0 @@ -# -# -# This is test set that tests configurable SQL PIP engine. It uses sample data from MySQL world database -# -# http://dev.mysql.com/doc/world-setup/en/index.html -# -# The Policy was created using the PAP Admin Tool. -# -# - -# -# Default XACML Properties File -# Standard API Factories -# -xacml.dataTypeFactory=com.att.research.xacml.std.StdDataTypeFactory -xacml.pdpEngineFactory=com.att.research.xacmlatt.pdp.ATTPDPEngineFactory -xacml.pepEngineFactory=com.att.research.xacml.std.pep.StdEngineFactory -xacml.pipFinderFactory=com.att.research.xacml.std.pip.StdPIPFinderFactory -xacml.traceEngineFactory=com.att.research.xacml.std.trace.LoggingTraceEngineFactory -# -# AT&T PDP Implementation Factories -# -xacml.att.evaluationContextFactory=com.att.research.xacmlatt.pdp.std.StdEvaluationContextFactory -xacml.att.combiningAlgorithmFactory=com.att.research.xacmlatt.pdp.std.StdCombiningAlgorithmFactory -xacml.att.functionDefinitionFactory=com.att.research.xacmlatt.pdp.std.StdFunctionDefinitionFactory -xacml.att.policyFinderFactory=com.att.research.xacmlatt.pdp.std.StdPolicyFinderFactory - -# -# NOTE: If you are testing against a RESTful PDP, then the PDP must be configured with the -# policies and PIP configuration as defined below. Otherwise, this is the configuration that -# the embedded PDP uses. -# - -# Policies to load -# -xacml.rootPolicies=sql -sql.file=src/test/resources/xacml/frequency_limiter_2.xml - -# PIP Engine Definition -# -xacml.pip.engines=sql1 - -sql1.classname=com.att.research.xacml.std.pip.engines.jdbc.JDBCEngine -sql1.name=World -sql1.description=World Database from MySQL website. Copyright Statistics Finland, http://www.stat.fi/worldinfigures. -# This will be the default issuer for the resolvers. NOTE: Issuer only used for attributes provided by the engine. -sql1.issuer=com:att:research:xacml:test:sql -# -# This is the configuration for JDBC. You will have to setup the database and run the data\world*.sql script to -# create the tables and load the data. -# -sql1.type=jdbc - -# Postgres DB -#sql1.jdbc.driver=org.postgresql.Driver -#sql1.jdbc.url=jdbc:postgresql://localhost:7778/postgres -#sql1.jdbc.conn.user=postgres -#sql1.jdbc.conn.password= - -# MariaDB -sql1.jdbc.driver=org.mariadb.jdbc.Driver -sql1.jdbc.url=jdbc:mariadb://localhost:7779/policy -sql1.jdbc.conn.user=root -sql1.jdbc.conn.password=lmpg - -# -# This is the configuration for JNDI datasource. -# -#sql1.type=jndi -#sql1.datasource=jdbc/xacml - -sql1.resolvers=langer - -sql1.resolver.langer.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.langer.name=Language -sql1.resolver.langer.description=This returns the number of previous operations within the given time window - -# Query for Postgres DB -#sql1.resolver.langer.select=select count(*) from operationshistory where actor=? and operation=? and target=? and endtime between now()::timestamp with time zone - (interval '1000000000s') and now()::timestamp with time zone - -# Query for MariaDB -#sql1.resolver.langer.select=select count(*) as count from operationshistory where actor=? and operation=? and target=? and convert_tz(endtime,@@session.time_zone,'-05:00') between date_sub(convert_tz(now(),@@session.time_zone,'-05:00'),interval 100 hour) and convert_tz(now(),@@session.time_zone,'-05:00') -sql1.resolver.langer.select=select starttime as starttimebag from operationshistory9 where actor=? and operation=? and target=? and endtime between date_sub(now(),interval 100 hour) and now() - -#sql1.resolver.langer.fields=count -sql1.resolver.langer.fields=starttimebag -sql1.resolver.langer.field.starttimebag.id=com:att:research:xacml:test:sql:resource:operations:starttimebag -sql1.resolver.langer.field.starttimebag.datatype=http://www.w3.org/2001/XMLSchema#dateTime -sql1.resolver.langer.field.starttimebag.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - -#You can override the default issuer that is set in the JDBCEngine definition if you want. -#sql1.resolver.langer.field.language.issuer=com:att:research:xacml:test:sql -sql1.resolver.langer.parameters=actor,operation,target - -sql1.resolver.langer.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.langer.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.langer.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject - -sql1.resolver.langer.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.langer.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.langer.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action - -sql1.resolver.langer.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.langer.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.langer.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - -# -# These properties are for an attribute generator to build into requests. -# -xacml.attribute.generator=generate_subjectid - -xacml.attribute.generator.generate_subjectid.file=generate.data -xacml.attribute.generator.generate_subjectid.attributes=city - -xacml.attribute.generator.generate_subjectid.attributes.city.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -xacml.attribute.generator.generate_subjectid.attributes.city.datatype=http://www.w3.org/2001/XMLSchema#string -xacml.attribute.generator.generate_subjectid.attributes.city.id=urn:oasis:names:tc:xacml:1.0:resource:resource-id -xacml.attribute.generator.generate_subjectid.attributes.city.field=0 - diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml3.properties b/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml3.properties deleted file mode 100644 index a3e6f2f44..000000000 --- a/controlloop/templates/template.demo/src/test/resources/xacml/old/xacml3.properties +++ /dev/null @@ -1,123 +0,0 @@ -# -# -# This is test set that tests configurable SQL PIP engine. It uses sample data from MySQL world database -# -# http://dev.mysql.com/doc/world-setup/en/index.html -# -# The Policy was created using the PAP Admin Tool. -# -# - -# -# Default XACML Properties File -# Standard API Factories -# -xacml.dataTypeFactory=com.att.research.xacml.std.StdDataTypeFactory -xacml.pdpEngineFactory=com.att.research.xacmlatt.pdp.ATTPDPEngineFactory -xacml.pepEngineFactory=com.att.research.xacml.std.pep.StdEngineFactory -xacml.pipFinderFactory=com.att.research.xacml.std.pip.StdPIPFinderFactory -xacml.traceEngineFactory=com.att.research.xacml.std.trace.LoggingTraceEngineFactory -# -# AT&T PDP Implementation Factories -# -xacml.att.evaluationContextFactory=com.att.research.xacmlatt.pdp.std.StdEvaluationContextFactory -xacml.att.combiningAlgorithmFactory=com.att.research.xacmlatt.pdp.std.StdCombiningAlgorithmFactory -xacml.att.functionDefinitionFactory=com.att.research.xacmlatt.pdp.std.StdFunctionDefinitionFactory -xacml.att.policyFinderFactory=com.att.research.xacmlatt.pdp.std.StdPolicyFinderFactory - -# -# NOTE: If you are testing against a RESTful PDP, then the PDP must be configured with the -# policies and PIP configuration as defined below. Otherwise, this is the configuration that -# the embedded PDP uses. -# - -# Policies to load -# -xacml.rootPolicies=sql -sql.file=src/test/resources/xacml/frequency_limiter_3.xml - -# PIP Engine Definition -# -xacml.pip.engines=sql1 - -sql1.classname=com.att.research.xacml.std.pip.engines.jdbc.JDBCEngine -sql1.name=OperationsHistory -sql1.description=Database of operations performed via closed loop. -sql1.issuer=com:att:research:xacml:test:sql123 -sql1.type=jdbc -sql1.jdbc.driver=org.mariadb.jdbc.Driver -sql1.jdbc.url=jdbc:mariadb://localhost:7779/policy -sql1.jdbc.conn.user=root -sql1.jdbc.conn.password=lmpg - -#Each of the following resolvers corresponds to a specific time window. The only difference between them is the "interval" in the "select" SQL query and the "issuer". -sql1.resolvers=tw10min,tw1h,tw100h - -############################################## -sql1.resolver.tw10min.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 10 minute) and now() -sql1.resolver.tw10min.field.count.issuer=com:att:research:xacml:test:sql:tw10min - -sql1.resolver.tw10min.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw10min.name=OperationsCount -sql1.resolver.tw10min.description=This returns the number of previous operations within the given time window -sql1.resolver.tw10min.fields=count -sql1.resolver.tw10min.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw10min.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw10min.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw10min.parameters=actor,operation,target -sql1.resolver.tw10min.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw10min.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw10min.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw10min.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw10min.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw10min.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw10min.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw10min.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw10min.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - -############################################## -sql1.resolver.tw1h.select=select count(*) as count from operationshistory10 where actor=? and operation=? and target=? and endtime between date_sub(now(),interval 1 hour) and now() -sql1.resolver.tw1h.field.count.issuer=com:att:research:xacml:test:sql:tw1h - -sql1.resolver.tw1h.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw1h.name=OperationsCount -sql1.resolver.tw1h.description=This returns the number of previous operations within the given time window -sql1.resolver.tw1h.fields=count -sql1.resolver.tw1h.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw1h.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw1h.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw1h.parameters=actor,operation,target -sql1.resolver.tw1h.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw1h.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1h.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw1h.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw1h.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1h.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw1h.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw1h.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1h.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - -############################# -sql1.resolver.tw100h.select=select count(*) as count from operationshistory10 where actor=? and operation=? and target=? and endtime between date_sub(now(),interval 100 hour) and now() -sql1.resolver.tw100h.field.count.issuer=com:att:research:xacml:test:sql:tw100h - -sql1.resolver.tw100h.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw100h.name=OperationsCount -sql1.resolver.tw100h.description=This returns the number of previous operations within the given time window -sql1.resolver.tw100h.fields=count -sql1.resolver.tw100h.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw100h.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw100h.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw100h.parameters=actor,operation,target -sql1.resolver.tw100h.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw100h.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw100h.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw100h.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw100h.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw100h.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw100h.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw100h.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw100h.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - diff --git a/controlloop/templates/template.demo/src/test/resources/xacml/xacml_guard_old.properties b/controlloop/templates/template.demo/src/test/resources/xacml/xacml_guard_old.properties deleted file mode 100644 index 82ae09f85..000000000 --- a/controlloop/templates/template.demo/src/test/resources/xacml/xacml_guard_old.properties +++ /dev/null @@ -1,277 +0,0 @@ -# -# -# This files defines PIPs that will be used by XACML Guard Policies. One PIP per time window (5 min, 10min,...,1 month). -# -# -# - -# -# Default XACML Properties File -# Standard API Factories -# -xacml.dataTypeFactory=com.att.research.xacml.std.StdDataTypeFactory -xacml.pdpEngineFactory=com.att.research.xacmlatt.pdp.ATTPDPEngineFactory -xacml.pepEngineFactory=com.att.research.xacml.std.pep.StdEngineFactory -xacml.pipFinderFactory=com.att.research.xacml.std.pip.StdPIPFinderFactory -xacml.traceEngineFactory=com.att.research.xacml.std.trace.LoggingTraceEngineFactory -# -# AT&T PDP Implementation Factories -# -xacml.att.evaluationContextFactory=com.att.research.xacmlatt.pdp.std.StdEvaluationContextFactory -xacml.att.combiningAlgorithmFactory=com.att.research.xacmlatt.pdp.std.StdCombiningAlgorithmFactory -xacml.att.functionDefinitionFactory=com.att.research.xacmlatt.pdp.std.StdFunctionDefinitionFactory -xacml.att.policyFinderFactory=com.att.research.xacmlatt.pdp.std.StdPolicyFinderFactory - - -# -# NOTE: If you are testing against a RESTful PDP, then the PDP must be configured with the -# policies and PIP configuration as defined below. Otherwise, this is the configuration that -# the embedded PDP uses. -# - -# In case we have multiple applicable Guard policies, we will deny if any of them denies. -#xacml.att.policyFinderFactory.combineRootPolicies=urn:com:att:xacml:3.0:policy-combining-algorithm:combined-deny-overrides -xacml.att.policyFinderFactory.combineRootPolicies=urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-unless-deny - - -# Policies to load -# -xacml.rootPolicies=p1,p2,p3,p4 -p1.file=src/test/resources/xacml/autogenerated_frequency_limiter_restart.xml -p2.file=src/test/resources/xacml/autogenerated_frequency_limiter_rebuild.xml -p3.file=src/test/resources/xacml/autogenerated_frequency_limiter_migrate.xml -p4.file=src/test/resources/xacml/autogenerated_frequency_limiter_rebuild_1.xml -#p5.file=src/test/resources/xacml/autogenerated_blacklist.xml -#p6.file=src/test/resources/xacml/new_restart1.xml -#p7.file=src/test/resources/xacml/new_restart2.xml -#p8.file=src/test/resources/xacml/new_rebuild1.xml -#p9.file=src/test/resources/xacml/new_rebuild2.xml -#p10.file=src/test/resources/xacml/new_migrate1.xml -#p11.file=src/test/resources/xacml/new_migrate2.xml - -# PIP Engine Definition -# -xacml.pip.engines=sql1,test1 -test1.classname=com.att.ecomp.policy.guard.PIPEngineGetHistory -test1.issuer=com:att:research:xacml:guard:historydb - - -sql1.classname=com.att.research.xacml.std.pip.engines.jdbc.JDBCEngine -sql1.name=OperationsHistory -sql1.description=Database of operations performed via closed loop. -sql1.issuer=com:att:research:xacml:test:sql123 -sql1.type=jdbc -sql1.jdbc.driver=org.mariadb.jdbc.Driver -#sql1.jdbc.url=jdbc:mariadb://localhost:7779/policy -sql1.jdbc.url=jdbc:mariadb://localhost:3306/policy -sql1.jdbc.conn.user=root -sql1.jdbc.conn.password=lmpg - -#Each of the following resolvers corresponds to a specific time window. The only difference between them is the "interval" in the "select" SQL query and the "issuer". -sql1.resolvers=tw5min,tw10min,tw30min,tw1h,tw12h,tw1d,tw5d,tw1w,tw1mon - - - -############################################## -sql1.resolver.tw5min.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 5 minute) and now() -sql1.resolver.tw5min.field.count.issuer=com:att:research:xacml:test:sql:tw5min - -sql1.resolver.tw5min.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw5min.name=OperationsCount -sql1.resolver.tw5min.description=This returns the number of previous operations within the given time window -sql1.resolver.tw5min.fields=count -sql1.resolver.tw5min.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw5min.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw5min.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw5min.parameters=actor,operation,target -sql1.resolver.tw5min.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw5min.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw5min.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw5min.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw5min.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw5min.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw5min.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw5min.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw5min.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - -############################################## -sql1.resolver.tw10min.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 10 minute) and now() -sql1.resolver.tw10min.field.count.issuer=com:att:research:xacml:test:sql:tw10min - -sql1.resolver.tw10min.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw10min.name=OperationsCount -sql1.resolver.tw10min.description=This returns the number of previous operations within the given time window -sql1.resolver.tw10min.fields=count -sql1.resolver.tw10min.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw10min.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw10min.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw10min.parameters=actor,operation,target -sql1.resolver.tw10min.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw10min.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw10min.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw10min.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw10min.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw10min.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw10min.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw10min.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw10min.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - -############################################## -sql1.resolver.tw30min.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 30 minute) and now() -sql1.resolver.tw30min.field.count.issuer=com:att:research:xacml:test:sql:tw30min - -sql1.resolver.tw30min.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw30min.name=OperationsCount -sql1.resolver.tw30min.description=This returns the number of previous operations within the given time window -sql1.resolver.tw30min.fields=count -sql1.resolver.tw30min.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw30min.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw30min.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw30min.parameters=actor,operation,target -sql1.resolver.tw30min.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw30min.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw30min.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw30min.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw30min.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw30min.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw30min.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw30min.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw30min.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - -############################################## -sql1.resolver.tw1h.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 1 hour) and now() -sql1.resolver.tw1h.field.count.issuer=com:att:research:xacml:test:sql:tw1h - -sql1.resolver.tw1h.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw1h.name=OperationsCount -sql1.resolver.tw1h.description=This returns the number of previous operations within the given time window -sql1.resolver.tw1h.fields=count -sql1.resolver.tw1h.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw1h.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw1h.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw1h.parameters=actor,operation,target -sql1.resolver.tw1h.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw1h.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1h.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw1h.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw1h.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1h.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw1h.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw1h.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1h.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - -############################################## -sql1.resolver.tw12h.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 12 hour) and now() -sql1.resolver.tw12h.field.count.issuer=com:att:research:xacml:test:sql:tw12h - -sql1.resolver.tw12h.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw12h.name=OperationsCount -sql1.resolver.tw12h.description=This returns the number of previous operations within the given time window -sql1.resolver.tw12h.fields=count -sql1.resolver.tw12h.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw12h.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw12h.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw12h.parameters=actor,operation,target -sql1.resolver.tw12h.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw12h.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw12h.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw12h.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw12h.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw12h.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw12h.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw12h.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw12h.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - -############################# -sql1.resolver.tw1d.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 1 day) and now() -sql1.resolver.tw1d.field.count.issuer=com:att:research:xacml:test:sql:tw1d - -sql1.resolver.tw1d.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw1d.name=OperationsCount -sql1.resolver.tw1d.description=This returns the number of previous operations within the given time window -sql1.resolver.tw1d.fields=count -sql1.resolver.tw1d.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw1d.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw1d.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw1d.parameters=actor,operation,target -sql1.resolver.tw1d.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw1d.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1d.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw1d.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw1d.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1d.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw1d.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw1d.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1d.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - -############################# -sql1.resolver.tw5d.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 5 day) and now() -sql1.resolver.tw5d.field.count.issuer=com:att:research:xacml:test:sql:tw5d - -sql1.resolver.tw5d.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw5d.name=OperationsCount -sql1.resolver.tw5d.description=This returns the number of previous operations within the given time window -sql1.resolver.tw5d.fields=count -sql1.resolver.tw5d.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw5d.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw5d.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw5d.parameters=actor,operation,target -sql1.resolver.tw5d.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw5d.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw5d.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw5d.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw5d.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw5d.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw5d.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw5d.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw5d.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - -############################# -sql1.resolver.tw1w.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 1 week) and now() -sql1.resolver.tw1w.field.count.issuer=com:att:research:xacml:test:sql:tw1w - -sql1.resolver.tw1w.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw1w.name=OperationsCount -sql1.resolver.tw1w.description=This returns the number of previous operations within the given time window -sql1.resolver.tw1w.fields=count -sql1.resolver.tw1w.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw1w.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw1w.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw1w.parameters=actor,operation,target -sql1.resolver.tw1w.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw1w.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1w.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw1w.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw1w.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1w.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw1w.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw1w.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1w.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - -############################# -sql1.resolver.tw1mon.select=select count(*) as count from operationshistory10 where outcome<>'Failure_Guard' and actor=? and operation=? and target=? and endtime between date_sub(now(),interval 1 month) and now() -sql1.resolver.tw1mon.field.count.issuer=com:att:research:xacml:test:sql:tw1mon - -sql1.resolver.tw1mon.classname=com.att.research.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver -sql1.resolver.tw1mon.name=OperationsCount -sql1.resolver.tw1mon.description=This returns the number of previous operations within the given time window -sql1.resolver.tw1mon.fields=count -sql1.resolver.tw1mon.field.count.id=com:att:research:xacml:test:sql:resource:operations:count -sql1.resolver.tw1mon.field.count.datatype=http://www.w3.org/2001/XMLSchema#integer -sql1.resolver.tw1mon.field.count.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource -sql1.resolver.tw1mon.parameters=actor,operation,target -sql1.resolver.tw1mon.parameter.actor.id=urn:oasis:names:tc:xacml:1.0:actor:actor-id -sql1.resolver.tw1mon.parameter.actor.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1mon.parameter.actor.category=urn:oasis:names:tc:xacml:1.0:subject-category:access-subject -sql1.resolver.tw1mon.parameter.operation.id=urn:oasis:names:tc:xacml:1.0:operation:operation-id -sql1.resolver.tw1mon.parameter.operation.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1mon.parameter.operation.category=urn:oasis:names:tc:xacml:3.0:attribute-category:action -sql1.resolver.tw1mon.parameter.target.id=urn:oasis:names:tc:xacml:1.0:target:target-id -sql1.resolver.tw1mon.parameter.target.datatype=http://www.w3.org/2001/XMLSchema#string -sql1.resolver.tw1mon.parameter.target.category=urn:oasis:names:tc:xacml:3.0:attribute-category:resource - - -- cgit 1.2.3-korg