diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-08-27 00:54:56 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-08-27 00:54:56 +0000 |
commit | 9756e2d470f35a2809343a950d9c5cf3a255833c (patch) | |
tree | bd0919c72cc5e9cbb608cec7fc902d4721c43ed6 | |
parent | 722aeff8069d40e2dcc2a1f54a74b509ca0d00bf (diff) | |
parent | 00e13fad266ff02fa9deed0066cdf2e2ca9e0dce (diff) | |
download | python-troveclient-9756e2d470f35a2809343a950d9c5cf3a255833c.tar.gz |
Merge "Add visibility filter to datastore versions"
-rw-r--r-- | troveclient/compat/client.py | 2 | ||||
-rw-r--r-- | troveclient/compat/exceptions.py | 10 | ||||
-rw-r--r-- | troveclient/v1/datastores.py | 61 |
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) |