From: Pere Diaz Bou Date: Thu, 19 Jan 2023 09:12:09 +0000 (+0100) Subject: cephadm/box: minor fixes X-Git-Tag: v18.1.0~410^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0a07a82f7061a4c0f18deb1160668586e43cba53;p=ceph.git cephadm/box: minor fixes Signed-off-by: Pere Diaz Bou --- diff --git a/doc/dev/cephadm/developing-cephadm.rst b/doc/dev/cephadm/developing-cephadm.rst index d4da4066520..fe6abf4ee31 100644 --- a/doc/dev/cephadm/developing-cephadm.rst +++ b/doc/dev/cephadm/developing-cephadm.rst @@ -289,8 +289,9 @@ of the cluster. After bootstraping the cluster you can go inside the seed box in which you'll be able to run Cephadm commands:: - ./box.py -v cluster sh + ./box.py -v cluster bash [root@8d52a7860245] cephadm --help + [root@8d52a7860245] cephadm shell ... diff --git a/src/cephadm/box/DockerfilePodman b/src/cephadm/box/DockerfilePodman index 440267bc6ec..115c3c730fa 100644 --- a/src/cephadm/box/DockerfilePodman +++ b/src/cephadm/box/DockerfilePodman @@ -10,6 +10,7 @@ FROM fedora:34 ENV CEPHADM_PATH=/usr/local/sbin/cephadm RUN ln -s /ceph/src/cephadm/cephadm.py $CEPHADM_PATH # NOTE: assume path of ceph volume + # Don't include container-selinux and remove # directories used by yum that are just taking # up space. diff --git a/src/cephadm/box/box.py b/src/cephadm/box/box.py index b485bc16aab..db2f2423351 100755 --- a/src/cephadm/box/box.py +++ b/src/cephadm/box/box.py @@ -52,7 +52,7 @@ def remove_ceph_image_tar(): def cleanup_box() -> None: - osd.cleanup() + osd.cleanup_osds() remove_ceph_image_tar() @@ -118,7 +118,7 @@ def dashboard_setup(): class Cluster(Target): _help = 'Manage docker cephadm boxes' - actions = ['bootstrap', 'start', 'down', 'list', 'sh', 'setup', 'cleanup'] + actions = ['bootstrap', 'start', 'down', 'list', 'bash', 'setup', 'cleanup'] def set_args(self): self.parser.add_argument( @@ -366,11 +366,12 @@ class Cluster(Target): print(f'{name} \t{ip} \t{hostname}') @ensure_outside_container - def sh(self): + def bash(self): # we need verbose to see the prompt after running shell command Config.set('verbose', True) print('Seed bash') - run_shell_command(f'{engine_compose()} -f {Config.get("docker_yaml")} exec {get_seed_name()} bash') + engine = get_container_engine() + engine.run(f'exec -it {engine.seed_name} bash') targets = { diff --git a/src/cephadm/box/osd.py b/src/cephadm/box/osd.py index b57af42434a..827a4de36c0 100644 --- a/src/cephadm/box/osd.py +++ b/src/cephadm/box/osd.py @@ -1,6 +1,7 @@ import json import os import time +import re from typing import Dict from util import ( @@ -23,10 +24,9 @@ def remove_loop_img() -> None: if os.path.exists(loop_image): os.remove(loop_image) -def create_loopback_devices(osds: int) -> None: - +def create_loopback_devices(osds: int) -> Dict[int, Dict[str, str]]: assert osds - cleanup() + cleanup_osds() osd_devs = dict() for i in range(osds): @@ -84,7 +84,7 @@ def deploy_osd(data: str, hostname: str) -> bool: return 'Created osd(s)' in out -def cleanup() -> None: +def cleanup_osds() -> None: loop_img_dir = Config.get('loop_img_dir') osd_devs = load_osd_devices() for osd in osd_devs.values(): @@ -125,8 +125,9 @@ class Osd(Target): - deploy: Deploy an osd given a block device - create_loop: Create needed loopback devices and block devices in logical volumes for a number of osds. + - destroy: Remove all osds and the underlying loopback devices. """ - actions = ['deploy', 'create_loop'] + actions = ['deploy', 'create_loop', 'destroy'] def set_args(self): self.parser.add_argument('action', choices=Osd.actions) @@ -150,3 +151,7 @@ class Osd(Target): osds = Config.get('osds') create_loopback_devices(int(osds)) print('Successfully created loopback devices') + + @ensure_outside_container + def destroy(self): + cleanup_osds()