summaryrefslogtreecommitdiff
path: root/troveclient/v1/modules.py
diff options
context:
space:
mode:
Diffstat (limited to 'troveclient/v1/modules.py')
-rw-r--r--troveclient/v1/modules.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/troveclient/v1/modules.py b/troveclient/v1/modules.py
index ec66b20..15d90c9 100644
--- a/troveclient/v1/modules.py
+++ b/troveclient/v1/modules.py
@@ -14,35 +14,40 @@
# under the License.
#
-import base64
-
from troveclient import base
from troveclient import common
+from troveclient import utils
class Module(base.Resource):
NO_CHANGE_TO_ARG = 'no_change_to_argument'
+ ALL_KEYWORD = 'all'
def __repr__(self):
return "<Module: %s>" % self.name
+ def __hash__(self):
+ return hash(repr(self))
+
+ def __eq__(self, other):
+ if isinstance(other, self.__class__):
+ return self.__dict__ == other.__dict__
+ else:
+ return False
+
class Modules(base.ManagerWithFind):
"""Manage :class:`Module` resources."""
resource_class = Module
- def _encode_string(self, data_str):
- byte_array = bytearray(data_str, 'utf-8')
- return base64.b64encode(byte_array)
-
def create(self, name, module_type, contents, description=None,
all_tenants=None, datastore=None,
datastore_version=None, auto_apply=None,
visible=None, live_update=None):
"""Create a new module."""
- contents = self._encode_string(contents)
+ contents = utils.encode_data(contents)
body = {"module": {
"name": name,
"module_type": module_type,
@@ -86,7 +91,7 @@ class Modules(base.ManagerWithFind):
if module_type is not None:
body["module"]["type"] = module_type
if contents is not None:
- contents = self._encode_string(contents)
+ contents = utils.encode_data(contents)
body["module"]["contents"] = contents
if description is not None:
body["module"]["description"] = description
@@ -116,7 +121,7 @@ class Modules(base.ManagerWithFind):
"""Get a list of all modules."""
query_strings = None
if datastore:
- query_strings = {"datastore": datastore}
+ query_strings = {"datastore": base.getid(datastore)}
return self._paginated(
"/modules", "modules", limit, marker, query_strings=query_strings)
@@ -130,3 +135,13 @@ class Modules(base.ManagerWithFind):
url = "/modules/%s" % base.getid(module)
resp, body = self.api.client.delete(url)
common.check_for_exceptions(resp, body, url)
+
+ def instances(self, module, limit=None, marker=None,
+ include_clustered=False):
+ """Get a list of all instances this module has been applied to."""
+ url = "/modules/%s/instances" % base.getid(module)
+ query_strings = {}
+ if include_clustered:
+ query_strings['include_clustered'] = include_clustered
+ return self._paginated(url, "instances", limit, marker,
+ query_strings=query_strings)