]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/cephadm/nfs.py
import 15.2.2 octopus source
[ceph.git] / ceph / src / pybind / mgr / cephadm / nfs.py
index ff748fa57463560250f6035bc51f4c6cef727f2e..1c0a45200ec73ca0b5517e95371a7290b8d7a9ed 100644 (file)
@@ -18,25 +18,18 @@ class NFSGanesha(object):
                  daemon_id,
                  spec):
         # type: (cephadm.CephadmOrchestrator, str, NFSServiceSpec) -> None
+        assert spec.service_id and daemon_id.startswith(spec.service_id)
         self.mgr = mgr
         self.daemon_id = daemon_id
         self.spec = spec
 
-    def get_rados_user(self):
+    def get_daemon_name(self):
         # type: () -> str
         return '%s.%s' % (self.spec.service_type, self.daemon_id)
 
-    def get_rados_config_name(self):
-        # type: () -> str
-        return 'conf-' + self.get_rados_user()
-
-    def get_rados_config_url(self):
+    def get_rados_user(self):
         # type: () -> str
-        url = 'rados://' + self.spec.pool + '/'
-        if self.spec.namespace:
-            url += self.spec.namespace + '/'
-        url += self.get_rados_config_name()
-        return url
+        return '%s.%s' % (self.spec.service_type, self.daemon_id)
 
     def get_keyring_entity(self):
         # type: () -> str
@@ -84,7 +77,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:
@@ -107,6 +100,35 @@ class NFSGanesha(object):
     def get_ganesha_conf(self):
         # type: () -> str
         return '''# generated by cephadm
+NFS_CORE_PARAM {{
+        Enable_NLM = false;
+        Enable_RQUOTA = false;
+        Protocols = 4;
+}}
+
+CACHEINODE {{
+        Dir_Chunk = 0;
+        NParts = 1;
+        Cache_Size = 1;
+}}
+
+EXPORT_DEFAULTS {{
+        Attr_Expiration_Time = 0;
+}}
+
+NFSv4 {{
+        Delegations = false;
+        RecoveryBackend = 'rados_cluster';
+        Minor_Versions = 1, 2;
+}}
+
+RADOS_KV {{
+        UserId = "{user}";
+        nodeid = "{nodeid}";
+        pool = "{pool}";
+        namespace = "{namespace}";
+}}
+
 RADOS_URLS {{
         UserId = "{user}";
         watch_url = "{url}";
@@ -114,13 +136,18 @@ RADOS_URLS {{
 
 %url    {url}
 '''.format(user=self.get_rados_user(),
-           url=self.get_rados_config_url())
+           nodeid=self.get_daemon_name(),
+           pool=self.spec.pool,
+           namespace=self.spec.namespace if self.spec.namespace else '',
+           url=self.spec.rados_config_location())
 
     def get_cephadm_config(self):
         # type: () -> Dict
         config = {'pool' : self.spec.pool} # type: Dict
         if self.spec.namespace:
             config['namespace'] = self.spec.namespace
+        config['userid'] = self.get_rados_user()
+        config['extra_args'] = ['-N', 'NIV_EVENT']
         config['files'] = {
             'ganesha.conf' : self.get_ganesha_conf(),
         }