Handle OpenStack authenticate exception and show warnings

Change-Id: Id7ac38c4dab1e43cf46bc8262adf98ea0a7d3558
diff --git a/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnPortApi.java b/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnPortApi.java
index baff814..a7329d4 100644
--- a/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnPortApi.java
+++ b/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnPortApi.java
@@ -25,6 +25,7 @@
 import org.onosproject.xosclient.api.VtnServiceId;
 import org.onosproject.xosclient.api.XosAccess;
 import org.openstack4j.api.OSClient;
+import org.openstack4j.api.exceptions.AuthenticationException;
 import org.openstack4j.model.network.IP;
 import org.openstack4j.model.network.Port;
 import org.openstack4j.openstack.OSFactory;
@@ -132,10 +133,15 @@
 
         // creating a client every time must be inefficient, but this method
         // will be removed once XOS provides equivalent APIs
-        return OSFactory.builder()
-                .endpoint(osAccess.endpoint())
-                .credentials(osAccess.user(), osAccess.password())
-                .tenantName(osAccess.tenant())
-                .authenticate();
+        try {
+            return OSFactory.builder()
+                    .endpoint(osAccess.endpoint())
+                    .credentials(osAccess.user(), osAccess.password())
+                    .tenantName(osAccess.tenant())
+                    .authenticate();
+        } catch (AuthenticationException e) {
+            log.warn("Failed to authenticate OpenStack API with {}", osAccess);
+            return null;
+        }
     }
 }
diff --git a/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnServiceApi.java b/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnServiceApi.java
index 1f83c21..84c366f6 100644
--- a/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnServiceApi.java
+++ b/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnServiceApi.java
@@ -28,6 +28,7 @@
 import org.onosproject.xosclient.api.VtnServiceId;
 
 import org.openstack4j.api.OSClient;
+import org.openstack4j.api.exceptions.AuthenticationException;
 import org.openstack4j.model.network.Network;
 import org.openstack4j.model.network.Subnet;
 import org.openstack4j.openstack.OSFactory;
@@ -162,11 +163,16 @@
 
         // creating a client every time must be inefficient, but this method
         // will be removed once XOS provides equivalent APIs
-        return OSFactory.builder()
-                .endpoint(osAccess.endpoint())
-                .credentials(osAccess.user(), osAccess.password())
-                .tenantName(osAccess.tenant())
-                .authenticate();
+        try {
+            return OSFactory.builder()
+                    .endpoint(osAccess.endpoint())
+                    .credentials(osAccess.user(), osAccess.password())
+                    .tenantName(osAccess.tenant())
+                    .authenticate();
+        } catch (AuthenticationException e) {
+            log.warn("Failed to authenticate OpenStack API with {}", osAccess);
+            return null;
+        }
     }
 
     // TODO remove this when XOS provides this information