summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-01-10 06:12:40 +0000
committerGerrit Code Review <review@openstack.org>2014-01-10 06:12:40 +0000
commitd8ffceeeb7abc732ac63afb417e065f765c82465 (patch)
tree1b2232569f15ec02ad1e225b913350aee94a2ada
parent994ceae9a90c9fd87f3dc400b83df82503c5c5a7 (diff)
parent1fe2e7f8d3241114f71a2720379b9ba32936953e (diff)
downloadpython-ceilometerclient-d8ffceeeb7abc732ac63afb417e065f765c82465.tar.gz
Merge "Use Resource() class from common Oslo code"
-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)