From eded7a736d206d5c7c09df1bc9601e38cc186a65 Mon Sep 17 00:00:00 2001 From: Michael Fritch Date: Fri, 27 Mar 2020 09:23:38 -0600 Subject: [PATCH] mgr/cephadm: expose NFS "common" config populate `rados_config_location` in the ServiceDescription with the RADOS url of the "common" config Signed-off-by: Michael Fritch (cherry picked from commit 05a9a1bfdaef1fff69ca8d0e959c84d157190db2) --- src/pybind/mgr/cephadm/module.py | 6 ++++++ src/pybind/mgr/cephadm/nfs.py | 16 ++-------------- .../ceph/deployment/service_spec.py | 12 ++++++++++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 4d034fc8012fa..96611be433e62 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -1895,6 +1895,9 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): if dd.service_name() in self.spec_store.specs: sm[n].size = self._get_spec_size(spec) sm[n].created = self.spec_store.spec_created[dd.service_name()] + if service_type == 'nfs': + spec = cast(NFSServiceSpec, spec) + sm[n].rados_config_location = spec.rados_config_location() else: sm[n].size = 0 if dd.status == 1: @@ -1917,6 +1920,9 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): size=self._get_spec_size(spec), running=0, ) + if service_type == 'nfs': + spec = cast(NFSServiceSpec, spec) + sm[n].rados_config_location = spec.rados_config_location() return list(sm.values()) @trivial_completion diff --git a/src/pybind/mgr/cephadm/nfs.py b/src/pybind/mgr/cephadm/nfs.py index 500f38ba8c989..adc0fc3c3b183 100644 --- a/src/pybind/mgr/cephadm/nfs.py +++ b/src/pybind/mgr/cephadm/nfs.py @@ -26,18 +26,6 @@ class NFSGanesha(object): # type: () -> str return '%s.%s' % (self.spec.service_type, self.daemon_id) - def get_rados_config_name(self): - # type: () -> str - return 'conf-' + self.spec.service_name() - - def get_rados_config_url(self): - # type: () -> str - url = 'rados://' + self.spec.pool + '/' - if self.spec.namespace: - url += self.spec.namespace + '/' - url += self.get_rados_config_name() - return url - def get_keyring_entity(self): # type: () -> str return utils.name_to_config_section(self.get_rados_user()) @@ -84,7 +72,7 @@ class NFSGanesha(object): def create_rados_config_obj(self, clobber=False): # type: (Optional[bool]) -> None - obj = self.get_rados_config_name() + obj = self.spec.rados_config_name() with self.mgr.rados.open_ioctx(self.spec.pool) as ioctx: if self.spec.namespace: @@ -114,7 +102,7 @@ RADOS_URLS {{ %url {url} '''.format(user=self.get_rados_user(), - url=self.get_rados_config_url()) + url=self.spec.rados_config_location()) def get_cephadm_config(self): # type: () -> Dict diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 79490a3c91172..7572763d9d086 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -497,6 +497,18 @@ class NFSServiceSpec(ServiceSpec): if not self.pool: raise ServiceSpecValidationError('Cannot add NFS: No Pool specified') + def rados_config_name(self): + # type: () -> str + return 'conf-' + self.service_name() + + def rados_config_location(self): + # type: () -> str + url = 'rados://' + self.pool + '/' + if self.namespace: + url += self.namespace + '/' + url += self.rados_config_name() + return url + class RGWSpec(ServiceSpec): """ -- 2.39.5