加载配置文件¶
配置管理器默认定义了两个 CLI 选项,--config-file 和 --config-dir
class ConfigOpts:
def __call__(self, ...):
opts = [
MultiStrOpt('config-file',
...),
StrOpt('config-dir',
...),
]
self.register_cli_opts(opts)
选项值从任何提供的配置文件中使用 oslo_config.iniparser 解析。如果没有指定任何文件,则使用默认集合,例如 glance-api.conf 和 glance-common.conf
glance-api.conf:
[DEFAULT]
bind_port = 9292
glance-common.conf:
[DEFAULT]
bind_host = 0.0.0.0
配置文件中的行不应以空格开头。配置文件还支持注释,注释必须以 ‘#’ 或 ‘;’ 开头。配置文件和命令行中的选项值按顺序解析。相同的选项(包括已弃用的选项名称和当前选项名称)可以在配置文件或命令行中多次出现。后面的值始终覆盖前面的值。
在同一配置目录中,配置文件的解析顺序由其文件名定义的字母顺序决定。配置目录中的文件在任何单个配置文件之后解析,因此在配置文件和配置目录中都出现的选项值将使用目录中的值。
CLI 参数和配置文件的解析通过调用配置管理器来启动,例如
conf = cfg.ConfigOpts()
conf.register_opt(cfg.BoolOpt('verbose', ...))
conf(sys.argv[1:])
if conf.verbose:
...
选项值插值¶
选项值可以使用 PEP 292 字符串替换引用其他值
opts = [
cfg.StrOpt('state_path',
default=os.path.join(os.path.dirname(__file__), '../'),
help='Top-level directory for maintaining nova state.'),
cfg.StrOpt('sqlite_db',
default='nova.sqlite',
help='File name for SQLite.'),
cfg.StrOpt('sql_connection',
default='sqlite:///$state_path/$sqlite_db',
help='Connection string for SQL database.'),
]
注意
可以使用 $$ 避免插值。
注意
可以使用 . 来分隔选项与其他组,例如 ${mygroup.myoption}。