]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
python-common: remove pool + namespace from NFSServiceSpec
authorSage Weil <sage@newdream.net>
Mon, 28 Jun 2021 18:45:13 +0000 (14:45 -0400)
committerSebastian Wagner <sewagner@redhat.com>
Thu, 9 Sep 2021 14:17:54 +0000 (16:17 +0200)
Signed-off-by: Sage Weil <sage@newdream.net>
(cherry picked from commit 9d38ee24cf6a2dd79d1fbce50ff4f83dac79f436)

src/pybind/mgr/cephadm/tests/test_cephadm.py
src/pybind/mgr/cephadm/tests/test_scheduling.py
src/pybind/mgr/dashboard/tests/test_ganesha.py
src/pybind/mgr/orchestrator/module.py
src/pybind/mgr/rook/module.py
src/python-common/ceph/deployment/service_spec.py
src/python-common/ceph/tests/test_service_spec.py

index 36ec08e7469c9c2339ff48b3e7081e9be5dacf51..e6082a8c778d78b96856b309cd174e70628135e1 100644 (file)
@@ -867,8 +867,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
@@ -985,8 +983,6 @@ spec:
             ), CephadmOrchestrator.apply_rgw),
             (NFSServiceSpec(
                 service_id='name',
-                pool='pool',
-                namespace='namespace'
             ), CephadmOrchestrator.apply_nfs),
             (IscsiServiceSpec(
                 service_id='name',
index 9b4faf6b179cfd910ca3c48e3a98ae4ab1b4e9c5..138be4a85b835ce8307a1a36fac00d64f84f6cee 100644 (file)
@@ -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,
index f9cc44aa2738bbafa6f3b8d8779611e6aac76466..bf7ed1bd868e09b68719fc25a7bf19da263164f8 100644 (file)
@@ -112,16 +112,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):
@@ -157,7 +157,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):
@@ -165,8 +165,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'],
@@ -210,13 +210,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)
@@ -225,11 +225,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)
@@ -352,16 +349,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():
@@ -946,19 +943,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))
index 1a14f4bf2d039fb9bdab77b0de9116792a0f696e..ae380de95f4e25883cc8926d9d89c43b31aa49e3 100644 (file)
@@ -926,8 +926,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)"""
@@ -936,8 +934,6 @@ Usage:
 
         spec = NFSServiceSpec(
             service_id=svc_id,
-            pool=pool,
-            namespace=namespace,
             placement=PlacementSpec.from_string(placement),
         )
         return self._daemon_add_misc(spec)
@@ -1136,8 +1132,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,
@@ -1149,8 +1143,6 @@ Usage:
 
         spec = NFSServiceSpec(
             service_id=svc_id,
-            pool=pool,
-            namespace=namespace,
             port=port,
             placement=PlacementSpec.from_string(placement),
             unmanaged=unmanaged,
index 0dfd2ea73f587492fe4f7110d441d57c8c9152da..d874e11aed732d253547165d010706142f7bb240 100644 (file)
@@ -321,8 +321,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,
index 133fce481eca234e5f741eade984198478a4667f..faa8674c11032585bd5c946c3fb16a54a5baf498 100644 (file)
@@ -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)
index a7591e6c04a4b0c668ab8c1a1765003c4f8d3bb6..a360f12632324d5e9ce6b25ca95a3fea5e8643a1 100644 (file)
@@ -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'