diff options
author | James Falcon <james.falcon@canonical.com> | 2022-01-15 11:55:23 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-15 10:55:23 -0700 |
commit | b306633fd17e5ba0173ad3c41add59cb11884757 (patch) | |
tree | 51e97864d4ab610ac527b33a13fbca753664690b | |
parent | 73b1bb1f7665216053494717de27d7daf445d751 (diff) | |
download | vyos-cloud-init-b306633fd17e5ba0173ad3c41add59cb11884757.tar.gz vyos-cloud-init-b306633fd17e5ba0173ad3c41add59cb11884757.zip |
Ensure system_cfg read before ds net config on Oracle (SC-720) (#1174)
In 2c52e6e88b19f5db8d55eb7280ee27703e05d75f, the order of
reading network config was changed for Oracle due to initramfs
needing to take lower precedence than the datasource. However,
this also bumped system_cfg to a lower precedence than ds, which
means that any network configuration specified in /etc/cloud will not
be applied. system_cfg should instead be moved above ds so network
configuration in /etc/cloud takes precedence.
LP: #1956788
-rw-r--r-- | cloudinit/sources/DataSourceOracle.py | 2 | ||||
-rw-r--r-- | tests/integration_tests/network/test_net_config_load.py | 27 | ||||
-rw-r--r-- | tests/unittests/sources/test_oracle.py | 8 |
3 files changed, 33 insertions, 4 deletions
diff --git a/cloudinit/sources/DataSourceOracle.py b/cloudinit/sources/DataSourceOracle.py index 3f918672..6d81be1e 100644 --- a/cloudinit/sources/DataSourceOracle.py +++ b/cloudinit/sources/DataSourceOracle.py @@ -104,9 +104,9 @@ class DataSourceOracle(sources.DataSource): vendordata_pure = None network_config_sources = ( sources.NetworkConfigSource.cmdline, + sources.NetworkConfigSource.system_cfg, sources.NetworkConfigSource.ds, sources.NetworkConfigSource.initramfs, - sources.NetworkConfigSource.system_cfg, ) _network_config = sources.UNSET diff --git a/tests/integration_tests/network/test_net_config_load.py b/tests/integration_tests/network/test_net_config_load.py new file mode 100644 index 00000000..a6863b63 --- /dev/null +++ b/tests/integration_tests/network/test_net_config_load.py @@ -0,0 +1,27 @@ +"""Test loading the network config""" +import pytest + +from tests.integration_tests.instances import IntegrationInstance + + +def _customize_envionment(client: IntegrationInstance): + # Insert our "disable_network_config" file here + client.write_to_file( + "/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg", + "network: {config: disabled}\n", + ) + client.execute("cloud-init clean --logs") + client.restart() + + +def test_network_disabled_via_etc_cloud(client: IntegrationInstance): + """Test that network can be disabled via config file in /etc/cloud""" + if client.settings.CLOUD_INIT_SOURCE == "IN_PLACE": + pytest.skip( + "IN_PLACE not supported as we mount /etc/cloud contents into the " + "container" + ) + _customize_envionment(client) + + log = client.read_from_file("/var/log/cloud-init.log") + assert "network config is disabled by system_cfg" in log diff --git a/tests/unittests/sources/test_oracle.py b/tests/unittests/sources/test_oracle.py index 356b3738..b3e6f10c 100644 --- a/tests/unittests/sources/test_oracle.py +++ b/tests/unittests/sources/test_oracle.py @@ -920,12 +920,14 @@ class TestNetworkConfig: assert network_config == m_read_initramfs_config.return_value assert "Failed to parse secondary network configuration" in caplog.text - def test_ds_network_cfg_preferred_over_initramfs(self, _m): - """Ensure that DS net config is preferred over initramfs config""" + def test_ds_network_cfg_order(self, _m): + """Ensure that DS net config is preferred over initramfs config + but less than system config.""" config_sources = oracle.DataSourceOracle.network_config_sources + system_idx = config_sources.index(NetworkConfigSource.system_cfg) ds_idx = config_sources.index(NetworkConfigSource.ds) initramfs_idx = config_sources.index(NetworkConfigSource.initramfs) - assert ds_idx < initramfs_idx + assert system_idx < ds_idx < initramfs_idx # vi: ts=4 expandtab |