From: Michael Fritch Date: Wed, 9 Jun 2021 23:45:03 +0000 (-0600) Subject: cephadm: validate `--fsid` during bootstrap X-Git-Tag: v16.2.5~49^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9ab4a3bc99909eb3428adb3f93ad0984ebf93dc3;p=ceph.git cephadm: validate `--fsid` during bootstrap Signed-off-by: Michael Fritch (cherry picked from commit 37ff72ac9ba377abd7115f5fa6db9488fa374645) --- diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index 47e119907688..f2ee97700b82 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -4002,12 +4002,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 cfe7abb63bf6..6b0560f4014b 100644 --- a/src/cephadm/tests/test_cephadm.py +++ b/src/cephadm/tests/test_cephadm.py @@ -1137,3 +1137,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