summaryrefslogtreecommitdiffstats
path: root/feature-state-management
diff options
context:
space:
mode:
authormmis <michael.morris@ericsson.com>2018-07-19 13:21:08 +0100
committermmis <michael.morris@ericsson.com>2018-07-25 09:14:33 +0100
commit64f53ef14f5a9ea98208fd2b835bfb01fda9a5f9 (patch)
tree60afa251c126287a85c89e0b1dc7fd5d1a766439 /feature-state-management
parente8f1b7235f8338fbb9eba28d8cff29d3d6adf6e7 (diff)
Copy policy-endpoints from drools-pdp to common
Removed policy-endpoints, and 3 classes from policy-core. Replaced refenences to the deleted classes with references to the corresponding classes in policy-common Issue-ID: POLICY-967 Change-Id: I547cde4894424b8f40b7ddd4e2342ebb729cb588 Signed-off-by: mmis <michael.morris@ericsson.com>
Diffstat (limited to 'feature-state-management')
-rw-r--r--feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java811
-rw-r--r--feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java116
2 files changed, 460 insertions, 467 deletions
diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java
index 83d4f040..8fdd3a4d 100644
--- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java
+++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DroolsPDPIntegrityMonitor.java
@@ -21,426 +21,413 @@
package org.onap.policy.drools.statemanagement;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
+
+import org.onap.policy.common.capabilities.Startable;
+import org.onap.policy.common.endpoints.http.server.HttpServletServer;
+import org.onap.policy.common.endpoints.http.server.impl.IndexedHttpServletServerFactory;
import org.onap.policy.common.im.IntegrityMonitor;
import org.onap.policy.common.im.IntegrityMonitorException;
-import org.onap.policy.drools.http.server.HttpServletServer;
-import org.onap.policy.drools.properties.Startable;
import org.onap.policy.drools.utils.PropertyUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * This class extends 'IntegrityMonitor' for use in the 'Drools PDP'
- * virtual machine. The included audits are 'Database' and 'Repository'.
+ * This class extends 'IntegrityMonitor' for use in the 'Drools PDP' virtual machine. The included
+ * audits are 'Database' and 'Repository'.
*/
-public class DroolsPDPIntegrityMonitor extends IntegrityMonitor
-{
-
- private static final String INVALID_PROPERTY_VALUE = "init: property {} does not have the expected value of {}";
-
-// get an instance of logger
- private static final Logger logger = LoggerFactory.getLogger(DroolsPDPIntegrityMonitor.class);
-
- // static global instance
- private static DroolsPDPIntegrityMonitor im = null;
-
- // list of audits to run
- private static AuditBase[] audits =
- new AuditBase[]{DbAudit.getInstance(), RepositoryAudit.getInstance()};
-
- private static Properties subsystemTestProperties = null;
-
- private static final String PROPERTIES_NAME = "feature-state-management.properties";
-
- /**
- * Constructor - pass arguments to superclass, but remember properties
- * @param resourceName unique name of this Integrity Monitor
- * @param url the JMX URL of the MBean server
- * @param properties properties used locally, as well as by
- * 'IntegrityMonitor'
- * @throws IntegrityMonitorException (passed from superclass)
- */
- private DroolsPDPIntegrityMonitor(String resourceName,
- Properties consolidatedProperties
- ) throws IntegrityMonitorException {
- super(resourceName, consolidatedProperties);
- }
-
- private static void missingProperty(String prop) throws IntegrityMonitorException{
- String msg = "init: missing IntegrityMonitor property: ".concat(prop);
- logger.error(msg);
- throw new IntegrityMonitorException(msg);
- }
-
- private static void logPropertyValue(String prop, String val){
- if(logger.isInfoEnabled()){
- String msg = "\n\n init: property: " + prop + " = " + val + "\n";
- logger.info(msg);
- }
- }
-
- /**
- * Static initialization -- create Drools Integrity Monitor, and
- * an HTTP server to handle REST 'test' requests
- * @throws StateManagementPropertiesException
- * @throws IntegrityMonitorException
- */
- public static DroolsPDPIntegrityMonitor init(String configDir) throws IntegrityMonitorException
- {
-
- logger.info("init: Entering and invoking PropertyUtil.getProperties() on '{}'", configDir);
-
- // read in properties
- Properties stateManagementProperties = getProperties(configDir);
-
- // fetch and verify definitions of some properties, adding defaults where
- // appropriate
- // (the 'IntegrityMonitor' constructor does some additional verification)
-
- checkPropError(stateManagementProperties, StateManagementProperties.TEST_HOST);
- checkPropError(stateManagementProperties, StateManagementProperties.TEST_PORT);
-
- addDefaultPropError(stateManagementProperties,
- StateManagementProperties.TEST_SERVICES,
- StateManagementProperties.TEST_SERVICES_DEFAULT);
-
- addDefaultPropError(stateManagementProperties,
- StateManagementProperties.TEST_REST_CLASSES,
- StateManagementProperties.TEST_REST_CLASSES_DEFAULT);
-
- addDefaultPropWarn(stateManagementProperties,
- StateManagementProperties.TEST_MANAGED,
- StateManagementProperties.TEST_MANAGED_DEFAULT);
-
- addDefaultPropWarn(stateManagementProperties,
- StateManagementProperties.TEST_SWAGGER,
- StateManagementProperties.TEST_SWAGGER_DEFAULT);
-
- checkPropError(stateManagementProperties, StateManagementProperties.RESOURCE_NAME);
- checkPropError(stateManagementProperties, StateManagementProperties.FP_MONITOR_INTERVAL);
- checkPropError(stateManagementProperties, StateManagementProperties.FAILED_COUNTER_THRESHOLD);
- checkPropError(stateManagementProperties, StateManagementProperties.TEST_TRANS_INTERVAL);
- checkPropError(stateManagementProperties, StateManagementProperties.WRITE_FPC_INTERVAL);
- checkPropError(stateManagementProperties, StateManagementProperties.SITE_NAME);
- checkPropError(stateManagementProperties, StateManagementProperties.NODE_TYPE);
- checkPropError(stateManagementProperties, StateManagementProperties.DEPENDENCY_GROUPS);
- checkPropError(stateManagementProperties, StateManagementProperties.DB_DRIVER);
- checkPropError(stateManagementProperties, StateManagementProperties.DB_URL);
- checkPropError(stateManagementProperties, StateManagementProperties.DB_USER);
- checkPropError(stateManagementProperties, StateManagementProperties.DB_PWD);
-
- String testHost = stateManagementProperties.getProperty(StateManagementProperties.TEST_HOST);
- String testPort = stateManagementProperties.getProperty(StateManagementProperties.TEST_PORT);
- String resourceName = stateManagementProperties.getProperty(StateManagementProperties.RESOURCE_NAME);
-
- subsystemTestProperties = stateManagementProperties;
-
- // Now that we've validated the properties, create Drools Integrity Monitor
- // with these properties.
- im = makeMonitor(resourceName, stateManagementProperties);
- logger.info("init: New DroolsPDPIntegrityMonitor instantiated, resourceName = ", resourceName);
-
- // create http server
- makeRestServer(testHost, testPort, stateManagementProperties);
- logger.info("init: Exiting and returning DroolsPDPIntegrityMonitor");
-
- return im;
- }
-
- /**
- * Makes an Integrity Monitor.
- * @param resourceName unique name of this Integrity Monitor
- * @param properties properties used to configure the Integrity Monitor
- * @return
- * @throws IntegrityMonitorException
- */
- private static DroolsPDPIntegrityMonitor makeMonitor(String resourceName, Properties properties)
- throws IntegrityMonitorException {
-
- try {
- return new DroolsPDPIntegrityMonitor(resourceName, properties);
-
- } catch (Exception e) {
- throw new IntegrityMonitorException(e);
- }
- }
-
- /**
- * Makes a rest server for the Integrity Monitor.
- * @param testHost host name
- * @param testPort port
- * @param properties properties used to configure the rest server
- * @throws IntegrityMonitorException
- */
- private static void makeRestServer(String testHost, String testPort, Properties properties)
- throws IntegrityMonitorException {
-
- try {
- logger.info("init: Starting HTTP server, addr= {}", testHost+":"+testPort);
-
- IntegrityMonitorRestServer server = new IntegrityMonitorRestServer();
- server.init(properties);
-
- } catch (Exception e) {
- logger.error("init: Caught Exception attempting to start server on testPort= {} message:",
- testPort, e);
- throw new IntegrityMonitorException(e);
- }
- }
-
- /**
- * Gets the properties from the property file.
- * @param configDir directory containing the property file
- * @return the properties
- * @throws IntegrityMonitorException
- */
- private static Properties getProperties(String configDir) throws IntegrityMonitorException {
- try {
- return PropertyUtil.getProperties(configDir + "/" + PROPERTIES_NAME);
-
- } catch (IOException e) {
- throw new IntegrityMonitorException(e);
- }
- }
-
- /**
- * Checks that a property is defined.
- * @param props set of properties
- * @param name name of the property to check
- * @throws IntegrityMonitorException
- */
- private static void checkPropError(Properties props, String name) throws IntegrityMonitorException {
- String val = props.getProperty(name);
- if(val == null) {
- missingProperty(name);
- }
-
- logPropertyValue(name, val);
- }
-
- /**
- * Checks a property's value to verify that it matches the expected value.
- * If the property is not defined, then it is added to the property set,
- * with the expected value. Logs an error if the property is defined,
- * but does not have the expected value.
- * @param props set of properties
- * @param name name of the property to check
- * @param expected expected/default value
- */
- private static void addDefaultPropError(Properties props, String name, String expected) {
- String val = props.getProperty(name);
- if(val == null) {
- props.setProperty(name, expected);
-
- } else if( ! val.equals(expected)) {
- logger.error(INVALID_PROPERTY_VALUE, name, expected);
- }
-
- logPropertyValue(name, val);
- }
-
- /**
- * Checks a property's value to verify that it matches the expected value.
- * If the property is not defined, then it is added to the property set,
- * with the expected value. Logs a warning if the property is defined,
- * but does not have the expected value.
- * @param props set of properties
- * @param name name of the property to check
- * @param expected expected/default value
- */
- private static void addDefaultPropWarn(Properties props, String name, String dflt) {
- String val = props.getProperty(name);
- if(val == null) {
- props.setProperty(name, dflt);
-
- } else if( ! val.equals(dflt)) {
- logger.warn(INVALID_PROPERTY_VALUE, name, dflt);
- }
-
- logPropertyValue(name, val);
- }
-
- /**
- * Run tests (audits) unique to Drools PDP VM (Database + Repository)
- */
- @Override
- public void subsystemTest() throws IntegrityMonitorException
- {
- logger.info("DroolsPDPIntegrityMonitor.subsystemTest called");
-
- // clear all responses (non-null values indicate an error)
- for (AuditBase audit : audits)
- {
- audit.setResponse(null);
- }
-
- // invoke all of the audits
- for (AuditBase audit : audits)
- {
- try
- {
- // invoke the audit (responses are stored within the audit object)
- audit.invoke(subsystemTestProperties);
- }
- catch (Exception e)
- {
- logger.error("{} audit error", audit.getName(), e);
- if (audit.getResponse() == null)
- {
- // if there is no current response, use the exception message
- audit.setResponse(e.getMessage());
- }
- }
- }
-
- // will contain list of subsystems where the audit failed
- String responseMsg = "";
-
- // Loop through all of the audits, and see which ones have failed.
- // NOTE: response information is stored within the audit objects
- // themselves -- only one can run at a time.
- for (AuditBase audit : audits)
- {
- String response = audit.getResponse();
- if (response != null)
- {
- // the audit has failed -- add subsystem and
- // and 'responseValue' with the new information
- responseMsg = responseMsg.concat("\n" + audit.getName() + ": " + response);
- }
- }
-
- if(!responseMsg.isEmpty()){
- throw new IntegrityMonitorException(responseMsg);
- }
- }
-
- /* ============================================================ */
-
- /**
- * This is the base class for audits invoked in 'subsystemTest'
- */
- public abstract static class AuditBase
- {
- // name of the audit
- protected String name;
-
- // non-null indicates the error response
- protected String response;
-
- /**
- * Constructor - initialize the name, and clear the initial response
- * @param name name of the audit
- */
- public AuditBase(String name)
- {
- this.name = name;
- this.response = null;
- }
-
- /**
- * @return the name of this audit
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * @return the response String (non-null indicates the error message)
- */
- public String getResponse()
- {
- return response;
- }
-
- /**
- * Set the response string to the specified value
- * @param value the new value of the response string (null = no errors)
- */
- public void setResponse(String value)
- {
- response = value;
- }
-
- /**
- * Abstract method to invoke the audit
- * @param persistenceProperties Used for DB access
- * @throws Exception passed in by the audit
- */
- abstract void invoke(Properties persistenceProperties) throws Exception;
- }
-
- public static class IntegrityMonitorRestServer implements Startable {
- protected volatile HttpServletServer server = null;
- protected volatile Properties integrityMonitorRestServerProperties = null;
-
- public void init(Properties props) {
- this.integrityMonitorRestServerProperties = props;
- this.start();
- }
-
- @Override
- public boolean start() {
- try {
- List<HttpServletServer> servers = HttpServletServer.factory.build(integrityMonitorRestServerProperties);
-
- if (!servers.isEmpty()) {
- server = servers.get(0);
-
- waitServerStart();
- }
- } catch (Exception e) {
- logger.error("Exception building servers", e);
- return false;
- }
-
- return true;
- }
-
- private void waitServerStart() {
- try {
- server.waitedStart(5);
- } catch (Exception e) {
- logger.error("Exception waiting for servers to start: ", e);
- }
- }
-
- @Override
- public boolean stop() {
- try {
- server.stop();
- } catch (Exception e) {
- logger.error("Exception during stop", e);
- }
-
- return true;
- }
-
- @Override
- public void shutdown() {
- this.stop();
- }
-
- @Override
- public synchronized boolean isAlive() {
- return this.integrityMonitorRestServerProperties != null;
- }
- }
-
- public static DroolsPDPIntegrityMonitor getInstance() throws IntegrityMonitorException{
- if(logger.isDebugEnabled()){
- logger.debug("getInstance() called");
- }
- if (im == null) {
- String msg = "No DroolsPDPIntegrityMonitor instance exists."
- + " Please use the method DroolsPDPIntegrityMonitor init(String configDir)";
- throw new IntegrityMonitorException(msg);
- }else{
- return im;
- }
- }
+public class DroolsPDPIntegrityMonitor extends IntegrityMonitor {
+
+ private static final String INVALID_PROPERTY_VALUE = "init: property {} does not have the expected value of {}";
+
+ // get an instance of logger
+ private static final Logger logger = LoggerFactory.getLogger(DroolsPDPIntegrityMonitor.class);
+
+ // static global instance
+ private static DroolsPDPIntegrityMonitor im = null;
+
+ // list of audits to run
+ private static AuditBase[] audits = new AuditBase[] {DbAudit.getInstance(), RepositoryAudit.getInstance()};
+
+ private static Properties subsystemTestProperties = null;
+
+ private static final String PROPERTIES_NAME = "feature-state-management.properties";
+
+ /**
+ * Constructor - pass arguments to superclass, but remember properties
+ *
+ * @param resourceName unique name of this Integrity Monitor
+ * @param url the JMX URL of the MBean server
+ * @param properties properties used locally, as well as by 'IntegrityMonitor'
+ * @throws IntegrityMonitorException (passed from superclass)
+ */
+ private DroolsPDPIntegrityMonitor(String resourceName, Properties consolidatedProperties)
+ throws IntegrityMonitorException {
+ super(resourceName, consolidatedProperties);
+ }
+
+ private static void missingProperty(String prop) throws IntegrityMonitorException {
+ String msg = "init: missing IntegrityMonitor property: ".concat(prop);
+ logger.error(msg);
+ throw new IntegrityMonitorException(msg);
+ }
+
+ private static void logPropertyValue(String prop, String val) {
+ if (logger.isInfoEnabled()) {
+ String msg = "\n\n init: property: " + prop + " = " + val + "\n";
+ logger.info(msg);
+ }
+ }
+
+ /**
+ * Static initialization -- create Drools Integrity Monitor, and an HTTP server to handle REST
+ * 'test' requests
+ *
+ * @throws StateManagementPropertiesException
+ * @throws IntegrityMonitorException
+ */
+ public static DroolsPDPIntegrityMonitor init(String configDir) throws IntegrityMonitorException {
+
+ logger.info("init: Entering and invoking PropertyUtil.getProperties() on '{}'", configDir);
+
+ // read in properties
+ Properties stateManagementProperties = getProperties(configDir);
+
+ // fetch and verify definitions of some properties, adding defaults where
+ // appropriate
+ // (the 'IntegrityMonitor' constructor does some additional verification)
+
+ checkPropError(stateManagementProperties, StateManagementProperties.TEST_HOST);
+ checkPropError(stateManagementProperties, StateManagementProperties.TEST_PORT);
+
+ addDefaultPropError(stateManagementProperties, StateManagementProperties.TEST_SERVICES,
+ StateManagementProperties.TEST_SERVICES_DEFAULT);
+
+ addDefaultPropError(stateManagementProperties, StateManagementProperties.TEST_REST_CLASSES,
+ StateManagementProperties.TEST_REST_CLASSES_DEFAULT);
+
+ addDefaultPropWarn(stateManagementProperties, StateManagementProperties.TEST_MANAGED,
+ StateManagementProperties.TEST_MANAGED_DEFAULT);
+
+ addDefaultPropWarn(stateManagementProperties, StateManagementProperties.TEST_SWAGGER,
+ StateManagementProperties.TEST_SWAGGER_DEFAULT);
+
+ checkPropError(stateManagementProperties, StateManagementProperties.RESOURCE_NAME);
+ checkPropError(stateManagementProperties, StateManagementProperties.FP_MONITOR_INTERVAL);
+ checkPropError(stateManagementProperties, StateManagementProperties.FAILED_COUNTER_THRESHOLD);
+ checkPropError(stateManagementProperties, StateManagementProperties.TEST_TRANS_INTERVAL);
+ checkPropError(stateManagementProperties, StateManagementProperties.WRITE_FPC_INTERVAL);
+ checkPropError(stateManagementProperties, StateManagementProperties.SITE_NAME);
+ checkPropError(stateManagementProperties, StateManagementProperties.NODE_TYPE);
+ checkPropError(stateManagementProperties, StateManagementProperties.DEPENDENCY_GROUPS);
+ checkPropError(stateManagementProperties, StateManagementProperties.DB_DRIVER);
+ checkPropError(stateManagementProperties, StateManagementProperties.DB_URL);
+ checkPropError(stateManagementProperties, StateManagementProperties.DB_USER);
+ checkPropError(stateManagementProperties, StateManagementProperties.DB_PWD);
+
+ String testHost = stateManagementProperties.getProperty(StateManagementProperties.TEST_HOST);
+ String testPort = stateManagementProperties.getProperty(StateManagementProperties.TEST_PORT);
+ String resourceName = stateManagementProperties.getProperty(StateManagementProperties.RESOURCE_NAME);
+
+ subsystemTestProperties = stateManagementProperties;
+
+ // Now that we've validated the properties, create Drools Integrity Monitor
+ // with these properties.
+ im = makeMonitor(resourceName, stateManagementProperties);
+ logger.info("init: New DroolsPDPIntegrityMonitor instantiated, resourceName = ", resourceName);
+
+ // create http server
+ makeRestServer(testHost, testPort, stateManagementProperties);
+ logger.info("init: Exiting and returning DroolsPDPIntegrityMonitor");
+
+ return im;
+ }
+
+ /**
+ * Makes an Integrity Monitor.
+ *
+ * @param resourceName unique name of this Integrity Monitor
+ * @param properties properties used to configure the Integrity Monitor
+ * @return
+ * @throws IntegrityMonitorException
+ */
+ private static DroolsPDPIntegrityMonitor makeMonitor(String resourceName, Properties properties)
+ throws IntegrityMonitorException {
+
+ try {
+ return new DroolsPDPIntegrityMonitor(resourceName, properties);
+
+ } catch (Exception e) {
+ throw new IntegrityMonitorException(e);
+ }
+ }
+
+ /**
+ * Makes a rest server for the Integrity Monitor.
+ *
+ * @param testHost host name
+ * @param testPort port
+ * @param properties properties used to configure the rest server
+ * @throws IntegrityMonitorException
+ */
+ private static void makeRestServer(String testHost, String testPort, Properties properties)
+ throws IntegrityMonitorException {
+
+ try {
+ logger.info("init: Starting HTTP server, addr= {}", testHost + ":" + testPort);
+
+ IntegrityMonitorRestServer server = new IntegrityMonitorRestServer();
+ server.init(properties);
+
+ } catch (Exception e) {
+ logger.error("init: Caught Exception attempting to start server on testPort= {} message:", testPort, e);
+ throw new IntegrityMonitorException(e);
+ }
+ }
+
+ /**
+ * Gets the properties from the property file.
+ *
+ * @param configDir directory containing the property file
+ * @return the properties
+ * @throws IntegrityMonitorException
+ */
+ private static Properties getProperties(String configDir) throws IntegrityMonitorException {
+ try {
+ return PropertyUtil.getProperties(configDir + "/" + PROPERTIES_NAME);
+
+ } catch (IOException e) {
+ throw new IntegrityMonitorException(e);
+ }
+ }
+
+ /**
+ * Checks that a property is defined.
+ *
+ * @param props set of properties
+ * @param name name of the property to check
+ * @throws IntegrityMonitorException
+ */
+ private static void checkPropError(Properties props, String name) throws IntegrityMonitorException {
+ String val = props.getProperty(name);
+ if (val == null) {
+ missingProperty(name);
+ }
+
+ logPropertyValue(name, val);
+ }
+
+ /**
+ * Checks a property's value to verify that it matches the expected value. If the property is
+ * not defined, then it is added to the property set, with the expected value. Logs an error if
+ * the property is defined, but does not have the expected value.
+ *
+ * @param props set of properties
+ * @param name name of the property to check
+ * @param expected expected/default value
+ */
+ private static void addDefaultPropError(Properties props, String name, String expected) {
+ String val = props.getProperty(name);
+ if (val == null) {
+ props.setProperty(name, expected);
+
+ } else if (!val.equals(expected)) {
+ logger.error(INVALID_PROPERTY_VALUE, name, expected);
+ }
+
+ logPropertyValue(name, val);
+ }
+
+ /**
+ * Checks a property's value to verify that it matches the expected value. If the property is
+ * not defined, then it is added to the property set, with the expected value. Logs a warning if
+ * the property is defined, but does not have the expected value.
+ *
+ * @param props set of properties
+ * @param name name of the property to check
+ * @param expected expected/default value
+ */
+ private static void addDefaultPropWarn(Properties props, String name, String dflt) {
+ String val = props.getProperty(name);
+ if (val == null) {
+ props.setProperty(name, dflt);
+
+ } else if (!val.equals(dflt)) {
+ logger.warn(INVALID_PROPERTY_VALUE, name, dflt);
+ }
+
+ logPropertyValue(name, val);
+ }
+
+ /**
+ * Run tests (audits) unique to Drools PDP VM (Database + Repository)
+ */
+ @Override
+ public void subsystemTest() throws IntegrityMonitorException {
+ logger.info("DroolsPDPIntegrityMonitor.subsystemTest called");
+
+ // clear all responses (non-null values indicate an error)
+ for (AuditBase audit : audits) {
+ audit.setResponse(null);
+ }
+
+ // invoke all of the audits
+ for (AuditBase audit : audits) {
+ try {
+ // invoke the audit (responses are stored within the audit object)
+ audit.invoke(subsystemTestProperties);
+ } catch (Exception e) {
+ logger.error("{} audit error", audit.getName(), e);
+ if (audit.getResponse() == null) {
+ // if there is no current response, use the exception message
+ audit.setResponse(e.getMessage());
+ }
+ }
+ }
+
+ // will contain list of subsystems where the audit failed
+ String responseMsg = "";
+
+ // Loop through all of the audits, and see which ones have failed.
+ // NOTE: response information is stored within the audit objects
+ // themselves -- only one can run at a time.
+ for (AuditBase audit : audits) {
+ String response = audit.getResponse();
+ if (response != null) {
+ // the audit has failed -- add subsystem and
+ // and 'responseValue' with the new information
+ responseMsg = responseMsg.concat("\n" + audit.getName() + ": " + response);
+ }
+ }
+
+ if (!responseMsg.isEmpty()) {
+ throw new IntegrityMonitorException(responseMsg);
+ }
+ }
+
+ /* ============================================================ */
+
+ /**
+ * This is the base class for audits invoked in 'subsystemTest'
+ */
+ public abstract static class AuditBase {
+ // name of the audit
+ protected String name;
+
+ // non-null indicates the error response
+ protected String response;
+
+ /**
+ * Constructor - initialize the name, and clear the initial response
+ *
+ * @param name name of the audit
+ */
+ public AuditBase(String name) {
+ this.name = name;
+ this.response = null;
+ }
+
+ /**
+ * @return the name of this audit
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @return the response String (non-null indicates the error message)
+ */
+ public String getResponse() {
+ return response;
+ }
+
+ /**
+ * Set the response string to the specified value
+ *
+ * @param value the new value of the response string (null = no errors)
+ */
+ public void setResponse(String value) {
+ response = value;
+ }
+
+ /**
+ * Abstract method to invoke the audit
+ *
+ * @param persistenceProperties Used for DB access
+ * @throws Exception passed in by the audit
+ */
+ abstract void invoke(Properties persistenceProperties) throws Exception;
+ }
+
+ public static class IntegrityMonitorRestServer implements Startable {
+ protected volatile HttpServletServer server = null;
+ protected volatile Properties integrityMonitorRestServerProperties = null;
+
+ public void init(Properties props) {
+ this.integrityMonitorRestServerProperties = props;
+ this.start();
+ }
+
+ @Override
+ public boolean start() {
+ try {
+ List<HttpServletServer> servers =
+ IndexedHttpServletServerFactory.getInstance().build(integrityMonitorRestServerProperties);
+
+ if (!servers.isEmpty()) {
+ server = servers.get(0);
+
+ waitServerStart();
+ }
+ } catch (Exception e) {
+ logger.error("Exception building servers", e);
+ return false;
+ }
+
+ return true;
+ }
+
+ private void waitServerStart() {
+ try {
+ server.waitedStart(5);
+ } catch (Exception e) {
+ logger.error("Exception waiting for servers to start: ", e);
+ }
+ }
+
+ @Override
+ public boolean stop() {
+ try {
+ server.stop();
+ } catch (Exception e) {
+ logger.error("Exception during stop", e);
+ }
+
+ return true;
+ }
+
+ @Override
+ public void shutdown() {
+ this.stop();
+ }
+
+ @Override
+ public synchronized boolean isAlive() {
+ return this.integrityMonitorRestServerProperties != null;
+ }
+ }
+
+ public static DroolsPDPIntegrityMonitor getInstance() throws IntegrityMonitorException {
+ if (logger.isDebugEnabled()) {
+ logger.debug("getInstance() called");
+ }
+ if (im == null) {
+ String msg = "No DroolsPDPIntegrityMonitor instance exists."
+ + " Please use the method DroolsPDPIntegrityMonitor init(String configDir)";
+ throw new IntegrityMonitorException(msg);
+ } else {
+ return im;
+ }
+ }
}
diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java
index 192acc16..38356226 100644
--- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java
+++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/StateManagementProperties.java
@@ -22,65 +22,71 @@ package org.onap.policy.drools.statemanagement;
import java.util.Properties;
-import org.onap.policy.drools.properties.PolicyProperties;
+import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class StateManagementProperties {
- // get an instance of logger
- private static final Logger logger = LoggerFactory.getLogger(StateManagementProperties.class);
-
- public static final String NODE_NAME = "resource.name";
- public static final String NODE_TYPE = "node_type";
- public static final String SITE_NAME = "site_name";
-
- public static final String DB_DRIVER = "javax.persistence.jdbc.driver";
- public static final String DB_URL = "javax.persistence.jdbc.url";
- public static final String DB_USER = "javax.persistence.jdbc.user";
- public static final String DB_PWD = "javax.persistence.jdbc.password";
-
- public static final String TEST_SERVICES = PolicyProperties.PROPERTY_HTTP_SERVER_SERVICES;
- public static final String TEST_SERVICES_DEFAULT = "TEST";
- public static final String TEST_HOST = TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyProperties.PROPERTY_HTTP_HOST_SUFFIX;
- public static final String TEST_PORT = TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyProperties.PROPERTY_HTTP_PORT_SUFFIX;
- public static final String TEST_REST_CLASSES = TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX;
- public static final String TEST_REST_CLASSES_DEFAULT = IntegrityMonitorRestManager.class.getName();
- public static final String TEST_MANAGED = TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyProperties.PROPERTY_MANAGED_SUFFIX;
- public static final String TEST_MANAGED_DEFAULT = "false";
- public static final String TEST_SWAGGER = TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyProperties.PROPERTY_HTTP_SWAGGER_SUFFIX;
- public static final String TEST_SWAGGER_DEFAULT = "true";
- public static final String RESOURCE_NAME = "resource.name";
- public static final String FP_MONITOR_INTERVAL = "fp_monitor_interval";
- public static final String FAILED_COUNTER_THRESHOLD = "failed_counter_threshold";
- public static final String TEST_TRANS_INTERVAL = "test_trans_interval";
- public static final String WRITE_FPC_INTERVAL = "write_fpc_interval";
- public static final String DEPENDENCY_GROUPS = "dependency_groups";
-
- private static Properties properties = null;
+ // get an instance of logger
+ private static final Logger logger = LoggerFactory.getLogger(StateManagementProperties.class);
- private StateManagementProperties(){
- }
- /*
- * Initialize the parameter values from the feature-state-management.properties file values
- *
- * This is designed so that the Properties object is obtained from the feature-state-management.properties
- * file and then is passed to this method to initialize the value of the parameters.
- * This allows the flexibility of JUnit tests using getProperties(filename) to get the
- * properties while runtime methods can use getPropertiesFromClassPath(filename).
- *
- */
- public static void initProperties (Properties prop){
- logger.info("StateManagementProperties.initProperties(Properties): entry");
- logger.info("\n\nStateManagementProperties.initProperties: Properties = \n{}\n\n", prop);
-
- properties = prop;
- }
+ public static final String NODE_NAME = "resource.name";
+ public static final String NODE_TYPE = "node_type";
+ public static final String SITE_NAME = "site_name";
- public static String getProperty(String key){
- return properties.getProperty(key);
- }
-
- public static Properties getProperties() {
- return properties;
- }
+ public static final String DB_DRIVER = "javax.persistence.jdbc.driver";
+ public static final String DB_URL = "javax.persistence.jdbc.url";
+ public static final String DB_USER = "javax.persistence.jdbc.user";
+ public static final String DB_PWD = "javax.persistence.jdbc.password";
+
+ public static final String TEST_SERVICES = PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES;
+ public static final String TEST_SERVICES_DEFAULT = "TEST";
+ public static final String TEST_HOST =
+ TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyEndPointProperties.PROPERTY_HTTP_HOST_SUFFIX;
+ public static final String TEST_PORT =
+ TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyEndPointProperties.PROPERTY_HTTP_PORT_SUFFIX;
+ public static final String TEST_REST_CLASSES =
+ TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyEndPointProperties.PROPERTY_HTTP_REST_CLASSES_SUFFIX;
+ public static final String TEST_REST_CLASSES_DEFAULT = IntegrityMonitorRestManager.class.getName();
+ public static final String TEST_MANAGED =
+ TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX;
+ public static final String TEST_MANAGED_DEFAULT = "false";
+ public static final String TEST_SWAGGER =
+ TEST_SERVICES + "." + TEST_SERVICES_DEFAULT + PolicyEndPointProperties.PROPERTY_HTTP_SWAGGER_SUFFIX;
+ public static final String TEST_SWAGGER_DEFAULT = "true";
+ public static final String RESOURCE_NAME = "resource.name";
+ public static final String FP_MONITOR_INTERVAL = "fp_monitor_interval";
+ public static final String FAILED_COUNTER_THRESHOLD = "failed_counter_threshold";
+ public static final String TEST_TRANS_INTERVAL = "test_trans_interval";
+ public static final String WRITE_FPC_INTERVAL = "write_fpc_interval";
+ public static final String DEPENDENCY_GROUPS = "dependency_groups";
+
+ private static Properties properties = null;
+
+ private StateManagementProperties() {}
+
+ /*
+ * Initialize the parameter values from the feature-state-management.properties file values
+ *
+ * This is designed so that the Properties object is obtained from the
+ * feature-state-management.properties file and then is passed to this method to initialize the
+ * value of the parameters. This allows the flexibility of JUnit tests using
+ * getProperties(filename) to get the properties while runtime methods can use
+ * getPropertiesFromClassPath(filename).
+ *
+ */
+ public static void initProperties(Properties prop) {
+ logger.info("StateManagementProperties.initProperties(Properties): entry");
+ logger.info("\n\nStateManagementProperties.initProperties: Properties = \n{}\n\n", prop);
+
+ properties = prop;
+ }
+
+ public static String getProperty(String key) {
+ return properties.getProperty(key);
+ }
+
+ public static Properties getProperties() {
+ return properties;
+ }
}