]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: reconfig iscsi daemons if trusted_ip_list changes 47521/head
authorAdam King <adking@redhat.com>
Tue, 9 Aug 2022 20:13:38 +0000 (16:13 -0400)
committerAdam King <adking@redhat.com>
Tue, 13 Sep 2022 13:06:48 +0000 (09:06 -0400)
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 <adking@redhat.com>
src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/services/iscsi.py

index d0a268f0c4c385bd7a0a2f088180f36e31e2efdf..b499c050c38500a9dfb01dce6e8938c3df4dbc15 100644 (file)
@@ -28,7 +28,7 @@ from ceph.deployment.drive_group import DriveGroupSpec
 from ceph.deployment.service_spec import \
     ServiceSpec, PlacementSpec, \
     HostPlacementSpec, IngressSpec, \
-    TunedProfileSpec, PrometheusSpec
+    TunedProfileSpec, PrometheusSpec, IscsiServiceSpec
 from ceph.utils import str_to_datetime, datetime_to_str, datetime_now
 from cephadm.serve import CephadmServe
 from cephadm.services.cephadmservice import CephadmDaemonDeploySpec
@@ -580,6 +580,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)
 
@@ -2412,8 +2413,11 @@ Then run the following:
             deps = sorted([self.get_mgr_ip(), server_port, root_cert,
                            str(self.device_enhanced_scan)])
         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()]
         elif daemon_type == 'prometheus':
             # for prometheus we add the active mgr as an explicit dependency,
             # this way we force a redeploy after a mgr failover
index d5896f075d497499b3b35eb2136920c2e78f13fc..c42eff6838d9a1120d04edc4c4b3d9794811a6d7 100644 (file)
@@ -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: