See WIP pull request https://github.com/ceph/ceph/pull/25597 The idea is to better unify the module options and the 'ceph config ...' commands. Namely, - (more) fully specify the module options, including type, description, default, min/max, enum_allowed, and so on, just like the built-in config options. - advertise these from mgr back to the mon via the MgrMap - expose these config options to the 'ceph config help' CLI There are some rough edges, though: - The current modules have a mix of conventions for the default values. The MgrMap::ModuleOption makes everything a string (default value, min, max, etc.) to keep the encoding simple, but half of the modules define default values as string and case at time of use (e.g., via int(...)), and half use the native types (e.g., values of None or 123). This makes the generic code awkard. - The mon code has two paths, one for the built-in Option and one for ModuleOption. I'm not sure yet if it makes sure to unify these or not. - Option from common/options.h has a print method that is used for 'config help ...'. The ModuleOption type implements its own print() that has output similar to the above, but is a different implementation. Thoughts? sage