Merge "Cisco N1kv: Fix update network profile for add tenants"
This commit is contained in:
commit
0fd239913c
@ -957,14 +957,22 @@ def _get_profile_bindings(db_session, profile_type=None):
|
||||
If profile type is None, return profile-tenant binding for all
|
||||
profile types.
|
||||
"""
|
||||
LOG.debug(_("_get_profile_bindings()"))
|
||||
if profile_type:
|
||||
profile_bindings = (db_session.query(n1kv_models_v2.ProfileBinding).
|
||||
filter_by(profile_type=profile_type))
|
||||
return profile_bindings
|
||||
return (db_session.query(n1kv_models_v2.ProfileBinding).
|
||||
filter_by(profile_type=profile_type))
|
||||
return db_session.query(n1kv_models_v2.ProfileBinding)
|
||||
|
||||
|
||||
def _get_profile_bindings_by_uuid(db_session, profile_id):
|
||||
"""
|
||||
Retrieve a list of profile bindings.
|
||||
|
||||
Get all profile-tenant bindings based on profile UUID.
|
||||
"""
|
||||
return (db_session.query(n1kv_models_v2.ProfileBinding).
|
||||
filter_by(profile_id=profile_id))
|
||||
|
||||
|
||||
class NetworkProfile_db_mixin(object):
|
||||
|
||||
"""Network Profile Mixin."""
|
||||
@ -1099,8 +1107,10 @@ class NetworkProfile_db_mixin(object):
|
||||
original_net_p = get_network_profile(context.session, id)
|
||||
# Update network profile to tenant id binding.
|
||||
if context.is_admin and c_const.ADD_TENANTS in p:
|
||||
if context.tenant_id not in p[c_const.ADD_TENANTS]:
|
||||
p[c_const.ADD_TENANTS].append(context.tenant_id)
|
||||
profile_bindings = _get_profile_bindings_by_uuid(context.session,
|
||||
profile_id=id)
|
||||
for bindings in profile_bindings:
|
||||
p[c_const.ADD_TENANTS].append(bindings.tenant_id)
|
||||
update_profile_binding(context.session, id,
|
||||
p[c_const.ADD_TENANTS], c_const.NETWORK)
|
||||
is_updated = True
|
||||
|
@ -623,7 +623,7 @@ class TestN1kvNetworkProfiles(N1kvPluginTestCase):
|
||||
net_p['network_profile']['id'])
|
||||
self.assertRaises(c_exc.ProfileTenantBindingNotFound,
|
||||
n1kv_db_v2.get_profile_binding,
|
||||
db_session, 'tenant2',
|
||||
db_session, 'tenant4',
|
||||
net_p['network_profile']['id'])
|
||||
tenant3 = n1kv_db_v2.get_profile_binding(db_session, 'tenant3',
|
||||
net_p['network_profile']['id'])
|
||||
@ -643,18 +643,33 @@ class TestN1kvNetworkProfiles(N1kvPluginTestCase):
|
||||
# current tenant_id should always present
|
||||
tenant_id = n1kv_db_v2.get_profile_binding(db_session, self.tenant_id,
|
||||
net_p['network_profile']['id'])
|
||||
self.assertIsNotNone(tenant_id)
|
||||
self.assertRaises(c_exc.ProfileTenantBindingNotFound,
|
||||
n1kv_db_v2.get_profile_binding,
|
||||
db_session, 'tenant1',
|
||||
net_p['network_profile']['id'])
|
||||
self.assertRaises(c_exc.ProfileTenantBindingNotFound,
|
||||
n1kv_db_v2.get_profile_binding,
|
||||
db_session, 'tenant2',
|
||||
db_session, 'tenant4',
|
||||
net_p['network_profile']['id'])
|
||||
tenant3 = n1kv_db_v2.get_profile_binding(db_session, 'tenant3',
|
||||
net_p['network_profile']['id'])
|
||||
self.assertIsNotNone(tenant_id)
|
||||
self.assertIsNotNone(tenant3)
|
||||
# Add new tenant4 to network profile and make sure existing tenants
|
||||
# are not deleted.
|
||||
data = {'network_profile': {c_const.ADD_TENANTS:
|
||||
['tenant4']}}
|
||||
update_req = self.new_update_request('network_profiles',
|
||||
data,
|
||||
net_p['network_profile']['id'])
|
||||
update_req.environ['neutron.context'] = context.Context('',
|
||||
self.tenant_id,
|
||||
is_admin=True)
|
||||
update_res = update_req.get_response(self.ext_api)
|
||||
self.assertEqual(200, update_res.status_int)
|
||||
tenant4 = n1kv_db_v2.get_profile_binding(db_session, 'tenant4',
|
||||
net_p['network_profile']['id'])
|
||||
self.assertIsNotNone(tenant4)
|
||||
|
||||
|
||||
class TestN1kvBasicGet(test_plugin.TestBasicGet,
|
||||
|
Loading…
Reference in New Issue
Block a user