From 5a56d6eb8fef918f227aaa42d1e5b2ad2972d00e Mon Sep 17 00:00:00 2001 From: liusheng Date: Tue, 8 Mar 2016 09:41:22 +0800 Subject: [PATCH] Decouple ceilometerclient without aodh services running Currently, the ceilometerclient will be broken if aodh services not running, it will be worse if users don't want alarming service and they must start the aodh services. Change-Id: Idf7468f28cee001262b67b6e110357ffc971535a Closes-Bug: #1550095 (cherry picked from commit 78869fbccaffdf625fc1ec4ed3108bb7de892720) --- ceilometerclient/tests/unit/test_client.py | 10 ++++++++++ ceilometerclient/v2/client.py | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/ceilometerclient/tests/unit/test_client.py b/ceilometerclient/tests/unit/test_client.py index 000f0e84..5233709e 100644 --- a/ceilometerclient/tests/unit/test_client.py +++ b/ceilometerclient/tests/unit/test_client.py @@ -17,6 +17,7 @@ from keystoneclient.auth.identity import v3 as v3_auth from keystoneclient import exceptions as ks_exc from keystoneclient import session as ks_session import mock +import requests from ceilometerclient import client from ceilometerclient import exc @@ -218,6 +219,15 @@ class ClientTestWithAodh(ClientTest): self.assertEqual('True', (client.alarm_client.http_client. auth_plugin.opts['insecure'])) + def test_ceilometerclient_available_without_aodh_services_running(self): + env = FAKE_ENV.copy() + env.pop('auth_plugin', None) + with mock.patch('ceilometerclient.openstack.common.apiclient.client.' + 'HTTPClient.client_request') as mocked_request: + mocked_request.side_effect = requests.exceptions.ConnectionError + ceiloclient = client.get_client(2, **env) + self.assertIsInstance(ceiloclient, v2client.Client) + class ClientAuthTest(utils.BaseTestCase): diff --git a/ceilometerclient/v2/client.py b/ceilometerclient/v2/client.py index f613cec5..21a01b43 100644 --- a/ceilometerclient/v2/client.py +++ b/ceilometerclient/v2/client.py @@ -16,6 +16,8 @@ # under the License. import copy +import requests + from ceilometerclient import client as ceiloclient from ceilometerclient.v2 import alarms from ceilometerclient.v2 import capabilities @@ -125,3 +127,5 @@ class Client(object): return None except kc_exc.EndpointNotFound: return None + except requests.exceptions.ConnectionError: + return None