From b8cff9c261f34618c66e5fb65ddeac26282c6670 Mon Sep 17 00:00:00 2001 From: Adam King Date: Tue, 9 Aug 2022 16:13:38 -0400 Subject: [PATCH] mgr/cephadm: reconfig iscsi daemons if trusted_ip_list changes This is necessary as iscsi daemons expect the iscsi-gateway.cfg which includes this list to match across the iscsi daemons Fixes: https://tracker.ceph.com/issues/57078 Signed-off-by: Adam King (cherry picked from commit 8a6e67c6a32f71f38dd3dafe84e6a5e7b2a99f5a) Conflicts: src/pybind/mgr/cephadm/module.py --- src/pybind/mgr/cephadm/module.py | 9 +++++++-- src/pybind/mgr/cephadm/services/iscsi.py | 16 ++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 04270205e0b3..9fc4298a868a 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -26,7 +26,7 @@ from ceph.deployment import inventory from ceph.deployment.drive_group import DriveGroupSpec from ceph.deployment.service_spec import \ ServiceSpec, PlacementSpec, \ - HostPlacementSpec, IngressSpec + HostPlacementSpec, IngressSpec, IscsiServiceSpec from ceph.utils import str_to_datetime, datetime_to_str, datetime_now from cephadm.serve import CephadmServe from cephadm.services.cephadmservice import CephadmDaemonDeploySpec @@ -494,6 +494,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule, self.mgr_service: MgrService = cast(MgrService, self.cephadm_services['mgr']) self.osd_service: OSDService = cast(OSDService, self.cephadm_services['osd']) + self.iscsi_service: IscsiService = cast(IscsiService, self.cephadm_services['iscsi']) self.template = TemplateMgr(self) @@ -2456,7 +2457,11 @@ Then run the following: daemons = self.cache.get_daemons_by_service(spec.service_name()) deps = [d.name() for d in daemons if d.daemon_type == 'haproxy'] elif daemon_type == 'iscsi': - deps = [self.get_mgr_ip()] + if spec: + iscsi_spec = cast(IscsiServiceSpec, spec) + deps = [self.iscsi_service.get_trusted_ips(iscsi_spec)] + else: + deps = [self.get_mgr_ip()] else: need = { 'prometheus': ['mgr', 'alertmanager', 'node-exporter', 'ingress'], diff --git a/src/pybind/mgr/cephadm/services/iscsi.py b/src/pybind/mgr/cephadm/services/iscsi.py index d5896f075d49..c42eff6838d9 100644 --- a/src/pybind/mgr/cephadm/services/iscsi.py +++ b/src/pybind/mgr/cephadm/services/iscsi.py @@ -23,6 +23,14 @@ class IscsiService(CephService): assert spec.pool self.mgr._check_pool_exists(spec.pool, spec.service_name()) + def get_trusted_ips(self, spec: IscsiServiceSpec) -> str: + # add active mgr ip address to trusted list so dashboard can access + trusted_ip_list = spec.trusted_ip_list if spec.trusted_ip_list else '' + if trusted_ip_list: + trusted_ip_list += ',' + trusted_ip_list += self.mgr.get_mgr_ip() + return trusted_ip_list + def prepare_create(self, daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec: assert self.TYPE == daemon_spec.daemon_type @@ -58,11 +66,7 @@ class IscsiService(CephService): 'val': key_data, }) - # add active mgr ip address to trusted list so dashboard can access - trusted_ip_list = spec.trusted_ip_list if spec.trusted_ip_list else '' - if trusted_ip_list: - trusted_ip_list += ',' - trusted_ip_list += self.mgr.get_mgr_ip() + trusted_ip_list = self.get_trusted_ips(spec) context = { 'client_name': '{}.{}'.format(utils.name_to_config_section('iscsi'), igw_id), @@ -74,7 +78,7 @@ class IscsiService(CephService): daemon_spec.keyring = keyring daemon_spec.extra_files = {'iscsi-gateway.cfg': igw_conf} daemon_spec.final_config, daemon_spec.deps = self.generate_config(daemon_spec) - daemon_spec.deps = [self.mgr.get_mgr_ip()] + daemon_spec.deps = [trusted_ip_list] return daemon_spec def config_dashboard(self, daemon_descrs: List[DaemonDescription]) -> None: -- 2.47.3