diff --git a/Authors b/Authors index bcb258ea3f89..af8b557d8056 100644 --- a/Authors +++ b/Authors @@ -13,6 +13,7 @@ Andrey Brindeyev Andy Smith Andy Southgate Anne Gentle +Ante Karamatić Anthony Young Antony Messerli Armando Migliaccio diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index d8a44eec923f..7e861c04f094 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -36,6 +36,7 @@ from nova import utils from nova.api.ec2 import cloud from nova.compute import instance_types from nova.compute import power_state +from nova.compute import utils as compute_utils from nova.compute import vm_states from nova.virt import images from nova.virt import driver @@ -60,6 +61,7 @@ FLAGS = flags.FLAGS LOG = logging.getLogger(__name__) _fake_network_info = fake_network.fake_get_instance_nw_info +_fake_stub_out_get_nw_info = fake_network.stub_out_nw_api_get_instance_nw_info _ipv4_like = fake_network.ipv4_like @@ -1491,22 +1493,14 @@ class IptablesFirewallTestCase(test.TestCase): return '', '' print cmd, kwargs - network_info = _fake_network_info(self.stubs, 1) - - def get_fixed_ips(*args, **kwargs): - ips = [] - for network, info in network_info: - ips.extend(info['ips']) - return [ip['ip'] for ip in ips] - - def nw_info(*args, **kwargs): - return network_info + network_model = _fake_network_info(self.stubs, 1, spectacular=True) from nova.network import linux_net linux_net.iptables_manager.execute = fake_iptables_execute - fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs, - nw_info) + _fake_stub_out_get_nw_info(self.stubs, lambda *a, **kw: network_model) + + network_info = compute_utils.legacy_network_info(network_model) self.fw.prepare_instance_filter(instance_ref, network_info) self.fw.apply_instance_filter(instance_ref, network_info) @@ -1544,9 +1538,11 @@ class IptablesFirewallTestCase(test.TestCase): self.assertTrue(len(filter(regex.match, self.out_rules))> 0, "ICMP Echo Request acceptance rule wasn't added") - for ip in get_fixed_ips(): + for ip in network_model.fixed_ips(): + if ip['version'] != 4: + continue regex = re.compile('-A .* -j ACCEPT -p tcp -m multiport ' - '--dports 80:81 -s %s' % ip) + '--dports 80:81 -s %s' % ip['address']) self.assertTrue(len(filter(regex.match, self.out_rules))> 0, "TCP port 80/81 acceptance rule wasn't added") diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py index e7357b028162..d268634cb5f1 100644 --- a/nova/tests/test_xenapi.py +++ b/nova/tests/test_xenapi.py @@ -32,6 +32,7 @@ from nova import utils from nova.compute import aggregate_states from nova.compute import instance_types from nova.compute import power_state +from nova.compute import utils as compute_utils from nova import exception from nova.virt import xenapi_conn from nova.virt.xenapi import fake as xenapi_fake @@ -1527,27 +1528,23 @@ class XenAPIDom0IptablesFirewallTestCase(test.TestCase): instance_ref = db.instance_get(admin_ctxt, instance_ref['id']) src_instance_ref = db.instance_get(admin_ctxt, src_instance_ref['id']) - network_info = fake_network.fake_get_instance_nw_info(self.stubs, 1) - - def get_fixed_ips(*args, **kwargs): - ips = [] - for _n, info in network_info: - ips.extend(info['ips']) - return [ip['ip'] for ip in ips] - - def nw_info(*args, **kwargs): - return network_info + network_model = fake_network.fake_get_instance_nw_info(self.stubs, + 1, spectacular=True) fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs, - nw_info) + lambda *a, **kw: network_model) + + network_info = compute_utils.legacy_network_info(network_model) self.fw.prepare_instance_filter(instance_ref, network_info) self.fw.apply_instance_filter(instance_ref, network_info) self._validate_security_group() # Extra test for TCP acceptance rules - for ip in get_fixed_ips(): + for ip in network_model.fixed_ips(): + if ip['version'] != 4: + continue regex = re.compile('-A .* -j ACCEPT -p tcp' - ' --dport 80:81 -s %s' % ip) + ' --dport 80:81 -s %s' % ip['address']) self.assertTrue(len(filter(regex.match, self._out_rules))> 0, "TCP port 80/81 acceptance rule wasn't added") diff --git a/nova/virt/firewall.py b/nova/virt/firewall.py index 9df036412625..3ae12bcb005c 100644 --- a/nova/virt/firewall.py +++ b/nova/virt/firewall.py @@ -327,15 +327,16 @@ class IptablesFirewallDriver(FirewallDriver): nw_api = nova.network.API() for instance in rule['grantee_group']['instances']: LOG.info('instance: %r', instance) - ips = [] nw_info = nw_api.get_instance_nw_info(ctxt, instance) - for net in nw_info: - ips.extend(net[1]['ips']) + + ips = [ip['address'] + for ip in nw_info.fixed_ips() + if ip['version'] == version] LOG.info('ips: %r', ips) for ip in ips: - subrule = args + ['-s %s' % ip['ip']] + subrule = args + ['-s %s' % ip] fw_rules += [' '.join(subrule)] LOG.info('Using fw_rules: %r', fw_rules)

AltStyle によって変換されたページ (->オリジナル) /