From d00035ca0bbecb2d06153c2a6ea955dd12f3fd92 Mon Sep 17 00:00:00 2001 From: Xicheng Chang Date: Fri, 17 Jun 2016 14:39:57 -0400 Subject: [PATCH] Support multi-tenant for clusters and machines. Change-Id: I4af6c82d2243977903d71366a538808dd5cd92f8 --- compass/db/api/cluster.py | 6 +++++- compass/db/api/machine.py | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/compass/db/api/cluster.py b/compass/db/api/cluster.py index d82f9514..9fc00402 100644 --- a/compass/db/api/cluster.py +++ b/compass/db/api/cluster.py @@ -162,9 +162,13 @@ UPDATED_CLUSTERHOST_LOG_FIELDS = [ @utils.wrap_to_dict(RESP_FIELDS) def list_clusters(user=None, session=None, **filters): """List clusters.""" - return utils.list_db_objects( + clusters = utils.list_db_objects( session, models.Cluster, **filters ) + logging.info('user is %s', user.email) + if not user.is_admin and len(clusters): + clusters = [c for c in clusters if c.owner == user.email] + return clusters def _get_cluster(cluster_id, session=None, **kwargs): diff --git a/compass/db/api/machine.py b/compass/db/api/machine.py index 123d6070..9a8d3eac 100644 --- a/compass/db/api/machine.py +++ b/compass/db/api/machine.py @@ -130,9 +130,12 @@ def get_machine( @utils.wrap_to_dict(RESP_FIELDS) def list_machines(user=None, session=None, **filters): """List machines.""" - return utils.list_db_objects( + machines = utils.list_db_objects( session, models.Machine, **filters ) + if not user.is_admin and len(machines): + machines = [m for m in machines if m.owner_id == user.id] + return machines @utils.wrap_to_dict(RESP_FIELDS)