From d0bfe67c3c64f58ed1f53defb24f4c0b31d5faab Mon Sep 17 00:00:00 2001 From: Hyunsun Moon Date: Thu, 30 Jun 2016 10:55:10 -0700 Subject: [PATCH] Handle OpenStack authenticate exception and show warnings Change-Id: Id7ac38c4dab1e43cf46bc8262adf98ea0a7d3558 --- .../xosclient/impl/DefaultVtnPortApi.java | 16 +++++++++++----- .../xosclient/impl/DefaultVtnServiceApi.java | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) 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 baff814dfa..a7329d4cbc 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.VtnPortId; 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 @@ public final class DefaultVtnPortApi extends XosApi implements VtnPortApi { // 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 1f83c2160d..84c366f6b6 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.VtnService; 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 @@ public final class DefaultVtnServiceApi extends XosApi implements VtnServiceApi // 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