summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorekudryashova <ekudryashova@mirantis.com>2013-12-18 15:48:56 +0200
committerekudryashova <ekudryashova@mirantis.com>2014-01-08 13:41:25 +0200
commit1fe2e7f8d3241114f71a2720379b9ba32936953e (patch)
tree9ddda0e82f478be3b07a36eb0a053e640856547c
parentd663570b775bf429c9f6b183d1e7809e4d4a1b2d (diff)
downloadpython-ceilometerclient-1fe2e7f8d3241114f71a2720379b9ba32936953e.tar.gz
Use Resource() class from common Oslo code
In the process of unification of the clients code we should reuse common functionality from Oslo. Resource() class from ceilometer duplicates Oslo funclionality, so we replace it with inheritance Change-Id: I4e4b83252cdc87e8484d15e351cd5dab08f3ed8a
-rw-r--r--ceilometerclient/common/base.py53
1 files changed, 2 insertions, 51 deletions
diff --git a/ceilometerclient/common/base.py b/ceilometerclient/common/base.py
index 45873c6..a01adbf 100644
--- a/ceilometerclient/common/base.py
+++ b/ceilometerclient/common/base.py
@@ -18,8 +18,8 @@ Base utilities to build API operation managers and objects on top of.
"""
import copy
-import six
+from ceilometerclient.openstack.common.apiclient import base
# Python 2.4 compat
try:
@@ -81,7 +81,7 @@ class Manager(object):
self.api.raw_request('DELETE', url)
-class Resource(object):
+class Resource(base.Resource):
"""A resource represents a particular instance of an object (tenant, user,
etc). This is pretty much just a bag for attributes.
@@ -89,55 +89,6 @@ class Resource(object):
:param info: dictionary representing resource attributes
:param loaded: prevent lazy-loading if set to True
"""
- def __init__(self, manager, info, loaded=False):
- self.manager = manager
- self._info = info
- self._add_details(info)
- self._loaded = loaded
-
- def _add_details(self, info):
- for (k, v) in six.iteritems(info):
- setattr(self, k, v)
-
- def __getattr__(self, k):
- if k not in self.__dict__:
- # NOTE(bcwaldon): disallow lazy-loading if already loaded once
- if not self.is_loaded():
- self.get()
- return self.__getattr__(k)
-
- raise AttributeError(k)
- else:
- return self.__dict__[k]
-
- def __repr__(self):
- reprkeys = sorted(k for k in self.__dict__.keys() if k[0] != '_' and
- k != 'manager')
- info = ", ".join("%s=%s" % (k, getattr(self, k)) for k in reprkeys)
- return "<%s %s>" % (self.__class__.__name__, info)
-
- def get(self):
- # set_loaded() first ... so if we have to bail, we know we tried.
- self.set_loaded(True)
- if not hasattr(self.manager, 'get'):
- return
-
- new = self.manager.get(self.id)
- if new:
- self._add_details(new._info)
-
- def __eq__(self, other):
- if not isinstance(other, self.__class__):
- return False
- if hasattr(self, 'id') and hasattr(other, 'id'):
- return self.id == other.id
- return self._info == other._info
-
- def is_loaded(self):
- return self._loaded
-
- def set_loaded(self, val):
- self._loaded = val
def to_dict(self):
return copy.deepcopy(self._info)