Merge "Point to parent SNAPSHOT"
authorRam Krishna Verma <ram_krishna.verma@bell.ca>
Thu, 28 May 2020 20:15:01 +0000 (20:15 +0000)
committerGerrit Code Review <gerrit@onap.org>
Thu, 28 May 2020 20:15:01 +0000 (20:15 +0000)
30 files changed:
applications/common/pom.xml
applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/operationshistory/Dbao.java
applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/operationshistory/GetOperationOutcomePip.java
applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/operationshistory/GetOperationOutcomePipTest.java
applications/guard/pom.xml
applications/guard/src/main/resources/coordination/function/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.xml
applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/CoordinationTest.java [deleted file]
applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/SonCoordinationTest.java
applications/guard/src/test/resources/requests/coordination.cl.1.node.1.json [deleted file]
applications/guard/src/test/resources/requests/coordination.cl.1.node.2.json [deleted file]
applications/guard/src/test/resources/requests/coordination.cl.2.node.1.json [deleted file]
applications/guard/src/test/resources/requests/coordination.cl.2.node.2.json [deleted file]
applications/guard/src/test/resources/test.policy.guard.coordination.firstBlocksSecond.tosca.yaml [deleted file]
applications/monitoring/pom.xml
applications/naming/pom.xml
applications/native/pom.xml
applications/optimization/pom.xml
applications/pom.xml
main/pom.xml
packages/policy-xacmlpdp-docker/pom.xml
packages/policy-xacmlpdp-tarball/pom.xml
packages/policy-xacmlpdp-tarball/src/main/resources/mysql/sql/createguardtable.sql
packages/pom.xml
pom.xml
releases/2.2.2-container.yaml [new file with mode: 0644]
testsuites/performance/pom.xml
testsuites/pom.xml
testsuites/stability/pom.xml
version.properties
xacml-test/pom.xml

index 09d097a..2d29ded 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp.applications</groupId>
         <artifactId>applications</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>common</artifactId>
index 2b70c9b..b4ee559 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP
  * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019-2020 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.
@@ -24,17 +24,18 @@ package org.onap.policy.pdp.xacml.application.common.operationshistory;
 
 import java.io.Serializable;
 import java.util.Date;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
+import javax.persistence.Index;
 import javax.persistence.Table;
-
 import lombok.Data;
 
 @Entity
-@Table(name = "operationshistory")
+@Table(name = "operationshistory",
+                indexes = {@Index(name = "operationshistory_clreqid_index", columnList = "closedLoopName,requestId"),
+                                @Index(name = "operationshistory_target_index", columnList = "target,operation,actor")})
 @Data
 public class Dbao implements Serializable {
 
index fb018b0..60e26a2 100644 (file)
@@ -28,13 +28,13 @@ import com.att.research.xacml.std.pip.StdPIPResponse;
 import com.google.common.base.Strings;
 import java.util.Arrays;
 import java.util.Collection;
+
 import javax.persistence.NoResultException;
 import org.onap.policy.pdp.xacml.application.common.ToscaDictionary;
 import org.onap.policy.pdp.xacml.application.common.std.StdOnapPip;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 public class GetOperationOutcomePip extends StdOnapPip {
     public static final String ISSUER_NAME = "get-operation-outcome";
     private static Logger logger = LoggerFactory.getLogger(GetOperationOutcomePip.class);
@@ -57,12 +57,13 @@ public class GetOperationOutcomePip extends StdOnapPip {
      * @return PIPResponse
      */
     @Override
-    public PIPResponse getAttributes(PIPRequest pipRequest, PIPFinder pipFinder) throws PIPException {
+    public PIPResponse getAttributes(PIPRequest pipRequest, PIPFinder pipFinder)
+        throws PIPException {
         if (this.shutdown) {
             throw new PIPException("Engine is shutdown");
         }
         logger.debug("getAttributes requesting attribute {} of type {} for issuer {}",
-                pipRequest.getAttributeId(), pipRequest.getDataTypeId(), pipRequest.getIssuer());
+            pipRequest.getAttributeId(), pipRequest.getDataTypeId(), pipRequest.getIssuer());
         //
         // Determine if the issuer is correct
         //
@@ -73,7 +74,7 @@ public class GetOperationOutcomePip extends StdOnapPip {
             //
             return StdPIPResponse.PIP_RESPONSE_EMPTY;
         }
-        if (! pipRequest.getIssuer().startsWith(ToscaDictionary.GUARD_ISSUER_PREFIX)) {
+        if (!pipRequest.getIssuer().startsWith(ToscaDictionary.GUARD_ISSUER_PREFIX)) {
             logger.error("Issuer does not start with guard");
             //
             // We only respond to ourself as the issuer
@@ -91,14 +92,11 @@ public class GetOperationOutcomePip extends StdOnapPip {
 
         logger.debug("Going to query DB about: clname={}, target={}", clname, target);
         String outcome = doDatabaseQuery(clname);
-        logger.debug("Query result is: {}", outcome);
+        logger.info("Query result is: {}", outcome);
 
         StdMutablePIPResponse pipResponse = new StdMutablePIPResponse();
-        this.addStringAttribute(pipResponse,
-                XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
-                ToscaDictionary.ID_RESOURCE_GUARD_OPERATIONOUTCOME,
-                outcome,
-                pipRequest);
+        this.addStringAttribute(pipResponse, XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+            ToscaDictionary.ID_RESOURCE_GUARD_OPERATIONOUTCOME, outcome, pipRequest);
         return new StdPIPResponse(pipResponse);
     }
 
@@ -118,13 +116,17 @@ public class GetOperationOutcomePip extends StdOnapPip {
             //
             // We are expecting a single result
             //
-            return em.createQuery("select e.outcome from Dbao e"
-                                  + " where e.closedLoopName= ?1"
-                                  + " order by e.endtime desc",
-                                  String.class)
-                .setParameter(1, clname)
-                .setMaxResults(1)
-                .getSingleResult();
+            String result = em
+                .createQuery("select e.outcome from Dbao e" + " where e.closedLoopName= ?1"
+                    + " order by e.starttime desc", String.class)
+                .setParameter(1, clname).setMaxResults(1).getSingleResult();
+
+            // Check the value of result
+            if (result.equalsIgnoreCase("Started")) {
+                return ("In_Progress");
+            } else {
+                return ("Complete");
+            }
         } catch (NoResultException e) {
             logger.trace("No results", e);
         } catch (Exception e) {
index dcb172e..b5273e6 100644 (file)
@@ -35,8 +35,8 @@ import com.att.research.xacml.api.pip.PIPResponse;
 import com.att.research.xacml.std.pip.StdPIPResponse;
 import java.io.FileInputStream;
 import java.lang.reflect.Method;
-import java.sql.Date;
 import java.time.Instant;
+import java.util.Date;
 import java.util.Properties;
 import java.util.UUID;
 import javax.persistence.EntityManager;
@@ -199,28 +199,28 @@ public class GetOperationOutcomePipTest {
         //
         // Insert entry
         //
-        insertEntry("testcl1", "testtarget1", "1");
+        insertEntry("testcl1", "testtarget1", "Started");
         //
         // Test pipEngine
         //
         outcome = (String) method.invoke(pipEngine, "testcl1");
         //
-        // outcome should be "1"
+        // outcome should be "In_Progress"
         //
-        assertEquals("1", outcome);
+        assertEquals("In_Progress", outcome);
         //
         // Insert more entries
         //
-        insertEntry("testcl1", "testtarget1", "2");
-        insertEntry("testcl2", "testtarget2", "3");
+        insertEntry("testcl2", "testtarget1", "Success");
+        insertEntry("testcl3", "testtarget2", "Failed");
         //
         // Test pipEngine
         //
-        outcome = (String) method.invoke(pipEngine, "testcl1");
-        assertEquals("2", outcome);
-
         outcome = (String) method.invoke(pipEngine, "testcl2");
-        assertEquals("3", outcome);
+        assertEquals("Complete", outcome);
+
+        outcome = (String) method.invoke(pipEngine, "testcl3");
+        assertEquals("Complete", outcome);
 
         //
         // Shut it down
index 47c8567..df02903 100644 (file)
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp.applications</groupId>
         <artifactId>applications</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>guard</artifactId>
index bea05f2..59539f8 100644 (file)
@@ -56,7 +56,7 @@
                         MustBePresent="false" />
                 </Apply>
                 <AttributeValue
-                    DataType="http://www.w3.org/2001/XMLSchema#string">Success</AttributeValue>
+                    DataType="http://www.w3.org/2001/XMLSchema#string">In_Progress</AttributeValue>
             </Apply>
         </Condition>
     </Rule>
diff --git a/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/CoordinationTest.java b/applications/guard/src/test/java/org/onap/policy/xacml/pdp/application/guard/CoordinationTest.java
deleted file mode 100644 (file)
index 31aced6..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP
- * ================================================================================
- * Copyright (C) 2019-2020 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.application.guard;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-
-import com.att.research.xacml.api.Response;
-import java.io.File;
-import java.io.IOException;
-import java.sql.Date;
-import java.time.Instant;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.ServiceLoader;
-import java.util.UUID;
-import javax.persistence.EntityManager;
-import javax.persistence.Persistence;
-import org.apache.commons.lang3.tuple.Pair;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.junit.runners.MethodSorters;
-import org.onap.policy.common.endpoints.parameters.RestServerParameters;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.common.utils.resources.TextFileUtils;
-import org.onap.policy.models.decisions.concepts.DecisionRequest;
-import org.onap.policy.models.decisions.concepts.DecisionResponse;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
-import org.onap.policy.pdp.xacml.application.common.ToscaPolicyConversionException;
-import org.onap.policy.pdp.xacml.application.common.XacmlApplicationException;
-import org.onap.policy.pdp.xacml.application.common.XacmlApplicationServiceProvider;
-import org.onap.policy.pdp.xacml.application.common.XacmlPolicyUtils;
-import org.onap.policy.pdp.xacml.application.common.operationshistory.CountRecentOperationsPip;
-import org.onap.policy.pdp.xacml.application.common.operationshistory.Dbao;
-import org.onap.policy.pdp.xacml.xacmltest.TestUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class CoordinationTest {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(CoordinationTest.class);
-    private static Properties properties = new Properties();
-    private static File propertiesFile;
-    private static RestServerParameters clientParams = new RestServerParameters();
-    private static XacmlApplicationServiceProvider service;
-    private static DecisionRequest requestCl1Node1;
-    @SuppressWarnings("unused")
-    private static DecisionRequest requestCl1Node2;
-    private static DecisionRequest requestCl2Node1;
-    private static DecisionRequest requestCl2Node2;
-    private static StandardCoder gson = new StandardCoder();
-    private static EntityManager em;
-    private static final String DENY = "Deny";
-    private static final String PERMIT = "Permit";
-    private static final String OPEN = "Success";
-    private static final String CLOSE = "Closed";
-
-
-    @ClassRule
-    public static final TemporaryFolder policyFolder = new TemporaryFolder();
-
-    /**
-     * Copies the xacml.properties and policies files into
-     * temporary folder and loads the service provider saving
-     * instance of provider off for other tests to use.
-     */
-    @BeforeClass
-    public static void setup() throws Exception {
-        LOGGER.info("Setting up class");
-        //
-        // Setup our temporary folder
-        //
-        XacmlPolicyUtils.FileCreator myCreator = (String filename) -> policyFolder.newFile(filename);
-        propertiesFile = XacmlPolicyUtils.copyXacmlPropertiesContents("src/test/resources/xacml.properties",
-                properties, myCreator);
-        //
-        // Load service
-        //
-        ServiceLoader<XacmlApplicationServiceProvider> applicationLoader =
-                ServiceLoader.load(XacmlApplicationServiceProvider.class);
-        //
-        // Find the guard service application and save for use in all the tests
-        //
-        StringBuilder strDump = new StringBuilder("Loaded applications:" + XacmlPolicyUtils.LINE_SEPARATOR);
-        Iterator<XacmlApplicationServiceProvider> iterator = applicationLoader.iterator();
-        while (iterator.hasNext()) {
-            XacmlApplicationServiceProvider application = iterator.next();
-            //
-            // Is it our service?
-            //
-            if (application instanceof GuardPdpApplication) {
-                //
-                // Should be the first and only one
-                //
-                assertThat(service).isNull();
-                service = application;
-            }
-            strDump.append(application.applicationName());
-            strDump.append(" supports ");
-            strDump.append(application.supportedPolicyTypes());
-            strDump.append(XacmlPolicyUtils.LINE_SEPARATOR);
-        }
-        LOGGER.info("{}", strDump);
-        //
-        // Tell it to initialize based on the properties file
-        // we just built for it.
-        //
-        service.initialize(propertiesFile.toPath().getParent(), clientParams);
-        //
-        // Load Decision Requests
-        //
-        requestCl1Node1 = gson.decode(
-                TextFileUtils.getTextFileAsString(
-                    "src/test/resources/requests/coordination.cl.1.node.1.json"),
-                    DecisionRequest.class);
-        requestCl2Node1 = gson.decode(
-                TextFileUtils.getTextFileAsString(
-                    "src/test/resources/requests/coordination.cl.2.node.1.json"),
-                    DecisionRequest.class);
-        requestCl1Node2 = gson.decode(
-                TextFileUtils.getTextFileAsString(
-                    "src/test/resources/requests/coordination.cl.1.node.2.json"),
-                    DecisionRequest.class);
-        requestCl2Node2 = gson.decode(
-                TextFileUtils.getTextFileAsString(
-                    "src/test/resources/requests/coordination.cl.2.node.2.json"),
-                    DecisionRequest.class);
-        //
-        // Create EntityManager for manipulating DB
-        //
-        String persistenceUnit = CountRecentOperationsPip.ISSUER_NAME + ".persistenceunit";
-        em = Persistence.createEntityManagerFactory(
-                CoordinationTest.properties.getProperty(persistenceUnit), properties)
-                .createEntityManager();
-    }
-
-    /**
-     * Close the entity manager.
-     */
-    @AfterClass
-    public static void cleanup() throws Exception {
-        if (em != null) {
-            em.close();
-        }
-    }
-
-    /**
-     * Clears the database before each test.
-     *
-     */
-    @Before
-    public void startClean() throws Exception {
-        em.getTransaction().begin();
-        em.createQuery("DELETE FROM Dbao").executeUpdate();
-        em.getTransaction().commit();
-    }
-
-    @Test
-    public void test0Basics() throws ToscaPolicyConversionException {
-        LOGGER.info("**************** Running test0Basics ****************");
-        //
-        // Check the methods in coordination translator that don't get tested by
-        // the application.
-        //
-        CoordinationGuardTranslator translator = new CoordinationGuardTranslator();
-        assertThatExceptionOfType(ToscaPolicyConversionException.class).isThrownBy(() ->
-            translator.convertRequest(null)).withMessage("this convertRequest shouldn't be used");
-        assertThat(translator.convertResponse(null)).isNull();
-        assertThat(CoordinationGuardTranslator.loadCoordinationDirectiveFromFile(
-                policyFolder.getRoot().getAbsolutePath() + "/nonexist.yaml")).isNull();
-        CoordinationDirective directive = CoordinationGuardTranslator.loadCoordinationDirectiveFromFile(
-                "src/test/resources/test-directive.yaml");
-        assertThat(directive).isNotNull();
-    }
-
-    @Test
-    public void test1Coordination() throws CoderException, IOException, XacmlApplicationException {
-        LOGGER.info("**************** Running test1Coordination ****************");
-        //
-        // Now load the test coordination policy - make sure
-        // the pdp can support it and have it load
-        // into the PDP.
-        //
-        List<ToscaPolicy> loadedPolicies = TestUtils.loadPolicies(
-                "src/test/resources/test.policy.guard.coordination.firstBlocksSecond.tosca.yaml", service);
-        assertThat(loadedPolicies).isNotNull();
-        assertThat(loadedPolicies.get(0).getName()).isEqualTo("guard.coordination.firstBlocksSecond.test");
-        //
-        // cl1 doesn't have open action: cl2 should get permit
-        //
-        requestAndCheckDecision(requestCl2Node1, PERMIT);
-        //
-        // Open cl2 on node1
-        //
-        insertOperationEvent(requestCl2Node1, OPEN);
-        //
-        // Under current coordination policy cl1 always can go
-        //
-        requestAndCheckDecision(requestCl1Node1, PERMIT);
-        //
-        // Open cl1 on node1
-        //
-        insertOperationEvent(requestCl1Node1, OPEN);
-        //
-        // Close cl2 on node1
-        //
-        insertOperationEvent(requestCl2Node1, CLOSE);
-        //
-        // Try cl2 again, cl1 has open action on node1: should get deny
-        //
-        requestAndCheckDecision(requestCl2Node1, DENY);
-        //
-        // Close cl1 on node1
-        //
-        insertOperationEvent(requestCl1Node1, CLOSE);
-        //
-        // Under current coordination policy cl1 always can go
-        //
-        requestAndCheckDecision(requestCl1Node1, PERMIT);
-        //
-        // Open cl1 on node1
-        //
-        insertOperationEvent(requestCl1Node1, OPEN);
-        //
-        // Open cl2 on node2
-        //
-        insertOperationEvent(requestCl2Node2, OPEN);
-        //
-        // Try cl2 on node1, cl1 open on node1: should get DENY
-        //
-        requestAndCheckDecision(requestCl2Node1, DENY);
-    }
-
-    /**
-     * Check that decision matches expectation.
-     *
-     * @param expected from the response
-     * @param response received
-     *
-     **/
-    public void checkDecision(String expected, DecisionResponse response) throws CoderException {
-        LOGGER.info("Looking for {} Decision", expected);
-        assertThat(response).isNotNull();
-        assertThat(response.getStatus()).isNotNull();
-        assertThat(response.getStatus()).isEqualTo(expected);
-        //
-        // Dump it out as Json
-        //
-        LOGGER.info(gson.encode(response));
-    }
-
-    /**
-     * Request a decision and check that it matches expectation.
-     *
-     * @param request to send to Xacml PDP
-     * @param expected from the response
-     *
-     **/
-    public void requestAndCheckDecision(DecisionRequest request, String expected) throws CoderException {
-        //
-        // Ask for a decision
-        //
-        Pair<DecisionResponse, Response> decision = service.makeDecision(request, null);
-        //
-        // Check decision
-        //
-        checkDecision(expected, decision.getKey());
-    }
-
-    @SuppressWarnings("unchecked")
-    private void insertOperationEvent(DecisionRequest request, String outcome) {
-        //
-        // Get the properties
-        //
-        Map<String, Object> properties = (Map<String, Object>) request.getResource().get("guard");
-        //
-        // Add an entry
-        //
-        Dbao newEntry = new Dbao();
-        newEntry.setActor(properties.get("actor").toString());
-        newEntry.setOperation(properties.get("recipe").toString());
-        newEntry.setClosedLoopName(properties.get("clname").toString());
-        newEntry.setOutcome(outcome);
-        newEntry.setStarttime(Date.from(Instant.now().minusMillis(20000)));
-        newEntry.setEndtime(Date.from(Instant.now()));
-        newEntry.setRequestId(UUID.randomUUID().toString());
-        newEntry.setTarget(properties.get("target").toString());
-        em.getTransaction().begin();
-        em.persist(newEntry);
-        em.getTransaction().commit();
-    }
-}
index fc4c5e6..4c5bced 100644 (file)
@@ -27,8 +27,8 @@ import static org.assertj.core.api.Assertions.assertThat;
 import com.att.research.xacml.api.Response;
 import java.io.File;
 import java.io.IOException;
-import java.sql.Date;
 import java.time.Instant;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
@@ -65,7 +65,7 @@ import org.slf4j.LoggerFactory;
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 public class SonCoordinationTest {
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(CoordinationTest.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(SonCoordinationTest.class);
     private static Properties properties = new Properties();
     private static File propertiesFile;
     private static RestServerParameters clientParams = new RestServerParameters();
@@ -76,8 +76,6 @@ public class SonCoordinationTest {
     private static EntityManager em;
     private static final String DENY = "Deny";
     private static final String PERMIT = "Permit";
-    private static final String OPEN = "Success";
-    private static final String CLOSE = "Closed";
 
     @ClassRule
     public static final TemporaryFolder policyFolder = new TemporaryFolder();
@@ -233,31 +231,31 @@ public class SonCoordinationTest {
         //
         // Open vSonh on node1
         //
-        insertOperationEvent(requestVsonhNode1, OPEN);
+        long vsonhId = insertOperationEvent(requestVsonhNode1, "Started");
         //
         // Under current coordination policy vPci should get a deny
         //
         requestAndCheckDecision(requestVpciNode1, DENY);
         //
-        // Open vPci on node1
+        // Close vSonh on node1
         //
-        insertOperationEvent(requestVpciNode1, OPEN);
+        updateOperationEvent(vsonhId, "Success");
         //
-        // Under current coordination policy vSonh should get a deny
+        // With vSonh closed on node 1, vPci now should get a permit
         //
-        requestAndCheckDecision(requestVsonhNode1, DENY);
+        requestAndCheckDecision(requestVpciNode1, PERMIT);
         //
-        // Close vSonh on node1
+        // Open vPci on node1
         //
-        insertOperationEvent(requestVsonhNode1, CLOSE);
+        long vpciId = insertOperationEvent(requestVpciNode1, "Started");
         //
-        // With vSonh closed on node 1, vPci now should get a permit
+        // Under current coordination policy vSonh should get a deny
         //
-        requestAndCheckDecision(requestVpciNode1, PERMIT);
+        requestAndCheckDecision(requestVsonhNode1, DENY);
         //
         // Close cl1 on node1
         //
-        insertOperationEvent(requestVpciNode1, CLOSE);
+        updateOperationEvent(vpciId, "Failed");
         //
         // With vPci closed on node 1, vSonh now should get a permit
         //
@@ -265,7 +263,7 @@ public class SonCoordinationTest {
     }
 
     @SuppressWarnings("unchecked")
-    private void insertOperationEvent(DecisionRequest request, String outcome) {
+    private long insertOperationEvent(DecisionRequest request, String outcome) {
         //
         // Get the properties
         //
@@ -285,6 +283,17 @@ public class SonCoordinationTest {
         em.getTransaction().begin();
         em.persist(newEntry);
         em.getTransaction().commit();
+        return newEntry.getId();
+    }
+
+    private void updateOperationEvent(long id, String outcome) {
+
+        Dbao updateEntry = em.find(Dbao.class, id);
+        updateEntry.setOutcome(outcome);
+        updateEntry.setEndtime(Date.from(Instant.now()));
+        em.getTransaction().begin();
+        em.persist(updateEntry);
+        em.getTransaction().commit();
     }
 
 }
diff --git a/applications/guard/src/test/resources/requests/coordination.cl.1.node.1.json b/applications/guard/src/test/resources/requests/coordination.cl.1.node.1.json
deleted file mode 100644 (file)
index dd46100..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "ONAPName": "Policy",
-  "ONAPComponent": "drools-pdp",
-  "ONAPInstance": "usecase-template",
-  "requestId": "unique-request-id-47",
-  "action": "guard",
-  "resource": {
-      "guard": {
-          "actor": "SDNR",
-          "recipe": "Tilt",
-          "clname": "cl1",
-          "target": "node1"
-      }
-  }
-}
diff --git a/applications/guard/src/test/resources/requests/coordination.cl.1.node.2.json b/applications/guard/src/test/resources/requests/coordination.cl.1.node.2.json
deleted file mode 100644 (file)
index dbd3a53..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "ONAPName": "Policy",
-  "ONAPComponent": "drools-pdp",
-  "ONAPInstance": "usecase-template",
-  "requestId": "unique-request-id-4712",
-  "action": "guard",
-  "resource": {
-      "guard": {
-          "actor": "SDNR",
-          "recipe": "Tilt",
-          "clname": "cl1",
-          "target": "node2"
-      }
-  }
-}
diff --git a/applications/guard/src/test/resources/requests/coordination.cl.2.node.1.json b/applications/guard/src/test/resources/requests/coordination.cl.2.node.1.json
deleted file mode 100644 (file)
index edccc45..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "ONAPName": "Policy",
-  "ONAPComponent": "drools-pdp",
-  "ONAPInstance": "usecase-template",
-  "requestId": "unique-request-id-6877",
-  "action": "guard",
-  "resource": {
-      "guard": {
-          "actor": "SDNR",
-          "recipe": "Tilt",
-          "clname": "cl2",
-          "target": "node1"
-      }
-  }
-}
diff --git a/applications/guard/src/test/resources/requests/coordination.cl.2.node.2.json b/applications/guard/src/test/resources/requests/coordination.cl.2.node.2.json
deleted file mode 100644 (file)
index c1401f2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-{
-  "ONAPName": "Policy",
-  "ONAPComponent": "drools-pdp",
-  "ONAPInstance": "usecase-template",
-  "requestId": "unique-request-id-6837",
-  "action": "guard",
-  "resource": {
-      "guard": {
-          "actor": "SDNR",
-          "recipe": "Tilt",
-          "clname": "cl2",
-          "target": "node2"
-      }
-  }
-}
diff --git a/applications/guard/src/test/resources/test.policy.guard.coordination.firstBlocksSecond.tosca.yaml b/applications/guard/src/test/resources/test.policy.guard.coordination.firstBlocksSecond.tosca.yaml
deleted file mode 100644 (file)
index a42103e..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0_0
-topology_template:
-  policies:
-    -
-      guard.coordination.firstBlocksSecond.test:
-        type: onap.policies.controlloop.guard.coordination.FirstBlocksSecond
-        type_version: 1.0.0
-        version: 1.0.0
-        metadata:
-          policy-id : guard.coordination.firstBlocksSecond.test
-          policy-version: 1
-        properties:
-          controlLoop:
-            - cl1
-            - cl2
index 79988cf..7f06f70 100644 (file)
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp.applications</groupId>
         <artifactId>applications</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>monitoring</artifactId>
index 744f506..ed8fb2f 100644 (file)
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp.applications</groupId>
         <artifactId>applications</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>naming</artifactId>
index 5891e5e..fe4b5f2 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>org.onap.policy.xacml-pdp.applications</groupId>
     <artifactId>applications</artifactId>
-    <version>2.2.2-SNAPSHOT</version>
+    <version>2.3.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>native</artifactId>
index 6f9a4dd..dc2ac80 100644 (file)
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp.applications</groupId>
         <artifactId>applications</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>optimization</artifactId>
index 950bb67..6f79c1e 100644 (file)
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.onap.policy.xacml-pdp</groupId>
     <artifactId>policy-xacml-pdp</artifactId>
-    <version>2.2.2-SNAPSHOT</version>
+    <version>2.3.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.onap.policy.xacml-pdp.applications</groupId>
index d9af98b..289abab 100644 (file)
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp</groupId>
         <artifactId>policy-xacml-pdp</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>xacml-main</artifactId>
index 5aa999b..f0f97ef 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp</groupId>
         <artifactId>xacml-packages</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <packaging>pom</packaging>
index db47ab6..f627e50 100644 (file)
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp</groupId>
         <artifactId>xacml-packages</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>policy-xacmlpdp-tarball</artifactId>
index 4d11dec..f2d01fb 100644 (file)
@@ -1,5 +1,5 @@
 -- ============LICENSE_START=======================================================
--- Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+-- Copyright (C) 2019-2020 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.
@@ -29,4 +29,10 @@ create table if not exists operationshistory (
     subrequestId varchar(50),
     endtime timestamp not null default current_timestamp,
     PRIMARY KEY (id)
-);
\ No newline at end of file
+);
+
+create index if not exists operationshistory_clreqid_index on
+    operationshistory(closedLoopName, requestId);
+
+create index if not exists operationshistory_target_index on
+    operationshistory(target, operation, actor);
index 90119d8..669732a 100644 (file)
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp</groupId>
         <artifactId>policy-xacml-pdp</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>xacml-packages</artifactId>
diff --git a/pom.xml b/pom.xml
index 27ef38a..31e1dad 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
 
     <groupId>org.onap.policy.xacml-pdp</groupId>
     <artifactId>policy-xacml-pdp</artifactId>
-    <version>2.2.2-SNAPSHOT</version>
+    <version>2.3.0-SNAPSHOT</version>
 
     <packaging>pom</packaging>
 
diff --git a/releases/2.2.2-container.yaml b/releases/2.2.2-container.yaml
new file mode 100644 (file)
index 0000000..bdb39f5
--- /dev/null
@@ -0,0 +1,8 @@
+distribution_type: 'container'
+container_release_tag: '2.2.2'
+project: 'policy-xacml-pdp'
+log_dir: 'policy-xacml-pdp-maven-docker-stage-master/335'
+ref: cb9908d5aeda7a56b1ad0037de139f00e7610d2b
+containers:
+    - name: 'policy-xacml-pdp'
+      version: '2.2.2-20200520T1654'
index 8a87f31..adc3101 100644 (file)
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp</groupId>
         <artifactId>xacml-testsuites</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
     <artifactId>xacml-performance</artifactId>
     <build>
index 9056aaa..333db60 100644 (file)
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp</groupId>
         <artifactId>policy-xacml-pdp</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>xacml-testsuites</artifactId>
index 92f34f3..2fdf719 100644 (file)
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp</groupId>
         <artifactId>xacml-testsuites</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
     </parent>
     <artifactId>xacml-stability</artifactId>
     <build>
index 76584ab..d54fa5b 100644 (file)
@@ -3,8 +3,8 @@
 # because they are used in Jenkins, whose plug-in doesn't support
 
 major=2
-minor=2
-patch=2
+minor=3
+patch=0
 
 base_version=${major}.${minor}.${patch}
 
index 8a30960..61e631b 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.policy.xacml-pdp</groupId>
         <artifactId>policy-xacml-pdp</artifactId>
-        <version>2.2.2-SNAPSHOT</version>
+        <version>2.3.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>