1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
|
/*-
* ============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 javax.validation.constraints.NotNull;
import org.onap.policy.common.capabilities.Lockable;
import org.onap.policy.common.im.AllSeemsWellException;
import org.onap.policy.common.im.StateManagement;
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 DO_LOCK = StateManagement.LOCK;
public static final String DO_UNLOCK = StateManagement.UNLOCK;
public static final String DO_PROMOTE = StateManagement.PROMOTE;
public static final String DO_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 Boolean ALLSEEMSWELL_STATE = Boolean.TRUE;
public static final Boolean ALLNOTWELL_STATE = Boolean.FALSE;
public static final int SEQ_NUM = 0;
/**
* 'FeatureAPI.impl.getList()' returns an ordered list of objects implementing the 'FeatureAPI'
* interface.
*/
public static OrderedServiceImpl<StateManagementFeatureAPI> impl =
new OrderedServiceImpl<>(StateManagementFeatureAPI.class);
/**
* ALL SEEMS/NOT WELL This interface is used to support the concept of All Seems/Not Well. It
* provides a way for client code to indicate to the DroolsPDPIntegrityMonitor that an event has
* occurred which is disabling (or enabling) for the Drools PDP. The call is actually
* implemented in the common modules IntegrityMonitor where it will cause the testTransaction to
* fail if any module has set the value ALLNOTWELL, stopping the forward progress counter and
* eventually causing the operational state to become disabled.
*
* ALLSEEMSWELL is passed to the method when the client is healthy ALLNOTWELL is passed to the
* method when the client is disabled
*
* @param key - This should be a unique identifier for the entity making the call (e.g., class
* name)
* @param asw - This is the indicator of health. See constants: ALLSEEMSWELL or ALLNOTWELL
* @param msg - A message is required. It should indicate why all is not well or a message
* indicating that a component has been restored to health (perhaps indicating the
* problem that has resolved).
* @throws AllSeemsWellException
*/
public void allSeemsWell(@NotNull String key, @NotNull Boolean asw, @NotNull String msg)
throws AllSeemsWellException;
/**
* 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
*/
public void promote() throws 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();
}
|