Skip to content

Commit

Permalink
Merge "Fix list api with shared option"
Browse files Browse the repository at this point in the history
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Nov 11, 2016
2 parents be9cfd7 + 126e11c commit 33865fb
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 25 deletions.
7 changes: 4 additions & 3 deletions src/api-lib/vnc_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -522,11 +522,11 @@ def _object_update(self, res_type, obj):
@check_homepage
def _objects_list(self, res_type, parent_id=None, parent_fq_name=None,
obj_uuids=None, back_ref_id=None, fields=None,
detail=False, count=False, filters=None):
detail=False, count=False, filters=None, shared=False):
return self.resource_list(res_type, parent_id=parent_id,
parent_fq_name=parent_fq_name, back_ref_id=back_ref_id,
obj_uuids=obj_uuids, fields=fields, detail=detail, count=count,
filters=filters)
filters=filters, shared=shared)
# end _objects_list

@check_homepage
Expand Down Expand Up @@ -1113,7 +1113,7 @@ def get_auth_token(self):
@check_homepage
def resource_list(self, obj_type, parent_id=None, parent_fq_name=None,
back_ref_id=None, obj_uuids=None, fields=None,
detail=False, count=False, filters=None):
detail=False, count=False, filters=None, shared=False):
if not obj_type:
raise ResourceTypeUnknownError(obj_type)

Expand Down Expand Up @@ -1156,6 +1156,7 @@ def resource_list(self, obj_type, parent_id=None, parent_fq_name=None,
query_params['detail'] = detail

query_params['count'] = count
query_params['shared'] = shared

if filters:
query_params['filters'] = ','.join(
Expand Down
7 changes: 7 additions & 0 deletions src/config/api-server/tests/test_perms2.py
Original file line number Diff line number Diff line change
Expand Up @@ -692,6 +692,8 @@ def test_shared_access(self):
try:
net_obj = bob.vnc_lib.virtual_network_read(id=vn.get_uuid())
self.assertTrue(True, 'Succeeded in reading VN. Test passed!')
net_objs = bob.vnc_lib.virtual_networks_list(shared=True)
self.assertTrue(vn.get_uuid(), net_objs['virtual-networks'][0]['uuid'])
except PermissionDenied as e:
self.assertTrue(False, 'Failed to read VN ... Test failed!')

Expand All @@ -707,6 +709,9 @@ def test_shared_access(self):
except PermissionDenied as e:
self.assertTrue(True, 'Failed to read VN ... Test passed!')

net_objs = bob.vnc_lib.virtual_networks_list(shared=True)
for net_obj in net_objs['virtual-networks']:
self.assertNotEquals(vn.get_uuid(), net_obj['uuid'])
logger.info( 'Enable "tenant" scope share in virtual network for bob project')
set_perms(vn, share = [('tenant:'+bob.project_uuid, PERMS_R)])
alice.vnc_lib.virtual_network_update(vn)
Expand Down Expand Up @@ -739,6 +744,8 @@ def test_shared_access(self):
try:
net_obj = bob.vnc_lib.virtual_network_read(id=vn.get_uuid())
self.assertTrue(True, 'Succeeded in reading VN. Test passed!')
net_objs = bob.vnc_lib.virtual_networks_list(shared=True)
self.assertTrue(vn.get_uuid(), net_objs['virtual-networks'][0]['uuid'])
except PermissionDenied as e:
self.assertTrue(False, 'Failed to read VN ... Test failed!')

Expand Down
35 changes: 17 additions & 18 deletions src/config/api-server/vnc_cfg_ifmap.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import socket
from netaddr import IPNetwork, IPAddress
from context import get_request

from cfgm_common.uve.vnc_api.ttypes import *
from cfgm_common import ignore_exceptions
Expand Down Expand Up @@ -152,23 +153,6 @@ def __init__(self, db_client_mgr, ifmap_srv_ip, ifmap_srv_port,
vnc_greenlets.VncGreenlet('VNC IfMap Health Checker',
self._health_checker)
# end __init__

def _owner_id(self):
env = get_request().headers.environ
tenant_uuid = env.get('HTTP_X_PROJECT_ID')
domain = env.get('HTTP_X_DOMAIN_ID')
if domain is None:
domain = env.get('HTTP_X_USER_DOMAIN_ID')
try:
domain = str(uuid.UUID(domain))
except ValueError:
if domain == 'default':
domain = 'default-domain'
domain = self._db_conn.fq_name_to_uuid('domain', [domain])
if domain:
domain = domain.replace('-','')
return domain, tenant_uuid

@classmethod
def object_alloc(cls, obj_class, parent_res_type, fq_name):
res_type = obj_class.resource_type
Expand Down Expand Up @@ -2026,11 +2010,26 @@ def dbe_update(self, obj_type, obj_ids, new_obj_dict):
return (ok, cassandra_result)
# end dbe_update

def _owner_id(self):
env = get_request().headers.environ
tenant_uuid = env.get('HTTP_X_PROJECT_ID')
domain = env.get('HTTP_X_DOMAIN_ID')
if domain is None:
domain = env.get('HTTP_X_USER_DOMAIN_ID')
try:
domain = str(uuid.UUID(domain))
except ValueError:
if domain == 'default':
domain = 'default-domain'
domain = self._db_conn.fq_name_to_uuid('domain', [domain])
if domain:
domain = domain.replace('-','')
return domain, tenant_uuid

def dbe_list_rdbms(self, obj_type, parent_uuids=None, back_ref_uuids=None,
obj_uuids=None, is_count=False, filters=None,
paginate_start=None, paginate_count=None, is_detail=False,
field_names=None, include_shared=False):

domain = None
tenant_id = None
if include_shared:
Expand Down
7 changes: 3 additions & 4 deletions src/config/common/vnc_rdbms.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@ def __repr__(self):

class SqaShare(object):
tenant = Column(String(1024))
tenant_permission = Column(Integer, primary_key=True)
tenant_access = Column(Integer, primary_key=True)

def __repr__(self):
return "<SqaShare(owner='%s' tenant='%s', tenant_permission='%d')>" % (
self.owner, self.tenant, self.tenant_permission)
return "<SqaShare(owner='%s' tenant='%s', tenant_access='%d')>" % (
self.owner, self.tenant, self.tenant_access)

class SqaObjectRef(object):
#ref_value = Column(Text())
Expand Down Expand Up @@ -987,7 +987,6 @@ def object_update(self, res_type, obj_uuid, new_obj_dict):

return (True, '')
# end object_update

@use_session
def object_list(self, res_type, parent_uuids=None, back_ref_uuids=None,
obj_uuids=None, count=False, filters=None, field_names=None,
Expand Down

0 comments on commit 33865fb

Please sign in to comment.