summaryrefslogtreecommitdiff
path: root/cloudinit/tests
diff options
context:
space:
mode:
authorRyan Harper <ryan.harper@canonical.com>2019-07-17 20:23:42 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2019-07-17 20:23:42 +0000
commitb3a87fc0a2c88585cf77fa9d2756e96183c838f7 (patch)
tree864100255e53cb243db586af364adea541248055 /cloudinit/tests
parent060b1a1ca7b2385aa7f4ed42720063fa557e0671 (diff)
downloadvyos-cloud-init-b3a87fc0a2c88585cf77fa9d2756e96183c838f7.tar.gz
vyos-cloud-init-b3a87fc0a2c88585cf77fa9d2756e96183c838f7.zip
net: update net sequence, include wait on netdevs, opensuse netrules path
On systems with many interfaces, processing udev events may take a while. Cloud-init expects devices included in a provided network-configuration to be present when attempting to configure them. This patch adds a step in net configuration where it will check for devices provided in the configuration and if not found, issue udevadm settle commands to wait for them to appear. Additionally, the default path for udev persistent network rules 70-persistent-net.rules may also be written to systems which include the 75-net-generator.rules. During boot, cloud-init and the generator may race and interleave values causing issues. OpenSUSE will now use a newer file, 85-persistent-net-cloud-init.rules which will take precedence over values created by 75-net-generator and avoid collisions on the same file. LP: #1817368
Diffstat (limited to 'cloudinit/tests')
-rw-r--r--cloudinit/tests/test_stages.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/cloudinit/tests/test_stages.py b/cloudinit/tests/test_stages.py
index 94b6b255..9b483121 100644
--- a/cloudinit/tests/test_stages.py
+++ b/cloudinit/tests/test_stages.py
@@ -37,6 +37,7 @@ class FakeDataSource(sources.DataSource):
class TestInit(CiTestCase):
with_logs = True
+ allowed_subp = False
def setUp(self):
super(TestInit, self).setUp()
@@ -166,8 +167,9 @@ class TestInit(CiTestCase):
'INFO: network config is disabled by %s' % disable_file,
self.logs.getvalue())
+ @mock.patch('cloudinit.net.get_interfaces_by_mac')
@mock.patch('cloudinit.distros.ubuntu.Distro')
- def test_apply_network_on_new_instance(self, m_ubuntu):
+ def test_apply_network_on_new_instance(self, m_ubuntu, m_macs):
"""Call distro apply_network_config methods on is_new_instance."""
net_cfg = {
'version': 1, 'config': [
@@ -177,6 +179,8 @@ class TestInit(CiTestCase):
def fake_network_config():
return net_cfg, 'fallback'
+ m_macs.return_value = {'42:42:42:42:42:42': 'eth9'}
+
self.init._find_networking_config = fake_network_config
self.init.apply_network_config(True)
self.init.distro.apply_network_config_names.assert_called_with(net_cfg)
@@ -206,8 +210,9 @@ class TestInit(CiTestCase):
" nor datasource network update on '%s' event" % EventType.BOOT,
self.logs.getvalue())
+ @mock.patch('cloudinit.net.get_interfaces_by_mac')
@mock.patch('cloudinit.distros.ubuntu.Distro')
- def test_apply_network_on_datasource_allowed_event(self, m_ubuntu):
+ def test_apply_network_on_datasource_allowed_event(self, m_ubuntu, m_macs):
"""Apply network if datasource.update_metadata permits BOOT event."""
old_instance_id = os.path.join(
self.init.paths.get_cpath('data'), 'instance-id')
@@ -220,6 +225,8 @@ class TestInit(CiTestCase):
def fake_network_config():
return net_cfg, 'fallback'
+ m_macs.return_value = {'42:42:42:42:42:42': 'eth9'}
+
self.init._find_networking_config = fake_network_config
self.init.datasource = FakeDataSource(paths=self.init.paths)
self.init.datasource.update_events = {'network': [EventType.BOOT]}