summaryrefslogtreecommitdiffstats
path: root/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java')
-rw-r--r--catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java
new file mode 100644
index 0000000000..dcd5eef491
--- /dev/null
+++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java
@@ -0,0 +1,78 @@
+package org.openecomp.sdc.fe.impl;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpHead;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.openecomp.sdc.fe.config.ConfigurationManager;
+import org.openecomp.sdc.fe.config.PluginsConfiguration;
+import org.openecomp.sdc.fe.config.PluginsConfiguration.Plugin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+public class PluginStatusBL {
+
+ private static Logger log = LoggerFactory.getLogger(PluginStatusBL.class.getName());
+ private static Gson gson = new GsonBuilder().setPrettyPrinting().create();
+ private CloseableHttpClient client = null;
+
+ public PluginStatusBL() {
+ this.client = HttpClients.createDefault();
+ }
+
+ public PluginStatusBL(CloseableHttpClient client) {
+ this.client = client;
+
+ }
+
+ public String checkPluginsListAvailability() {
+ String result = null;
+
+ PluginsConfiguration pluginsConfiguration = ConfigurationManager.getConfigurationManager()
+ .getPluginsConfiguration();
+
+ if (pluginsConfiguration == null || pluginsConfiguration.getPluginsList() == null) {
+ log.warn("Configuration of type {} was not found", PluginsConfiguration.class);
+ } else {
+ log.debug("The value returned from getConfig is {}", pluginsConfiguration);
+
+ List<Plugin> availablePluginsList = new ArrayList<>();
+
+ pluginsConfiguration.getPluginsList().forEach(value -> {
+ if (checkPluginAvailability(value)) {
+ availablePluginsList.add(value);
+ }
+
+ });
+ result = gson.toJson(availablePluginsList);
+ }
+ return result;
+ }
+
+ private boolean checkPluginAvailability(Plugin plugin) {
+
+ StringBuilder requestString = new StringBuilder();
+ boolean result = false;
+
+ requestString.append(plugin.getPluginProtocol()).append("://").append(plugin.getPluginHost()).append(":")
+ .append(plugin.getPluginPort()).append(plugin.getPluginPath());
+
+ HttpHead head = new HttpHead(requestString.toString());
+
+ try (CloseableHttpResponse response = this.client.execute(head)) {
+ result = response != null && response.getStatusLine().getStatusCode() == 200;
+ } catch (IOException e) {
+ log.debug("The plugin {} is offline", plugin);
+ }
+
+ return result;
+ }
+
+}