diff options
Diffstat (limited to 'api-state-management')
-rw-r--r-- | api-state-management/pom.xml | 62 | ||||
-rw-r--r-- | api-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementFeatureAPI.java | 182 |
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(); +} |