From 4c2d5b33fd5e19bd2ab499ad641c5935fbf02e54 Mon Sep 17 00:00:00 2001 From: Adam King Date: Mon, 21 Aug 2023 13:48:56 -0400 Subject: [PATCH] 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 (cherry picked from commit de92392708bf456bba975cc18b3138035d79ae05) --- src/cephadm/cephadm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index 18b02d3bf2f99..10089bed3a981 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -2545,6 +2545,17 @@ def _write_custom_conf_files(ctx: CephadmContext, daemon_type: str, daemon_id: s os.fchown(f.fileno(), uid, gid) os.fchmod(f.fileno(), 0o600) 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 open(tcmu_file_path, 'w', encoding='utf-8') as f: + os.fchown(f.fileno(), uid, gid) + os.fchmod(f.fileno(), 0o600) + f.write(ccf['content']) def get_parm(option: str) -> Dict[str, str]: -- 2.39.5