summaryrefslogtreecommitdiffstats
path: root/api-state-management
diff options
context:
space:
mode:
authorMagnusen, Drew (dm741q) <dm741q@att.com>2017-09-07 08:55:17 -0500
committerKevin McKiou <km097d@att.com>2017-09-14 18:45:36 +0000
commit18253e5bfbccc53baaa58e485704e9cb87855ac4 (patch)
tree7c91bf25f65ed1d6f43e719fc1899149994e679a /api-state-management
parent8dd90c302c4c2406dba22a420d30a668969d889c (diff)
Addition of State Management Feature
Patch 1:This commit adds the feature to provide node state management. There are also a couple of very minor cleanup items in feature-session-persistence which came up during review and testing. Patch 2: Cleaned up some logging statements and exceptions per comments by Pam Dragosh. Patch 3: Clean up per comments from Jorge Hernandez. Patch4: Added a default to ignoreErrors in RepositoryAudit. Patch 5: Rebase. Patch 6: Removed api-state-management/.gitignore Issue-ID: POLICY-155 Change-Id: I4fbfa33314d488ff46764931ca965f802b6a26d5 Signed-off-by: Kevin McKiou <km097d@att.com>
Diffstat (limited to 'api-state-management')
-rw-r--r--api-state-management/pom.xml62
-rw-r--r--api-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeatureAPI.java182
2 files changed, 244 insertions, 0 deletions
diff --git a/api-state-management/pom.xml b/api-state-management/pom.xml
new file mode 100644
index 00000000..f5c1e21e
--- /dev/null
+++ b/api-state-management/pom.xml
@@ -0,0 +1,62 @@
+<!--
+ ============LICENSE_START=======================================================
+ ONAP Policy Engine - Drools PDP
+ ================================================================================
+ 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=========================================================
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.policy.drools-pdp</groupId>
+ <artifactId>drools-pdp</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>api-state-management</artifactId>
+
+ <name>api-state-management</name>
+ <description>Separately loadable module for state management APIe</description>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <swagger.version>1.5.0</swagger.version>
+ </properties>
+
+ <build>
+ <plugins>
+ <!-- none -->
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.policy.drools-pdp</groupId>
+ <artifactId>policy-core</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.common</groupId>
+ <artifactId>integrity-monitor</artifactId>
+ <version>${common-modules.version}</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/api-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeatureAPI.java b/api-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeatureAPI.java
new file mode 100644
index 00000000..a6d808ca
--- /dev/null
+++ b/api-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeatureAPI.java
@@ -0,0 +1,182 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * policy-core
+ * ================================================================================
+ * 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.drools.statemanagement;
+
+import java.util.Observer;
+
+import org.onap.policy.common.im.StandbyStatusException;
+import org.onap.policy.common.im.StateManagement;
+import org.onap.policy.drools.properties.Lockable;
+import org.onap.policy.drools.utils.OrderedService;
+import org.onap.policy.drools.utils.OrderedServiceImpl;
+
+/**
+ * This interface provides a way to invoke optional features at various
+ * points in the code. At appropriate points in the
+ * application, the code iterates through this list, invoking these optional
+ * methods. Most of the methods here are notification only -- these tend to
+ * return a 'void' value. In other cases, such as 'activatePolicySession',
+ * may
+ */
+public interface StateManagementFeatureAPI extends OrderedService, Lockable
+{
+
+ public static final String LOCKED = StateManagement.LOCKED;
+ public static final String UNLOCKED = StateManagement.UNLOCKED;
+ public static final String ENABLED = StateManagement.ENABLED;
+ public static final String DISABLED = StateManagement.DISABLED;
+ public static final String ENABLE_NOT_FAILED = StateManagement.ENABLE_NOT_FAILED;
+ public static final String DISABLE_FAILED = StateManagement.DISABLE_FAILED;
+ public static final String FAILED = StateManagement.FAILED;
+ public static final String DEPENDENCY = StateManagement.DEPENDENCY;
+ public static final String DEPENDENCY_FAILED = StateManagement.DEPENDENCY_FAILED;
+ public static final String DISABLE_DEPENDENCY = StateManagement.DISABLE_DEPENDENCY;
+ public static final String ENABLE_NO_DEPENDENCY = StateManagement.ENABLE_NO_DEPENDENCY;
+ public static final String NULL_VALUE = StateManagement.NULL_VALUE;
+ public static final String LOCK = StateManagement.LOCK;
+ public static final String UNLOCK = StateManagement.UNLOCK;
+ public static final String PROMOTE = StateManagement.PROMOTE;
+ public static final String DEMOTE = StateManagement.DEMOTE;
+ public static final String HOT_STANDBY = StateManagement.HOT_STANDBY;
+ public static final String COLD_STANDBY = StateManagement.COLD_STANDBY;
+ public static final String PROVIDING_SERVICE = StateManagement.PROVIDING_SERVICE;
+
+ public static final String ADMIN_STATE = StateManagement.ADMIN_STATE;
+ public static final String OPERATION_STATE = StateManagement.OPERATION_STATE;
+ public static final String AVAILABLE_STATUS= StateManagement.AVAILABLE_STATUS;
+ public static final String STANDBY_STATUS = StateManagement.STANDBY_STATUS;
+
+ public static final int SEQ_NUM = 0;
+ /**
+ * 'FeatureAPI.impl.getList()' returns an ordered list of objects
+ * implementing the 'FeatureAPI' interface.
+ */
+ static public OrderedServiceImpl<StateManagementFeatureAPI> impl =
+ new OrderedServiceImpl<StateManagementFeatureAPI>(StateManagementFeatureAPI.class);
+
+ /**
+ * This method is called to add an Observer to receive notifications of state changes
+ *
+ * @param stateChangeObserver
+ */
+ public void addObserver(Observer stateChangeObserver);
+
+ /**
+ * This method returns the X.731 Administrative State for this resource
+ *
+ * @return String (locked, unlocked)
+ */
+ public String getAdminState();
+
+ /**
+ * This method returns the X.731 Operational State for this resource
+ *
+ * @return String (enabled, disabled)
+ */
+ public String getOpState();
+
+ /**
+ * This method returns the X.731 Availability Status for this resource
+ *
+ * @return String (failed; dependency; dependency,failed)
+ */
+ public String getAvailStatus();
+
+ /**
+ * This method returns the X.731 Standby Status for this resource
+ *
+ * @return String (providingservice, hotstandby or coldstandby)
+ */
+ public String getStandbyStatus();
+
+ /**
+ * This method returns the X.731 Standby Status for the named resource
+ * @param String (resourceName)
+ * @return String (providingservice, hotstandby or coldstandby)
+ */
+ public String getStandbyStatus(String resourceName);
+
+ /**
+ * This method moves the X.731 Operational State for the named resource
+ * into a value of disabled and the Availability Status to a value of failed.
+ * As a consequence the Standby Status value will take a value of coldstandby.
+ *
+ * @param String (resourceName)
+ * @throws Exception
+ */
+ public void disableFailed(String resourceName) throws Exception;
+
+ /**
+ * This method moves the X.731 Operational State for this resource
+ * into a value of disabled and the Availability Status to a value of failed.
+ * As a consequence the Standby Status value will take a value of coldstandby.
+ *
+ * @param String (resourceName)
+ * @throws Exception
+ */
+ public void disableFailed() throws Exception;
+
+ /**
+ * This method moves the X.731 Standby Status for this resource from hotstandby
+ * to providingservice. If the current value is coldstandby, no change is made.
+ * If the current value is null, it will move to providingservice assuming the
+ * Operational State is enabled and Administrative State is unlocked.
+ * @throws Exception
+ * @throws StandbyStatusException
+ */
+ public void promote() throws StandbyStatusException, Exception;
+
+ /**
+ * This method moves the X.731 Standby Status for this resource from providingservice
+ * to hotstandby. If the current value is null, it will move to hotstandby assuming the
+ * Operational State is enabled and Administrative State is unlocked. Else, it will move
+ * to coldstandby
+ * @throws Exception
+ */
+ public void demote() throws Exception;
+
+ /**
+ * This method returns the resourceName associated with this instance of the StateManagementFeature
+ * @return String (resourceName)
+ */
+ public String getResourceName();
+
+ /**
+ * This Lockable method will lock the StateManagement object Admin state
+ * @return true if successfull, false otherwise
+ */
+ @Override
+ public boolean lock();
+
+ /**
+ * This Lockable method will unlock the StateManagement object Admin state
+ * @return true if successfull, false otherwise
+ */
+ @Override
+ public boolean unlock();
+
+ /**
+ * This Lockable method indicates the Admin state StateManagement object
+ * @return true if locked, false otherwise
+ */
+ @Override
+ public boolean isLocked();
+}