From: Sage Weil Date: Fri, 14 Jun 2013 20:34:40 +0000 (-0700) Subject: ceph-disk: add 'activate-all' X-Git-Tag: v0.65~48^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5c7a23687a1a21bec5cca7b302ac4ba47c78e041;p=ceph.git ceph-disk: add 'activate-all' Scan /dev/disk/by-parttypeuuid for ceph OSDs and activate them all. This is useful when the event didn't trigger on the initial udev event for some reason. Signed-off-by: Sage Weil --- diff --git a/src/ceph-disk b/src/ceph-disk index 127d809902db..cd3b6cce3d5d 100755 --- a/src/ceph-disk +++ b/src/ceph-disk @@ -1689,6 +1689,39 @@ def main_activate_journal(args): ########################### +def main_activate_all(args): + dir = '/dev/disk/by-parttypeuuid' + LOG.debug('Scanning %s', dir) + if not os.path.exists(dir): + return + for name in os.listdir(dir): + if name.find('.') < 0: + continue + (tag, uuid) = name.split('.') + if tag == OSD_UUID: + path = os.path.join(dir, name) + LOG.info('Activating %s', path) + activate_lock.acquire() + try: + (cluster, osd_id) = mount_activate( + dev=path, + activate_key_template=args.activate_key_template, + init=args.mark_init, + ) + start_daemon( + cluster=cluster, + osd_id=osd_id, + ) + + except: + raise + + finally: + activate_lock.release() + + +########################### + def is_swap(dev): dev = os.path.realpath(dev) with file('/proc/swaps', 'rb') as proc_swaps: @@ -2090,6 +2123,25 @@ def parse_args(): func=main_activate_journal, ) + activate_all_parser = subparsers.add_parser('activate-all', help='Activate all tagged OSD partitions') + activate_all_parser.add_argument( + '--activate-key', + metavar='PATH', + help='bootstrap-osd keyring path template (%(default)s)', + dest='activate_key_template', + ) + activate_all_parser.add_argument( + '--mark-init', + metavar='INITSYSTEM', + help='init system to manage this dir', + default='auto', + choices=INIT_SYSTEMS, + ) + activate_all_parser.set_defaults( + activate_key_template='/var/lib/ceph/bootstrap-osd/{cluster}.keyring', + func=main_activate_all, + ) + list_parser = subparsers.add_parser('list', help='List disks, partitions, and Ceph OSDs') list_parser.set_defaults( func=main_list,