summaryrefslogtreecommitdiff
path: root/trove/datastore
diff options
context:
space:
mode:
authoramcrn <amcreynolds@ebaysf.com>2014-03-14 13:22:02 -0700
committeramcrn <amcreynolds@ebaysf.com>2014-03-14 13:22:02 -0700
commit63d62f084e3e54d7831c728ca40de4ce94004315 (patch)
treefca2f4823d95c32d3e517f765a884234eaf22d1c /trove/datastore
parenta767623967626e520e9dbafc219e345aa82a193c (diff)
downloadtrove-63d62f084e3e54d7831c728ca40de4ce94004315.tar.gz
Hide Datastores In List With No Active Versions
in a datastore-list operation, for non-admin, filters out datastores that either have no versions or have no active versions for non-admin users. admins continue to see all datastores, active or inactive, in a datastore-list operation. Change-Id: Iccaf9ae59469fd0f4cb346ee258d3132eed83660 Co-Authored-By: Andrey Shestakov <ashestakov@mirantis.com> Closes-Bug: #1290617
Diffstat (limited to 'trove/datastore')
-rw-r--r--trove/datastore/models.py10
-rw-r--r--trove/datastore/service.py6
2 files changed, 12 insertions, 4 deletions
diff --git a/trove/datastore/models.py b/trove/datastore/models.py
index 5cf9c029..93b0cfee 100644
--- a/trove/datastore/models.py
+++ b/trove/datastore/models.py
@@ -81,8 +81,12 @@ class Datastores(object):
self.db_info = db_info
@classmethod
- def load(cls):
- return cls(DBDatastore.find_all())
+ def load(cls, only_active=True):
+ datastores = DBDatastore.find_all()
+ if only_active:
+ datastores = datastores.join(DBDatastoreVersion).filter(
+ DBDatastoreVersion.active == 1)
+ return cls(datastores)
def __iter__(self):
for item in self.db_info:
@@ -137,7 +141,7 @@ class DatastoreVersion(object):
@property
def active(self):
- return self.db_info.active
+ return (True if self.db_info.active else False)
@property
def manager(self):
diff --git a/trove/datastore/service.py b/trove/datastore/service.py
index d2f0c0b3..d9acb1f8 100644
--- a/trove/datastore/service.py
+++ b/trove/datastore/service.py
@@ -28,7 +28,11 @@ class DatastoreController(wsgi.Controller):
DatastoreView(datastore, req).data(), 200)
def index(self, req, tenant_id):
- datastores = models.Datastores.load()
+ context = req.environ[wsgi.CONTEXT_KEY]
+ only_active = True
+ if context.is_admin:
+ only_active = False
+ datastores = models.Datastores.load(only_active)
return wsgi.Result(views.
DatastoresView(datastores, req).data(),
200)