From 568c630760a35c953e945fe56d9524fee66b803e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 28 Jun 2021 13:55:15 -0400 Subject: [PATCH] mgr/cephadm: always use fixed pool and namespace Signed-off-by: Sage Weil --- src/pybind/mgr/cephadm/services/nfs.py | 37 ++++++++++++-------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/pybind/mgr/cephadm/services/nfs.py b/src/pybind/mgr/cephadm/services/nfs.py index e331af08d483d..fdd4d7a59d315 100644 --- a/src/pybind/mgr/cephadm/services/nfs.py +++ b/src/pybind/mgr/cephadm/services/nfs.py @@ -13,6 +13,9 @@ from orchestrator import DaemonDescription from cephadm.services.cephadmservice import AuthEntity, CephadmDaemonDeploySpec, CephService + +POOL_NAME = 'nfs-ganesha' # make sure this matches pybind/mgr/nfs/nfs_utils.py + logger = logging.getLogger(__name__) @@ -97,8 +100,8 @@ class NFSService(CephService): context = { "user": rados_user, "nodeid": nodeid, - "pool": spec.pool, - "namespace": spec.namespace if spec.namespace else '', + "pool": POOL_NAME, + "namespace": spec.service_id, "rgw_user": rgw_user, "url": spec.rados_config_location(), # fall back to default NFS port if not present in daemon_spec @@ -110,9 +113,8 @@ class NFSService(CephService): # generate the cephadm config json def get_cephadm_config() -> Dict[str, Any]: config: Dict[str, Any] = {} - config['pool'] = spec.pool - if spec.namespace: - config['namespace'] = spec.namespace + config['pool'] = POOL_NAME + config['namespace'] = spec.service_id config['userid'] = rados_user config['extra_args'] = ['-N', 'NIV_EVENT'] config['files'] = { @@ -143,10 +145,9 @@ class NFSService(CephService): 'rados', '-n', f"mgr.{self.mgr.get_mgr_id()}", '-k', str(self.mgr.get_ceph_option('keyring')), - '-p', cast(str, spec.pool), + '-p', POOL_NAME, + '--namespace', cast(str, spec.service_id), ] - if spec.namespace: - cmd += ['--namespace', spec.namespace] result = subprocess.run( cmd + ['get', objname, '-'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, @@ -170,9 +171,7 @@ class NFSService(CephService): spec = cast(NFSServiceSpec, self.mgr.spec_store[daemon_spec.service_name].spec) entity: AuthEntity = self.get_auth_entity(daemon_id) - osd_caps = 'allow rw pool=%s' % (spec.pool) - if spec.namespace: - osd_caps = '%s namespace=%s' % (osd_caps, spec.namespace) + osd_caps = 'allow rw pool=%s namespace=%s' % (POOL_NAME, spec.service_id) logger.info('Creating key for %s' % entity) keyring = self.get_keyring_with_caps(entity, @@ -204,7 +203,7 @@ class NFSService(CephService): entity = AuthEntity(f'client.{tmp_id}') keyring = self.get_keyring_with_caps( entity, - ['mon', 'allow r', 'osd', f'allow rwx pool {spec.pool}'] + ['mon', 'allow r', 'osd', f'allow rwx pool {POOL_NAME}'] ) tmp_keyring = tempfile.NamedTemporaryFile(mode='w', prefix='mgr-grace-keyring') os.fchmod(tmp_keyring.fileno(), 0o600) @@ -219,11 +218,10 @@ class NFSService(CephService): 'ganesha-rados-grace', '--cephconf', tmp_conf.name, '--userid', tmp_id, - '--pool', cast(str, spec.pool), + '--pool', POOL_NAME, + '--ns', cast(str, spec.service_id), + action, nodeid, ] - if spec.namespace: - cmd += ['--ns', spec.namespace] - cmd += [action, nodeid] self.mgr.log.debug(cmd) result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=10) @@ -282,11 +280,10 @@ class NFSService(CephService): 'rados', '-n', f"mgr.{self.mgr.get_mgr_id()}", '-k', str(self.mgr.get_ceph_option('keyring')), - '-p', cast(str, spec.pool), + '-p', POOL_NAME, + '--namespace', cast(str, spec.service_id), + 'rm', 'grace', ] - if spec.namespace: - cmd += ['--namespace', spec.namespace] - cmd += ['rm', 'grace'] subprocess.run( cmd, stdout=subprocess.PIPE, -- 2.39.5