Fix: check the remote server connectivity before adding to map

1. replace boolean typed enable flag into enumeration status type
2. put the service in pending state, if the activation was failed

Change-Id: I15110f3d837d9a3ecf048c2777ec6fae9bf264ff
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/RestTelemetryManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/RestTelemetryManager.java
index f5641bd..e73a724 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/RestTelemetryManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/RestTelemetryManager.java
@@ -40,7 +40,9 @@
 
 import static org.onosproject.openstacktelemetry.api.Constants.REST_SCHEME;
 import static org.onosproject.openstacktelemetry.api.config.TelemetryConfig.ConfigType.REST;
+import static org.onosproject.openstacktelemetry.api.config.TelemetryConfig.Status.ENABLED;
 import static org.onosproject.openstacktelemetry.config.DefaultRestTelemetryConfig.fromTelemetryConfig;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.testConnectivity;
 
 /**
  * REST telemetry manager.
@@ -130,12 +132,13 @@
     }
 
     @Override
-    public void start(String name) {
+    public boolean start(String name) {
+        boolean success = false;
         TelemetryConfig config = telemetryConfigService.getConfig(name);
         RestTelemetryConfig restConfig = fromTelemetryConfig(config);
 
-        if (restConfig != null &&
-                !config.name().equals(REST_SCHEME) && config.enabled()) {
+        if (restConfig != null && !config.name().equals(REST_SCHEME) &&
+                config.status() == ENABLED) {
             StringBuilder restServerBuilder = new StringBuilder();
             restServerBuilder.append(PROTOCOL);
             restServerBuilder.append(":");
@@ -145,13 +148,23 @@
             restServerBuilder.append(restConfig.port());
             restServerBuilder.append("/");
 
-            Client client = ClientBuilder.newBuilder().build();
+            if (testConnectivity(restConfig.address(), restConfig.port())) {
+                Client client = ClientBuilder.newBuilder().build();
 
-            WebTarget target = client.target(
-                    restServerBuilder.toString()).path(restConfig.endpoint());
+                WebTarget target = client.target(
+                        restServerBuilder.toString()).path(restConfig.endpoint());
 
-            targets.put(config.name(), target);
+                targets.put(config.name(), target);
+
+                success = true;
+            } else {
+                log.warn("Unable to connect to {}:{}, " +
+                                "please check the connectivity manually",
+                                restConfig.address(), restConfig.port());
+            }
         }
+
+        return success;
     }
 
     @Override
@@ -165,8 +178,8 @@
     }
 
     @Override
-    public void restart(String name) {
+    public boolean restart(String name) {
         stop(name);
-        start(name);
+        return start(name);
     }
 }