From: John Mulligan Date: Fri, 1 Nov 2024 18:37:41 +0000 (-0400) Subject: cephadm: do not trigger rollback in bootstrap unit tests X-Git-Tag: v20.0.0~647^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6739a68efa03a109011df86f9f53206240105b68;p=ceph.git cephadm: do not trigger rollback in bootstrap unit tests Add a context manager that wraps the normal mock ctx context manager - this one disables bootstrap rollback by default. Use it in the tests that call command_bootstrap. The unit tests are older than the boostrap rollback behavior and therefore don't need it. However, this was not previously a problem. In python 3.12 (or 3.11?) changes to the shutil module prevent shutil.rmtree from working properly with the fake file system that cephadm tests rely upon heavily. Part of an effort to get ceph tox environments passing on Python 3.12. Signed-off-by: John Mulligan --- diff --git a/src/cephadm/tests/test_cephadm.py b/src/cephadm/tests/test_cephadm.py index f27b9bcd362..bbaaf2d39f8 100644 --- a/src/cephadm/tests/test_cephadm.py +++ b/src/cephadm/tests/test_cephadm.py @@ -1,5 +1,6 @@ # type: ignore +import contextlib import copy import errno import json @@ -38,6 +39,13 @@ def get_ceph_conf( mon_host = {mon_host} ''' +@contextlib.contextmanager +def bootstrap_test_ctx(*args, **kwargs): + with with_cephadm_ctx(*args, **kwargs) as ctx: + ctx.no_cleanup_on_failure = True + yield ctx + + class TestCephAdm(object): @mock.patch('cephadm.logger') @@ -1432,13 +1440,13 @@ class TestBootstrap(object): '--config', conf_file, ) - with with_cephadm_ctx(cmd) as ctx: + with bootstrap_test_ctx(cmd) as ctx: msg = r'No such file or directory' with pytest.raises(_cephadm.Error, match=msg): _cephadm.command_bootstrap(ctx) cephadm_fs.create_file(conf_file) - with with_cephadm_ctx(cmd) as ctx: + with bootstrap_test_ctx(cmd) as ctx: retval = _cephadm.command_bootstrap(ctx) assert retval == 0 @@ -1446,7 +1454,7 @@ class TestBootstrap(object): funkypatch.patch('cephadmlib.systemd.call') cmd = self._get_cmd() - with with_cephadm_ctx(cmd) as ctx: + with bootstrap_test_ctx(cmd) as ctx: msg = r'must specify --mon-ip or --mon-addrv' with pytest.raises(_cephadm.Error, match=msg): _cephadm.command_bootstrap(ctx) @@ -1455,13 +1463,13 @@ class TestBootstrap(object): funkypatch.patch('cephadmlib.systemd.call') cmd = self._get_cmd('--mon-ip', '192.168.1.1') - with with_cephadm_ctx(cmd, list_networks={}) as ctx: + with bootstrap_test_ctx(cmd, list_networks={}) as ctx: msg = r'--skip-mon-network' with pytest.raises(_cephadm.Error, match=msg): _cephadm.command_bootstrap(ctx) cmd += ['--skip-mon-network'] - with with_cephadm_ctx(cmd, list_networks={}) as ctx: + with bootstrap_test_ctx(cmd, list_networks={}) as ctx: retval = _cephadm.command_bootstrap(ctx) assert retval == 0 @@ -1540,12 +1548,12 @@ class TestBootstrap(object): cmd = self._get_cmd('--mon-ip', mon_ip) if not result: - with with_cephadm_ctx(cmd, list_networks=list_networks) as ctx: + with bootstrap_test_ctx(cmd, list_networks=list_networks) as ctx: msg = r'--skip-mon-network' with pytest.raises(_cephadm.Error, match=msg): _cephadm.command_bootstrap(ctx) else: - with with_cephadm_ctx(cmd, list_networks=list_networks) as ctx: + with bootstrap_test_ctx(cmd, list_networks=list_networks) as ctx: retval = _cephadm.command_bootstrap(ctx) assert retval == 0 @@ -1604,11 +1612,11 @@ class TestBootstrap(object): cmd = self._get_cmd('--mon-addrv', mon_addrv) if err: - with with_cephadm_ctx(cmd, list_networks=list_networks) as ctx: + with bootstrap_test_ctx(cmd, list_networks=list_networks) as ctx: with pytest.raises(_cephadm.Error, match=err): _cephadm.command_bootstrap(ctx) else: - with with_cephadm_ctx(cmd, list_networks=list_networks) as ctx: + with bootstrap_test_ctx(cmd, list_networks=list_networks) as ctx: retval = _cephadm.command_bootstrap(ctx) assert retval == 0 @@ -1621,13 +1629,13 @@ class TestBootstrap(object): '--skip-mon-network', ) - with with_cephadm_ctx(cmd, hostname=hostname) as ctx: + with bootstrap_test_ctx(cmd, hostname=hostname) as ctx: msg = r'--allow-fqdn-hostname' with pytest.raises(_cephadm.Error, match=msg): _cephadm.command_bootstrap(ctx) cmd += ['--allow-fqdn-hostname'] - with with_cephadm_ctx(cmd, hostname=hostname) as ctx: + with bootstrap_test_ctx(cmd, hostname=hostname) as ctx: retval = _cephadm.command_bootstrap(ctx) assert retval == 0 @@ -1646,7 +1654,7 @@ class TestBootstrap(object): '--fsid', fsid, ) - with with_cephadm_ctx(cmd) as ctx: + with bootstrap_test_ctx(cmd) as ctx: if err: with pytest.raises(_cephadm.Error, match=err): _cephadm.command_bootstrap(ctx) @@ -1661,7 +1669,7 @@ class TestShell(object): fsid = '00000000-0000-0000-0000-0000deadbeef' cmd = ['shell', '--fsid', fsid] - with with_cephadm_ctx(cmd) as ctx: + with bootstrap_test_ctx(cmd) as ctx: retval = _cephadm.command_shell(ctx) assert retval == 0 assert ctx.fsid == fsid