From 8776cf751f88463d41c9357e86cbac29cc769b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20M=C3=A4rdian?= Date: Mon, 12 Jan 2026 15:25:46 +0100 Subject: [PATCH 1/4] cli: Fix generate.py to properly handle --root-dir --- netplan_cli/cli/commands/generate.py | 13 +++++++++++++ tests/cli_legacy.py | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/netplan_cli/cli/commands/generate.py b/netplan_cli/cli/commands/generate.py index 1c44a9277..ef8c04531 100644 --- a/netplan_cli/cli/commands/generate.py +++ b/netplan_cli/cli/commands/generate.py @@ -105,6 +105,19 @@ def command_generate(self): generator_dir = os.path.join(self.root_dir, 'run', 'systemd', 'generator') generator_early_dir = os.path.join(self.root_dir, 'run', 'systemd', 'generator.early') generator_late_dir = os.path.join(self.root_dir, 'run', 'systemd', 'generator.late') + # Ensure necessary directories exist + for d in (os.path.dirname(sd_generator), generator_dir, generator_early_dir, generator_late_dir): + try: + os.makedirs(d, exist_ok=True) + except OSError as e: # pragma: nocover (testing only) + logging.debug(f'Could not create directory {d}: {e}') + # Ensure sd_generator exists and points to the real generator + real_generator = utils.get_generator_path() + try: # pragma: nocover (testing only) + if not os.path.exists(sd_generator): + os.symlink(real_generator, sd_generator) + except OSError as e: # pragma: nocover (testing only) + logging.debug(f'Could not create symlink {sd_generator} -> {real_generator}: {e}') subprocess.check_call([sd_generator, '--root-dir', self.root_dir, generator_dir, generator_early_dir, generator_late_dir]) else: # pragma: nocover (covered by autopkgtests) diff --git a/tests/cli_legacy.py b/tests/cli_legacy.py index 0cefc220c..0d4ace0d0 100755 --- a/tests/cli_legacy.py +++ b/tests/cli_legacy.py @@ -93,8 +93,8 @@ def test_no_config(self): os.listdir(os.path.join(self.workdir.name, 'usr', 'lib', 'systemd', 'system-generators')), ['netplan']) self.assertEqual( - os.listdir(os.path.join(self.workdir.name, 'run', 'systemd')), - ['generator.late']) + sorted(os.listdir(os.path.join(self.workdir.name, 'run', 'systemd'))), + ['generator', 'generator.early', 'generator.late']) def test_with_empty_config(self): c = os.path.join(self.workdir.name, 'etc', 'netplan') From 1277ef6c5a7f62ab3a5ffaafad2e2216abf5cf56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20M=C3=A4rdian?= Date: Mon, 12 Jan 2026 15:53:24 +0100 Subject: [PATCH 2/4] CI: downgrade to systemd 248 (from 258) for tests on Noble --- .github/workflows/autopkgtest.yml | 2 +- .github/workflows/network-manager.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/autopkgtest.yml b/.github/workflows/autopkgtest.yml index df604120c..5fd20332f 100644 --- a/.github/workflows/autopkgtest.yml +++ b/.github/workflows/autopkgtest.yml @@ -53,7 +53,7 @@ jobs: cp -r netplan.io-*/debian . mv deb-tmp/tests/cloud-init.sh debian/tests/cloud-init.sh rm -r debian/patches/ # clear any distro patches - sed -i 's|systemd (>= 257.2-3ubuntu1~),|systemd (>= 248~),|g' debian/control # see https://github.com/canonical/netplan/pull/535 + sed -i 's|systemd (>= 258~),|systemd (>= 248~),|g' debian/control # see https://github.com/canonical/netplan/pull/535 echo 'usr/libexec/netplan/configure' >> debian/netplan-generator.install echo 'usr/lib/systemd/system/netplan-configure.service' >> debian/netplan-generator.install sed -i 's|libexec/netplan/generate|libexec/netplan/configure|g' debian/netplan-generator.postinst diff --git a/.github/workflows/network-manager.yml b/.github/workflows/network-manager.yml index 3f32cda67..085aaf70f 100644 --- a/.github/workflows/network-manager.yml +++ b/.github/workflows/network-manager.yml @@ -41,7 +41,7 @@ jobs: pull-lp-source netplan.io cp -r netplan.io-*/debian . rm -r debian/patches/ # clear any distro patches - sed -i 's|systemd (>= 257.2-3ubuntu1~),|systemd (>= 248~),|g' debian/control # see https://github.com/canonical/netplan/pull/535 + sed -i 's|systemd (>= 258~),|systemd (>= 248~),|g' debian/control # see https://github.com/canonical/netplan/pull/535 echo 'usr/libexec/netplan/configure' >> debian/netplan-generator.install echo 'usr/lib/systemd/system/netplan-configure.service' >> debian/netplan-generator.install sed -i 's|libexec/netplan/generate|libexec/netplan/configure|g' debian/netplan-generator.postinst From 0ade3b0a86a23242ae9dd8b8a9996a6d653088dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20M=C3=A4rdian?= Date: Tue, 11 Mar 2025 11:43:25 +0100 Subject: [PATCH 3/4] Revert "CI: downgrade systemd dependency (wait-online DNS)" This reverts commit e59677818a2420a231b1576091f2854f69003304. --- .github/workflows/autopkgtest.yml | 1 - .github/workflows/network-manager.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/autopkgtest.yml b/.github/workflows/autopkgtest.yml index 5fd20332f..3942b755c 100644 --- a/.github/workflows/autopkgtest.yml +++ b/.github/workflows/autopkgtest.yml @@ -53,7 +53,6 @@ jobs: cp -r netplan.io-*/debian . mv deb-tmp/tests/cloud-init.sh debian/tests/cloud-init.sh rm -r debian/patches/ # clear any distro patches - sed -i 's|systemd (>= 258~),|systemd (>= 248~),|g' debian/control # see https://github.com/canonical/netplan/pull/535 echo 'usr/libexec/netplan/configure' >> debian/netplan-generator.install echo 'usr/lib/systemd/system/netplan-configure.service' >> debian/netplan-generator.install sed -i 's|libexec/netplan/generate|libexec/netplan/configure|g' debian/netplan-generator.postinst diff --git a/.github/workflows/network-manager.yml b/.github/workflows/network-manager.yml index 085aaf70f..46c77d418 100644 --- a/.github/workflows/network-manager.yml +++ b/.github/workflows/network-manager.yml @@ -41,7 +41,6 @@ jobs: pull-lp-source netplan.io cp -r netplan.io-*/debian . rm -r debian/patches/ # clear any distro patches - sed -i 's|systemd (>= 258~),|systemd (>= 248~),|g' debian/control # see https://github.com/canonical/netplan/pull/535 echo 'usr/libexec/netplan/configure' >> debian/netplan-generator.install echo 'usr/lib/systemd/system/netplan-configure.service' >> debian/netplan-generator.install sed -i 's|libexec/netplan/generate|libexec/netplan/configure|g' debian/netplan-generator.postinst From 74c157324d6b9ea441161a1eb6bb4abea98bc41f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20M=C3=A4rdian?= Date: Tue, 11 Mar 2025 11:43:58 +0100 Subject: [PATCH 4/4] tests:ethernets: enable wait-online intergration test --- tests/integration/ethernets.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/integration/ethernets.py b/tests/integration/ethernets.py index d8b890862..a9c764380 100644 --- a/tests/integration/ethernets.py +++ b/tests/integration/ethernets.py @@ -486,8 +486,7 @@ def test_systemd_networkd_wait_online(self): ExecStart=/lib/systemd/systemd-networkd-wait-online --any --dns -o routable -i %(e2c)s -i br0 ''' % {'e2c': self.dev_e2_client}) # Restart sd-nd-wait-online.service and check that it was launched correctly. - # XXX: Enable extra testing once systemd#34640 is available on the SUT (i.e. systemd v258+). - # subprocess.check_call(['systemctl', 'restart', 'systemd-networkd-wait-online.service']) + subprocess.check_call(['systemctl', 'restart', 'systemd-networkd-wait-online.service']) @unittest.skipIf("NetworkManager" not in test_backends,