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
This commit is contained in:
Andrey Kurilin
2013-12-09 17:27:15 +02:00
parent c74231e744
commit 9550f7cc58
3 changed files with 21 additions and 20 deletions

View File

@@ -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:

View File

@@ -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)

View File

@@ -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)