aboutsummaryrefslogtreecommitdiffstats
path: root/policy-healthcheck/src
diff options
context:
space:
mode:
Diffstat (limited to 'policy-healthcheck/src')
-rw-r--r--policy-healthcheck/src/assembly/assemble_zip.xml85
-rw-r--r--policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/HealthCheck.java277
-rw-r--r--policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/HealthCheckFeature.java78
-rw-r--r--policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/RestHealthCheck.java77
-rw-r--r--policy-healthcheck/src/main/resources/META-INF/services/org.openecomp.policy.drools.features.PolicyEngineFeatureAPI1
5 files changed, 0 insertions, 518 deletions
diff --git a/policy-healthcheck/src/assembly/assemble_zip.xml b/policy-healthcheck/src/assembly/assemble_zip.xml
deleted file mode 100644
index 266e1d0a..00000000
--- a/policy-healthcheck/src/assembly/assemble_zip.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<!--
- ============LICENSE_START=======================================================
- policy-persistence
- ================================================================================
- 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=========================================================
- -->
-
-<!-- Defines how we build the .zip file which is our distribution. -->
-
-<assembly
- xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
- <id>runtime</id>
- <formats>
- <format>zip</format>
- </formats>
-
- <!-- we want "system" and related files right at the root level as this
- file is suppose to be unzip on top of a karaf distro. -->
- <includeBaseDirectory>false</includeBaseDirectory>
-
- <fileSets>
- <fileSet>
- <directory>target</directory>
- <outputDirectory>lib/opt</outputDirectory>
- <includes>
- <include>policy-healthcheck-${project.version}.jar</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>target/assembly/</directory>
- <outputDirectory>.</outputDirectory>
- <excludes>
- </excludes>
- </fileSet>
- <fileSet>
- <directory>.</directory>
- <outputDirectory>lib</outputDirectory>
- <includes>
- <include>*.jar</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>src/main/server-gen/bin</directory>
- <outputDirectory>bin</outputDirectory>
- <fileMode>0744</fileMode>
- <excludes>
- </excludes>
- </fileSet>
- <fileSet>
- <directory>src/main/server/bin</directory>
- <outputDirectory>bin</outputDirectory>
- <fileMode>0744</fileMode>
- <excludes>
- </excludes>
- </fileSet>
- <fileSet>
- <directory>src/main/server-gen/scripts</directory>
- <outputDirectory>scripts</outputDirectory>
- </fileSet>
- <fileSet>
- <directory>src/main/server/scripts</directory>
- <outputDirectory>scripts</outputDirectory>
- </fileSet>
- <fileSet>
- <directory>src/main/server/config</directory>
- <outputDirectory>config</outputDirectory>
- </fileSet>
- </fileSets>
-
-</assembly>
diff --git a/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/HealthCheck.java b/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/HealthCheck.java
deleted file mode 100644
index b45065e9..00000000
--- a/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/HealthCheck.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * policy-healthcheck
- * ================================================================================
- * 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.openecomp.policy.drools.healthcheck;
-
-import java.util.ArrayList;
-import java.util.Properties;
-
-import javax.ws.rs.core.Response;
-
-import org.openecomp.policy.drools.http.client.HttpClient;
-import org.openecomp.policy.drools.http.server.HttpServletServer;
-import org.openecomp.policy.drools.persistence.SystemPersistence;
-import org.openecomp.policy.drools.properties.Startable;
-import org.openecomp.policy.drools.system.PolicyEngine;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Healthcheck
- */
-public interface HealthCheck extends Startable {
-
- /**
- * Healthcheck Report
- */
- public static class Report {
- /**
- * Named Entity in the report
- */
- public String name;
-
- /**
- * URL queried
- */
- public String url;
-
- /**
- * healthy?
- */
- public boolean healthy;
-
- /**
- * return code
- */
- public int code;
-
- /**
- * Message from remote entity
- */
- public String message;
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("Report [name=");
- builder.append(name);
- builder.append(", url=");
- builder.append(url);
- builder.append(", healthy=");
- builder.append(healthy);
- builder.append(", code=");
- builder.append(code);
- builder.append(", message=");
- builder.append(message);
- builder.append("]");
- return builder.toString();
- }
- }
-
- /**
- * Report aggregation
- */
- public static class Reports {
- public boolean healthy;
- public ArrayList<Report> details = new ArrayList<>();
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("Reports [healthy=");
- builder.append(healthy);
- builder.append(", details=");
- builder.append(details);
- builder.append("]");
- return builder.toString();
- }
- }
-
- /**
- * perform a healthcheck
- * @return a report
- */
- public Reports healthCheck();
-
- /**
- * Healthcheck Monitor
- */
- public static final HealthCheck monitor = new HealthCheckMonitor();
-}
-
-/**
- * Healthcheck Monitor
- */
-class HealthCheckMonitor implements HealthCheck {
-
- /**
- * Logger
- */
- private static Logger logger = LoggerFactory.getLogger(HealthCheckMonitor.class);
-
- /**
- * attached http servers
- */
- protected volatile ArrayList<HttpServletServer> servers = new ArrayList<>();
-
- /**
- * attached http clients
- */
- protected volatile ArrayList<HttpClient> clients = new ArrayList<>();
-
- /**
- * healthcheck configuration
- */
- protected volatile Properties healthCheckProperties = null;
-
- /**
- * {@inheritDoc}
- */
- public Reports healthCheck() {
- Reports reports = new Reports();
- reports.healthy = PolicyEngine.manager.isAlive();
-
- HealthCheck.Report engineReport = new Report();
- engineReport.healthy = PolicyEngine.manager.isAlive();
- engineReport.name = "PDP-D";
- engineReport.url = "self";
- engineReport.code = (PolicyEngine.manager.isAlive()) ? 200 : 500;
- engineReport.message = (PolicyEngine.manager.isAlive()) ? "alive" : "not alive";
- reports.details.add(engineReport);
-
- for (HttpClient client : clients) {
- HealthCheck.Report report = new Report();
- report.name = client.getName();
- report.url = client.getBaseUrl();
- report.healthy = true;
- try {
- Response response = client.get();
- report.code = response.getStatus();
- if (report.code != 200) {
- report.healthy = false;
- reports.healthy = false;
- }
-
- try {
- report.message = HttpClient.getBody(response, String.class);
- } catch (Exception e) {
- logger.warn("{}: cannot get body from http-client {}", this, client, e);
- }
- } catch (Exception e) {
- report.healthy = false;
- reports.healthy = false;
- }
- reports.details.add(report);
- }
- return reports;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean start() throws IllegalStateException {
-
- try {
- this.healthCheckProperties = SystemPersistence.manager.getProperties(HealthCheckFeature.CONFIGURATION_PROPERTIES_NAME);
- this.servers = HttpServletServer.factory.build(healthCheckProperties);
- this.clients = HttpClient.factory.build(healthCheckProperties);
-
- for (HttpServletServer server : servers) {
- try {
- server.start();
- } catch (Exception e) {
- logger.warn("{}: cannot start http-server {}", this, server, e);
- }
- }
- } catch (Exception e) {
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean stop() throws IllegalStateException {
-
- for (HttpServletServer server : servers) {
- try {
- server.stop();
- } catch (Exception e) {
- logger.warn("{}: cannot stop http-server {}", this, server, e);
- }
- }
-
- for (HttpClient client : clients) {
- try {
- client.stop();
- } catch (Exception e) {
- logger.warn("{}: cannot stop http-client {}", this, client, e);
- }
- }
-
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void shutdown() throws IllegalStateException {
- this.stop();
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public synchronized boolean isAlive() {
- return this.healthCheckProperties != null;
- }
-
- /**
- * @return list of attached Http Servers
- */
- public ArrayList<HttpServletServer> getServers() {
- return this.servers;
- }
-
- /**
- * @return list of attached Http Clients
- */
- public ArrayList<HttpClient> getClients() {
- return this.clients;
- }
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- builder.append("HealthCheckMonitor [servers=");
- builder.append(servers);
- builder.append(", clients=");
- builder.append(clients);
- builder.append("]");
- return builder.toString();
- }
-
-}
diff --git a/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/HealthCheckFeature.java b/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/HealthCheckFeature.java
deleted file mode 100644
index 0f16d8cf..00000000
--- a/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/HealthCheckFeature.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * policy-healthcheck
- * ================================================================================
- * 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.openecomp.policy.drools.healthcheck;
-
-import org.openecomp.policy.drools.features.PolicyEngineFeatureAPI;
-import org.openecomp.policy.drools.system.PolicyEngine;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This feature provides healthcheck verification of remotely associated RESTful components
- */
-public class HealthCheckFeature implements PolicyEngineFeatureAPI {
-
- /**
- * Logger
- */
- private static Logger logger = LoggerFactory.getLogger(HealthCheckFeature.class);
-
- /**
- * Properties Configuration Name
- */
- public static final String CONFIGURATION_PROPERTIES_NAME = "policy-healthcheck";
-
- @Override
- public int getSequenceNumber() {
- return 1000;
- }
-
- @Override
- public boolean afterStart(PolicyEngine engine) {
- try {
- HealthCheck.monitor.start();
- } catch (IllegalStateException e) {
- logger.error("Healthcheck Monitor cannot be started", e);
- }
-
- return false;
- }
-
- @Override
- public boolean afterShutdown(PolicyEngine engine) {
- try {
- HealthCheck.monitor.stop();
- } catch (IllegalStateException e) {
- logger.error("Healthcheck Monitor cannot be stopped", e);
- }
-
- return false;
- }
-
- /**
- * gets the monitor
- * @return the healthcheck monitor
- */
- public HealthCheck getMonitor() {
- return HealthCheck.monitor;
- }
-
-}
diff --git a/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/RestHealthCheck.java b/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/RestHealthCheck.java
deleted file mode 100644
index 3f4c34f8..00000000
--- a/policy-healthcheck/src/main/java/org/openecomp/policy/drools/healthcheck/RestHealthCheck.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * policy-healthcheck
- * ================================================================================
- * 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.openecomp.policy.drools.healthcheck;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.openecomp.policy.drools.healthcheck.HealthCheck.Reports;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.Info;
-import io.swagger.annotations.SwaggerDefinition;
-import io.swagger.annotations.Tag;
-
-@Path("/")
-@Api
-@Produces(MediaType.APPLICATION_JSON)
-@SwaggerDefinition(
- info = @Info(
- description = "PDP-D Healthcheck Service",
- version = "v1.0",
- title = "PDP-D Healthcheck"
- ),
- consumes = {MediaType.APPLICATION_JSON},
- produces = {MediaType.APPLICATION_JSON},
- schemes = {SwaggerDefinition.Scheme.HTTP},
- tags = {
- @Tag(name = "pdp-d-healthcheck", description = "Drools PDP Healthcheck Operations")
- }
-)
-public class RestHealthCheck {
-
- @GET
- @Path("healthcheck")
- @Produces(MediaType.APPLICATION_JSON)
- @ApiOperation(
- value="Perform a system healthcheck",
- notes="Provides healthy status of the PDP-D plus the components defined in its configuration by using a REST interface",
- response=Reports.class
- )
- public Response healthcheck() {
- return Response.status(Response.Status.OK).entity(HealthCheck.monitor.healthCheck()).build();
- }
-
- @GET
- @Path("healthcheck/configuration")
- @Produces(MediaType.APPLICATION_JSON)
- @ApiOperation(
- value="Configuration",
- notes="Provides the Healthcheck server configuration and monitored REST clients",
- response=HealthCheck.class
- )
- public HealthCheck configuration() {
- return HealthCheck.monitor;
- }
-}
diff --git a/policy-healthcheck/src/main/resources/META-INF/services/org.openecomp.policy.drools.features.PolicyEngineFeatureAPI b/policy-healthcheck/src/main/resources/META-INF/services/org.openecomp.policy.drools.features.PolicyEngineFeatureAPI
deleted file mode 100644
index 7e307d08..00000000
--- a/policy-healthcheck/src/main/resources/META-INF/services/org.openecomp.policy.drools.features.PolicyEngineFeatureAPI
+++ /dev/null
@@ -1 +0,0 @@
-org.openecomp.policy.drools.healthcheck.HealthCheckFeature