diff options
Diffstat (limited to 'catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/DesignerStatusBL.java')
-rw-r--r-- | catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/DesignerStatusBL.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/DesignerStatusBL.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/DesignerStatusBL.java new file mode 100644 index 0000000000..cadaf19e96 --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/DesignerStatusBL.java @@ -0,0 +1,78 @@ +package org.openecomp.sdc.fe.impl; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +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.DesignersConfiguration; +import org.openecomp.sdc.fe.config.DesignersConfiguration.Designer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +public class DesignerStatusBL { + + private static Logger log = LoggerFactory.getLogger(DesignerStatusBL.class.getName()); + private static Gson gson = new GsonBuilder().setPrettyPrinting().create(); + private CloseableHttpClient client = null; + + public DesignerStatusBL() { + this.client = HttpClients.createDefault(); + } + + public DesignerStatusBL(CloseableHttpClient client) { + this.client = client; + + } + + public String checkDesinerListAvailability() { + String result = null; + + DesignersConfiguration designersConfiguarion = ConfigurationManager.getConfigurationManager() + .getDesignersConfiguration(); + + if (designersConfiguarion == null || designersConfiguarion.getDesignersList() == null) { + log.warn("Configuration of type {} was not found", DesignersConfiguration.class); + } else { + log.debug("The value returned from getConfig is {}", designersConfiguarion); + + Map<String, Designer> avaiableDesignersMap = new HashMap<String, Designer>(); + + designersConfiguarion.getDesignersList().forEach((key, value) -> { + if (CheckDesignerAvailabilty(value)) { + avaiableDesignersMap.put(key, value); + } + + }); + result = gson.toJson(avaiableDesignersMap); + } + return result; + } + + private boolean CheckDesignerAvailabilty(Designer designer) { + + StringBuilder requestString = new StringBuilder(); + boolean result = false; + + requestString.append(designer.getDesignerProtocol()).append("://").append(designer.getDesignerHost()).append(":") + .append(designer.getDesignerPort()).append(designer.getDesignerPath()); + + 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 designer {} is offline", designer); + } + + return result; + } + +} |