summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-08-27 00:54:56 +0000
committerGerrit Code Review <review@openstack.org>2014-08-27 00:54:56 +0000
commit9756e2d470f35a2809343a950d9c5cf3a255833c (patch)
treebd0919c72cc5e9cbb608cec7fc902d4721c43ed6
parent722aeff8069d40e2dcc2a1f54a74b509ca0d00bf (diff)
parent00e13fad266ff02fa9deed0066cdf2e2ca9e0dce (diff)
downloadpython-troveclient-9756e2d470f35a2809343a950d9c5cf3a255833c.tar.gz
Merge "Add visibility filter to datastore versions"
-rw-r--r--troveclient/compat/client.py2
-rw-r--r--troveclient/compat/exceptions.py10
-rw-r--r--troveclient/v1/datastores.py61
3 files changed, 71 insertions, 2 deletions
diff --git a/troveclient/compat/client.py b/troveclient/compat/client.py
index 5c5d5fe..03802a0 100644
--- a/troveclient/compat/client.py
+++ b/troveclient/compat/client.py
@@ -339,6 +339,8 @@ class Dbaas(object):
self.security_group_rules = security_groups.SecurityGroupRules(self)
self.datastores = datastores.Datastores(self)
self.datastore_versions = datastores.DatastoreVersions(self)
+ self.datastore_version_members = (datastores.
+ DatastoreVersionMembers(self))
self.storage = storage.StorageInfo(self)
self.management = management.Management(self)
self.mgmt_flavor = management.MgmtFlavors(self)
diff --git a/troveclient/compat/exceptions.py b/troveclient/compat/exceptions.py
index 22bba23..7051bb4 100644
--- a/troveclient/compat/exceptions.py
+++ b/troveclient/compat/exceptions.py
@@ -108,6 +108,12 @@ class NotFound(ClientException):
message = "Not found"
+class Conflict(ClientException):
+ """HTTP 409 - Conflict."""
+ http_status = 409
+ message = "Conflict"
+
+
class OverLimit(ClientException):
"""HTTP 413
- Over limit: you're over the API limits for this time period.
@@ -138,8 +144,8 @@ class UnprocessableEntity(ClientException):
#
# Instead, we have to hardcode it:
_code_map = dict((c.http_status, c) for c in [BadRequest, Unauthorized,
- Forbidden, NotFound, OverLimit,
- HTTPNotImplemented,
+ Forbidden, NotFound, Conflict,
+ OverLimit, HTTPNotImplemented,
UnprocessableEntity])
diff --git a/troveclient/v1/datastores.py b/troveclient/v1/datastores.py
index bdce1fe..4785e8f 100644
--- a/troveclient/v1/datastores.py
+++ b/troveclient/v1/datastores.py
@@ -28,6 +28,16 @@ class DatastoreVersion(base.Resource):
def __repr__(self):
return "<DatastoreVersion: %s>" % self.name
+ def update(self, visibility=None):
+ """Change something in a datastore version."""
+ self.manager.update(self.datastore, self.id, visibility)
+
+
+class DatastoreVersionMember(base.Resource):
+
+ def __repr__(self):
+ return "<DatastoreVersionMember: %s>" % self.id
+
class Datastores(base.ManagerWithFind):
"""Manage :class:`Datastore` resources."""
@@ -84,3 +94,54 @@ class DatastoreVersions(base.ManagerWithFind):
return self._get("/datastores/versions/%s" %
base.getid(datastore_version),
"version")
+
+ def update(self, datastore, datastore_version, visibility):
+ """Update a specific datastore version."""
+ body = {
+ "datastore_version": {
+ }
+ }
+ if visibility is not None:
+ body["datastore_version"]["visibility"] = visibility
+
+ url = ("/mgmt/datastores/%s/versions/%s" %
+ (datastore, datastore_version))
+ return self._update(url, body=body)
+
+
+class DatastoreVersionMembers(base.ManagerWithFind):
+ """Manage :class:`DatastoreVersionMember` resources."""
+ resource_class = DatastoreVersionMember
+
+ def __repr__(self):
+ return "<DatastoreVersionMembers Manager at %s>" % id(self)
+
+ def add(self, datastore, datastore_version, tenant):
+ """Add a member to a datastore version."""
+ body = {"member": tenant}
+ return self._create("/mgmt/datastores/%s/versions/%s/members" %
+ (datastore, datastore_version),
+ body, "datastore_version_member")
+
+ def delete(self, datastore, datastore_version, member_id):
+ """Delete a member from a datastore version."""
+ return self._delete("/mgmt/datastores/%s/versions/%s/members/%s" %
+ (datastore, datastore_version, member_id))
+
+ def list(self, datastore, datastore_version, limit=None, marker=None):
+ """List members of datastore version."""
+ return self._list("/mgmt/datastores/%s/versions/%s/members" %
+ (datastore, datastore_version),
+ "datastore_version_members", limit, marker)
+
+ def get(self, datastore, datastore_version, member_id):
+ """Get a datastore version member."""
+ return self._get("/mgmt/datastores/%s/versions/%s/members/%s" %
+ (datastore, datastore_version, member_id),
+ "datastore_version_member")
+
+ def get_by_tenant(self, datastore, tenant, limit=None, marker=None):
+ """List members by tenant id."""
+ return self._list("/mgmt/datastores/%s/versions/members/%s" %
+ (datastore, tenant), "datastore_version_members",
+ limit, marker)