Use more specific SecurityGroupHandler calls
Instead of calling trigger_security_group_members_refresh, have NetworkManager and derived classes call more specific methods when an instance is created or destroyed. Methods such as the trigger_instance_add_security_group_refresh and trigger_instance_remove_security_group_refresh, instead of just having trigger_security_group_members_refresh get called and forcing implementors to try and figure out if it's an add or delete blueprint trigger-specific-sgh-functions Change-Id: Iefef9180972db3277ae6fc0c2c9abf518b00e2a4
This commit is contained in:
@@ -970,6 +970,19 @@ class NetworkManager(manager.SchedulerDependentManager):
|
||||
self.security_group_api.trigger_handler('security_group_members',
|
||||
admin_context, group_ids)
|
||||
|
||||
def _do_trigger_security_group_handler(self, handler, instance_id):
|
||||
admin_context = context.get_admin_context(read_deleted="yes")
|
||||
if uuidutils.is_uuid_like(instance_id):
|
||||
instance_ref = self.db.instance_get_by_uuid(admin_context,
|
||||
instance_id)
|
||||
else:
|
||||
instance_ref = self.db.instance_get(admin_context,
|
||||
instance_id)
|
||||
for group_name in [group['name'] for group
|
||||
in instance_ref['security_groups']]:
|
||||
self.security_group_api.trigger_handler(handler, admin_context,
|
||||
instance_ref, group_name)
|
||||
|
||||
def get_floating_ips_by_fixed_address(self, context, fixed_address):
|
||||
# NOTE(jkoelker) This is just a stub function. Managers supporting
|
||||
# floating ips MUST override this or use the Mixin
|
||||
@@ -1355,6 +1368,8 @@ class NetworkManager(manager.SchedulerDependentManager):
|
||||
instance_ref['uuid'])
|
||||
self._do_trigger_security_group_members_refresh_for_instance(
|
||||
instance_id)
|
||||
self._do_trigger_security_group_handler(
|
||||
'instance_add_security_group', instance_id)
|
||||
get_vif = self.db.virtual_interface_get_by_instance_and_network
|
||||
vif = get_vif(context, instance_ref['uuid'], network['id'])
|
||||
values = {'allocated': True,
|
||||
@@ -1384,6 +1399,8 @@ class NetworkManager(manager.SchedulerDependentManager):
|
||||
|
||||
self._do_trigger_security_group_members_refresh_for_instance(
|
||||
instance['uuid'])
|
||||
self._do_trigger_security_group_handler(
|
||||
'instance_remove_security_group', instance['uuid'])
|
||||
|
||||
if self._validate_instance_zone_for_dns_domain(context, instance):
|
||||
for n in self.instance_dns_manager.get_entries_by_address(address,
|
||||
|
||||
@@ -296,6 +296,9 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
db.instance_get(mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn({'security_groups':
|
||||
[{'id': 0}]})
|
||||
db.instance_get(mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn({'security_groups':
|
||||
[{'id':0, 'name':'test'}]})
|
||||
db.fixed_ip_associate_pool(mox.IgnoreArg(),
|
||||
mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn('192.168.0.101')
|
||||
@@ -328,6 +331,10 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
db.instance_get(mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn({'security_groups':
|
||||
[{'id': 0}]})
|
||||
db.instance_get(mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn({'security_groups':
|
||||
[{'id':0, 'name':'test'}]})
|
||||
|
||||
db.fixed_ip_associate_pool(mox.IgnoreArg(),
|
||||
mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn('192.168.0.101')
|
||||
@@ -394,6 +401,9 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
db.instance_get(mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn({'security_groups':
|
||||
[{'id': 0}]})
|
||||
db.instance_get(mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn({'security_groups':
|
||||
[{'id':0, 'name':'test'}]})
|
||||
|
||||
db.fixed_ip_associate_pool(mox.IgnoreArg(),
|
||||
mox.IgnoreArg(),
|
||||
|
||||
Reference in New Issue
Block a user