Skip to content

Commit d6b8162

Browse files
authored
Merge pull request ceph#53467 from phlogistonjohn/jjm-cephadm-move-get_data_dir
cephadm: move get data dir function to daemonidentity method Reviewed-by: Adam King <[email protected]>
2 parents d5555ce + 594a450 commit d6b8162

File tree

2 files changed

+28
-32
lines changed

2 files changed

+28
-32
lines changed

src/cephadm/cephadm.py

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,7 +1560,7 @@ def _infer_config(ctx: CephadmContext) -> Any:
15601560

15611561
def config_path(daemon_type: str, daemon_name: str) -> str:
15621562
ident = DaemonIdentity(ctx.fsid, daemon_type, daemon_name)
1563-
data_dir = get_data_dir(ident, ctx.data_dir)
1563+
data_dir = ident.data_dir(ctx.data_dir)
15641564
return os.path.join(data_dir, 'config')
15651565

15661566
def get_mon_daemon_name(fsid: str) -> Optional[str]:
@@ -1765,12 +1765,6 @@ def infer_local_ceph_image(ctx: CephadmContext, container_path: str) -> Optional
17651765
return None
17661766

17671767

1768-
def get_data_dir(ident: 'DaemonIdentity', data_dir: str) -> str:
1769-
return os.path.join(
1770-
data_dir, ident.fsid, f'{ident.daemon_type}.{ident.daemon_id}'
1771-
)
1772-
1773-
17741768
def get_log_dir(fsid, log_dir):
17751769
# type: (str, str) -> str
17761770
return os.path.join(log_dir, fsid)
@@ -1795,7 +1789,7 @@ def make_data_dir(
17951789
if uid is None or gid is None:
17961790
uid, gid = extract_uid_gid(ctx)
17971791
make_data_dir_base(ident.fsid, ctx.data_dir, uid, gid)
1798-
data_dir = get_data_dir(ident, ctx.data_dir)
1792+
data_dir = ident.data_dir(ctx.data_dir)
17991793
makedirs(data_dir, uid, gid, DATA_DIR_MODE)
18001794
return data_dir
18011795

@@ -2166,38 +2160,38 @@ def create_daemon_dirs(
21662160
config_dir = ''
21672161
data_dir_root = ''
21682162
if daemon_type == 'prometheus':
2169-
data_dir_root = get_data_dir(ident, ctx.data_dir)
2163+
data_dir_root = ident.data_dir(ctx.data_dir)
21702164
config_dir = 'etc/prometheus'
21712165
makedirs(os.path.join(data_dir_root, config_dir), uid, gid, 0o755)
21722166
makedirs(os.path.join(data_dir_root, config_dir, 'alerting'), uid, gid, 0o755)
21732167
makedirs(os.path.join(data_dir_root, 'data'), uid, gid, 0o755)
21742168
recursive_chown(os.path.join(data_dir_root, 'etc'), uid, gid)
21752169
recursive_chown(os.path.join(data_dir_root, 'data'), uid, gid)
21762170
elif daemon_type == 'grafana':
2177-
data_dir_root = get_data_dir(ident, ctx.data_dir)
2171+
data_dir_root = ident.data_dir(ctx.data_dir)
21782172
config_dir = 'etc/grafana'
21792173
makedirs(os.path.join(data_dir_root, config_dir), uid, gid, 0o755)
21802174
makedirs(os.path.join(data_dir_root, config_dir, 'certs'), uid, gid, 0o755)
21812175
makedirs(os.path.join(data_dir_root, config_dir, 'provisioning/datasources'), uid, gid, 0o755)
21822176
makedirs(os.path.join(data_dir_root, 'data'), uid, gid, 0o755)
21832177
touch(os.path.join(data_dir_root, 'data', 'grafana.db'), uid, gid)
21842178
elif daemon_type == 'alertmanager':
2185-
data_dir_root = get_data_dir(ident, ctx.data_dir)
2179+
data_dir_root = ident.data_dir(ctx.data_dir)
21862180
config_dir = 'etc/alertmanager'
21872181
makedirs(os.path.join(data_dir_root, config_dir), uid, gid, 0o755)
21882182
makedirs(os.path.join(data_dir_root, config_dir, 'data'), uid, gid, 0o755)
21892183
elif daemon_type == 'promtail':
2190-
data_dir_root = get_data_dir(ident, ctx.data_dir)
2184+
data_dir_root = ident.data_dir(ctx.data_dir)
21912185
config_dir = 'etc/promtail'
21922186
makedirs(os.path.join(data_dir_root, config_dir), uid, gid, 0o755)
21932187
makedirs(os.path.join(data_dir_root, 'data'), uid, gid, 0o755)
21942188
elif daemon_type == 'loki':
2195-
data_dir_root = get_data_dir(ident, ctx.data_dir)
2189+
data_dir_root = ident.data_dir(ctx.data_dir)
21962190
config_dir = 'etc/loki'
21972191
makedirs(os.path.join(data_dir_root, config_dir), uid, gid, 0o755)
21982192
makedirs(os.path.join(data_dir_root, 'data'), uid, gid, 0o755)
21992193
elif daemon_type == 'node-exporter':
2200-
data_dir_root = get_data_dir(ident, ctx.data_dir)
2194+
data_dir_root = ident.data_dir(ctx.data_dir)
22012195
config_dir = 'etc/node-exporter'
22022196
makedirs(os.path.join(data_dir_root, config_dir), uid, gid, 0o755)
22032197
recursive_chown(os.path.join(data_dir_root, 'etc'), uid, gid)
@@ -2442,7 +2436,7 @@ def get_container_binds(
24422436
binds.extend(CephNvmeof.get_container_binds())
24432437
elif ident.daemon_type == CustomContainer.daemon_type:
24442438
cc = CustomContainer.init(ctx, ident.fsid, ident.daemon_id)
2445-
data_dir = get_data_dir(ident, ctx.data_dir)
2439+
data_dir = ident.data_dir(ctx.data_dir)
24462440
binds.extend(cc.get_container_binds(data_dir))
24472441

24482442
return binds
@@ -2538,7 +2532,7 @@ def get_container_mounts(
25382532
assert ident.fsid
25392533
assert ident.daemon_id
25402534
if daemon_type in Ceph.daemons:
2541-
data_dir = get_data_dir(ident, ctx.data_dir)
2535+
data_dir = ident.data_dir(ctx.data_dir)
25422536
if daemon_type == 'rgw':
25432537
cdata_dir = '/var/lib/ceph/radosgw/ceph-rgw.%s' % (ident.daemon_id)
25442538
else:
@@ -2552,7 +2546,7 @@ def get_container_mounts(
25522546
mounts[data_dir + '/keyring'] = '/etc/ceph/ceph.client.%s.%s.keyring' % (daemon_type, ident.daemon_id)
25532547

25542548
if daemon_type in Monitoring.components:
2555-
data_dir = get_data_dir(ident, ctx.data_dir)
2549+
data_dir = ident.data_dir(ctx.data_dir)
25562550
log_dir = get_log_dir(fsid, ctx.log_dir)
25572551
if daemon_type == 'prometheus':
25582552
mounts[os.path.join(data_dir, 'etc/prometheus')] = '/etc/prometheus:Z'
@@ -2578,20 +2572,20 @@ def get_container_mounts(
25782572
mounts[os.path.join(data_dir, 'etc/alertmanager')] = '/etc/alertmanager:Z'
25792573

25802574
if daemon_type == NFSGanesha.daemon_type:
2581-
data_dir = get_data_dir(ident, ctx.data_dir)
2575+
data_dir = ident.data_dir(ctx.data_dir)
25822576
nfs_ganesha = NFSGanesha.init(ctx, fsid, ident.daemon_id)
25832577
mounts.update(nfs_ganesha.get_container_mounts(data_dir))
25842578

25852579
if daemon_type == HAproxy.daemon_type:
2586-
data_dir = get_data_dir(ident, ctx.data_dir)
2580+
data_dir = ident.data_dir(ctx.data_dir)
25872581
mounts.update(HAproxy.get_container_mounts(data_dir))
25882582

25892583
if daemon_type == CephNvmeof.daemon_type:
2590-
data_dir = get_data_dir(ident, ctx.data_dir)
2584+
data_dir = ident.data_dir(ctx.data_dir)
25912585
mounts.update(CephNvmeof.get_container_mounts(data_dir))
25922586

25932587
if daemon_type == CephIscsi.daemon_type:
2594-
data_dir = get_data_dir(ident, ctx.data_dir)
2588+
data_dir = ident.data_dir(ctx.data_dir)
25952589
# Removes ending ".tcmu" from data_dir a tcmu-runner uses the same data_dir
25962590
# as rbd-runner-api
25972591
if data_dir.endswith('.tcmu'):
@@ -2600,12 +2594,12 @@ def get_container_mounts(
26002594
mounts.update(CephIscsi.get_container_mounts(data_dir, log_dir))
26012595

26022596
if daemon_type == Keepalived.daemon_type:
2603-
data_dir = get_data_dir(ident, ctx.data_dir)
2597+
data_dir = ident.data_dir(ctx.data_dir)
26042598
mounts.update(Keepalived.get_container_mounts(data_dir))
26052599

26062600
if daemon_type == CustomContainer.daemon_type:
26072601
cc = CustomContainer.init(ctx, fsid, ident.daemon_id)
2608-
data_dir = get_data_dir(ident, ctx.data_dir)
2602+
data_dir = ident.data_dir(ctx.data_dir)
26092603
mounts.update(cc.get_container_mounts(data_dir))
26102604

26112605
_update_podman_mounts(ctx, mounts)
@@ -2867,7 +2861,7 @@ def deploy_daemon(
28672861
else:
28682862
raise Error("TCP Port(s) '{}' required for {} already in use".format(','.join(map(str, endpoints)), daemon_type))
28692863

2870-
data_dir = get_data_dir(ident, ctx.data_dir)
2864+
data_dir = ident.data_dir(ctx.data_dir)
28712865
if deployment_type == DeploymentType.RECONFIG and not os.path.exists(data_dir):
28722866
raise Error('cannot reconfig, data path %s does not exist' % data_dir)
28732867
if daemon_type == 'mon' and not os.path.exists(data_dir):
@@ -2882,7 +2876,7 @@ def deploy_daemon(
28822876
# --mkfs
28832877
create_daemon_dirs(ctx, ident, uid, gid)
28842878
assert ident.daemon_type == 'mon'
2885-
mon_dir = get_data_dir(ident, ctx.data_dir)
2879+
mon_dir = ident.data_dir(ctx.data_dir)
28862880
log_dir = get_log_dir(ident.fsid, ctx.log_dir)
28872881
CephContainer(
28882882
ctx,
@@ -3093,7 +3087,7 @@ def deploy_daemon_units(
30933087
daemon_type = ident.daemon_type
30943088
daemon_id = ident.daemon_id
30953089

3096-
data_dir = get_data_dir(ident, ctx.data_dir)
3090+
data_dir = ident.data_dir(ctx.data_dir)
30973091
run_file_path = data_dir + '/unit.run'
30983092
meta_file_path = data_dir + '/unit.meta'
30993093
with write_new(run_file_path) as f, write_new(meta_file_path) as metaf:
@@ -4012,10 +4006,7 @@ def from_primary_and_opts(
40124006
if not vmounts:
40134007
vmounts = primary.volume_mounts
40144008
else:
4015-
data_dir = data_dir or get_data_dir(
4016-
primary.identity,
4017-
ctx.data_dir,
4018-
)
4009+
data_dir = data_dir or primary.identity.data_dir(ctx.data_dir)
40194010
vmounts = {
40204011
os.path.join(data_dir, src): dst
40214012
for src, dst in vmounts.items()
@@ -4959,7 +4950,7 @@ def prepare_create_mon(
49594950
logger.info('Creating mon...')
49604951
ident = DaemonIdentity(fsid, 'mon', mon_id)
49614952
create_daemon_dirs(ctx, ident, uid, gid)
4962-
mon_dir = get_data_dir(ident, ctx.data_dir)
4953+
mon_dir = ident.data_dir(ctx.data_dir)
49634954
log_dir = get_log_dir(fsid, ctx.log_dir)
49644955
out = CephContainer(
49654956
ctx,
@@ -7335,7 +7326,7 @@ def command_rm_daemon(ctx):
73357326
verbosity=CallVerbosity.DEBUG)
73367327

73377328
ident = DaemonIdentity(ctx.fsid, daemon_type, daemon_id)
7338-
data_dir = get_data_dir(ident, ctx.data_dir)
7329+
data_dir = ident.data_dir(ctx.data_dir)
73397330
if daemon_type in ['mon', 'osd', 'prometheus'] and \
73407331
not ctx.force_delete_data:
73417332
# rename it out of the way -- do not delete

src/cephadm/cephadmlib/daemon_identity.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# deamon_identity.py - classes for identifying daemons & services
22

3+
import os
4+
import pathlib
35
import re
46

57
from typing import Union
@@ -50,6 +52,9 @@ def container_name(self) -> str:
5052
def unit_name(self) -> str:
5153
return f'ceph-{self.fsid}@{self.daemon_type}.{self.daemon_id}'
5254

55+
def data_dir(self, base_data_dir: Union[str, os.PathLike]) -> str:
56+
return str(pathlib.Path(base_data_dir) / self.fsid / self.daemon_name)
57+
5358
@classmethod
5459
def from_name(cls, fsid: str, name: str) -> 'DaemonIdentity':
5560
daemon_type, daemon_id = name.split('.', 1)

0 commit comments

Comments
 (0)