Skip to content

Commit b7ffe0a

Browse files
authored
Merge pull request ceph#61293 from adk3798/ceph-exporter-sock-dir
cephadm: fix handling of ceph-exporter sock-dir Reviewed-by: Ernesto Puerta <[email protected]>
2 parents 2a99c5d + 4fccf58 commit b7ffe0a

File tree

2 files changed

+11
-14
lines changed

2 files changed

+11
-14
lines changed

src/cephadm/cephadmlib/daemons/ceph.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -343,13 +343,9 @@ def get_daemon_args(self) -> List[str]:
343343
)
344344
return args
345345

346-
def validate(self) -> None:
347-
if not os.path.isdir(self.sock_dir):
348-
raise Error(
349-
f'Desired sock dir for ceph-exporter is not directory: {self.sock_dir}'
350-
)
351-
352346
def container(self, ctx: CephadmContext) -> CephContainer:
347+
uid, gid = self.uid_gid(ctx)
348+
make_run_dir(ctx.fsid, uid, gid)
353349
ctr = daemon_to_container(ctx, self)
354350
return to_deployment_container(ctx, ctr)
355351

@@ -366,6 +362,9 @@ def customize_container_mounts(
366362
) -> None:
367363
cm = Ceph.get_ceph_mounts(ctx, self.identity)
368364
mounts.update(cm)
365+
# we want to always mount /var/run/ceph/<fsid> to the sock
366+
# dir within the container. See https://tracker.ceph.com/issues/69475
367+
mounts.update({f'/var/run/ceph/{ctx.fsid}': self.sock_dir})
369368
if self.https_enabled:
370369
data_dir = self.identity.data_dir(ctx.data_dir)
371370
mounts.update({os.path.join(data_dir, 'etc/certs'): '/etc/certs'})
@@ -390,13 +389,6 @@ def customize_container_envs(
390389
def default_entrypoint(self) -> str:
391390
return self.entrypoint
392391

393-
def prepare_data_dir(self, data_dir: str, uid: int, gid: int) -> None:
394-
if not os.path.exists(self.sock_dir):
395-
os.mkdir(self.sock_dir)
396-
# part of validation is for the sock dir, so we postpone
397-
# it until now
398-
self.validate()
399-
400392
def create_daemon_dirs(self, data_dir: str, uid: int, gid: int) -> None:
401393
"""Create files under the container data dir"""
402394
if not os.path.isdir(data_dir):

src/python-common/ceph/deployment/service_spec.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2873,7 +2873,7 @@ def __init__(self,
28732873
extra_entrypoint_args=extra_entrypoint_args)
28742874

28752875
self.service_type = service_type
2876-
self.sock_dir = sock_dir
2876+
self.sock_dir = None
28772877
self.addrs = addrs
28782878
self.port = port
28792879
self.prio_limit = prio_limit
@@ -2885,6 +2885,11 @@ def get_port_start(self) -> List[int]:
28852885
def validate(self) -> None:
28862886
super(CephExporterSpec, self).validate()
28872887

2888+
if self.sock_dir and self.sock_dir != '/var/run/ceph/':
2889+
raise SpecValidationError(
2890+
'sock_dir setting is deprecated and must be either unset or set to /var/run/ceph/'
2891+
)
2892+
28882893
if not isinstance(self.prio_limit, int):
28892894
raise SpecValidationError(
28902895
f'prio_limit must be an integer. Got {type(self.prio_limit)}')

0 commit comments

Comments
 (0)