ceph-volume: top-level 'activate' command

First try raw, then lvm.

Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Sage Weil 2021-08-05 13:29:17 -04:00
parent 9dc3533875
commit 3d7ceec684
3 changed files with 76 additions and 1 deletions

View File

@ -0,0 +1 @@
from .main import Activate # noqa

View File

@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
import argparse
from ceph_volume import terminal
from ceph_volume.devices.lvm.activate import Activate as LVMActivate
from ceph_volume.devices.raw.activate import Activate as RAWActivate
class Activate(object):
help = "Activate an OSD"
def __init__(self, argv):
self.argv = argv
def main(self):
parser = argparse.ArgumentParser(
prog='ceph-volume activate',
formatter_class=argparse.RawDescriptionHelpFormatter,
description=self.help,
)
parser.add_argument(
'--osd-id',
help='OSD ID to activate'
)
parser.add_argument(
'--osd-uuid',
help='OSD UUID to active'
)
parser.add_argument(
'--no-systemd',
dest='no_systemd',
action='store_true',
help='Skip creating and enabling systemd units and starting OSD services'
)
parser.add_argument(
'--no-tmpfs',
action='store_true',
help='Do not use a tmpfs mount for OSD data dir'
)
self.args = parser.parse_args(self.argv)
# first try raw
try:
RAWActivate([]).activate(
device=None,
start_osd_id=self.args.osd_id,
start_osd_uuid=self.args.osd_uuid,
tmpfs=not self.args.no_tmpfs,
systemd=not self.args.no_systemd,
block_wal=None,
block_db=None,
)
return
except Exception as e:
terminal.info(f'Failed to activate via raw: {e}')
# then try lvm
try:
LVMActivate([]).activate(
argparse.Namespace(
osd_id=self.args.osd_id,
osd_fsid=self.args.osd_uuid,
no_tmpfs=self.args.no_tmpfs,
no_systemd=self.args.no_systemd,
)
)
return
except Exception as e:
terminal.info(f'Failed to activate via lvm: {e}')
terminal.error('Failed to activate any OSD(s)')

View File

@ -6,7 +6,7 @@ import sys
import logging
from ceph_volume.decorators import catches
from ceph_volume import log, devices, configuration, conf, exceptions, terminal, inventory, drive_group
from ceph_volume import log, devices, configuration, conf, exceptions, terminal, inventory, drive_group, activate
class Volume(object):
@ -29,6 +29,7 @@ Ceph Conf: {ceph_path}
'simple': devices.simple.Simple,
'raw': devices.raw.Raw,
'inventory': inventory.Inventory,
'activate': activate.Activate,
'drive-group': drive_group.Deploy,
}
self.plugin_help = "No plugins found/loaded"