diff options
-rw-r--r-- | cloudinit/stages.py | 2 | ||||
-rw-r--r-- | tests/unittests/test_stages.py | 20 |
2 files changed, 22 insertions, 0 deletions
diff --git a/cloudinit/stages.py b/cloudinit/stages.py index 58b53d96..9494a0bf 100644 --- a/cloudinit/stages.py +++ b/cloudinit/stages.py @@ -853,6 +853,8 @@ class Init: return (None, cfg_source) if ncfg: return (ncfg, cfg_source) + if not self.cfg.get("network", True): + LOG.warning("Empty network config found") return ( self.distro.generate_fallback_config(), NetworkConfigSource.FALLBACK, diff --git a/tests/unittests/test_stages.py b/tests/unittests/test_stages.py index 7fde2bac..15a7e973 100644 --- a/tests/unittests/test_stages.py +++ b/tests/unittests/test_stages.py @@ -356,6 +356,26 @@ class TestInit: ) == self.init._find_networking_config() assert "network config disabled" not in caplog.text + @mock.patch(M_PATH + "cmdline.read_initramfs_config", return_value={}) + @mock.patch(M_PATH + "cmdline.read_kernel_cmdline_config", return_value={}) + def test_warn_on_empty_network(self, m_cmdline, m_initramfs, caplog): + """funky whitespace can lead to a network key that is None, which then + causes fallback. Test warning log on empty network key. + """ + m_cmdline.return_value = {} # Kernel doesn't disable networking + m_initramfs.return_value = {} # no initramfs network config + # Neither datasource nor system_info disable or provide network + self.init._cfg = { + "system_info": {"paths": {"cloud_dir": self.tmpdir}}, + "network": None, + } + self.init.datasource = FakeDataSource(network_config={"network": None}) + + self.init.distro.generate_fallback_config = lambda: {} + + self.init._find_networking_config() + assert "Empty network config found" in caplog.text + def test_apply_network_config_disabled(self, caplog): """Log when network is disabled by upgraded-network.""" disable_file = os.path.join( |