From 9550f7cc58d907eddd6ffc6c26b939bcccd8d05a Mon Sep 17 00:00:00 2001 From: Andrey Kurilin Date: Mon, 9 Dec 2013 17:27:15 +0200 Subject: [PATCH] Replace inheritance hierarchy with composition In the process of unification of the clients code we should use composition to allow easier replacement with common HTTPClient. bp common-client-library-2 Change-Id: I98d2bc89d5b1a36c30771923cd1cda7925e563d5 --- ceilometerclient/tests/test_shell.py | 4 ++-- ceilometerclient/v1/client.py | 14 +++++++------- ceilometerclient/v2/client.py | 23 ++++++++++++----------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/ceilometerclient/tests/test_shell.py b/ceilometerclient/tests/test_shell.py index c71e10b..aba7d18 100644 --- a/ceilometerclient/tests/test_shell.py +++ b/ceilometerclient/tests/test_shell.py @@ -44,8 +44,8 @@ class ShellTest(utils.BaseTestCase): super(ShellTest, self).setUp() @mock.patch.object(ksclient, 'Client') - @mock.patch.object(v1client.Client, 'json_request') - @mock.patch.object(v1client.Client, 'raw_request') + @mock.patch.object(v1client.http.HTTPClient, 'json_request') + @mock.patch.object(v1client.http.HTTPClient, 'raw_request') def shell(self, argstr, mock_ksclient, mock_json, mock_raw): orig = sys.stdout try: diff --git a/ceilometerclient/v1/client.py b/ceilometerclient/v1/client.py index 5ef572a..89a5b44 100644 --- a/ceilometerclient/v1/client.py +++ b/ceilometerclient/v1/client.py @@ -17,7 +17,7 @@ from ceilometerclient.common import http from ceilometerclient.v1 import meters -class Client(http.HTTPClient): +class Client(object): """Client for the Ceilometer v1 API. :param string endpoint: A user-supplied endpoint URL for the ceilometer @@ -29,9 +29,9 @@ class Client(http.HTTPClient): def __init__(self, *args, **kwargs): """Initialize a new client for the Ceilometer v1 API.""" - super(Client, self).__init__(*args, **kwargs) - self.meters = meters.MeterManager(self) - self.samples = meters.SampleManager(self) - self.users = meters.UserManager(self) - self.resources = meters.ResourceManager(self) - self.projects = meters.ProjectManager(self) + self.http_client = http.HTTPClient(*args, **kwargs) + self.meters = meters.MeterManager(self.http_client) + self.samples = meters.SampleManager(self.http_client) + self.users = meters.UserManager(self.http_client) + self.resources = meters.ResourceManager(self.http_client) + self.projects = meters.ProjectManager(self.http_client) diff --git a/ceilometerclient/v2/client.py b/ceilometerclient/v2/client.py index e11049f..1584daa 100644 --- a/ceilometerclient/v2/client.py +++ b/ceilometerclient/v2/client.py @@ -25,7 +25,7 @@ from ceilometerclient.v2 import trait_descriptions from ceilometerclient.v2 import traits -class Client(http.HTTPClient): +class Client(object): """Client for the Ceilometer v2 API. :param string endpoint: A user-supplied endpoint URL for the ceilometer @@ -37,13 +37,14 @@ class Client(http.HTTPClient): def __init__(self, *args, **kwargs): """Initialize a new client for the Ceilometer v1 API.""" - super(Client, self).__init__(*args, **kwargs) - self.meters = meters.MeterManager(self) - self.samples = samples.SampleManager(self) - self.statistics = statistics.StatisticsManager(self) - self.resources = resources.ResourceManager(self) - self.alarms = alarms.AlarmManager(self) - self.events = events.EventManager(self) - self.event_types = event_types.EventTypeManager(self) - self.traits = traits.TraitManager(self) - self.trait_info = trait_descriptions.TraitDescriptionManager(self) + self.http_client = http.HTTPClient(*args, **kwargs) + self.meters = meters.MeterManager(self.http_client) + self.samples = samples.SampleManager(self.http_client) + self.statistics = statistics.StatisticsManager(self.http_client) + self.resources = resources.ResourceManager(self.http_client) + self.alarms = alarms.AlarmManager(self.http_client) + self.events = events.EventManager(self.http_client) + self.event_types = event_types.EventTypeManager(self.http_client) + self.traits = traits.TraitManager(self.http_client) + self.trait_info = trait_descriptions.\ + TraitDescriptionManager(self.http_client)