oslo.config/doc/source/reference/locations.rst

2.3 KiB

Option Setting Locations

oslo_config.cfg

The ~ConfigOpts.get_location method of ConfigOpts can be used to determine where the value for an option was set, either by the user or by the application code. The return value is a LocationInfo instance, which includes 2 fields: location and detail.

The location value is a member of the Locations enum, which has 5 possible values. The detail value is a string describing the location. Its value depends on the location.

Value is_user_controlled Description detail
opt_default False The original default set when the option was defined. The source file name where the option is defined.
set_default False A default value set by the application as an override of the original default. This usually only applies to options defined in libraries. The source file name where ~ConfigOpts.set_default or set_defaults was called.
set_override False A forced value set by the application. The source file name where ~ConfigOpts.set_override was called.
user True A value set by the user through a configuration backend such as a file. The configuration file where the option is set.
command_line True A value set by the user on the command line. Empty string.
environment True A value set by the user in the process environment. The name of the environment variable.

Did a user set a configuration option?

Each Locations enum value has a boolean property indicating whether that type of location is managed by the user. This eliminates the need for application code to track which types of locations are user-controlled separately.

loc = CONF.get_location('normal_opt').location
if loc.is_user_controlled:
   print('normal_opt was set by the user')
else:
   print('normal_opt was set by the application')