From: Sage Weil Date: Wed, 9 Oct 2019 18:36:23 +0000 (-0500) Subject: ceph-daemon: verify mon IP is valid before continuing X-Git-Tag: v15.1.0~1201^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=41288a4ad09f54a0338713a7851d78f014eaea2f;p=ceph-ci.git ceph-daemon: verify mon IP is valid before continuing Signed-off-by: Sage Weil --- diff --git a/src/ceph-daemon b/src/ceph-daemon index c46684a3684..dc664fd8213 100755 --- a/src/ceph-daemon +++ b/src/ceph-daemon @@ -689,6 +689,30 @@ def command_bootstrap(): mgr_id = args.mgr_id or hostname logging.info('Cluster fsid: %s' % fsid) + # config + cp = configparser.ConfigParser() + if args.config: + cp.read(args.config) + if args.mon_ip: + addr_arg = '[v2:%s:3300,v1:%s:6789]' % (args.mon_ip, args.mon_ip) + mon_ip = args.mon_ip + elif args.mon_addrv: + addr_arg = args.mon_addrv + mon_ip = args.mon_addrv.split(':')[1] + else: + raise RuntimeError('must specify --mon-ip or --mon-addrv') + cp['global']['fsid'] = fsid; + cp['global']['mon host'] = addr_arg + with StringIO() as f: + cp.write(f) + config = f.getvalue() + + if not args.skip_ping_check: + logger.info('Verifying we can ping mon IP %s...' % mon_ip) + _, _, ret = call(['timeout', '5', 'ping', mon_ip, '-c', '1'], 'ping') + if ret: + raise RuntimeError('Failed to ping %s' % mon_ip) + logger.info('Extracting ceph user uid/gid from container image...') (uid, gid) = extract_uid_gid() @@ -742,22 +766,6 @@ def command_bootstrap(): tmp_keyring.write(keyring) tmp_keyring.flush() - # config - cp = configparser.ConfigParser() - if args.config: - cp.read(args.config) - if args.mon_ip: - addr_arg = '[v2:%s:3300,v1:%s:6789]' % (args.mon_ip, args.mon_ip) - elif args.mon_addrv: - addr_arg = args.mon_addrv - else: - raise RuntimeError('must specify --mon-ip or --mon-addrv') - cp['global']['fsid'] = fsid; - cp['global']['mon host'] = addr_arg - with StringIO() as f: - cp.write(f) - config = f.getvalue() - # create initial monmap, tmp monmap file logger.info('Creating initial monmap...') tmp_monmap = tempfile.NamedTemporaryFile(mode='w') @@ -1489,6 +1497,10 @@ parser_bootstrap.add_argument( '--no-minimize-config', action='store_true', help='do not assimilate and minimize the config file') +parser_bootstrap.add_argument( + '--skip-ping-check', + action='store_true', + help='do not verify that mon IP is pingable') parser_deploy = subparsers.add_parser( 'deploy', help='deploy a daemon')