OpenStack源码探秘(二)——Oslo.config

oslo_config学习小结 配置文件指的是文件以.conf,.ini结尾等内容为配置项的文件,配置文件内容格式一般为[DEFAULT][sectiona][sectionb] 阅读详情

OpenStack源码探秘(一)——Nova-Scheduler

OpenStack源码探秘(二)——Oslo.Config


最近因为一直忙于找工作和办理入职离职等相关手续,许久没有更新博客了。笔者这次换工作最后去了一家互联网公司,酷讯旅游。也是想体验一下互联网公司的文化和理念,学习一些这个领域的知识。工作内容大多是互联网应用的后台系统研发,常用语言是Python。酷讯总体上来说还是一家不错的公司,管理偏欧美风格,趋向于没有上下级的概念。希望在工作期间也能一如既往,可以留下些自己的印记。今后的业余时间,除了继续不定期的给大家带来OpenStack方面的知识分享,也会做一起互联网方向常用的Python开源项目,比如Tornado等,敬请期待。


今天给大家介绍OpenStack中负责CLI和CONF配置项解析的组件——Oslo.config。E版本前,这个功能是放在cfg模块中的,后来社区中考虑将OpenStack中共性的组件都剥离出来,统一放在Oslo模块中。今后开发新的OpenStack组件,估计都要用到Oslo模块。


下面说明一下用法:

在Oslo的cfg模块载入的时候(from Oslo.config import cfg),会自动运行模块中的载入代码CONF = ConfigOpts(),创建一个全局的配置项管理类。

和许多Conf配置模块一样,Oslo.conf在使用时,需要先声明配置项的名称、定义类型、帮助文字、缺省值等,然后再按照事先声明的配置项,对CLI或conf中的内容进行解析。

配置项声明结构示例如下:

common_opts = [
    cfg.StrOpt('bind_host',
           default='0.0.0.0',
               help='IP address to listen on'),
    cfg.IntOpt('bind_port',
               default=9292,
               help='Port number to listen on')
]
类型的定义对应Opt的各个子类。

Oslo使用register_opt方法,将配置项定义向配置项管理类configOpts的注册是在程序的运行时刻,但是必须在配置项的引用前完成。

CONF = cfg.CONF
CONF.register_opts(common_opts)

port = CONF.bind_port

使用conf.register_cli_opts()方法,配置项还可以在管理类ConfigOpts中可选注册为CLI配置项,通过程序运行的CLI参数中获得配置项取值,并在错误打印时,自动输出给CLI配置项参数的帮助文档。

conf配置文件采用的是ini风格的格式

  glance-api.conf:
    [DEFAULT]
    bind_port = 9292
      ...

    [rabbit]
    host = localhost
    port = 5672
    use_ssl = False
    userid = guest
    password = guest
    virtual_host = /
最后通过ConfigOpts类的__call()__方法,执行配置项的解析以及从CLI或配置文件读取配置项的值。

def __call__(self,
             args=None,
             project=None,
             prog=None,
             version=None,
             usage=None,
             default_config_files=None):
    """Parse command line arguments and config files.
下面是一个完整的示例

from oslo.config import cfg

opts = [
    cfg.StrOpt('bind_host', default='0.0.0.0'),
    cfg.IntOpt('bind_port', default=9292),
]

CONF = cfg.CONF
CONF.register_opts(opts)
CONF(default_config_files='glance.conf')
def start(server, app):
    server.start(app, CONF.bind_port, CONF.bind_host)

OpenStack项目的配置项声明和许多其他开源Python项目一样,配置项声明是放在各个调用的模块里面的。也就是说哪里用到才到哪里声明。我觉得这种方式是完全体现了Pthonic的一种声明方式,有别于其他方式,程序员在阅读程序的时候可以非常方便的在文件开头就能找到配置项的声明定义,而不用到某个指定的文件去查找,实现了KISS的原则。


PS:新公司有个tornado的生产框架,配置项声明全都放在了一个单独的python文件中,有点儿PHP的风格~最近准备优化一下。






OpenStack源码探秘(一)——Nova-Scheduler OpenStack源码探秘(一)——Nova-Scheduler OpenStack源码探秘(二)——Oslo.Config 许久没有更新OpenStack源码探秘系列了。最近换工作颇不顺利,许多笔者心仪的公司都因为这样或那样的原因而失之交臂,这样下去可能会考虑到互联网公司做些服务器端的工作。晚上回到家心情都不太好,懒得动笔,不过经过了几天起伏,心态也慢慢调整过来了,今天就给大家分享一篇N 阅读详情

相关推荐

openstack通用库Oslo之config

oslo config库用于解析命令行和配置文件中的配置(config)选项(opts)。

lyjshen的专栏 930

oslo: oslo_config组件解析 和代码中的应用

oslo: oslo_config组件解析 OpenStack中大量使用了一些第三方组件,为了使一些基础组件的接口的统一及更友好的使用,Openstack利用oslo的项目统一了第三方组件的接口。如最常使用的oslo项目: oslo_config oslo_log oslo_messaging stevedore oslo_config OpenStack中用于从配置文件及命令行解析配置参数的第三方库。在Openstack中配置文件相关的概念简要介绍如下: 配置文件: INI风格的文件,key=

qq_42533216的博客 1003

OpenStack 实现技术分解 (7) 通用库 — oslo_config

目录目录 前文列表 扩展阅读 osloconfig argparse cfgpy class Opt class ConfigOpts CONF 对象的单例模式前文列表OpenStack 实现技术分解 (1) 开发环境 — Devstack 部署案例详解 OpenStack 实现技术分解 (2) 虚拟机初始化工具 — Cloud-Init & metadata & userdata OpenSt

烟云的计算 3995

python openstack oslo_config使用_OpenStack 实现技术分解 (7) 通用库 — oslo_config

目录前文列表扩展阅读oslo.config(摘自官方文档) An OpenStack library for parsing configuration options from the command line and configuration files.oslo.config 是一个 OpenStack 通用库, 用于解析并加载来自于 CLI 或配置文件中所提供的参数项或配置项.oslo....

weixin_39942492的博客 598

基于MATLAB对地下水水位的数据处理

本文借用Matlab强大的计算功能和绘图功能,对某阿拉干监测数据进行曲线拟合,得到拟合函数。再利用GM(1.1)时间序列模型构建地下深埋的预测模型,进而对阿拉干 2021,四个位置H1,H2,H3,H4年度各监测井平均深埋位置变化进行分析。

keykangkang1001的博客 1244

CST STUDIO SUITE 2023安装

破解工具的Crack文件夹内有一个名为「CST Studio Suite 2022」的文件夹,这也是于CST的安装目录同名的文件夹,直接把它拷贝到CST Studio Suite 2022的同级路径下即可,比如你的CST安装路径为:D:\Program Files\CST Studio Suite 2022,则将Crack目录内的「CST Studio Suite 2022」文件夹复制到 D:\Program Files\ 这个级别的路径下即可。软件百度网盘链接放在文章末尾啦!先不着急启动CST或者激活。

m0_49516223的博客 4124

python openstack oslo_config使用_【转】Openstack中oslo_config模块学习

OpenStack的项目貌似越来越多了,在Grizzly版之前,每个项目都得实现一套处理配置文件的代码。在每个项目的源码中基本上都可以找到openstack/common/cfg.py,iniparser.py文件,当然,这些不同项目之间的cfg.py等文件很大可能是copy-and-paste分分钟来搞定。这种情况肯定无法被大神忍受,最终,社区决定改变这一切,提出了Oslo项目。Oslo项目的宗...

weixin_39614546的博客 432

PX4实战指南:通过遥控器通道直连实现舵机PWM控制

本文详细介绍了如何通过PX4飞控实现遥控器通道直连控制舵机PWM输出的完整流程。从硬件准备、遥控器配对到PX4参数配置和硬件连接,提供了实战技巧和常见问题解决方案,帮助无人机爱好者快速掌握舵机控制技术。重点讲解了AUX Passthrough模式设置和PWM参数调整等关键步骤。

weixin_29195217的博客 154

openstack oslo_config 和 oslo_log库

一、oslo.config库的作用和概念理解 openstack中的 oslo.config库用于解析命令行和配置文件中的配置选项,把配置项直接融入代码内。在本文的语境下,有这么几个概念: 配置文件:用来配置OpenStack各个服务的ini风格的配置文件,通常以.conf结尾; 配置项(options):     配置文件或命令行中给出的配置信息的左值,如:enabled_apis =

每天进步一点点。。。的博客 3702

【电路设计】带阻滤波器实战:从理论到Twin-T陷波电路实现

本文详细介绍了带阻滤波器的原理与Twin-T陷波电路的实战应用,从基础概念到工程实现全面解析。通过具体案例展示如何设计高Q值滤波器,解决电源噪声等实际问题,并分享PCB布局和元件选型的实用技巧,助力工程师提升电路设计能力。

gg901的博客 1011

SDR 和 DDR 的区别

SDR 和 DDR 的差别,最明显提现在传输速率和频率上。DDR SDRAM与SDRAM的基本结构是相似的,最根本的区别在于DDR 支持在一个时钟周期内传输两次数据,,SDR 只能传输一次数据。

串起点滴 1960

配置项声明OpenStack源码探秘(二)——Oslo.config

在改章节中,我们主要分析配置项声明的内容,自我感觉有个不错的建议和大家分享下     OpenStack源码探秘(一)——Nova-Scheduler     OpenStack源码探秘(二)——Oslo.Config          最近因为一直忙于找任务和办理入职离职等相关手续,好久没有更新博客了。笔者这次换任务最后去了一家互联网公司,酷讯旅游。也是想休会一下互联网公司的文明和理念,...

weixin_34006965的博客 141

基于simulink的BMS系统中电池单体故障隔离与恢复建模

本文介绍了使用Simulink构建BMS电池单体故障诊断与容错控制模型的方法。主要内容包括:1)搭建12串锂电池组模型;2)实现单体故障注入(过压、断线等);3)设计故障诊断与隔离模块(采用Stateflow状态机);4)开发恢复判断逻辑(需满足电压、温度等条件);5)系统监控与仿真设置。文章还提供了工程实践建议,如防环流设计、通信冗余等,并指出进阶方向(多故障处理、AI预警等)。该模型适用于新能源汽车、储能系统的BMS设计,可提高系统可靠性和安全性。

xiaoheshang_123的博客 140

OpenStack公共组件oslo之一——oslo.config

本文首先基于Nova介绍了oslo.config组件的用法,然后结合其使用,详细分析了oslo.config组件的实现原理。

上善若水的木偶戏 2845

ResNet改进(20):融合Swin Transformer与ResNet

这种混合架构的设计理念是:在保留CNN强大局部特征提取能力的同时,引入Transformer的全局建模优势。我们实现的模型在ResNet18的基础上嵌入了一个简化版的Swin Transformer Block,旨在探索两种范式结合的可能性。通过在ResNet早期阶段引入Transformer模块,我们既保留了CNN强大的局部特征提取能力,又获得了Transformer的全局建模优势。本文提出的ResNet与Swin Transformer混合架构,探索了CNN与Transformer结合的可能性。

2401_82355416的博客 859

【面试系列】软件架构师 高频面试题及详细解答

本文介绍了软件架构师岗位的初级、中级和高级面试题及详细解答,涵盖了系统设计、面向对象设计、分布式系统、云计算技术、性能优化等关键领域。通过这些问题和解答,候选人可以深入理解软件架构师的核心职责和技能要求。此外,文章总结了在面试中需要掌握的常考知识点,包括架构模式、分布式系统管理、安全性、数据管理和DevOps实践。通过掌握这些知识点,软件架构师能够有效设计和指导复杂系统的结构,确保系统的可扩展性、性能和维护性。

在路上的专栏 850

Openstack Oslo.config 学习(二)

转载:http://www.choudan.net/2013/11/28/OpenStack-Oslo.config-%E5%AD%A6%E4%B9%A0(%E4%BA%8C).html 上一篇博客简单的介绍了Olso.config的背景和使用方法,这一篇博客中,我们尝试去分析下其源码。在分析其源码之前,自己有些许困惑,分析其源码是否有必要,就算分析完之后,又能有什么收获!这个一

余功鹏的专栏 1300

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

oslo config

前段时间开始认真看了一下Ryu的源码,发现oslo是一个非常方便的命令行解析库,可以用于CLI和CONF的解析。oslo是 OpenStack发起的项目,全称为OpenStack Common Libraries,是OpenStack Projects共享的基础库。 oslo 在RYU的目录下可以找到cfg.py文件,这个文件中import了oslo的相关模块,以便调用时减少引用数目。从文件中可

公众号 1078

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Openstack基础之oslo(一)

OpenStack通用库(Oslo)包含了众多不需要重复发明的"轮子".当开发者觉得现有的代码中有适合被其他OpenStack项目共用的部分时,就可以申请把这些能用的代码放入oslo-incubator代码库中进行"孵化".     当oslo-incubator中的某部分代码让社区觉得已经足够成熟可以毕业后,其代码开发维护者可以提出毕业申请.毕业后的代码会成为一个单独的OpenStack项目,

happyAnger6的专栏 5582

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

openstack oslo.config 模块源码学习

oslo.config OpenStack的oslo项目旨在独立出系统中可重用的基础功能,oslo.config就是其中一个被广泛使用的库,该项工作的主要目的就是解析OpenStack中命令行(CLI)或配置文件(.conf)中的配置信息。 基本用法 示例引自官方文档: test.py: # Load up the cfg module, which contains all the classes and methods # you'll need. from oslo_config import cfg

weixin_43571751的博客 224

Openstack Oslo.config 学习(一)

转载:http://www.choudan.net/2013/11/27/OpenStack-Oslo.config-%E5%AD%A6%E4%B9%A0(%E4%B8%80).html OpenStack的项目貌似越来越多了,在Grizzly版之前,每个项目都得实现一套处理配置文件的代码。在每个项目的源码中基本上都可以找到openstack/common/cfg.py,iniparse

余功鹏的专栏 1395

基于OpenStack Ocata版本源码分析--oslo.config

oslo.configoslo.config 是用OpenStack 项目中使用频繁比较高的一个类库,主要作用是用解析OpenStack 中命令行(CLI)、配置文件(.conf)的配置信息。例如;keystone.conf (/etc/keystone/keystone.conf) 配置文件中的catalog 配置信息:[catalog]# # From keystone ## Absolute

基于OpenStack Ocata版本源码分析 389

OpenStack oslo_config 实现及使用技术探讨

一、简介 众所周知,oslo_config是openstack框架下各服务加载配置文件(.conf)所使用的通用库,配置文件一般放在/etc目录的工程目录下,oslo_config一般是在服务启动时,提前加载配置数据到内存中,之后供服务使用;此处不啰嗦太多,主要还是探讨oslo_config cfg.py文件的设计优点。 二、cfg.py解析 class ConfigOpts(collections.Mapping): def __init__(self): pass # 初

小鲸鱼的天空 638

python openstack oslo_config使用_OpenStack oslo config的实现与应用,OpenStackosloconfig,及,使用,技术,探讨...

一、简介众所周知,oslo_config是openstack框架下各服务加载配置文件(.conf)所使用的通用库,配置文件一般放在/etc目录的工程目录下,oslo_config一般是在服务启动时,提前加载配置数据到内存中,之后供服务使用;此处不啰嗦太多,主要还是探讨oslo_config cfg.py文件的设计优点。二、cfg.py解析class ConfigOpts(collections.M...

weixin_39710288的博客 96

openstack源码阅读笔记2 配置与oslo_config

Openstack提取了一些在多数项目中经常使用的功能,做成了共公的包,这些公共包同样在nova中的各个服务模块大量使用。这此公共包都以oslo开头。 在分析具体代码之前,必须先熟悉这些公共包,以下先对这些共公包结合nova做一下分析,以便在分析具体的服务模块代码时,不必再解释公共包的功能。 Oslo_config包用于解析命令行和配置文件中的配置选项。   Oslo_config包是对p

静静的蓝天 2278

OpenStack配置解析库oslo.config

oslo.config模块在OpenStack中最大的作用就是配置文件以及命令行参数的解析要了解oslo.config的工作流程,需要了解一下关于Python基础模块中的argparse模块,该模块的信息可以参考:https://docs.python.org/2/library/argparse.html命令行参数的解析使用的是argparse基础模块中的ArgumentParser类,该类可以...

ikukaku的博客 1187
上一篇: OpenStack源码探秘(一)——Nova-Scheduler
下一篇: SSH私钥管理ssh-agent的使用
Ethan_熠森张
博客等级 码龄18年 124粉丝 51原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值