From 37ff72ac9ba377abd7115f5fa6db9488fa374645 Mon Sep 17 00:00:00 2001 From: Michael Fritch Date: Wed, 9 Jun 2021 17:45:03 -0600 Subject: [PATCH] cephadm: validate `--fsid` during bootstrap Signed-off-by: Michael Fritch --- src/cephadm/cephadm | 5 ++++- src/cephadm/tests/test_cephadm.py | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index ffbcbb567de0..cce32ca934d7 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -4026,12 +4026,15 @@ def command_bootstrap(ctx): # initial vars fsid = ctx.fsid or make_fsid() + if not is_fsid(fsid): + raise Error('not an fsid: %s' % fsid) + logger.info('Cluster fsid: %s' % fsid) + hostname = get_hostname() if '.' in hostname and not ctx.allow_fqdn_hostname: raise Error('hostname is a fully qualified domain name (%s); either fix (e.g., "sudo hostname %s" or similar) or pass --allow-fqdn-hostname' % (hostname, hostname.split('.')[0])) mon_id = ctx.mon_id or hostname mgr_id = ctx.mgr_id or generate_service_id() - logger.info('Cluster fsid: %s' % fsid) lock = FileLock(ctx, fsid) lock.acquire() diff --git a/src/cephadm/tests/test_cephadm.py b/src/cephadm/tests/test_cephadm.py index 6b231573fe63..6faea4aec3ca 100644 --- a/src/cephadm/tests/test_cephadm.py +++ b/src/cephadm/tests/test_cephadm.py @@ -1157,3 +1157,24 @@ class TestBootstrap(TestCephAdm): with with_cephadm_ctx(cmd, hostname=hostname) as ctx: retval = cd.command_bootstrap(ctx) assert retval == 0 + + @pytest.mark.parametrize('fsid, err', + [ + ('', None), + ('00000000-0000-0000-0000-0000deadbeef', None), + ('00000000-0000-0000-0000-0000deadbeez', 'not an fsid'), + ]) + def test_fsid(self, fsid, err, cephadm_fs): + cmd = self._get_cmd( + '--mon-ip', '192.168.1.1', + '--skip-mon-network', + '--fsid', fsid, + ) + + with with_cephadm_ctx(cmd) as ctx: + if err: + with pytest.raises(cd.Error, match=err): + cd.command_bootstrap(ctx) + else: + retval = cd.command_bootstrap(ctx) + assert retval == 0 -- 2.47.3