X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fpybind%2Fmgr%2Fdashboard%2Fservices%2Fiscsi_config.py;h=c8cded19ab043ebf9105c8d43a62aa4dcd45f06a;hb=494da23a05e25ed98f5539f3b89e6af3cafe3fec;hp=963d2f990d7c3df8323384ddc574819aaffd4cae;hpb=931c18d5142274109ebfaecd012da8e5a3ebc67e;p=ceph.git diff --git a/ceph/src/pybind/mgr/dashboard/services/iscsi_config.py b/ceph/src/pybind/mgr/dashboard/services/iscsi_config.py index 963d2f990..c8cded19a 100644 --- a/ceph/src/pybind/mgr/dashboard/services/iscsi_config.py +++ b/ceph/src/pybind/mgr/dashboard/services/iscsi_config.py @@ -54,7 +54,33 @@ class IscsiGatewaysConfig(object): def _load_config_from_store(cls): json_db = mgr.get_store(_ISCSI_STORE_KEY, '{"gateways": {}}') - return json.loads(json_db) + config = json.loads(json_db) + cls.update_iscsi_config(config) + return config + + @classmethod + def update_iscsi_config(cls, config): + """ + Since `ceph-iscsi` config v10, gateway names were renamed from host short name to FQDN. + If Ceph Dashboard were configured before v10, we try to update our internal gateways + database automatically. + """ + for gateway_name, gateway_config in config['gateways'].items(): + if '.' not in gateway_name: + from .iscsi_client import IscsiClient + from ..rest_client import RequestException + try: + service_url = gateway_config['service_url'] + new_gateway_name = IscsiClient.instance( + service_url=service_url).get_hostname()['data'] + if gateway_name != new_gateway_name: + config['gateways'][new_gateway_name] = gateway_config + del config['gateways'][gateway_name] + cls._save_config(config) + except RequestException: + # If gateway is not acessible, it should be removed manually + # or we will try to update automatically next time + continue @staticmethod def _load_config_from_orchestrator():