From: Guillaume Abrioux Date: Tue, 23 Nov 2021 14:33:35 +0000 (+0100) Subject: ceph-volume: zap osds in rollback_osd() X-Git-Tag: v16.2.11~580^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3b216b6e0ad2b80ae2544cedda1eba5cd9bbbe39;p=ceph.git ceph-volume: zap osds in rollback_osd() rollback_osd() should zap and wipe the device for the corresponding osd that was being prepared after a failure happens. Fixes: https://tracker.ceph.com/issues/53376 Signed-off-by: Guillaume Abrioux (cherry picked from commit effe65533f4b7248137fcdc0ae966f8438a05b01) --- diff --git a/src/ceph-volume/ceph_volume/devices/lvm/batch.py b/src/ceph-volume/ceph_volume/devices/lvm/batch.py index 11ec5947c24f..bec7eca850f6 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/batch.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/batch.py @@ -340,7 +340,7 @@ class Batch(object): nargs='*', default=[], help='Reuse existing OSD ids', - type=common.valid_osd_id + type=arg_validators.valid_osd_id ) self.args = parser.parse_args(argv) self.parser = parser diff --git a/src/ceph-volume/ceph_volume/devices/lvm/common.py b/src/ceph-volume/ceph_volume/devices/lvm/common.py index 30d627e03814..614be0af6ad6 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/common.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/common.py @@ -1,15 +1,14 @@ from ceph_volume.util import arg_validators, disk from ceph_volume import process, conf from ceph_volume import terminal +from ceph_volume.devices.lvm.zap import Zap import argparse -def valid_osd_id(val): - return str(int(val)) def rollback_osd(args, osd_id=None): """ When the process of creating or preparing fails, the OSD needs to be - destroyed so that the ID cane be reused. This is prevents leaving the ID + destroyed so that the ID can be reused. This prevents from leaving the ID around as "used" on the monitor, which can cause confusion if expecting sequential OSD IDs. @@ -34,6 +33,7 @@ def rollback_osd(args, osd_id=None): ] process.run(cmd) + Zap(['--destroy', '--osd-id', osd_id]).main() common_args = { @@ -58,7 +58,7 @@ common_args = { '--osd-id': { 'help': 'Reuse an existing OSD id', 'default': None, - 'type': valid_osd_id, + 'type': arg_validators.valid_osd_id, }, '--osd-fsid': { 'help': 'Reuse an existing OSD fsid', diff --git a/src/ceph-volume/ceph_volume/devices/lvm/migrate.py b/src/ceph-volume/ceph_volume/devices/lvm/migrate.py index dc982f153b4e..86159fd505b7 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/migrate.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/migrate.py @@ -5,10 +5,10 @@ import os from textwrap import dedent from ceph_volume.util import system, disk, merge_dict from ceph_volume.util.device import Device +from ceph_volume.util.arg_validators import valid_osd_id from ceph_volume import decorators, terminal, process from ceph_volume.api import lvm as api from ceph_volume.systemd import systemctl -from ceph_volume.devices.lvm.common import valid_osd_id logger = logging.getLogger(__name__) diff --git a/src/ceph-volume/ceph_volume/devices/lvm/zap.py b/src/ceph-volume/ceph_volume/devices/lvm/zap.py index b81b7b8b1e9b..e0cbfb172194 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/zap.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/zap.py @@ -10,7 +10,6 @@ from ceph_volume.api import lvm as api from ceph_volume.util import system, encryption, disk, arg_validators, str_to_int, merge_dict from ceph_volume.util.device import Device from ceph_volume.systemd import systemctl -from ceph_volume.devices.lvm.common import valid_osd_id logger = logging.getLogger(__name__) mlogger = terminal.MultiLogger(__name__) @@ -377,7 +376,7 @@ class Zap(object): parser.add_argument( '--osd-id', - type=valid_osd_id, + type=arg_validators.valid_osd_id, help='Specify an OSD ID to detect associated devices for zapping', ) diff --git a/src/ceph-volume/ceph_volume/util/arg_validators.py b/src/ceph-volume/ceph_volume/util/arg_validators.py index 5a7e82f07174..d6a77f136fdc 100644 --- a/src/ceph-volume/ceph_volume/util/arg_validators.py +++ b/src/ceph-volume/ceph_volume/util/arg_validators.py @@ -6,6 +6,9 @@ from ceph_volume.util import disk from ceph_volume.util.device import Device +def valid_osd_id(val): + return str(int(val)) + class ValidDevice(object): def __init__(self, as_string=False, gpt_ok=False):