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
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:
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}";
%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(),
}