Get the MSB info from DCAE Consul
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / utils / MSBRegisterUtil.java
index 1bb3fe3..1cd481e 100644 (file)
 \r
 package org.onap.holmes.common.utils;\r
 \r
+import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;\r
+\r
 import com.eclipsesource.jaxrs.consumer.ConsumerFactory;\r
 import java.io.IOException;\r
 import lombok.extern.slf4j.Slf4j;\r
 import org.jvnet.hk2.annotations.Service;\r
-import org.onap.holmes.common.msb.MicroserviceBusRest;\r
 import org.onap.holmes.common.api.entity.ServiceRegisterEntity;\r
 import org.onap.holmes.common.config.MicroServiceConfig;\r
+import org.onap.holmes.common.exception.CorrelationException;\r
+import org.onap.holmes.common.msb.MicroserviceBusRest;\r
+import org.onap.msb.sdk.discovery.common.RouteException;\r
+import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;\r
+import org.onap.msb.sdk.discovery.entity.MicroServiceInfo;\r
+import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;\r
 \r
 @Slf4j\r
 @Service\r
 public class MSBRegisterUtil {\r
 \r
-    public void register(ServiceRegisterEntity entity) throws IOException {\r
-        log.info("start holmes micro service register");\r
-        boolean flag = false;\r
+    public void register2Msb(MicroServiceInfo msinfo) throws CorrelationException {\r
+        String[] msbAddrInfo = MicroServiceConfig.getMsbAddrInfo();\r
+        MSBServiceClient msbClient = new MSBServiceClient(msbAddrInfo[0],\r
+                Integer.parseInt(msbAddrInfo[1]));\r
+\r
+        log.info("Start to register Holmes Service to MSB...");\r
+        MicroServiceFullInfo microServiceFullInfo = null;\r
         int retry = 0;\r
-        while (!flag && retry < 20) {\r
-            log.info("Holmes microservice register. retry:" + retry);\r
+        while (null == microServiceFullInfo && retry < 20) {\r
+            log.info("Holmes Service Registration. Retry: " + retry);\r
             retry++;\r
-            flag = innerRegister(entity);\r
-            if (!flag) {\r
-                log.warn("micro service register failed, sleep 30S and try again.");\r
+            try {\r
+                microServiceFullInfo = msbClient.registerMicroServiceInfo(msinfo, false);\r
+            } catch (RouteException e) {\r
+\r
+            }\r
+\r
+            if (null == microServiceFullInfo) {\r
+                log.warn("Failed to register the service to MSB. Sleep 30s and try again.");\r
                 threadSleep(30000);\r
             } else {\r
-                log.info("micro service register success!");\r
+                log.info("Registration succeeded!");\r
                 break;\r
             }\r
         }\r
-        log.info("holmes micro service register end.");\r
-    }\r
 \r
-    private boolean innerRegister(ServiceRegisterEntity entity) {\r
-        try {\r
-            log.info("msbServerAddr:" + MicroServiceConfig.getMsbServerAddr());\r
-            log.info("entity:" + entity);\r
-            MicroserviceBusRest resourceserviceproxy = ConsumerFactory.createConsumer(\r
-                    MicroServiceConfig.getMsbServerAddr(), MicroserviceBusRest.class);\r
-            resourceserviceproxy.registerServce("false", entity);\r
-        } catch (Exception error) {\r
-            log.error("microservice register failed!" + error.getMessage(), error);\r
-            return false;\r
+        if (null == microServiceFullInfo) {\r
+            throw new CorrelationException("Failed to register the service to MSB!");\r
         }\r
-        return true;\r
+\r
+        log.info("Service registration completed.");\r
     }\r
 \r
     private void threadSleep(int second) {\r
-        log.info("start sleep ....");\r
+        log.info("Start sleeping...");\r
         try {\r
             Thread.sleep(second);\r
         } catch (InterruptedException error) {\r
-            log.error("thread sleep error.errorMsg:" + error.getMessage(), error);\r
+            log.error("thread sleep error message:" + error.getMessage(), error);\r
             Thread.currentThread().interrupt();\r
         }\r
-        log.info("sleep end .");\r
+        log.info("Wake up.");\r
     }\r
 }
\ No newline at end of file