1 package org.openecomp.sdc.fe.impl;
3 import java.io.IOException;
4 import java.util.ArrayList;
7 import org.apache.http.client.config.RequestConfig;
8 import org.apache.http.client.methods.CloseableHttpResponse;
9 import org.apache.http.client.methods.HttpHead;
10 import org.apache.http.impl.client.CloseableHttpClient;
11 import org.apache.http.impl.client.HttpClients;
12 import org.openecomp.sdc.fe.config.ConfigurationManager;
13 import org.openecomp.sdc.fe.config.PluginsConfiguration;
14 import org.openecomp.sdc.fe.config.PluginsConfiguration.Plugin;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
18 import com.google.gson.Gson;
19 import com.google.gson.GsonBuilder;
21 public class PluginStatusBL {
23 private static final Logger log = LoggerFactory.getLogger(PluginStatusBL.class.getName());
24 private final Gson gson;
25 private final CloseableHttpClient client;
26 private final PluginsConfiguration pluginsConfiguration;
27 private Integer connectionTimeout;
28 private RequestConfig requestConfig;
30 public PluginStatusBL() {
31 this.pluginsConfiguration = ConfigurationManager.getConfigurationManager().getPluginsConfiguration();
32 this.client = HttpClients.createDefault();
33 this.gson = new GsonBuilder().setPrettyPrinting().create();
36 public PluginStatusBL(CloseableHttpClient client) {
37 this.pluginsConfiguration = ConfigurationManager.getConfigurationManager().getPluginsConfiguration();
40 this.gson = new GsonBuilder().setPrettyPrinting().create();
44 public String checkPluginsListAvailability() {
47 if (pluginsConfiguration == null || pluginsConfiguration.getPluginsList() == null) {
48 log.warn("Configuration of type {} was not found", PluginsConfiguration.class);
50 log.debug("The value returned from getConfig is {}", pluginsConfiguration);
51 connectionTimeout = pluginsConfiguration.getConnectionTimeout();
52 this.requestConfig = RequestConfig.custom()
53 .setSocketTimeout(connectionTimeout)
54 .setConnectTimeout(connectionTimeout)
55 .setConnectionRequestTimeout(connectionTimeout).build();
57 List<Plugin> availablePluginsList = new ArrayList<>();
59 pluginsConfiguration.getPluginsList().forEach(plugin -> {
60 plugin.setOnline(checkPluginAvailability(plugin));
62 availablePluginsList.add(plugin);
64 result = gson.toJson(availablePluginsList);
69 private boolean checkPluginAvailability(Plugin plugin) {
70 boolean result = false;
71 log.debug("sending head request to id:{} url:{}",plugin.getPluginId(),plugin.getPluginDiscoveryUrl());
72 HttpHead head = new HttpHead(plugin.getPluginDiscoveryUrl());
74 head.setConfig(this.requestConfig);
76 try (CloseableHttpResponse response = this.client.execute(head)) {
77 result = response != null && response.getStatusLine().getStatusCode() == 200;
78 log.debug("The plugin {} is online", plugin.getPluginId());
79 } catch (IOException e) {
80 log.debug("The plugin {} is offline", plugin.getPluginId());