From 18253e5bfbccc53baaa58e485704e9cb87855ac4 Mon Sep 17 00:00:00 2001 From: "Magnusen, Drew (dm741q)" Date: Thu, 7 Sep 2017 08:55:17 -0500 Subject: 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 --- .../config/feature-state-management.properties | 82 ++++++++++++++++++++++ .../sql/18020-statemanagement.upgrade.sql | 74 +++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 feature-state-management/src/main/feature/config/feature-state-management.properties create mode 100644 feature-state-management/src/main/feature/db/statemanagement/sql/18020-statemanagement.upgrade.sql (limited to 'feature-state-management/src/main/feature') diff --git a/feature-state-management/src/main/feature/config/feature-state-management.properties b/feature-state-management/src/main/feature/config/feature-state-management.properties new file mode 100644 index 00000000..72c1fe22 --- /dev/null +++ b/feature-state-management/src/main/feature/config/feature-state-management.properties @@ -0,0 +1,82 @@ +### +# ============LICENSE_START======================================================= +# feature-state-management +# ================================================================================ +# 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========================================================= +### + +# DB properties +javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver +javax.persistence.jdbc.url=jdbc:mariadb://${{SQL_HOST}}:3306/statemanagement +javax.persistence.jdbc.user=${{SQL_USER}} +javax.persistence.jdbc.password=${{SQL_PASSWORD}} + +# DroolsPDPIntegrityMonitor Properties +hostPort=0.0.0.0:57692 + +#IntegrityMonitor Properties + +# Must be unique across the system +resource.name=pdp1 +# Name of the site in which this node is hosted +site_name=site1 +# Forward Progress Monitor update interval seconds +fp_monitor_interval=30 +# Failed counter threshold before failover +failed_counter_threshold=3 +# Interval between test transactions when no traffic seconds +test_trans_interval=10 +# Interval between writes of the FPC to the DB seconds +write_fpc_interval=5 +# Node type Note: Make sure you don't leave any trailing spaces, or you'll get an 'invalid node type' error! +node_type=pdp_drools +# Dependency groups are groups of resources upon which a node operational state is dependent upon. +# Each group is a comma-separated list of resource names and groups are separated by a semicolon. For example: +# dependency_groups=site_1.astra_1,site_1.astra_2;site_1.brms_1,site_1.brms_2;site_1.logparser_1;site_1.pypdp_1 +dependency_groups= +# When set to true, dependent health checks are performed by using JMX to invoke test() on the dependent. +# The default false is to use state checks for health. +test_via_jmx=true +# This is the max number of seconds beyond which a non incrementing FPC is considered a failure +max_fpc_update_interval=120 +# Run the state audit every 60 seconds (60000 ms). The state audit finds stale DB entries in the +# forwardprogressentity table and marks the node as disabled/failed in the statemanagemententity +# table. NOTE! It will only run on nodes that have a standbystatus = providingservice. +# A value of <= 0 will turn off the state audit. +state_audit_interval_ms=60000 +# The refresh state audit is run every (default) 10 minutes (600000 ms) to clean up any state corruption in the +# DB statemanagemententity table. It only refreshes the DB state entry for the local node. That is, it does not +# refresh the state of any other nodes. A value <= 0 will turn the audit off. Any other value will override +# the default of 600000 ms. +refresh_state_audit_interval_ms=600000 + + +# Repository audit properties + +# Assume it's the releaseRepository that needs to be audited, +# because that's the one BRMGW will publish to. +repository.audit.id=${{releaseRepositoryID}} +repository.audit.url=${{releaseRepositoryUrl}} +repository.audit.username=${{repositoryUsername}} +repository.audit.password=${{repositoryPassword}} +# Flag to control the execution of the subsystemTest for the Nexus Maven repository +repository.audit.is.active=false +repository.audit.ignore.errors=true + +# DB Audit Properties + +# Flag to control the execution of the subsystemTest for the Database +db.audit.is.active=false \ No newline at end of file diff --git a/feature-state-management/src/main/feature/db/statemanagement/sql/18020-statemanagement.upgrade.sql b/feature-state-management/src/main/feature/db/statemanagement/sql/18020-statemanagement.upgrade.sql new file mode 100644 index 00000000..f73f992b --- /dev/null +++ b/feature-state-management/src/main/feature/db/statemanagement/sql/18020-statemanagement.upgrade.sql @@ -0,0 +1,74 @@ +/*- + * ============LICENSE_START======================================================= + * feature-state-management + * ================================================================================ + * 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========================================================= + */ + +set foreign_key_checks=0; + +CREATE TABLE if not exists statemanagement.StateManagementEntity +( + id int not null auto_increment, + resourceName varchar(100) not null, + adminState varchar(20) not null, + opstate varchar(20) not null, + availStatus varchar(20), + standbyStatus varchar(20), + created_date timestamp not null default current_timestamp, + modifiedDate timestamp not null, + primary key(id), + unique key resource(resourceName) +); + +CREATE TABLE if not exists statemanagement.ResourceRegistrationEntity +( + resourceRegistrationId bigint not null auto_increment, + resourceName varchar(100) not null, + resourceURL varchar(255) not null, + site varchar(50), + nodetype varchar(50), + created_date timestamp not null default current_timestamp, + last_updated timestamp not null, + primary key (resourceRegistrationId), + unique key resource (resourceName), + unique key id_resource_url (resourceURL) +); + +CREATE TABLE if not exists statemanagement.ForwardProgressEntity +( + forwardProgressId bigint not null auto_increment, + resourceName varchar(100) not null, + fpc_count bigint not null, + created_date timestamp not null default current_timestamp, + last_updated timestamp not null, + primary key (forwardProgressId), + unique key resource_key (resourceName) +); + +CREATE TABLE if not exists statemanagement.sequence +( +SEQ_NAME VARCHAR(50) NOT NULL, +SEQ_COUNT DECIMAL(38,0), +PRIMARY KEY (SEQ_NAME) +); + +-- Will only insert a record if none exists: +INSERT INTO statemanagement.SEQUENCE (SEQ_NAME,SEQ_COUNT) +SELECT * FROM (SELECT 'SEQ_GEN',1) AS tmp +WHERE NOT EXISTS(select SEQ_NAME from statemanagement.SEQUENCE where SEQ_NAME = 'SEQ_GEN') LIMIT 1; + +set foreign_key_checks=1; \ No newline at end of file -- cgit 1.2.3-korg