diff --git a/octavia/compute/drivers/nova_driver.py b/octavia/compute/drivers/nova_driver.py index 398c279bca..cdf634045e 100644 --- a/octavia/compute/drivers/nova_driver.py +++ b/octavia/compute/drivers/nova_driver.py @@ -204,9 +204,15 @@ class VirtualMachineManager(compute_base.ComputeBase): try: inf_list = nova_response.interface_list() + no_boot_networks = ( + not CONF.controller_worker.amp_boot_network_list) for interface in inf_list: net_id = interface.net_id - if net_id in CONF.controller_worker.amp_boot_network_list: + is_boot_network = ( + net_id in CONF.controller_worker.amp_boot_network_list) + # Pick the first fixed_ip if this is a boot network or if + # there are no boot networks configured (use default network) + if is_boot_network or no_boot_networks: lb_network_ip = interface.fixed_ips[0]['ip_address'] break elif net_id == CONF.controller_worker.amp_network: diff --git a/octavia/tests/unit/compute/drivers/test_nova_driver.py b/octavia/tests/unit/compute/drivers/test_nova_driver.py index 1038fd0028..2491fae6bb 100644 --- a/octavia/tests/unit/compute/drivers/test_nova_driver.py +++ b/octavia/tests/unit/compute/drivers/test_nova_driver.py @@ -91,6 +91,7 @@ class TestNovaClient(base.TestCase): def setUp(self): conf = self.useFixture(oslo_fixture.Config(cfg.CONF)) + self.conf = conf self.net_name = "lb-mgmt-net" conf.config(group="networking", lb_network_name=self.net_name) conf.config(group="controller_worker", amp_boot_network_list=[1, 2]) @@ -163,6 +164,32 @@ class TestNovaClient(base.TestCase): config_drive=True, scheduler_hints=None) + def test_build_with_default_boot_network(self): + self.conf.config(group="controller_worker", + amp_boot_network_list='') + amphora_id = self.manager.build(amphora_flavor=1, image_id=1, + key_name=1, + sec_groups=1, + network_ids=None, + port_ids=[2], + user_data='Blah', + config_drive_files='Files Blah') + + self.assertEqual(self.amphora.compute_id, amphora_id) + + self.manager.manager.create.assert_called_with( + name="amphora_name", + nics=[{'port-id': 2}], + image=1, + flavor=1, + key_name=1, + security_groups=1, + files='Files Blah', + userdata='Blah', + config_drive=True, + scheduler_hints=None + ) + def test_bad_build(self): self.manager.manager.create.side_effect = Exception self.assertRaises(exceptions.ComputeBuildException, self.manager.build)