X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fceph-volume%2Fceph_volume%2Fdevices%2Fsimple%2Factivate.py;fp=src%2Fceph%2Fsrc%2Fceph-volume%2Fceph_volume%2Fdevices%2Fsimple%2Factivate.py;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=ac1bfff74057d85a2242bed01e09da92f215ed23;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/src/ceph-volume/ceph_volume/devices/simple/activate.py b/src/ceph/src/ceph-volume/ceph_volume/devices/simple/activate.py deleted file mode 100644 index ac1bfff..0000000 --- a/src/ceph/src/ceph-volume/ceph_volume/devices/simple/activate.py +++ /dev/null @@ -1,152 +0,0 @@ -from __future__ import print_function -import argparse -import json -import logging -import os -from textwrap import dedent -from ceph_volume import process, decorators, terminal -from ceph_volume.util import system, disk -from ceph_volume.systemd import systemctl - - -logger = logging.getLogger(__name__) - - -class Activate(object): - - help = 'Enable systemd units to mount configured devices and start a Ceph OSD' - - def __init__(self, argv, systemd=False): - self.argv = argv - self.systemd = systemd - - @decorators.needs_root - def activate(self, args): - with open(args.json_config, 'r') as fp: - osd_metadata = json.load(fp) - - osd_id = osd_metadata.get('whoami', args.osd_id) - osd_fsid = osd_metadata.get('fsid', args.osd_fsid) - - cluster_name = osd_metadata.get('cluster_name', 'ceph') - osd_dir = '/var/lib/ceph/osd/%s-%s' % (cluster_name, osd_id) - data_uuid = osd_metadata.get('data', {}).get('uuid') - if not data_uuid: - raise RuntimeError( - 'Unable to activate OSD %s - no "uuid" key found for data' % args.osd_id - ) - data_device = disk.get_device_from_partuuid(data_uuid) - journal_device = disk.get_device_from_partuuid(osd_metadata.get('journal', {}).get('uuid')) - block_device = disk.get_device_from_partuuid(osd_metadata.get('block', {}).get('uuid')) - block_db_device = disk.get_device_from_partuuid(osd_metadata.get('block.db', {}).get('uuid')) - block_wal_device = disk.get_device_from_partuuid( - osd_metadata.get('block.wal', {}).get('uuid') - ) - - if not system.device_is_mounted(data_device, destination=osd_dir): - process.run(['mount', '-v', data_device, osd_dir]) - - device_map = { - 'journal': journal_device, - 'block': block_device, - 'block.db': block_db_device, - 'block.wal': block_wal_device - } - - for name, device in device_map.items(): - if not device: - continue - # always re-do the symlink regardless if it exists, so that the journal - # device path that may have changed can be mapped correctly every time - destination = os.path.join(osd_dir, name) - process.run(['ln', '-snf', device, destination]) - - # make sure that the journal has proper permissions - system.chown(device) - - if not self.systemd: - # enable the ceph-volume unit for this OSD - systemctl.enable_volume(osd_id, osd_fsid, 'simple') - - # disable any/all ceph-disk units - systemctl.mask_ceph_disk() - - # enable the OSD - systemctl.enable_osd(osd_id) - - # start the OSD - systemctl.start_osd(osd_id) - - if not self.systemd: - terminal.success('Successfully activated OSD %s with FSID %s' % (osd_id, osd_fsid)) - terminal.warning( - ('All ceph-disk systemd units have been disabled to ' - 'prevent OSDs getting triggered by UDEV events') - ) - - def main(self): - sub_command_help = dedent(""" - Activate OSDs by mounting devices previously configured to their - appropriate destination:: - - ceph-volume simple activate {ID} {FSID} - - Or using a JSON file directly:: - - ceph-volume simple activate --file /etc/ceph/osd/{ID}-{FSID}.json - - The OSD must have been "scanned" previously (see ``ceph-volume simple - scan``), so that all needed OSD device information and metadata exist. - - A previously scanned OSD would exist like:: - - /etc/ceph/osd/{ID}-{FSID}.json - - - Environment variables supported: - - CEPH_VOLUME_SIMPLE_JSON_DIR: Directory location for scanned OSD JSON configs - """) - parser = argparse.ArgumentParser( - prog='ceph-volume simple activate', - formatter_class=argparse.RawDescriptionHelpFormatter, - description=sub_command_help, - ) - parser.add_argument( - 'osd_id', - metavar='ID', - nargs='?', - help='The ID of the OSD, usually an integer, like 0' - ) - parser.add_argument( - 'osd_fsid', - metavar='FSID', - nargs='?', - help='The FSID of the OSD, similar to a SHA1' - ) - parser.add_argument( - '--file', - help='The path to a JSON file, from a scanned OSD' - ) - if len(self.argv) == 0: - print(sub_command_help) - return - args = parser.parse_args(self.argv) - if not args.file: - if not args.osd_id and not args.osd_fsid: - terminal.error('ID and FSID are required to find the right OSD to activate') - terminal.error('from a scanned OSD location in /etc/ceph/osd/') - raise RuntimeError('Unable to activate without both ID and FSID') - # don't allow a CLI flag to specify the JSON dir, because that might - # implicitly indicate that it would be possible to activate a json file - # at a non-default location which would not work at boot time if the - # custom location is not exposed through an ENV var - json_dir = os.environ.get('CEPH_VOLUME_SIMPLE_JSON_DIR', '/etc/ceph/osd/') - if args.file: - json_config = args.file - else: - json_config = os.path.join(json_dir, '%s-%s.json' % (args.osd_id, args.osd_fsid)) - if not os.path.exists(json_config): - raise RuntimeError('Expected JSON config path not found: %s' % json_config) - args.json_config = json_config - self.activate(args)