From: Adam King Date: Mon, 21 Aug 2023 17:48:56 +0000 (-0400) Subject: cephadm: make custom_configs work for tcmu-runner container X-Git-Tag: v19.0.0~507^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=de92392708bf456bba975cc18b3138035d79ae05;p=ceph.git cephadm: make custom_configs work for tcmu-runner container This is intended to be a temporary workaround to make custom config files be able to be mounted into the tcmu-runner container. The hope is to refactor cephadm's iscsi handling for squid, but a patch like this could be useful for iscsi in older releases where currently custom config files are unusable for the tcmu-runner container What this patch actually does is have us write the custom config files to a dir for the tcmu-runner container so that the rest of the logic works without change. I thought this would be easier to remove later than a patch that integrates more with the container mounts or general deployment The use case in mind is something like service_type: iscsi service_id: foo service_name: iscsi.foo placement: hosts: - host1 custom_configs: - mount_path: /etc/tcmu/tcmu.conf content: | log_level = 4 spec: api_password: admin api_port: 5000 api_user: admin pool: foo which would allow users to modify the logging of the tcmu-runner container for debugging purposes Signed-off-by: Adam King --- diff --git a/src/cephadm/cephadm.py b/src/cephadm/cephadm.py index 4ded78d6489..bd991dcb9b7 100755 --- a/src/cephadm/cephadm.py +++ b/src/cephadm/cephadm.py @@ -3133,6 +3133,15 @@ def _write_custom_conf_files(ctx: CephadmContext, daemon_type: str, daemon_id: s file_path = os.path.join(custom_config_dir, os.path.basename(ccf['mount_path'])) with write_new(file_path, owner=(uid, gid), encoding='utf-8') as f: f.write(ccf['content']) + # temporary workaround to make custom config files work for tcmu-runner + # container we deploy with iscsi until iscsi is refactored + if daemon_type == 'iscsi': + tcmu_config_dir = custom_config_dir + '.tcmu' + if not os.path.exists(tcmu_config_dir): + makedirs(tcmu_config_dir, uid, gid, 0o755) + tcmu_file_path = os.path.join(tcmu_config_dir, os.path.basename(ccf['mount_path'])) + with write_new(tcmu_file_path, owner=(uid, gid), encoding='utf-8') as f: + f.write(ccf['content']) def get_parm(option: str) -> Dict[str, str]: