summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qa/tasks/cephadm.py14
-rwxr-xr-xsrc/cephadm/cephadm.py4
-rw-r--r--src/cephadm/cephadmlib/daemons/ceph.py21
-rw-r--r--src/cephadm/tests/test_cephadm.py1
4 files changed, 32 insertions, 8 deletions
diff --git a/qa/tasks/cephadm.py b/qa/tasks/cephadm.py
index 19258f216e1..166ea9537ee 100644
--- a/qa/tasks/cephadm.py
+++ b/qa/tasks/cephadm.py
@@ -1086,8 +1086,18 @@ def ceph_osds(ctx, config):
short_dev = dev
log.info('Deploying %s on %s with %s...' % (
osd, remote.shortname, dev))
- _shell(ctx, cluster_name, remote, [
- 'ceph-volume', 'lvm', 'zap', dev])
+ remote.run(
+ args=[
+ 'sudo',
+ ctx.cephadm,
+ '--image', ctx.ceph[cluster_name].image,
+ 'ceph-volume',
+ '-c', '/etc/ceph/{}.conf'.format(cluster_name),
+ '-k', '/etc/ceph/{}.client.admin.keyring'.format(cluster_name),
+ '--fsid', ctx.ceph[cluster_name].fsid,
+ '--', 'lvm', 'zap', dev
+ ]
+ )
add_osd_args = ['ceph', 'orch', 'daemon', 'add', 'osd',
remote.shortname + ':' + short_dev]
osd_method = config.get('osd_method')
diff --git a/src/cephadm/cephadm.py b/src/cephadm/cephadm.py
index fc99d9c17a5..7450d0945ed 100755
--- a/src/cephadm/cephadm.py
+++ b/src/cephadm/cephadm.py
@@ -3172,7 +3172,7 @@ def command_shell(ctx):
daemon_type = ctx.name
daemon_id = None
else:
- daemon_type = 'osd' # get the most mounts
+ daemon_type = 'shell' # get limited set of mounts
daemon_id = None
if ctx.fsid and daemon_type in ceph_daemons():
@@ -3310,7 +3310,7 @@ def command_ceph_volume(ctx):
lock.acquire()
(uid, gid) = (0, 0) # ceph-volume runs as root
- mounts = get_container_mounts_for_type(ctx, ctx.fsid, 'osd')
+ mounts = get_container_mounts_for_type(ctx, ctx.fsid, 'ceph-volume')
tmp_config = None
tmp_keyring = None
diff --git a/src/cephadm/cephadmlib/daemons/ceph.py b/src/cephadm/cephadmlib/daemons/ceph.py
index efb013c7e09..cf26e017164 100644
--- a/src/cephadm/cephadmlib/daemons/ceph.py
+++ b/src/cephadm/cephadmlib/daemons/ceph.py
@@ -424,12 +424,17 @@ def get_ceph_mounts_for_type(
"""
mounts = dict()
- if daemon_type in ceph_daemons():
+ if daemon_type in ceph_daemons() or daemon_type in [
+ 'ceph-volume',
+ 'shell',
+ ]:
if fsid:
run_path = os.path.join('/var/run/ceph', fsid)
if os.path.exists(run_path):
mounts[run_path] = '/var/run/ceph:z'
log_dir = os.path.join(ctx.log_dir, fsid)
+ if not os.path.exists(log_dir):
+ os.mkdir(log_dir)
mounts[log_dir] = '/var/log/ceph:z'
crash_dir = '/var/lib/ceph/%s/crash' % fsid
if os.path.exists(crash_dir):
@@ -438,14 +443,19 @@ def get_ceph_mounts_for_type(
journald_sock_dir = '/run/systemd/journal'
mounts[journald_sock_dir] = journald_sock_dir
- if daemon_type in ['mon', 'osd', 'clusterless-ceph-volume']:
+ if daemon_type in [
+ 'mon',
+ 'osd',
+ 'ceph-volume',
+ 'clusterless-ceph-volume',
+ ]:
mounts['/dev'] = '/dev' # FIXME: narrow this down?
mounts['/run/udev'] = '/run/udev'
- if daemon_type in ['osd', 'clusterless-ceph-volume']:
+ if daemon_type in ['osd', 'ceph-volume', 'clusterless-ceph-volume']:
mounts['/sys'] = '/sys' # for numa.cc, pick_address, cgroups, ...
mounts['/run/lvm'] = '/run/lvm'
mounts['/run/lock/lvm'] = '/run/lock/lvm'
- if daemon_type == 'osd':
+ if daemon_type in ['osd', 'ceph-volume']:
# selinux-policy in the container may not match the host.
if HostFacts(ctx).selinux_enabled:
cluster_dir = f'{ctx.data_dir}/{fsid}'
@@ -458,7 +468,10 @@ def get_ceph_mounts_for_type(
logger.error(
f'Cluster direcotry {cluster_dir} does not exist.'
)
+ if daemon_type == 'osd':
mounts['/'] = '/rootfs'
+ elif daemon_type == 'ceph-volume':
+ mounts['/'] = '/rootfs:rslave'
try:
if (
diff --git a/src/cephadm/tests/test_cephadm.py b/src/cephadm/tests/test_cephadm.py
index 9e0345fe758..928982de70b 100644
--- a/src/cephadm/tests/test_cephadm.py
+++ b/src/cephadm/tests/test_cephadm.py
@@ -380,6 +380,7 @@ class TestCephAdm(object):
_deploy_daemon = funkypatch.patch('cephadm.deploy_daemon')
funkypatch.patch('cephadm.make_var_run')
funkypatch.patch('cephadmlib.file_utils.make_run_dir')
+ funkypatch.patch('os.mkdir')
_migrate_sysctl = funkypatch.patch('cephadm.migrate_sysctl_dir')
funkypatch.patch(
'cephadm.check_unit',