Enable multi tenant for k8s resource get_xxx_list

1) get_pdod_list
2) get_service_list
3) get_rc_list

Implements part of bp multi-tenant

Change-Id: I40cefd7f4f637808afbcf172a5d98fddee066f2b
This commit is contained in:
Jay Lau (Guangya Liu) 2015-02-05 12:30:53 +08:00
parent de93db51b9
commit 150139321a
8 changed files with 51 additions and 30 deletions

View File

@ -342,13 +342,14 @@ class Connection(object):
:raises: NodeNotFound :raises: NodeNotFound
""" """
@abc.abstractmethod @abc.abstractmethod
def get_pod_list(self, columns=None, filters=None, limit=None, def get_pod_list(self, context, columns=None, filters=None, limit=None,
marker=None, sort_key=None, sort_dir=None): marker=None, sort_key=None, sort_dir=None):
"""Get specific columns for matching pods. """Get specific columns for matching pods.
Return a list of the specified columns for all pods that match the Return a list of the specified columns for all pods that match the
specified filters. specified filters.
:param context: The security context
:param columns: List of column names to return. :param columns: List of column names to return.
Defaults to 'id' column when columns == None. Defaults to 'id' column when columns == None.
:param filters: Filters to apply. Defaults to None. :param filters: Filters to apply. Defaults to None.
@ -430,13 +431,14 @@ class Connection(object):
""" """
@abc.abstractmethod @abc.abstractmethod
def get_service_list(self, columns=None, filters=None, limit=None, def get_service_list(self, context, columns=None, filters=None, limit=None,
marker=None, sort_key=None, sort_dir=None): marker=None, sort_key=None, sort_dir=None):
"""Get specific columns for matching services. """Get specific columns for matching services.
Return a list of the specified columns for all services that match the Return a list of the specified columns for all services that match the
specified filters. specified filters.
:param context: The security context
:param columns: List of column names to return. :param columns: List of column names to return.
Defaults to 'id' column when columns == None. Defaults to 'id' column when columns == None.
:param filters: Filters to apply. Defaults to None. :param filters: Filters to apply. Defaults to None.
@ -511,13 +513,14 @@ class Connection(object):
""" """
@abc.abstractmethod @abc.abstractmethod
def get_rc_list(self, columns=None, filters=None, limit=None, def get_rc_list(self, context, columns=None, filters=None, limit=None,
marker=None, sort_key=None, sort_dir=None): marker=None, sort_key=None, sort_dir=None):
"""Get specific columns for matching ReplicationController. """Get specific columns for matching ReplicationController.
Return a list of the specified columns for all rcs that match the Return a list of the specified columns for all rcs that match the
specified filters. specified filters.
:param context: The security context
:param columns: List of column names to return. :param columns: List of column names to return.
Defaults to 'id' column when columns == None. Defaults to 'id' column when columns == None.
:param filters: Filters to apply. Defaults to None. :param filters: Filters to apply. Defaults to None.

View File

@ -617,9 +617,10 @@ class Connection(api.Connection):
return _paginate_query(models.Pod, limit, marker, return _paginate_query(models.Pod, limit, marker,
sort_key, sort_dir, query) sort_key, sort_dir, query)
def get_pod_list(self, filters=None, limit=None, marker=None, def get_pod_list(self, context, filters=None, limit=None, marker=None,
sort_key=None, sort_dir=None): sort_key=None, sort_dir=None):
query = model_query(models.Pod) query = model_query(models.Pod)
query = self._add_tenant_filters(context, query)
query = self._add_pods_filters(query, filters) query = self._add_pods_filters(query, filters)
return _paginate_query(models.Pod, limit, marker, return _paginate_query(models.Pod, limit, marker,
sort_key, sort_dir, query) sort_key, sort_dir, query)
@ -729,9 +730,10 @@ class Connection(api.Connection):
return _paginate_query(models.Service, limit, marker, return _paginate_query(models.Service, limit, marker,
sort_key, sort_dir, query) sort_key, sort_dir, query)
def get_service_list(self, filters=None, limit=None, marker=None, def get_service_list(self, context, filters=None, limit=None, marker=None,
sort_key=None, sort_dir=None): sort_key=None, sort_dir=None):
query = model_query(models.Service) query = model_query(models.Service)
query = self._add_tenant_filters(context, query)
query = self._add_services_filters(query, filters) query = self._add_services_filters(query, filters)
return _paginate_query(models.Service, limit, marker, return _paginate_query(models.Service, limit, marker,
sort_key, sort_dir, query) sort_key, sort_dir, query)
@ -831,9 +833,10 @@ class Connection(api.Connection):
return _paginate_query(models.ReplicationController, limit, marker, return _paginate_query(models.ReplicationController, limit, marker,
sort_key, sort_dir, query) sort_key, sort_dir, query)
def get_rc_list(self, filters=None, limit=None, marker=None, def get_rc_list(self, context, filters=None, limit=None, marker=None,
sort_key=None, sort_dir=None): sort_key=None, sort_dir=None):
query = model_query(models.ReplicationController) query = model_query(models.ReplicationController)
query = self._add_tenant_filters(context, query)
query = self._add_rcs_filters(query, filters) query = self._add_rcs_filters(query, filters)
return _paginate_query(models.ReplicationController, limit, marker, return _paginate_query(models.ReplicationController, limit, marker,
sort_key, sort_dir, query) sort_key, sort_dir, query)

View File

@ -133,7 +133,7 @@ class Pod(base.MagnumObject):
:returns: a list of :class:`Pod` object. :returns: a list of :class:`Pod` object.
""" """
db_pods = cls.dbapi.get_pod_list(limit=limit, db_pods = cls.dbapi.get_pod_list(context, limit=limit,
marker=marker, marker=marker,
sort_key=sort_key, sort_key=sort_key,
sort_dir=sort_dir) sort_dir=sort_dir)

View File

@ -126,7 +126,7 @@ class ReplicationController(base.MagnumObject):
:returns: a list of :class:`ReplicationController` object. :returns: a list of :class:`ReplicationController` object.
""" """
db_rcs = cls.dbapi.get_rc_list(limit=limit, db_rcs = cls.dbapi.get_rc_list(context, limit=limit,
marker=marker, marker=marker,
sort_key=sort_key, sort_key=sort_key,
sort_dir=sort_dir) sort_dir=sort_dir)

View File

@ -122,7 +122,7 @@ class Service(base.MagnumObject):
:returns: a list of :class:`Service` object. :returns: a list of :class:`Service` object.
""" """
db_services = cls.dbapi.get_service_list(limit=limit, db_services = cls.dbapi.get_service_list(context, limit=limit,
marker=marker, marker=marker,
sort_key=sort_key, sort_key=sort_key,
sort_dir=sort_dir) sort_dir=sort_dir)

View File

@ -127,7 +127,7 @@ class DbPodTestCase(base.DbTestCase):
pod = utils.create_test_pod(uuid=magnum_utils.generate_uuid(), pod = utils.create_test_pod(uuid=magnum_utils.generate_uuid(),
bay_uuid=self.bay.uuid) bay_uuid=self.bay.uuid)
uuids.append(six.text_type(pod.uuid)) uuids.append(six.text_type(pod.uuid))
res = self.dbapi.get_pod_list() res = self.dbapi.get_pod_list(self.context)
res_uuids = [r.uuid for r in res] res_uuids = [r.uuid for r in res]
self.assertEqual(sorted(uuids), sorted(res_uuids)) self.assertEqual(sorted(uuids), sorted(res_uuids))
@ -146,28 +146,35 @@ class DbPodTestCase(base.DbTestCase):
bay_uuid=bay2['uuid'], bay_uuid=bay2['uuid'],
status='status2') status='status2')
res = self.dbapi.get_pod_list(filters={'bay_uuid': bay1['uuid']}) res = self.dbapi.get_pod_list(self.context,
filters={'bay_uuid': bay1['uuid']})
self.assertEqual([pod1.id], [r.id for r in res]) self.assertEqual([pod1.id], [r.id for r in res])
res = self.dbapi.get_pod_list(filters={'bay_uuid': bay2['uuid']}) res = self.dbapi.get_pod_list(self.context,
filters={'bay_uuid': bay2['uuid']})
self.assertEqual([pod2.id], [r.id for r in res]) self.assertEqual([pod2.id], [r.id for r in res])
res = self.dbapi.get_pod_list(filters={'name': 'pod-one'}) res = self.dbapi.get_pod_list(self.context,
filters={'name': 'pod-one'})
self.assertEqual([pod1.id], [r.id for r in res]) self.assertEqual([pod1.id], [r.id for r in res])
res = self.dbapi.get_pod_list(filters={'name': 'bad-pod'}) res = self.dbapi.get_pod_list(self.context,
filters={'name': 'bad-pod'})
self.assertEqual([], [r.id for r in res]) self.assertEqual([], [r.id for r in res])
res = self.dbapi.get_pod_list(filters={'status': 'status1'}) res = self.dbapi.get_pod_list(self.context,
filters={'status': 'status1'})
self.assertEqual([pod1.id], [r.id for r in res]) self.assertEqual([pod1.id], [r.id for r in res])
res = self.dbapi.get_pod_list(filters={'status': 'status2'}) res = self.dbapi.get_pod_list(self.context,
filters={'status': 'status2'})
self.assertEqual([pod2.id], [r.id for r in res]) self.assertEqual([pod2.id], [r.id for r in res])
def test_get_pod_list_bay_not_exist(self): def test_get_pod_list_bay_not_exist(self):
res = self.dbapi.get_pod_list({'bay_uuid': self.bay.uuid}) res = self.dbapi.get_pod_list(self.context,
{'bay_uuid': self.bay.uuid})
self.assertEqual(1, len(res)) self.assertEqual(1, len(res))
res = self.dbapi.get_pod_list({ res = self.dbapi.get_pod_list(self.context, {
'bay_uuid': magnum_utils.generate_uuid()}) 'bay_uuid': magnum_utils.generate_uuid()})
self.assertEqual(0, len(res)) self.assertEqual(0, len(res))

View File

@ -118,14 +118,15 @@ class DbRCTestCase(base.DbTestCase):
rc = utils.create_test_rc(bay_uuid=self.bay.uuid, rc = utils.create_test_rc(bay_uuid=self.bay.uuid,
uuid=magnum_utils.generate_uuid()) uuid=magnum_utils.generate_uuid())
uuids.append(six.text_type(rc.uuid)) uuids.append(six.text_type(rc.uuid))
rc = self.dbapi.get_rc_list() rc = self.dbapi.get_rc_list(self.context)
rc_uuids = [r.uuid for r in rc] rc_uuids = [r.uuid for r in rc]
self.assertEqual(sorted(uuids), sorted(rc_uuids)) self.assertEqual(sorted(uuids), sorted(rc_uuids))
def test_get_rc_list_bay_not_exist(self): def test_get_rc_list_bay_not_exist(self):
rc = self.dbapi.get_rc_list({'bay_uuid': self.bay.uuid}) rc = self.dbapi.get_rc_list(self.context,
{'bay_uuid': self.bay.uuid})
self.assertEqual(1, len(rc)) self.assertEqual(1, len(rc))
rc = self.dbapi.get_rc_list({ rc = self.dbapi.get_rc_list(self.context, {
'bay_uuid': magnum_utils.generate_uuid()}) 'bay_uuid': magnum_utils.generate_uuid()})
self.assertEqual(0, len(rc)) self.assertEqual(0, len(rc))

View File

@ -121,7 +121,7 @@ class DbServiceTestCase(base.DbTestCase):
service = utils.create_test_service(bay_uuid=self.bay.uuid, service = utils.create_test_service(bay_uuid=self.bay.uuid,
uuid=magnum_utils.generate_uuid()) uuid=magnum_utils.generate_uuid())
uuids.append(six.text_type(service.uuid)) uuids.append(six.text_type(service.uuid))
res = self.dbapi.get_service_list() res = self.dbapi.get_service_list(self.context)
res_uuids = [r.uuid for r in res] res_uuids = [r.uuid for r in res]
self.assertEqual(sorted(uuids), sorted(res_uuids)) self.assertEqual(sorted(uuids), sorted(res_uuids))
@ -140,28 +140,35 @@ class DbServiceTestCase(base.DbTestCase):
bay_uuid=bay2['uuid'], bay_uuid=bay2['uuid'],
port=8001) port=8001)
res = self.dbapi.get_service_list(filters={'bay_uuid': bay1['uuid']}) res = self.dbapi.get_service_list(self.context,
filters={'bay_uuid': bay1['uuid']})
self.assertEqual([service1.id], [r.id for r in res]) self.assertEqual([service1.id], [r.id for r in res])
res = self.dbapi.get_service_list(filters={'bay_uuid': bay2['uuid']}) res = self.dbapi.get_service_list(self.context,
filters={'bay_uuid': bay2['uuid']})
self.assertEqual([service2.id], [r.id for r in res]) self.assertEqual([service2.id], [r.id for r in res])
res = self.dbapi.get_service_list(filters={'name': 'service-one'}) res = self.dbapi.get_service_list(self.context,
filters={'name': 'service-one'})
self.assertEqual([service1.id], [r.id for r in res]) self.assertEqual([service1.id], [r.id for r in res])
res = self.dbapi.get_service_list(filters={'name': 'bad-service'}) res = self.dbapi.get_service_list(self.context,
filters={'name': 'bad-service'})
self.assertEqual([], [r.id for r in res]) self.assertEqual([], [r.id for r in res])
res = self.dbapi.get_service_list(filters={'port': 8000}) res = self.dbapi.get_service_list(self.context,
filters={'port': 8000})
self.assertEqual([service1.id], [r.id for r in res]) self.assertEqual([service1.id], [r.id for r in res])
res = self.dbapi.get_service_list(filters={'port': 8001}) res = self.dbapi.get_service_list(self.context,
filters={'port': 8001})
self.assertEqual([service2.id], [r.id for r in res]) self.assertEqual([service2.id], [r.id for r in res])
def test_get_service_list_bay_not_exist(self): def test_get_service_list_bay_not_exist(self):
res = self.dbapi.get_service_list({'bay_uuid': self.bay.uuid}) res = self.dbapi.get_service_list(self.context,
{'bay_uuid': self.bay.uuid})
self.assertEqual(1, len(res)) self.assertEqual(1, len(res))
res = self.dbapi.get_service_list({ res = self.dbapi.get_service_list(self.context, {
'bay_uuid': magnum_utils.generate_uuid()}) 'bay_uuid': magnum_utils.generate_uuid()})
self.assertEqual(0, len(res)) self.assertEqual(0, len(res))