]> git.apps.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)
committerSage Weil <sage@newdream.net>
Wed, 14 Jul 2021 20:20:11 +0000 (16:20 -0400)
Signed-off-by: Sage Weil <sage@newdream.net>
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 4fc510a4c416cf82c3bd1fce47c1ec0cc3f4d2e6..f19571eafb5a2ba3061cef05cbcf0660217765cc 100644 (file)
@@ -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',
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 2d1136d2333b732c9c21864e129cd7d6d7c9fd8d..a77d6b4c6459158922d59839e3fe581ae2dcc987 100644 (file)
@@ -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))
index 4ca6281bc75f862d332821ffff162e1de4da29c1..654b0c259077be4443b400cf91b6949f591bea46 100644 (file)
@@ -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,
index 6b2fc08b0cda327c0bbb8d1db0a800635299959d..39f3f3728705facd02be4a78178b0b192394219b 100644 (file)
@@ -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,
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'