Project

General

Profile

Bug #38639

Updated by Volker Theile about 5 years ago

If a localized key like 'mgr/dashboard/x/server_port' is requested by MgrModule::get_localized_module_option('server_port', 8443) the value is not converted to integer as defined in 

 <pre> 
 MODULE_OPTIONS = [ 
     Option(name='server_addr', type='str', default='::'), 
     Option(name='server_port', type='int', default=8443), 
     Option(name='jwt_token_ttl', type='int', default=28800), 
     Option(name='password', type='str', default=''), 
     Option(name='url_prefix', type='str', default=''), 
     Option(name='username', type='str', default=''), 
     Option(name='key_file', type='str', default=''), 
     Option(name='crt_file', type='str', default=''), 
     Option(name='ssl', type='bool', default=True) 
 ] 
 </pre> 

 instead it is returned as string. This is because the auto-convertion only applies to keys like server_addr, server_port, ..., others (localized) like 'x/server_port', '<MGR_ID>/server_addr' are ignored and not processed. 

 IMHO this could be fixed by simply trimming stripping the option name 'x/foo' => ''foo' in PyModule::get_typed_option_value (https://github.com/ceph/ceph/blob/master/src/mgr/PyModule.cc#L622). 

 See https://github.com/ceph/ceph/pull/26738#discussion_r263713336 for another example.

Back