</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>com.att.aft</groupId>
+ <artifactId>dme2</artifactId>
+ <version>3.1.200-oss</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
@After
public void tearDown() throws Exception {
+ PAPServices.setPaps(null);
+ PAPServices.junit = false;
}
@Test
@After
public void tearDown() throws Exception {
+ PAPServices.setPaps(null);
+ PAPServices.junit = false;
}
@Test
@After
public void tearDown() throws Exception {
+ PAPServices.setPaps(null);
+ PAPServices.junit = false;
}
@Test
@After
public void tearDown() throws Exception {
+ PAPServices.setPaps(null);
+ PAPServices.junit = false;
}
@Test
public class FirewallPolicyServiceTest {
FirewallPolicyService firewallPolicyService = null;
-
+
+
@Before
public void setUp() throws Exception {
Properties prop = new Properties();
@After
public void tearDown() throws Exception {
+ PAPServices.setPaps(null);
+ PAPServices.junit = false;
}
@Test
String result = firewallPolicyService.getResult(false);
assertEquals("success",result);
}
-
}
@After
public void tearDown() throws Exception {
+ PAPServices.setPaps(null);
+ PAPServices.junit = false;
}
@Test
import org.junit.Before;
import org.junit.Test;
import org.onap.policy.api.PolicyException;
-import org.onap.policy.rest.XACMLRestProperties;
import org.onap.policy.xacml.std.pap.StdPAPPolicy;
import org.onap.policy.xacml.std.pap.StdPDPPolicy;
@After
public void tearDown() throws Exception {
+ PAPServices.setPaps(null);
PAPServices.junit = false;
}
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
@RequestMapping("/")
public class CreateDcaeMicroServiceController extends RestrictedBaseController {
private static final Logger LOGGER = FlexLogger.getLogger(CreateDcaeMicroServiceController.class);
-
+ private Map<String, String> matchableValues;
private static CommonClassDao commonClassDao;
public static CommonClassDao getCommonClassDao() {
public static final String DEFAULT=".default";
public static final String REQUIRED=".required";
public static final String MANYFALSE=":MANY-false";
-
+ public static final String MATCHABLE=".matchable";
@Autowired
private CreateDcaeMicroServiceController(CommonClassDao commonClassDao){
HashMap<String,String> parseDataNodes(Map<String,String> map){
HashMap<String,String> dataMapForJson=new HashMap <>();
+ matchableValues = new HashMap <>();
for(String uniqueDataKey: uniqueDataKeys){
if(uniqueDataKey.contains("%")){
String[] uniqueDataKeySplit= uniqueDataKey.split("%");
String requiredValue= map.get(findRequired);
LOGGER.info("requiredValue is:"+ requiredValue);
+ String matchable =DATATYPE+uniqueDataKeySplit[0]+PROPERTIES+uniqueDataKeySplit[1]+MATCHABLE;
+
+ String matchableValue= map.get(matchable);
+
+ if("true".equalsIgnoreCase(matchableValue)){
+ String key=uniqueDataKeySplit[uniqueDataKeySplit.length -1];
+ matchableValues.put(key, "matching-true");
+ }
+
StringBuilder attributeIndividualStringBuilder= new StringBuilder();
attributeIndividualStringBuilder.append(typeValue+":defaultValue-");
attributeIndividualStringBuilder.append(defaultValue+":required-");
dataMapForJson.put(uniqueDataKey, attributeIndividualStringBuilder.toString());
}
else if(typeValue != null && typeValue.equalsIgnoreCase(LIST)){
+
+
String findList= DATATYPE+uniqueDataKeySplit[0]+PROPERTIES+uniqueDataKeySplit[1]+".entry_schema.type";
String listValue=map.get(findList);
if(listValue!=null){
break;
}
else{
+ if(constraintsValue.contains("=")){
+ constraintsValue = constraintsValue.replace("=", "equal-sign");
+ }
dataConstraints.add(constraintsValue);
dataListBuffer.append(constraintsValue+",");
}
dataMapForJson.put(uniqueDataKey, referenceIndividualStringBuilder.toString());
}
+ }else{
+ matchableValues.put(uniqueDataKey, "matching-true");
}
}
return dataMapForJson;
attributeIndividualStringBuilder.append(keyValues.get("default")+":required-");
attributeIndividualStringBuilder.append(keyValues.get("required")+":MANY-false");
attributeStringBuilder.append(attributeIndividualStringBuilder+",");
-
+ if("true".equalsIgnoreCase(keyValues.get("matchable"))){
+ matchableValues.put(keySetString, "matching-true");
+ }
}
else if(keyValues.get("type") != null && keyValues.get("type").equalsIgnoreCase(LIST)){
+
+ if("true".equalsIgnoreCase(keyValues.get("matchable"))){
+ matchableValues.put(keySetString, "matching-true");
+ }
//List Datatype
Set<String> keys= keyValues.keySet();
Iterator<String> itr=keys.iterator();
}
}else{
//User defined Datatype.
+ if("true".equalsIgnoreCase(keyValues.get("matchable"))){
+ matchableValues.put(keySetString, "matching-true");
+ }
String value=keyValues.get("type");
if(value != null && !value.isEmpty()){
String trimValue=value.substring(value.lastIndexOf('.')+1);
msAttributes.setAttribute(returnAttributeList);
msAttributes.setSubClass(this.retmap);
-
+ msAttributes.setMatchingSet(matchableValues);
HashMap<String, String> returnReferenceList =new HashMap<>();
returnReferenceList.put(className, this.referenceAttributes);
msAttributes.setRefAttribute(returnReferenceList);
}
return false;
}
-
- public class PDPGroupItem{
- private final OnapPDPGroup group;
-
- public PDPGroupItem(OnapPDPGroup itemId) {
- this.group = itemId;
- }
-
- public String getId() {
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("getId: " + this.group);
- }
- return this.group.getId();
- }
-
- public String getName() {
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("getName: " + this.group);
- }
- return this.group.getName();
- }
-
- public String getDescription() {
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("getDescription: " + this.group);
- }
- return this.group.getDescription();
- }
-
- public Boolean getDefault() {
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("getDefault: " + this.group);
- }
- return this.group.isDefaultGroup();
- }
-
-
- public String getStatus() {
- return this.group.getStatus().getStatus().toString();
- }
-
- public Set<PDP> getPDPs() {
- return Collections.unmodifiableSet(this.group.getPdps());
- }
-
- public Set<PDPPolicy> getPolicies() {
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("getPolicies: " + this.group);
- }
- return this.group.getPolicies();
- }
-
- public Set<PDPPIPConfig> getPipConfigs() {
- if (LOGGER.isTraceEnabled()) {
- LOGGER.trace("getPIPConfigs: " + this.group);
- }
- return this.group.getPipConfigs();
- }
- }
}
}
for (i=0; i < listemunerateValues.length; i += 1) {
+
+ if(listemunerateValues[i].includes("equal-sign")){
+ listemunerateValues[i] = listemunerateValues[i].replace('equal-sign','=');
+ }
+
option = document.createElement('option');
option.setAttribute('value', listemunerateValues[i]);
option.appendChild(document.createTextNode(listemunerateValues[i]));
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.web.support.UserUtils;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import com.mockrunner.mock.web.MockHttpServletRequest;
+import com.mockrunner.mock.web.MockHttpServletResponse;
+@RunWith(PowerMockRunner.class)
public class AutoPushControllerTest {
- private PolicyController controller = new PolicyController();;
- private AutoPushController apController = new AutoPushController();
-
- @Rule
- public ExpectedException thrown = ExpectedException.none();
-
- @Test
- public void testAutoPushSetGet() throws IOException {
- // Get and set tests
- apController.setPolicyController(controller);
- assertEquals(apController.getPolicyController(), controller);
- }
-
- @Test
- public void testNegativeCase1() {
- try {
- apController.getPolicyGroupContainerData(null, null);
- }
- catch (Exception ex) {
- fail("No exceptions expected, received: " + ex);
- }
- }
-
- @Test
- public void testNegativeCase2() throws IOException {
- thrown.expect(NullPointerException.class);
- apController.pushPolicyToPDPGroup(null, null);
- }
+ private PolicyController controller = new PolicyController();;
+ private AutoPushController apController = new AutoPushController();
- @Test
- public void testNegativeCase3() throws IOException {
- thrown.expect(NullPointerException.class);
- apController.removePDPGroup(null, null);
- }
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ @Test
+ public void testAutoPushSetGet() throws IOException {
+ // Get and set tests
+ apController.setPolicyController(controller);
+ assertEquals(apController.getPolicyController(), controller);
+ }
+
+ @Test
+ public void testNegativeCase1() {
+ try {
+ apController.getPolicyGroupContainerData(null, null);
+ } catch (Exception ex) {
+ fail("No exceptions expected, received: " + ex);
+ }
+ }
+
+ @Test
+ public void testNegativeCase2() throws IOException {
+ thrown.expect(NullPointerException.class);
+ apController.pushPolicyToPDPGroup(null, null);
+ }
+
+ @Test
+ public void testNegativeCase3() throws IOException {
+ thrown.expect(NullPointerException.class);
+ apController.removePDPGroup(null, null);
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testRefresh() throws IOException {
+ apController.refreshGroups();
+ }
+
+ @PrepareForTest({UserUtils.class})
+ @Test
+ public void testRequests() throws Exception {
+ // Mock user utilities
+ PowerMockito.mockStatic(UserUtils.class);
+ User user = new User();
+ Mockito.when(UserUtils.getUserSession(Mockito.any())).thenReturn(user);
+
+ // Mock policy controller
+ PolicyController pController = Mockito.mock(PolicyController.class);
+ PowerMockito.whenNew(PolicyController.class).withNoArguments().thenReturn(pController);
+ Mockito.when(pController.getRoles(Mockito.any())).thenReturn(null);
+
+ // Test group container
+ MockHttpServletRequest request = new MockHttpServletRequest();
+ MockHttpServletResponse response = new MockHttpServletResponse();
+ apController.getPolicyGroupContainerData(request, response);
+ assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK);
+
+ // Test push
+ apController.pushPolicyToPDPGroup(request, response);
+ assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK);
+
+ // Test remove
+ apController.removePDPGroup(request, response);
+ assertEquals(response.getStatusCode(), HttpServletResponse.SC_OK);
+ }
}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Engine
+ * ================================================================================
+ * Copyright (C) 2018 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.model;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.policy.rest.util.PolicyContainer.ItemSetChangeListener;
+import org.onap.policy.xacml.api.pap.OnapPDP;
+import org.onap.policy.xacml.api.pap.OnapPDPGroup;
+import org.onap.policy.xacml.api.pap.PAPPolicyEngine;
+import com.att.research.xacml.api.pap.PAPException;
+
+public class PDPGroupContainerTest {
+ private PAPPolicyEngine engine = Mockito.mock(PAPPolicyEngine.class);
+ private PDPGroupContainer container = new PDPGroupContainer(engine);
+
+ @Test
+ public void testContainer() throws PAPException {
+ Object itemId = new Object();
+ assertEquals(container.isSupported(itemId), false);
+
+ container.refreshGroups();
+ assertEquals(container.getGroups().size(), 0);
+
+ OnapPDPGroup group = Mockito.mock(OnapPDPGroup.class);
+ container.makeDefault(group);
+ OnapPDPGroup newGroup = Mockito.mock(OnapPDPGroup.class);
+ container.removeGroup(group, newGroup);
+ OnapPDP pdp = Mockito.mock(OnapPDP.class);
+ container.updatePDP(pdp);
+ container.updateGroup(group);
+ assertNull(container.getContainerPropertyIds());
+ assertEquals(container.getItemIds().size(), 0);
+ assertEquals(container.getType(itemId), null);
+ assertEquals(container.size(), 0);
+ assertEquals(container.containsId(itemId), false);
+ String name = "testName";
+ String description = "testDescription";
+ container.addNewGroup(name, description);
+ String id = "testID";
+ int jmxport = 0;
+ container.addNewPDP(id, newGroup, name, description, jmxport);
+ container.movePDP(pdp, newGroup);
+ ItemSetChangeListener listener = null;
+ container.addItemSetChangeListener(listener);
+ container.nextItemId(itemId);
+ container.prevItemId(itemId);
+ container.firstItemId();
+ container.lastItemId();
+ container.isFirstId(itemId);
+ container.isLastId(itemId);
+ container.indexOfId(itemId);
+ assertEquals(container.getItemIds().size(), 0);
+ container.removeItem(itemId);
+ container.removePDP(pdp, newGroup);
+ }
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void testAddItem() {
+ container.addItem();
+ }
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void testAddContainerProperty() {
+ container.addContainerProperty(null, null, null);
+ }
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void testRemoveContainerProperty() {
+ container.removeContainerProperty(null);
+ }
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void testRemoveAllItems() {
+ container.removeAllItems();
+ }
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void testAddItemAfter() {
+ container.addItemAfter(null);
+ }
+
+ @Test(expected=IndexOutOfBoundsException.class)
+ public void testGetIdByIndex() {
+ container.getIdByIndex(0);
+ }
+
+ @Test(expected=UnsupportedOperationException.class)
+ public void testAddItemAt() {
+ container.addItemAt(0);
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testGetItemIds() {
+ container.getItemIds(0, 1);
+ }
+}
#
# This is the local latest tagged image. The Dockerfile's need this to build images
#
-TAGS="--tag onap/policy/${IMAGE}:latest"
+TAGS="--tag onap/${IMAGE}:latest"
#
# This is the nexus repo prepended for latest tagged image.
#
-TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:latest"
+TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:latest"
#
# This has the nexus repo prepended and only major/minor version with latest
#
-TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:${MVN_MAJMIN_VERSION}-latest"
+TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_MAJMIN_VERSION}-latest"
#
# This has the nexus repo prepended and major/minor/patch version with timestamp
#
-TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:${MVN_VERSION}-STAGING-${TIMESTAMP}"
+TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_VERSION}-STAGING-${TIMESTAMP}"
echo $TAGS
echo "Pushing $IMAGE"
-docker push ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:latest
+docker push ${DOCKER_REPOSITORY}/onap/${IMAGE}:latest
if [ $? -ne 0 ]
then
fi
-docker push ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:${MVN_MAJMIN_VERSION}-latest
+docker push ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_MAJMIN_VERSION}-latest
if [ $? -ne 0 ]
then
exit 1
fi
-docker push ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:${MVN_VERSION}-STAGING-${TIMESTAMP}
+docker push ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_VERSION}-STAGING-${TIMESTAMP}
if [ $? -ne 0 ]
then
#
# This is the local latest tagged image. The Dockerfile's need this to build images
#
-TAGS="--tag onap/policy/${IMAGE}:latest"
+TAGS="--tag onap/${IMAGE}:latest"
#
# This has the nexus repo prepended and only major/minor version with latest
#
-TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:${MVN_MAJMIN_VERSION}-latest"
+TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_MAJMIN_VERSION}-latest"
#
# This has the nexus repo prepended and major/minor/patch version with timestamp
#
-TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:${MVN_VERSION}-${TIMESTAMP}"
+TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_VERSION}-${TIMESTAMP}"
echo $TAGS
# Push image
#
echo "Pushing $IMAGE"
-docker push ${DOCKER_REPOSITORY}/onap/policy/$IMAGE:${MVN_MAJMIN_VERSION}-latest
+docker push ${DOCKER_REPOSITORY}/onap/$IMAGE:${MVN_MAJMIN_VERSION}-latest
if [ $? -ne 0 ]
then
exit 1
fi
-docker push ${DOCKER_REPOSITORY}/onap/policy/$IMAGE:${MVN_VERSION}-${TIMESTAMP}
+docker push ${DOCKER_REPOSITORY}/onap/$IMAGE:${MVN_VERSION}-${TIMESTAMP}
if [ $? -ne 0 ]
then
#
# This is the local latest tagged image. The Dockerfile's need this to build images
#
-TAGS="--tag onap/policy/${IMAGE}:latest"
+TAGS="--tag onap/${IMAGE}:latest"
#
# This has the nexus repo prepended and only major/minor version with latest
#
-TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:${MVN_MAJMIN_VERSION}-latest"
+TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_MAJMIN_VERSION}-latest"
#
# This has the nexus repo prepended and major/minor/patch version with timestamp
#
-TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/policy/${IMAGE}:${MVN_VERSION}-${TIMESTAMP}"
+TAGS="${TAGS} --tag ${DOCKER_REPOSITORY}/onap/${IMAGE}:${MVN_VERSION}-${TIMESTAMP}"
echo $TAGS
.. image:: PolicyArchitectureDetails.png
+.. image:: PolicyArchitectureDetailsKey.png
+
+
The PAP provides interfaces for the management of policies. It utilizes the XACML database to store policies, which are then distributed to the PDPs.
The XACML and Drools databases are hosted in a MariaDB cluster. The XACML database is used to persist policies and policy dictionaries and provide a point for PDPs to retrieve policies. The XACML database also has tables used for node state management, detection of node failure and failover. As indicated above, the state management tables will only include entries for the PAP and PDP-X as the testing is not yet complete for the PDP-D.
Policy writers can define attributes so that policy events or requests self-indicate their scope. The scope is then examined by a suitable function and subsequently acted upon accordingly. Policy decisions and enforcement functions can self-indicate their scope of decision-making, enforcement, or other capabilities. Virtual functions can be automatically attached to the appropriate POLICY Framework and distribution mechanisms.
+.. image:: PolicySummary.png
+
End of Document
--- /dev/null
+
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+*******************************
+Policy Cookbook |cookbooklogo|
+*******************************
+
+Policy VM/Docker Recipes
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+ .. code-block:: bash
+ :caption: Get latest images in an already setup policy VM
+ :linenos:
+
+ /opt/policy_vm_init.sh
+
+
+ .. code-block:: bash
+ :caption: Install/start docker policy containers with no policies preloaded
+ :linenos:
+
+ echo "PRELOAD_POLICIES=false" > /opt/policy/.env
+ /opt/policy_vm_init.sh
+
+
+ .. code-block:: bash
+ :caption: Install/start docker policy containers with policies preloaded
+ :linenos:
+
+ # This is the current default mode of instantiation.
+ # These operations are unnecessary unless PRELOAD_POLICIES
+ # was previously set to true
+
+ echo "PRELOAD_POLICIES=true" > /opt/policy/.env
+ /opt/policy_vm_init.sh
+
+
+ .. code-block:: bash
+ :caption: Access the PDP-D container as a policy user
+ :linenos:
+
+ docker exec -it drools bash
+
+
+ .. code-block:: bash
+ :caption: Access the PDP-X container as a policy user
+ :linenos:
+
+ docker exec -it -u 0 pdp su - policy
+
+
+ .. code-block:: bash
+ :caption: Access the BRMSGW container as a policy user
+ :linenos:
+
+ docker exec -it -u 0 brmsgw su - policy
+
+
+ .. code-block:: bash
+ :caption: Access PAP container as a policy user
+ :linenos:
+
+ docker exec -it -u 0 pap su - policy
+
+
+ .. code-block:: bash
+ :caption: Access the CONSOLE container as a policy user
+ :linenos:
+
+ docker exec -it -u 0 console su - policy
+
+
+ .. code-block:: bash
+ :caption: Manual Healthcheck invokation
+ :linenos:
+
+ # Assuming the healthcheck service credentials have not been changed
+ # post-installation within the drools container
+
+ source /opt/app/policy/config/feature-healthcheck.conf.environment
+ curl --silent --user "${HEALTHCHECK_USER}:${HEALTHCHECK_PASSWORD}"
+ -X GET http://localhost:6969/healthcheck | python -m json.tool
+
+
+PDP-D Recipes ("drools" container)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ .. code-block:: bash
+ :caption: Stop the PDP-D
+ :linenos:
+
+ policy stop
+
+
+ .. code-block:: bash
+ :caption: Start the PDP-D
+ :linenos:
+
+ policy start
+
+
+ .. code-block:: bash
+ :caption: Manual Healthcheck Invokation
+ :linenos:
+
+ # Assuming the healthcheck service credentials have not been changed
+ # post-installation within the drools container
+
+ source ${POLICY_HOME}/config/feature-healthcheck.conf
+ curl --silent --user "${HEALTHCHECK_USER}:${HEALTHCHECK_PASSWORD}"
+ -X GET http://localhost:6969/healthcheck | python -m json.tool
+
+
+.. |recipelogo| image:: recipecard.png
+ :width: 80pt
+ :height: 80pt
+
+.. |cookbooklogo| image:: cookbook.gif
+ :width: 80pt
+ :height: 80pt
+
+End of Document
+
+.. SSNote: Wiki page ref. https://wiki.onap.org/display/DW/Policy+Cookbook
+
+
+
.. toctree::
:maxdepth: 1
+ cookbook.rst
deployPDPPAP.rst
guardpolicy.rst
guardpdp.rst
.. * one section describing the purpose of this new release.
.. * This note must be removed after content has been added.
-Version: 1.2.0
+
+Version: 1.1.3
+--------------
+
+:Release Date: 2018-01-18 (Amsterdam Maintenance Release)
+
+**Bug Fixes**
+
+The following bugs were deployed with the Amsterdam Maintenance Release:
+
+ * `[POLICY-486] <https://jira.onap.org/browse/POLICY-486>`_ - pdp-x api pushPolicy fails to push latest version
+
+
+Version: 1.1.1
--------------
:Release Date: 2017-11-16 (Amsterdam Release)
- Create a Service Instance via VID.
- Create a VNF Instance via VID.
- Preload SDNC with topology data used for the actual VNF instantiation (both base and DNS scaling modules). NOTE: you may want to set “vlb_name_0” in the base VF module data to something unique. This is the vLB server name that DCAE will pass to Policy during closed loop. If the same name is used multiple times, the Policy name-query to AAI will show multiple entries, one for each occurrence of that vLB VM name in the OpenStack zone. Note that this is not a limitation, typically server names in a domain are supposed to be unique.
- - Instantiate the base VF module (vLB, vPacketGen, and one vDNS) via VID. NOTE: The name of the VF module MUST start with Vfmodule_. The same name MUST appear in the SDNC preload of the base VF module topology. We’ll relax this naming requirement for Beijing Release.
- - Run heatbridge from the Robot VM using Vfmodule_ … as stack name (it is the actual stack name in OpenStack)
+ - Instantiate the base VF module (vLB, vPacketGen, and one vDNS) via VID. NOTE: The name of the VF module MUST start with ``Vfmodule_``. The same name MUST appear in the SDNC preload of the base VF module topology. We’ll relax this naming requirement for Beijing Release.
+ - Run heatbridge from the Robot VM using ``Vfmodule_`` … as stack name (it is the actual stack name in OpenStack)
- Populate AAI with a dummy VF module for vDNS scaling.
**Security Issues**
**Other**
- None at this time
+
+.. note
+.. CHANGE HISTORY
+.. 01/15/2018 - Added change for version 1.1.3 to the Amsterdam branch. Also corrected prior version (1.2.0) to (1.1.1)
+.. 11/16/2017 - Initial document for Amsterdam release.
+
+
End of Release Notes
"artifactId": "actor.appclcm",
"version": "${{BRMS_DEPENDENCY_VERSION}}"
}, {
- "groupId": "org.onap.policy.drools-application.controlloop.common.actorss",
+ "groupId": "org.onap.policy.drools-applications.controlloop.common.actors",
"artifactId": "actor.so",
"version": "${{BRMS_DEPENDENCY_VERSION}}"
}, {
<parent>
<groupId>org.onap.oparent</groupId>
<artifactId>oparent</artifactId>
- <version>0.1.1</version>
+ <version>1.1.0</version>
<relativePath/>
</parent>