From: Kiefer Chang Date: Fri, 3 Jul 2020 02:32:17 +0000 (+0800) Subject: mgr/cephadm: fix Dashboard ganesha setting duplication error X-Git-Tag: v16.1.0~1805^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F35908%2Fhead;p=ceph.git mgr/cephadm: fix Dashboard ganesha setting duplication error Fix the problem when there are multiple daemons in a NFS service, redundant Ganesha locations are set. This change also fixes the setting is wrong when no namespace is used for a Ganesha config pool. Fixes: https://tracker.ceph.com/issues/46329 Signed-off-by: Kiefer Chang --- diff --git a/src/pybind/mgr/cephadm/services/nfs.py b/src/pybind/mgr/cephadm/services/nfs.py index 98e0eb04544a..05d0199a18e6 100644 --- a/src/pybind/mgr/cephadm/services/nfs.py +++ b/src/pybind/mgr/cephadm/services/nfs.py @@ -1,7 +1,7 @@ import logging import rados -from typing import Dict, Optional, Tuple, Any, List, cast +from typing import Dict, Optional, Tuple, Any, List, Set, cast from ceph.deployment.service_spec import NFSServiceSpec @@ -76,14 +76,17 @@ class NFSService(CephadmService): def config_dashboard(self, daemon_descrs: List[DaemonDescription]): def get_set_cmd_dicts(out: str) -> List[dict]: - locations: List[str] = [] + locations: Set[str] = set() for dd in daemon_descrs: spec = cast(NFSServiceSpec, self.mgr.spec_store.specs.get(dd.service_name(), None)) if not spec or not spec.service_id: logger.warning('No ServiceSpec or service_id found for %s', dd) continue - locations.append('{}:{}/{}'.format(spec.service_id, spec.pool, spec.namespace)) + location = '{}:{}'.format(spec.service_id, spec.pool) + if spec.namespace: + location = '{}/{}'.format(location, spec.namespace) + locations.add(location) new_value = ','.join(locations) if new_value and new_value != out: return [{'prefix': 'dashboard set-ganesha-clusters-rados-pool-namespace',