[PORTAL-16 PORTAL-18] Widget ms; staging
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / service / ConsulHealthServiceImpl.java
index 1d741dc..175a1c7 100644 (file)
@@ -1,91 +1,95 @@
-/*-\r
- * ================================================================================\r
- * ECOMP Portal\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ================================================================================\r
- */\r
-package org.openecomp.portalapp.portal.service;\r
-\r
-import java.util.List;\r
-\r
-import org.springframework.stereotype.Component;\r
-\r
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;\r
-import org.openecomp.portalsdk.core.util.SystemProperties;\r
-import com.ecwid.consul.ConsulException;\r
-import com.orbitz.consul.Consul;\r
-import com.orbitz.consul.HealthClient;\r
-import com.orbitz.consul.model.health.ServiceHealth;\r
-\r
-@Component\r
-public class ConsulHealthServiceImpl implements ConsulHealthService {\r
-       \r
-       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulHealthServiceImpl.class);\r
-\r
-       @Override\r
-       public String getServiceLocation(String service){\r
-\r
-               List<ServiceHealth> nodes = null;\r
-               \r
-               try{\r
-                       Consul consul = Consul.builder().build();\r
-                       HealthClient healthClient = consul.healthClient();\r
-                       nodes = healthClient.getHealthyServiceInstances(service).getResponse();\r
-               }\r
-               catch(Exception e){\r
-                       //using both loggers.\r
-                       logger.debug(logger.debugLogger, " problem getting nodes for service - " + service + e.getMessage() + " - Defaulting to localhost", e);\r
-                       logger.error(logger.errorLogger, " problem getting nodes for service - " + service + e.getMessage() + " - Defaulting to localhost", e);\r
-\r
-                       return "localhost:" + SystemProperties.getProperty("microservices.widget.local.port");\r
-               }\r
-               \r
-               if(nodes == null || nodes.size() == 0){\r
-                       logger.debug(logger.debugLogger, "No healthy node found in the consul cluster running service " + service + ". Defaulting to localhost");\r
-                       return "localhost:" + SystemProperties.getProperty("microservices.widget.local.port");\r
-               }\r
-               else{\r
-                       String locationFromConsul;\r
-                       ServiceHealth node = nodes.get(0);\r
-                       locationFromConsul = node.getNode().getNode()  + ":" + node.getService().getPort();\r
-                       logger.debug(logger.debugLogger, "Found healthy service location using consul - returning location " + locationFromConsul);\r
-                       \r
-                       //if locationFromConsul is null for some reason (very unlikely at this point), default to localhost             \r
-                       if(null == locationFromConsul || "".equals(locationFromConsul)){\r
-                               logger.debug(logger.debugLogger, "Couldn't get location from consul for service " + service + ". Defaulting to localhost");\r
-                               return "localhost:" + SystemProperties.getProperty("microservices.widget.local.port");\r
-                       }\r
-                       else{\r
-                               logger.debug(logger.debugLogger, "Found service location from consul for service " + service + ". Location is " + locationFromConsul);\r
-                               return locationFromConsul;\r
-                       }                       \r
-               }               \r
-       }\r
-\r
-       @Override\r
-       public List<ServiceHealth> getAllHealthyNodes(String service) throws ConsulException{\r
-               Consul consul = Consul.builder().build();\r
-               HealthClient healthClient = consul.healthClient();\r
-               return healthClient.getHealthyServiceInstances(service).getResponse();\r
-       }\r
-\r
-       @Override\r
-       public List<ServiceHealth> getAllNodes(String service){\r
-               Consul consul = Consul.builder().build();\r
-               HealthClient healthClient = consul.healthClient();\r
-               return healthClient.getAllServiceInstances(service).getResponse();\r
-       }\r
-}\r
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * 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.
+ * ================================================================================
+ */
+package org.openecomp.portalapp.portal.service;
+
+import java.util.List;
+
+import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.springframework.stereotype.Component;
+
+import com.ecwid.consul.ConsulException;
+import com.orbitz.consul.Consul;
+import com.orbitz.consul.HealthClient;
+import com.orbitz.consul.model.health.ServiceHealth;
+
+@Component
+public class ConsulHealthServiceImpl implements ConsulHealthService {
+
+       private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulHealthServiceImpl.class);
+
+       @Override
+       public String getServiceLocation(String service, String fallbackPortOnLocalHost) {
+
+               List<ServiceHealth> nodes = null;
+
+               try {
+                       Consul consul = Consul.builder().build();
+                       HealthClient healthClient = consul.healthClient();
+                       nodes = healthClient.getHealthyServiceInstances(service).getResponse();
+               } catch (Exception e) {
+                       String localFallbackServiceLocation = "localhost:" + fallbackPortOnLocalHost;
+                       logger.debug(EELFLoggerDelegate.debugLogger,
+                                       " problem getting nodes for service {1}. Defaulting to {2}. Exception: {3}", service,
+                                       localFallbackServiceLocation, e.getMessage());
+                       logger.error(EELFLoggerDelegate.errorLogger,
+                                       " problem getting nodes for service {1}. Defaulting to {2}. Exception: {3}", service,
+                                       localFallbackServiceLocation, e);
+                       return localFallbackServiceLocation;
+               }
+
+               if (nodes == null || nodes.size() == 0) {
+                       logger.debug(EELFLoggerDelegate.debugLogger, "No healthy node found in the consul cluster running service " + service
+                                       + ". Defaulting to localhost");
+                       return "localhost:" + fallbackPortOnLocalHost;
+               } else {
+                       String locationFromConsul;
+                       ServiceHealth node = nodes.get(0);
+                       locationFromConsul = node.getNode().getNode() + ":" + node.getService().getPort();
+                       logger.debug(EELFLoggerDelegate.debugLogger,
+                                       "Found healthy service location using consul - returning location " + locationFromConsul);
+
+                       // if locationFromConsul is null for some reason (very unlikely at
+                       // this point), default to localhost
+                       if (null == locationFromConsul || "".equals(locationFromConsul)) {
+                               logger.debug(EELFLoggerDelegate.debugLogger,
+                                               "Couldn't get location from consul for service " + service + ". Defaulting to localhost");
+                               return "localhost:" + fallbackPortOnLocalHost;
+                       } else {
+                               logger.debug(EELFLoggerDelegate.debugLogger, "Found service location from consul for service " + service
+                                               + ". Location is " + locationFromConsul);
+                               return locationFromConsul;
+                       }
+               }
+       }
+
+       @Override
+       public List<ServiceHealth> getAllHealthyNodes(String service) throws ConsulException {
+               Consul consul = Consul.builder().build();
+               HealthClient healthClient = consul.healthClient();
+               return healthClient.getHealthyServiceInstances(service).getResponse();
+       }
+
+       @Override
+       public List<ServiceHealth> getAllNodes(String service) {
+               Consul consul = Consul.builder().build();
+               HealthClient healthClient = consul.healthClient();
+               return healthClient.getAllServiceInstances(service).getResponse();
+       }
+}