diff options
Diffstat (limited to 'applications/monitoring/src/test')
15 files changed, 678 insertions, 20 deletions
diff --git a/applications/monitoring/src/test/java/cucumber/Stepdefs.java b/applications/monitoring/src/test/java/cucumber/Stepdefs.java index 6915afdb..ca5efa46 100644 --- a/applications/monitoring/src/test/java/cucumber/Stepdefs.java +++ b/applications/monitoring/src/test/java/cucumber/Stepdefs.java @@ -22,27 +22,204 @@ package cucumber; +import com.att.research.xacml.std.annotations.XACMLAction; +import com.att.research.xacml.std.annotations.XACMLRequest; +import com.att.research.xacml.std.annotations.XACMLResource; +import com.att.research.xacml.std.annotations.XACMLSubject; + import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; +import org.junit.ClassRule; +import org.junit.rules.TemporaryFolder; + public class Stepdefs { - @Given("TCA Policy is loaded") - public void tca_Policy_is_loaded() { - // Write code here that turns the phrase above into concrete actions - throw new cucumber.api.PendingException(); + /* + + private static final Logger logger = LoggerFactory.getLogger(Stepdefs.class); + + public static OnapXacmlPdpEngine onapPdpEngine; + public static Properties properties; + public static Map<String, Object> tcaPolicy; + public static Request request; + public static File pathProperties; + public static File pathRootPolicy; + + /** + * Temporary folder where we will store newly created policies. + */ + @ClassRule + public TemporaryFolder policyFolder = new TemporaryFolder(); + + /** + * This is a simple annotation class to simulate + * requests coming in. + */ + @XACMLRequest(ReturnPolicyIdList = true) + public class MyXacmlRequest { + + @XACMLSubject(includeInResults = true) + String onapName = "DCAE"; + + @XACMLResource(includeInResults = true) + String resource = "onap.policies.Monitoring"; + + @XACMLAction() + String action = "configure"; + } + + /** + * Initialization. + */ + @Given("Initialization") + public void initialization() { + /* + // + // Everything initializes upon startup + // + assertThatCode(() -> { + // + // Assume XACML REST Controller loads PDP engine + // + onapPdpEngine = new OnapXacmlPdpEngine(); + // + // Come up with defaults + // + File path = Paths.get("src/test/resources").toFile(); + /* + // try (InputStream is = new FileInputStream("src/test/resources/xacml.properties")) { + // properties = new Properties(); + // properties.load(is); + // onapPdpEngine.initializeEngine(properties); +// } + onapPdpEngine.initialize(path.toPath()); + // + // Store the properties in new path + // + // JUNIT IS CRASHING - THE TEMP FOLDER NOT CREATED --> + //pathProperties = policyFolder.newFile("xacml.properties"); + // + // Store the root policies + // + for (String rootPolicyId : XACMLProperties.getRootPolicyIDs(properties)) { + logger.debug("Root policy id: " + rootPolicyId); + } + + }).doesNotThrowAnyException(); + */ + } + + /** + * Initialization. + */ + @When("Decision Requested") + public void decision_Requested() { + /* + // + // Simulate a request coming in from Xacml REST server + // + assertThatCode(() -> { + request = RequestParser.parseRequest(new MyXacmlRequest()); + }).doesNotThrowAnyException(); + */ + } + + /** + * Initialization. + */ + @Then("Decision Permit {int} Obligations") + public void decision_Permit_Obligations(Integer int1) { + /* + Response response = onapPdpEngine.decision(request); + for (Result result : response.getResults()) { + logger.debug(result.getDecision().toString()); + assertEquals(Decision.PERMIT, result.getDecision()); + assertThat(result.getObligations().size()).isEqualTo(int1); + } + */ + } + + /** + * Initialization. + */ + @When("The application gets new Tosca Policy") + public void the_application_gets_new_Tosca_Policy() { + /* + // + // The Xacml PDP REST controller Would receive this from the PAP + // + // And then parse it looking for Policy Types + // + assertThatCode(() -> { + try (InputStream is = new FileInputStream("src/test/resources/vDNS.policy.input.yaml")) { + Yaml yaml = new Yaml(); + tcaPolicy = yaml.load(is); + // + // Do we test iterating and determining if supported? + // + + } + }).doesNotThrowAnyException(); + */ } - @When("A Decision Request is received") - public void a_Decision_Request_is_received() { - // Write code here that turns the phrase above into concrete actions - throw new cucumber.api.PendingException(); + /** + * Initialization. + */ + @Then("Load Policy") + public void load_Policy() { + /* + assertThatCode(() -> { + // + // Load the policies + // + List<PolicyType> convertedPolicies = onapPdpEngine.convertPolicies(tcaPolicy); + // + // Store these in temporary folder + // + int id = 1; + List<Path> newReferencedPolicies = new ArrayList<>(); + for (PolicyType convertedPolicy : convertedPolicies) { + // + // I don't think we should use the policy id as the filename - there could + // possibly be duplicates. eg. Not guaranteed to be unique. + // + File file = policyFolder.newFile("policy." + id + convertedPolicy.getPolicyId() + ".xml"); + logger.info("Creating Policy {}", file.getAbsolutePath()); + Path path = XACMLPolicyWriter.writePolicyFile(file.toPath(), convertedPolicy); + // + // Add it to our list + // + newReferencedPolicies.add(path); + } + // + // Now updated the properties + // + Path[] args = new Path[newReferencedPolicies.size()]; + newReferencedPolicies.toArray(args); + XACMLProperties.setXacmlReferencedProperties(properties, args); + // + // Reload the PDP engine + // + onapPdpEngine.initializeEngine(properties); + }).doesNotThrowAnyException(); + */ } - @Then("I should return TCA Policy as JSON") - public void i_should_return_TCA_Policy_as_JSON() { - // Write code here that turns the phrase above into concrete actions - throw new cucumber.api.PendingException(); + /** + * Initialization. + */ + @Then("Save Configuration") + public void save_Configuration() { + /* + assertThatCode(() -> { + // + // Save the configuration + // + onapPdpEngine.storeXacmlProperties(pathProperties.getAbsolutePath()); + }).doesNotThrowAnyException(); + */ } -} +}
\ No newline at end of file diff --git a/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/engine/OnapXacmlPdpEngineTest.java b/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/engine/OnapXacmlPdpEngineTest.java new file mode 100644 index 00000000..940a974b --- /dev/null +++ b/applications/monitoring/src/test/java/org/onap/policy/xacml/pdp/engine/OnapXacmlPdpEngineTest.java @@ -0,0 +1,296 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.xacml.pdp.engine; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.junit.Assert.assertEquals; + +import com.att.research.xacml.api.Decision; +import com.att.research.xacml.api.Response; +import com.att.research.xacml.api.Result; +import com.att.research.xacml.std.annotations.RequestParser; +import com.att.research.xacml.std.annotations.XACMLAction; +import com.att.research.xacml.std.annotations.XACMLRequest; +import com.att.research.xacml.std.annotations.XACMLResource; +import com.att.research.xacml.std.annotations.XACMLSubject; +import com.att.research.xacml.util.XACMLProperties; +import com.google.common.io.Files; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.ServiceLoader; + +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.onap.policy.pdp.xacml.application.common.ToscaPolicyConversionException; +import org.onap.policy.pdp.xacml.application.common.XacmlApplicationServiceProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.Yaml; + +public class OnapXacmlPdpEngineTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(OnapXacmlPdpEngineTest.class); + private static OnapXacmlPdpEngine onapPdpEngine; + private static Properties properties = new Properties(); + private static File propertiesFile; + + @ClassRule + public static final TemporaryFolder policyFolder = new TemporaryFolder(); + + /** + * This is a simple annotation class to simulate + * requests coming in. + */ + @XACMLRequest(ReturnPolicyIdList = true) + public class MyXacmlRequest { + + @XACMLSubject(includeInResults = true) + String onapName = "DCAE"; + + @XACMLResource(includeInResults = true) + String resource = "onap.policies.Monitoring"; + + @XACMLAction() + String action = "configure"; + } + + /** + * Load a test engine. + */ + @BeforeClass + public static void setup() { + assertThatCode(() -> { + // + // Copy all the properties and root policies to the temporary folder + // + try (InputStream is = new FileInputStream("src/test/resources/xacml.properties")) { + // + // Load it in + // + properties.load(is); + propertiesFile = policyFolder.newFile("xacml.properties"); + // + // Copy the root policies + // + for (String root : XACMLProperties.getRootPolicyIDs(properties)) { + // + // Get a file + // + Path rootPath = Paths.get(properties.getProperty(root + ".file")); + LOGGER.debug("Root file {} {}", rootPath, rootPath.getFileName()); + // + // Construct new file name + // + File newRootPath = policyFolder.newFile(rootPath.getFileName().toString()); + // + // Copy it + // + Files.copy(rootPath.toFile(), newRootPath); + assertThat(newRootPath).exists(); + // + // Point to where the new policy is in the temp dir + // + properties.setProperty(root + ".file", newRootPath.getAbsolutePath()); + } + try (OutputStream os = new FileOutputStream(propertiesFile.getAbsolutePath())) { + properties.store(os, ""); + assertThat(propertiesFile).exists(); + } + } + // + // Load service + // + ServiceLoader<XacmlApplicationServiceProvider> applicationLoader = + ServiceLoader.load(XacmlApplicationServiceProvider.class); + // + // Iterate through them - I could store the object as + // XacmlApplicationServiceProvider pointer. + // + // Try this later. + // + StringBuilder strDump = new StringBuilder("Loaded applications:" + System.lineSeparator()); + Iterator<XacmlApplicationServiceProvider> iterator = applicationLoader.iterator(); + while (iterator.hasNext()) { + XacmlApplicationServiceProvider application = iterator.next(); + strDump.append(application.applicationName()); + strDump.append(" supports "); + strDump.append(application.supportedPolicyTypes()); + strDump.append(System.lineSeparator()); + } + LOGGER.debug("{}", strDump); + // + // Create the engine instance + // + onapPdpEngine = new OnapXacmlPdpEngine(); + // + // Tell it to initialize based on the properties file + // we just built for it. + // + onapPdpEngine.initialize(propertiesFile.toPath().getParent()); + // + // Make sure there's an application name + // + assertThat(onapPdpEngine.applicationName()).isNotEmpty(); + // + // Ensure it has the supported policy types and + // can support the correct policy types. + // + assertThat(onapPdpEngine.canSupportPolicyType("onap.Monitoring", "1.0.0")).isTrue(); + assertThat(onapPdpEngine.canSupportPolicyType("onap.Monitoring", "1.5.0")).isTrue(); + assertThat(onapPdpEngine.canSupportPolicyType("onap.policies.monitoring.foobar", "1.0.1")).isTrue(); + assertThat(onapPdpEngine.canSupportPolicyType("onap.foobar", "1.0.0")).isFalse(); + assertThat(onapPdpEngine.supportedPolicyTypes()).contains("onap.Monitoring"); + // + // Ensure it supports decisions + // + assertThat(onapPdpEngine.actionDecisionsSupported()).contains("configure"); + }).doesNotThrowAnyException(); + } + + @Test + public void testNoPolicies() { + // + // Make a simple decision - NO policies are loaded + // + assertThatCode(() -> { + Response response = onapPdpEngine.decision(RequestParser.parseRequest(new MyXacmlRequest())); + for (Result result : response.getResults()) { + LOGGER.info("Decision {}", result.getDecision()); + assertEquals(Decision.PERMIT, result.getDecision()); + } + }).doesNotThrowAnyException(); + } + + @SuppressWarnings("unchecked") + @Test + public void testvDnsPolicy() { + // + // Now load the vDNS Policy - make sure + // the pdp can support it and have it load + // into the PDP. + // + assertThatCode(() -> { + try (InputStream is = new FileInputStream("src/test/resources/vDNS.policy.input.yaml")) { + Yaml yaml = new Yaml(); + Map<String, Object> toscaObject = yaml.load(is); + List<Object> policies = (List<Object>) toscaObject.get("policies"); + // + // What we should really do is split the policies out from the ones that + // are not supported to ones that are. And then load these. + // + // In another future review.... + // + for (Object policyObject : policies) { + // + // Get the contents + // + Map<String, Object> policyContents = (Map<String, Object>) policyObject; + for (Entry<String, Object> entrySet : policyContents.entrySet()) { + LOGGER.info("Entry set {}", entrySet.getKey()); + Map<String, Object> policyDefinition = (Map<String, Object>) entrySet.getValue(); + // + // Find the type and make sure the engine supports it + // + assertThat(policyDefinition.containsKey("type")).isTrue(); + assertThat(onapPdpEngine.canSupportPolicyType( + policyDefinition.get("type").toString(), + policyDefinition.get("version").toString())) + .isTrue(); + } + } + // + // Just go ahead and load them all for now + // + // Assuming all are supported etc. + // + onapPdpEngine.loadPolicies(toscaObject); + + //List<PolicyType> policies = onapPdpEngine.convertPolicies(is); + // + // Should have a policy + //// assertThat(policies.isEmpty()).isFalse(); + } + }).doesNotThrowAnyException(); + } + + @Test + public void testBadPolicies() { + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> { + try (InputStream is = + new FileInputStream("src/test/resources/test.monitoring.policy.missingmetadata.yaml")) { + onapPdpEngine.convertPolicies(is); + } + }).withMessageContaining("missing metadata section"); + + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> { + try (InputStream is = + new FileInputStream("src/test/resources/test.monitoring.policy.missingtype.yaml")) { + onapPdpEngine.convertPolicies(is); + } + }).withMessageContaining("missing type value"); + + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> { + try (InputStream is = + new FileInputStream("src/test/resources/test.monitoring.policy.missingversion.yaml")) { + onapPdpEngine.convertPolicies(is); + } + }).withMessageContaining("missing version value"); + + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> { + try (InputStream is = + new FileInputStream("src/test/resources/test.monitoring.policy.badmetadata.1.yaml")) { + onapPdpEngine.convertPolicies(is); + } + }).withMessageContaining("missing metadata policy-version"); + + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> { + try (InputStream is = + new FileInputStream("src/test/resources/test.monitoring.policy.badmetadata.2.yaml")) { + onapPdpEngine.convertPolicies(is); + } + }).withMessageContaining("missing metadata policy-id"); + + assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() -> { + try (InputStream is = + new FileInputStream("src/test/resources/test.monitoring.policy.missingproperties.yaml")) { + onapPdpEngine.convertPolicies(is); + } + }).withMessageContaining("missing properties section"); + } + +} diff --git a/applications/monitoring/src/test/resources/cucumber/decisions.feature b/applications/monitoring/src/test/resources/cucumber/decisions.feature index a23d965b..6a573d3c 100644 --- a/applications/monitoring/src/test/resources/cucumber/decisions.feature +++ b/applications/monitoring/src/test/resources/cucumber/decisions.feature @@ -18,10 +18,10 @@ # # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= -Feature: Return a decision - Return a decision for a request - - Scenario: Return policy as a JSON - Given TCA Policy is loaded - When A Decision Request is received - Then I should return TCA Policy as JSON
\ No newline at end of file +#Feature: Return a decision +# Return a decision for a request +# +# Scenario: Return policy as a JSON +# Given TCA Policy is loaded +# When A Decision Request is received +# Then I should return TCA Policy as JSON
\ No newline at end of file diff --git a/applications/monitoring/src/test/resources/cucumber/load_policy.feature b/applications/monitoring/src/test/resources/cucumber/load_policy.feature new file mode 100644 index 00000000..9651ca91 --- /dev/null +++ b/applications/monitoring/src/test/resources/cucumber/load_policy.feature @@ -0,0 +1,35 @@ +# +# ============LICENSE_START======================================================= +# ONAP +# ================================================================================ +# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +Feature: Loading TOSCA Policies + When a TOSCA Policy is received, convert it + to a XACML policy and then load it into the XACML PDP engine. + + Scenario: No Policies Loaded + Given Initialization + When Decision Requested + Then Decision Permit 0 Obligations + + Scenario: Load New Policy + Given Initialization + When The application gets new Tosca Policy + Then Load Policy + And Save Configuration diff --git a/applications/monitoring/src/test/resources/test.monitoring.policy.badmetadata.1.yaml b/applications/monitoring/src/test/resources/test.monitoring.policy.badmetadata.1.yaml new file mode 100644 index 00000000..a2631848 --- /dev/null +++ b/applications/monitoring/src/test/resources/test.monitoring.policy.badmetadata.1.yaml @@ -0,0 +1,10 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policies: + - + test.monitoring.policy.badmetadata.1: + type: onap.policies.monitoring.cdap.tca.hi.lo.app + version: 1.0.0 + metadata: + policy-id: test.monitoring.policy.badmetadata.1 + properties: + domain: measurementsForVfScaling diff --git a/applications/monitoring/src/test/resources/test.monitoring.policy.badmetadata.2.yaml b/applications/monitoring/src/test/resources/test.monitoring.policy.badmetadata.2.yaml new file mode 100644 index 00000000..7da2db38 --- /dev/null +++ b/applications/monitoring/src/test/resources/test.monitoring.policy.badmetadata.2.yaml @@ -0,0 +1,10 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policies: + - + onap.scaleout.tca: + type: onap.policies.monitoring.cdap.tca.hi.lo.app + version: 1.0.0 + metadata: + policy-version: 1 + properties: + domain: measurementsForVfScaling diff --git a/applications/monitoring/src/test/resources/test.monitoring.policy.missingmetadata.yaml b/applications/monitoring/src/test/resources/test.monitoring.policy.missingmetadata.yaml new file mode 100644 index 00000000..4984a1c3 --- /dev/null +++ b/applications/monitoring/src/test/resources/test.monitoring.policy.missingmetadata.yaml @@ -0,0 +1,9 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policies: + - + onap.scaleout.tca: + type: onap.policies.monitoring.test + description: I am a test policy + version: 1.0.0 + properties: + domain: measurementsForVfScaling diff --git a/applications/monitoring/src/test/resources/test.monitoring.policy.missingproperties.yaml b/applications/monitoring/src/test/resources/test.monitoring.policy.missingproperties.yaml new file mode 100644 index 00000000..d4132a28 --- /dev/null +++ b/applications/monitoring/src/test/resources/test.monitoring.policy.missingproperties.yaml @@ -0,0 +1,9 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policies: + - + onap.scaleout.tca: + type: onap.policies.monitoring.cdap.tca.hi.lo.app + version: 1.0.0 + metadata: + policy-id: onap.scaleout.tca + policy-version: 1 diff --git a/applications/monitoring/src/test/resources/test.monitoring.policy.missingtype.yaml b/applications/monitoring/src/test/resources/test.monitoring.policy.missingtype.yaml new file mode 100644 index 00000000..309d08c5 --- /dev/null +++ b/applications/monitoring/src/test/resources/test.monitoring.policy.missingtype.yaml @@ -0,0 +1,11 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policies: + - + onap.scaleout.tca: + description: I am a test policy + version: 1.0.0 + metadata: + policy-id: onap.scaleout.tca + policy-version: 10 + properties: + domain: measurementsForVfScaling diff --git a/applications/monitoring/src/test/resources/test.monitoring.policy.missingversion.yaml b/applications/monitoring/src/test/resources/test.monitoring.policy.missingversion.yaml new file mode 100644 index 00000000..ff378d92 --- /dev/null +++ b/applications/monitoring/src/test/resources/test.monitoring.policy.missingversion.yaml @@ -0,0 +1,11 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policies: + - + onap.scaleout.tca: + type: onap.policies.monitoring.test + description: I am a test policy + metadata: + policy-id: onap.scaleout.tca + policy-version: 10 + properties: + domain: measurementsForVfScaling diff --git a/applications/monitoring/src/test/resources/unsupportedpolicytype.yaml b/applications/monitoring/src/test/resources/unsupportedpolicytype.yaml new file mode 100644 index 00000000..0a895b38 --- /dev/null +++ b/applications/monitoring/src/test/resources/unsupportedpolicytype.yaml @@ -0,0 +1,11 @@ +tosca_definitions_version: tosca_simple_yaml_1_0_0 +policies: + - + policy.name: + type: foo.bar + version: 1.0.0 + metadata: + policy-id: policy.name + policy-version: 1 + properties: + prop1: value1 diff --git a/applications/monitoring/src/test/resources/vDNS.policy.decision.payload.json b/applications/monitoring/src/test/resources/vDNS.policy.decision.payload.json new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/applications/monitoring/src/test/resources/vDNS.policy.decision.payload.json diff --git a/applications/monitoring/src/test/resources/vDNS.policy.input.yaml b/applications/monitoring/src/test/resources/vDNS.policy.input.yaml index ee149381..ee12c702 100644 --- a/applications/monitoring/src/test/resources/vDNS.policy.input.yaml +++ b/applications/monitoring/src/test/resources/vDNS.policy.input.yaml @@ -6,6 +6,7 @@ policies: version: 1.0.0 metadata: policy-id: onap.scaleout.tca + policy-version: 1 properties: domain: measurementsForVfScaling metricsPerEventName: diff --git a/applications/monitoring/src/test/resources/vDNS.policy.xml b/applications/monitoring/src/test/resources/vDNS.policy.xml new file mode 100644 index 00000000..14ad4603 --- /dev/null +++ b/applications/monitoring/src/test/resources/vDNS.policy.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="onap.scaleout.tca" Version="1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-unless-permit"> + <Description>The root policy for supporting in-memory onap.Monitoring policy-type policies.</Description> + <Target> + <AnyOf> + <AllOf> + <!-- Exact policy-id value --> + <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> + <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">onap.scaleout.tca</AttributeValue> + <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/> + </Match> + </AllOf> + <AllOf> + <!-- Regular expression match on policy id --> + <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp"> + <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">onap.scaleout.tca</AttributeValue> + <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/> + </Match> + </AllOf> + <AllOf> + <!-- Exact policy-type value --> + <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> + <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">onap.policies.monitoring.cdap.tca.hi.lo.app</AttributeValue> + <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/> + </Match> + </AllOf> + <AllOf> + <!-- Regular expression match on policy-type --> + <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp"> + <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">onap.policies.monitoring.cdap.tca.hi.lo.app</AttributeValue> + <AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/> + </Match> + </AllOf> + </AnyOf> + </Target> + <Rule RuleId="urn:org:onap:xacml:rule:id:74caee98-bd05-4bb5-917c-a26ef80bb0f4" Effect="Permit"> + <Description>Default is Permit</Description> + <!-- + + Add JSON as Obligation + + --> + </Rule> +</Policy> diff --git a/applications/monitoring/src/test/resources/xacml.properties b/applications/monitoring/src/test/resources/xacml.properties new file mode 100644 index 00000000..9b5330dc --- /dev/null +++ b/applications/monitoring/src/test/resources/xacml.properties @@ -0,0 +1,34 @@ +# +# Properties that the embedded PDP engine uses to configure and load +# +# 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 +# +# ONAP PDP Implementation Factories +# +xacml.att.policyFinderFactory=org.onap.policy.pdp.xacml.application.common.OnapPolicyFinderFactory + +# +# 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. +# + +policytypes=onap.Monitoring, onap.policies.monitoring.cdap.tca.hi.lo.app + +# Policies to load +# +xacml.rootPolicies=monitoring +monitoring.file=src/main/resources/RootMonitoringPolicy.xml + |