From ec93dc6f66d72a3159f11564325246ee9e4cba1e Mon Sep 17 00:00:00 2001 From: Alberto Contreras Date: Wed, 11 May 2022 16:54:41 +0200 Subject: [PATCH] Drop cc_snap.maybe_install_squashfuse. cc_snap.maybe_install_squashfuse no longer needed in Bionic++. squashfuse install no longer required as snapd feature was backported and released (and Xenial support is no longer available for cloud-init). --- cloudinit/config/cc_snap.py | 19 --- cloudinit/config/cloud-init-schema.json | 5 - .../modules/test_combined.py | 1 - tests/unittests/config/test_cc_snap.py | 113 ------------------ 4 files changed, 138 deletions(-) diff --git a/cloudinit/config/cc_snap.py b/cloudinit/config/cc_snap.py index fddca899c50..41a6adf9415 100644 --- a/cloudinit/config/cc_snap.py +++ b/cloudinit/config/cc_snap.py @@ -182,23 +182,6 @@ def run_commands(commands): raise RuntimeError(msg) -# RELEASE_BLOCKER: Once LP: #1628289 is released on xenial, drop this function. -def maybe_install_squashfuse(cloud): - """Install squashfuse if we are in a container.""" - if not util.is_container(): - return - try: - cloud.distro.update_package_sources() - except Exception: - util.logexc(LOG, "Package update failed") - raise - try: - cloud.distro.install_packages(["squashfuse"]) - except Exception: - util.logexc(LOG, "Failed to install squashfuse") - raise - - def handle(name, cfg, cloud, log, args): cfgin = cfg.get("snap", {}) if not cfgin: @@ -207,8 +190,6 @@ def handle(name, cfg, cloud, log, args): ) return - if util.is_true(cfgin.get("squashfuse_in_container", False)): - maybe_install_squashfuse(cloud) add_assertions(cfgin.get("assertions", [])) run_commands(cfgin.get("commands", [])) diff --git a/cloudinit/config/cloud-init-schema.json b/cloudinit/config/cloud-init-schema.json index 13c9efb1b28..c29dc5a8f73 100644 --- a/cloudinit/config/cloud-init-schema.json +++ b/cloudinit/config/cloud-init-schema.json @@ -1819,11 +1819,6 @@ {"type": "array", "items": {"type": "string"}} ] } - }, - "squashfuse_in_container": { - "type": "boolean", - "default": false, - "description": "DEPRECATED: This key is no longer needed and will be removed in a future version of cloud-init." } } } diff --git a/tests/integration_tests/modules/test_combined.py b/tests/integration_tests/modules/test_combined.py index d6a717c03a5..a96762dd760 100644 --- a/tests/integration_tests/modules/test_combined.py +++ b/tests/integration_tests/modules/test_combined.py @@ -59,7 +59,6 @@ - # - logger "My test log" snap: - squashfuse_in_container: true commands: - snap install hello-world ssh_import_id: diff --git a/tests/unittests/config/test_cc_snap.py b/tests/unittests/config/test_cc_snap.py index 1eb7e634030..855c23fce69 100644 --- a/tests/unittests/config/test_cc_snap.py +++ b/tests/unittests/config/test_cc_snap.py @@ -10,7 +10,6 @@ ASSERTIONS_FILE, add_assertions, handle, - maybe_install_squashfuse, run_commands, ) from cloudinit.config.schema import ( @@ -348,62 +347,6 @@ def setUp(self): super(TestHandle, self).setUp() self.tmp = self.tmp_dir() - @mock.patch("cloudinit.config.cc_snap.run_commands") - @mock.patch("cloudinit.config.cc_snap.add_assertions") - @mock.patch("cloudinit.config.cc_snap.maybe_install_squashfuse") - def test_handle_skips_squashfuse_when_unconfigured( - self, m_squash, m_add, m_run - ): - """When squashfuse_in_container is unset, don't attempt to install.""" - handle( - "snap", cfg={"snap": {}}, cloud=None, log=self.logger, args=None - ) - handle( - "snap", - cfg={"snap": {"squashfuse_in_container": None}}, - cloud=None, - log=self.logger, - args=None, - ) - handle( - "snap", - cfg={"snap": {"squashfuse_in_container": False}}, - cloud=None, - log=self.logger, - args=None, - ) - self.assertEqual([], m_squash.call_args_list) # No calls - # snap configuration missing assertions and commands will default to [] - self.assertIn(mock.call([]), m_add.call_args_list) - self.assertIn(mock.call([]), m_run.call_args_list) - - @mock.patch("cloudinit.config.cc_snap.maybe_install_squashfuse") - def test_handle_tries_to_install_squashfuse(self, m_squash): - """If squashfuse_in_container is True, try installing squashfuse.""" - cfg = {"snap": {"squashfuse_in_container": True}} - mycloud = FakeCloud(None) - handle("snap", cfg=cfg, cloud=mycloud, log=self.logger, args=None) - self.assertEqual([mock.call(mycloud)], m_squash.call_args_list) - - def test_handle_runs_commands_provided(self): - """If commands are specified as a list, run them.""" - outfile = self.tmp_path("output.log", dir=self.tmp) - - cfg = { - "snap": { - "commands": [ - 'echo "HI" >> %s' % outfile, - 'echo "MOM" >> %s' % outfile, - ] - } - } - mock_path = "cloudinit.config.cc_snap.sys.stderr" - with self.allow_subp([CiTestCase.SUBP_SHELL_TRUE]): - with mock.patch(mock_path, new_callable=StringIO): - handle("snap", cfg=cfg, cloud=None, log=self.logger, args=None) - - self.assertEqual("HI\nMOM\n", util.load_file(outfile)) - @mock.patch("cloudinit.config.cc_snap.subp.subp") def test_handle_adds_assertions(self, m_subp): """Any configured snap assertions are provided to add_assertions.""" @@ -429,60 +372,4 @@ def test_handle_adds_assertions(self, m_subp): ) -class TestMaybeInstallSquashFuse(CiTestCase): - - with_logs = True - - def setUp(self): - super(TestMaybeInstallSquashFuse, self).setUp() - self.tmp = self.tmp_dir() - - @mock.patch("cloudinit.config.cc_snap.util.is_container") - def test_maybe_install_squashfuse_skips_non_containers(self, m_container): - """maybe_install_squashfuse does nothing when not on a container.""" - m_container.return_value = False - maybe_install_squashfuse(cloud=FakeCloud(None)) - self.assertEqual([mock.call()], m_container.call_args_list) - self.assertEqual("", self.logs.getvalue()) - - @mock.patch("cloudinit.config.cc_snap.util.is_container") - def test_maybe_install_squashfuse_raises_install_errors(self, m_container): - """maybe_install_squashfuse logs and raises package install errors.""" - m_container.return_value = True - distro = mock.MagicMock() - distro.update_package_sources.side_effect = RuntimeError( - "Some apt error" - ) - with self.assertRaises(RuntimeError) as context_manager: - maybe_install_squashfuse(cloud=FakeCloud(distro)) - self.assertEqual("Some apt error", str(context_manager.exception)) - self.assertIn("Package update failed\nTraceback", self.logs.getvalue()) - - @mock.patch("cloudinit.config.cc_snap.util.is_container") - def test_maybe_install_squashfuse_raises_update_errors(self, m_container): - """maybe_install_squashfuse logs and raises package update errors.""" - m_container.return_value = True - distro = mock.MagicMock() - distro.update_package_sources.side_effect = RuntimeError( - "Some apt error" - ) - with self.assertRaises(RuntimeError) as context_manager: - maybe_install_squashfuse(cloud=FakeCloud(distro)) - self.assertEqual("Some apt error", str(context_manager.exception)) - self.assertIn("Package update failed\nTraceback", self.logs.getvalue()) - - @mock.patch("cloudinit.config.cc_snap.util.is_container") - def test_maybe_install_squashfuse_happy_path(self, m_container): - """maybe_install_squashfuse logs and raises package install errors.""" - m_container.return_value = True - distro = mock.MagicMock() # No errors raised - maybe_install_squashfuse(cloud=FakeCloud(distro)) - self.assertEqual( - [mock.call()], distro.update_package_sources.call_args_list - ) - self.assertEqual( - [mock.call(["squashfuse"])], distro.install_packages.call_args_list - ) - - # vi: ts=4 expandtab