From 9d38ee24cf6a2dd79d1fbce50ff4f83dac79f436 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 28 Jun 2021 14:45:13 -0400 Subject: [PATCH] python-common: remove pool + namespace from NFSServiceSpec Signed-off-by: Sage Weil --- src/pybind/mgr/cephadm/tests/test_cephadm.py | 4 -- .../mgr/cephadm/tests/test_scheduling.py | 3 +- .../mgr/dashboard/tests/test_ganesha.py | 39 +++++++++---------- src/pybind/mgr/orchestrator/module.py | 8 ---- src/pybind/mgr/rook/module.py | 2 - .../ceph/deployment/service_spec.py | 25 +++--------- .../ceph/tests/test_service_spec.py | 2 +- 7 files changed, 26 insertions(+), 57 deletions(-) diff --git a/src/pybind/mgr/cephadm/tests/test_cephadm.py b/src/pybind/mgr/cephadm/tests/test_cephadm.py index 4fc510a4c41..f19571eafb5 100644 --- a/src/pybind/mgr/cephadm/tests/test_cephadm.py +++ b/src/pybind/mgr/cephadm/tests/test_cephadm.py @@ -863,8 +863,6 @@ spec: ps = PlacementSpec(hosts=['test'], count=1) spec = NFSServiceSpec( service_id='name', - pool='pool', - namespace='namespace', placement=ps) unmanaged_spec = ServiceSpec.from_json(spec.to_json()) unmanaged_spec.unmanaged = True @@ -981,8 +979,6 @@ spec: ), CephadmOrchestrator.apply_rgw), (NFSServiceSpec( service_id='name', - pool='pool', - namespace='namespace' ), CephadmOrchestrator.apply_nfs), (IscsiServiceSpec( service_id='name', diff --git a/src/pybind/mgr/cephadm/tests/test_scheduling.py b/src/pybind/mgr/cephadm/tests/test_scheduling.py index 9b4faf6b179..138be4a85b8 100644 --- a/src/pybind/mgr/cephadm/tests/test_scheduling.py +++ b/src/pybind/mgr/cephadm/tests/test_scheduling.py @@ -828,8 +828,7 @@ def test_node_assignment(service_type, placement, hosts, daemons, rank_map, post service_id = 'mynfs' spec = ServiceSpec(service_type=service_type, service_id=service_id, - placement=placement, - pool='foo') + placement=placement) if not spec: spec = ServiceSpec(service_type=service_type, diff --git a/src/pybind/mgr/dashboard/tests/test_ganesha.py b/src/pybind/mgr/dashboard/tests/test_ganesha.py index 2d1136d2333..a77d6b4c645 100644 --- a/src/pybind/mgr/dashboard/tests/test_ganesha.py +++ b/src/pybind/mgr/dashboard/tests/test_ganesha.py @@ -111,16 +111,16 @@ EXPORT """ conf_nodea = ''' -%url "rados://ganesha/ns/export-2" +%url "rados://nfs-ganesha/bar/export-2" -%url "rados://ganesha/ns/export-1"''' +%url "rados://nfs-ganesha/bar/export-1"''' - conf_nodeb = '%url "rados://ganesha/ns/export-1"' + conf_nodeb = '%url "rados://nfs-ganesha/bar/export-1"' conf_nfs_foo = ''' -%url "rados://ganesha2/ns2/export-1" +%url "rados://nfs-ganesha/foo/export-1" -%url "rados://ganesha2/ns2/export-2"''' +%url "rados://nfs-ganesha/foo/export-2"''' class RObject(object): def __init__(self, key, raw): @@ -156,7 +156,7 @@ EXPORT self.temp_store_namespace = namespace @staticmethod - def _set_user_defined_clusters_location(clusters_pool_namespace='ganesha/ns'): + def _set_user_defined_clusters_location(clusters_pool_namespace='nfs-ganesha/bar'): Settings.GANESHA_CLUSTERS_RADOS_POOL_NAMESPACE = clusters_pool_namespace def setUp(self): @@ -164,8 +164,8 @@ EXPORT self.clusters = { 'foo': { - 'pool': 'ganesha2', - 'namespace': 'ns2', + 'pool': 'nfs-ganesha', + 'namespace': 'foo', 'type': ClusterType.ORCHESTRATOR, 'daemon_conf': 'conf-nfs.foo', 'daemons': ['foo.host_a', 'foo.host_b'], @@ -209,13 +209,13 @@ EXPORT def _reset_temp_store(self): self.temp_store_namespace = None self.temp_store = { - 'ns': { + 'bar': { 'export-1': GaneshaConfTest.RObject("export-1", self.export_1), 'export-2': GaneshaConfTest.RObject("export-2", self.export_2), 'conf-nodea': GaneshaConfTest.RObject("conf-nodea", self.conf_nodea), 'conf-nodeb': GaneshaConfTest.RObject("conf-nodeb", self.conf_nodeb), }, - 'ns2': { + 'foo': { 'export-1': GaneshaConfTest.RObject("export-1", self.export_1), 'export-2': GaneshaConfTest.RObject("export-2", self.export_2), 'conf-nfs.foo': GaneshaConfTest.RObject("conf-nfs.foo", self.conf_nfs_foo) @@ -224,11 +224,8 @@ EXPORT def _mock_orchestrator(self, enable): # mock nfs services - cluster_info = self.clusters['foo'] orch_nfs_services = [ - ServiceDescription(spec=NFSServiceSpec(service_id='foo', - pool=cluster_info['pool'], - namespace=cluster_info['namespace'])) + ServiceDescription(spec=NFSServiceSpec(service_id='foo')) ] if enable else [] # pylint: disable=protected-access ganesha.Ganesha._get_orch_nfs_services = Mock(return_value=orch_nfs_services) @@ -351,16 +348,16 @@ EXPORT self.assertIsInstance(blocks, list) self.assertEqual(len(blocks), 2) self.assertEqual(blocks[0]['block_name'], "%url") - self.assertEqual(blocks[0]['value'], "rados://ganesha/ns/export-2") + self.assertEqual(blocks[0]['value'], "rados://nfs-ganesha/bar/export-2") self.assertEqual(blocks[1]['block_name'], "%url") - self.assertEqual(blocks[1]['value'], "rados://ganesha/ns/export-1") + self.assertEqual(blocks[1]['value'], "rados://nfs-ganesha/bar/export-1") def test_daemon_conf_parser_b(self): blocks = GaneshaConfParser(self.conf_nodeb).parse() self.assertIsInstance(blocks, list) self.assertEqual(len(blocks), 1) self.assertEqual(blocks[0]['block_name'], "%url") - self.assertEqual(blocks[0]['value'], "rados://ganesha/ns/export-1") + self.assertEqual(blocks[0]['value'], "rados://nfs-ganesha/bar/export-1") def test_ganesha_conf(self): for cluster_id, info in self.clusters.items(): @@ -945,19 +942,21 @@ EXPORT # pylint: disable=protected-access # Pool/namespace collision. - self._set_user_defined_clusters_location('ganesha2/ns2') + self._set_user_defined_clusters_location('nfs-ganesha/foo') with self.assertRaises(NFSException) as ctx: ganesha.Ganesha._get_clusters_locations() self.assertIn('already in use', str(ctx.exception)) # Cluster name collision with orch. cluster. - self._set_user_defined_clusters_location('foo:ganesha/ns') + self._set_user_defined_clusters_location('foo:nfs-ganesha/bar') with self.assertRaises(NFSException) as ctx: ganesha.Ganesha._get_clusters_locations() self.assertIn('Detected a conflicting NFS-Ganesha cluster', str(ctx.exception)) # Cluster name collision with user-defined cluster. - self._set_user_defined_clusters_location('cluster1:ganesha/ns,cluster1:fake-pool/fake-ns') + self._set_user_defined_clusters_location( + 'cluster1:nfs-ganesha/bar,cluster1:fake-pool/fake-ns' + ) with self.assertRaises(NFSException) as ctx: ganesha.Ganesha._get_clusters_locations() self.assertIn('Duplicate Ganesha cluster definition', str(ctx.exception)) diff --git a/src/pybind/mgr/orchestrator/module.py b/src/pybind/mgr/orchestrator/module.py index 4ca6281bc75..654b0c25907 100644 --- a/src/pybind/mgr/orchestrator/module.py +++ b/src/pybind/mgr/orchestrator/module.py @@ -928,8 +928,6 @@ Usage: @_cli_write_command('orch daemon add nfs') def _nfs_add(self, svc_id: str, - pool: str, - namespace: Optional[str] = None, placement: Optional[str] = None, inbuf: Optional[str] = None) -> HandleCommandResult: """Start NFS daemon(s)""" @@ -938,8 +936,6 @@ Usage: spec = NFSServiceSpec( service_id=svc_id, - pool=pool, - namespace=namespace, placement=PlacementSpec.from_string(placement), ) return self._daemon_add_misc(spec) @@ -1139,8 +1135,6 @@ Usage: svc_id: str, placement: Optional[str] = None, format: Format = Format.plain, - pool: Optional[str] = None, - namespace: Optional[str] = None, port: Optional[int] = None, dry_run: bool = False, unmanaged: bool = False, @@ -1152,8 +1146,6 @@ Usage: spec = NFSServiceSpec( service_id=svc_id, - pool=pool, - namespace=namespace, port=port, placement=PlacementSpec.from_string(placement), unmanaged=unmanaged, diff --git a/src/pybind/mgr/rook/module.py b/src/pybind/mgr/rook/module.py index 6b2fc08b0cd..39f3f372870 100644 --- a/src/pybind/mgr/rook/module.py +++ b/src/pybind/mgr/rook/module.py @@ -320,8 +320,6 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator): spec[svc] = orchestrator.ServiceDescription( spec=NFSServiceSpec( service_id=nfs_name, - pool=nfs['spec']['rados']['pool'], - namespace=nfs['spec']['rados'].get('namespace', None), placement=PlacementSpec(count=active), ), size=active, diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 133fce481ec..faa8674c110 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -683,39 +683,24 @@ class NFSServiceSpec(ServiceSpec): placement=placement, unmanaged=unmanaged, preview_only=preview_only, config=config, networks=networks) - #: RADOS pool where NFS client recovery data is stored. - self.pool = pool or self.DEFAULT_POOL - - #: RADOS namespace where NFS client recovery data is stored in the pool. - self.namespace = namespace or self.service_id - self.port = port + # these fields are obsolete; remove from __init__ and this assert eventually. + assert pool is None or pool == self.DEFAULT_POOL + assert namespace is None or namespace == self.service_id + def get_port_start(self) -> List[int]: if self.port: return [self.port] return [] - def validate(self) -> None: - super(NFSServiceSpec, self).validate() - - if not self.pool: - raise SpecValidationError( - '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 = '' - if self.pool: - url += 'rados://' + self.pool + '/' - if self.namespace: - url += self.namespace + '/' - url += self.rados_config_name() - return url + return 'rados://nfs-ganesha/{self.service_id}/{self.rados_config_name()}' yaml.add_representer(NFSServiceSpec, ServiceSpec.yaml_representer) diff --git a/src/python-common/ceph/tests/test_service_spec.py b/src/python-common/ceph/tests/test_service_spec.py index a7591e6c04a..a360f126323 100644 --- a/src/python-common/ceph/tests/test_service_spec.py +++ b/src/python-common/ceph/tests/test_service_spec.py @@ -142,7 +142,7 @@ def _get_dict_spec(s_type, s_id): dict(hosts=["host1:1.1.1.1"]) } if s_type == 'nfs': - dict_spec['pool'] = 'pool' + pass elif s_type == 'iscsi': dict_spec['pool'] = 'pool' dict_spec['api_user'] = 'api_user' -- 2.39.5