oslo_reports 包

子包

子模块

oslo_reports.guru_meditation_report 模块

提供 Guru Meditation Report

此模块定义了实际的 OpenStack Guru Meditation Report 类。

它可以在 OpenStack 命令定义文件中使用。例如,在 nova 命令模块中(在 nova/cmd 下)

from oslo_config import cfg
from oslo_log import log as oslo_logging
from oslo_reports import opts as gmr_opts
from oslo_reports import guru_meditation_report as gmr

CONF = cfg.CONF
# maybe import some options here...

def main():
    oslo_logging.register_options(CONF)
    gmr_opts.set_defaults(CONF)

    CONF(sys.argv[1:], default_config_files=['myapp.conf'])
    oslo_logging.setup(CONF, 'myapp')

    gmr.TextGuruMeditation.register_section('Some Special Section',
                                        special_section_generator)
    gmr.TextGuruMeditation.setup_autorun(version_object, conf=CONF)

    server = service.Service.create(binary='some-service',
                                    topic=CONF.some_service_topic)
    service.serve(server)
    service.wait()

然后,您可以执行

$ kill -USR2 $SERVICE_PID

并在该给定服务的 stderr 记录的文件或终端中获取 Guru Meditation Report。

class oslo_reports.guru_meditation_report.GuruMeditation(version_obj, sig_handler_tb=None, *args, **kwargs)

基类: object

Guru Meditation Report Mixin/Base 类

此类是 Guru Meditation Report 的基类。它提供了用于注册部分并在某个信号上自动运行报告或使用文件修改事件的功能。

此类应始终与 Report 类通过多重继承一起使用。它应始终作为类列表中的第一个类,以确保 MRO 正确。

classmethod handle_signal(version, service_name, log_dir, frame)

信号处理程序

此方法(间接)处理接收注册的信号并将 Guru Meditation Report 转储到 stderr 或给定目录中的文件。如果服务名称和日志目录不为 None,则报告将被转储到日志目录中名为 $service_name_gurumeditation_$current_time 的文件中。此方法旨在通过析取版本参数来曲化为适当的信号处理程序。

参数:
  • version – 当前产品的版本对象

  • service_name – 用于构造日志文件名的此程序名称

  • logdir – 创建文件的日志目录的路径

  • frame – 提供给信号处理程序的帧对象

classmethod register_section(section_title, generator)

注册新部分

此方法为当前类注册一个持久部分。

参数:
  • section_title (str) – 部分的标题

  • generator – 部分的生成器

run()
classmethod setup_autorun(version, service_name=None, log_dir=None, signum=None, conf=None, setup_signal=True)

设置自动运行

此方法设置 Guru Meditation Report 在接收到给定的信号时自动转储到 stderr 或给定目录中的文件。它还可以使用文件修改事件而不是信号。

参数:
  • version – 当前产品的版本对象

  • service_name – 用于构造日志文件名的此程序名称

  • logdir – 创建文件的日志目录的路径

  • signum – 与运行报告关联的信号

  • conf – 调用者管理的配置对象。

  • setup_signal – 设置信号处理程序

timestamp_fmt = '%Y%m%d%H%M%S'
class oslo_reports.guru_meditation_report.TextGuruMeditation(version_obj, traceback=None)

基类: GuruMeditation, TextReport

文本 Guru Meditation Report

此报告是基本的、人类可读的 Guru Meditation Report

默认情况下,它包含以下部分(除了任何注册的持久部分):

  • 包信息

  • 线程列表

  • 绿色线程列表

  • 进程列表

  • 配置选项

参数:
  • version_obj – 当前产品的版本对象

  • traceback – 一个可选的帧对象,提供当前线程的实际回溯。

oslo_reports.opts 模块

oslo_reports.opts.list_opts()

返回库中可用的 oslo.config 选项列表。

返回的列表包含库在运行时可能注册的所有 oslo.config 选项。列表的每个元素都是一个元组。第一个元素是将在配置文件的 [DEFAULT] 组下注册元素的组的名称。组名称为 None 对应于配置文件中的 [DEFAULT] 组。此函数还可以通过 ‘oslo_messaging’ 入口点在 ‘oslo.config.opts’ 命名空间下发现。其目的是允许 Oslo 示例配置文件生成器发现此库向用户公开的选项。

返回值:

一个 (group_name, opts) 元组列表

oslo_reports.opts.set_defaults(conf)

设置配置变量的默认值。

覆盖默认选项值。

参数:

conf (oslo.config.cfg.ConfigOpts) – 调用者管理的配置对象。

oslo_reports.report 模块

提供 Report 类

此模块定义了各种表示报告和报告部分的类。所有报告都采用报告类的形式,其中包含各种报告部分。

class oslo_reports.report.BasicReport

基类: object

基本报告

基本报告由一组 ReportSection 对象组成,每个对象包含一个顶级模型和一个生成器。它将这些部分收集到一个连贯的报告中,然后可以通过调用 run() 进行序列化。

add_section(view, generator, index=None)

将部分添加到报告

此方法将具有给定视图和生成器的部分添加到报告中。可以指定索引以在列表中的给定位置插入该部分;如果未指定索引,则该部分将附加到列表的末尾。在运行报告时,将在模型上调用视图。生成器只是一个方法或可调用对象,它不接受任何参数并返回一个 oslo_reports.models.base.ReportModel 或类似的对象。

参数:
  • view – 该部分的顶级视图

  • generator – 生成模型的该方法或类

  • index (intNone) – 插入部分的索引(或 None 以将其附加到末尾)

run()

运行报告

此方法运行报告,对每个部分生成其数据并对其进行序列化,然后将各个部分连接在一起。BasicReport 通过使用换行符将序列化的部分连接在一起来完成连接。

返回类型:

str

返回值:

序列化的报告

class oslo_reports.report.ReportOfType(tp)

基类: BasicReport

特定类型的报告

ReportOfType 具有与之关联的预定义类型。该类型在序列化时通过包装每个部分的生成器自动传递到各个部分。

参见

oslo_reports.models.with_default_view.ModelWithDefaultView # noqa

(整个类)

oslo_reports.models.base.ReportModel

oslo_reports.models.base.ReportModel.set_current_view_type() # noqa

参数:

tp (str) – 报告的类型

add_section(view, generator, index=None)

将部分添加到报告

此方法将具有给定视图和生成器的部分添加到报告中。可以指定索引以在列表中的给定位置插入该部分;如果未指定索引,则该部分将附加到列表的末尾。在运行报告时,将在模型上调用视图。生成器只是一个方法或可调用对象,它不接受任何参数并返回一个 oslo_reports.models.base.ReportModel 或类似的对象。

参数:
  • view – 该部分的顶级视图

  • generator – 生成模型的该方法或类

  • index (intNone) – 插入部分的索引(或 None 以将其附加到末尾)

class oslo_reports.report.ReportSection(view, generator)

基类: object

报告部分

报告部分包含一个生成器和一个顶级视图。当某些内容尝试通过在它上面调用 str() 或 unicode() 来序列化该部分时,该部分将运行生成器并在生成的模型上调用视图。

参数:
  • view – 该部分的顶级视图

  • generator – 该部分的生成器(任何不接受任何参数并返回 oslo_reports.models.base.ReportModel 或类似对象的调用对象)

class oslo_reports.report.TextReport(name)

基类: ReportOfType

人类可读的文本报告

此类定义了一个旨在被人类阅读的报告。它具有漂亮的章节标题和格式化的标题。

参数:

name (str) – 报告的标题

add_section(heading, generator, index=None)

将部分添加到报告

此方法将具有给定标题和生成器的部分添加到报告中。可以指定索引以在列表中的给定位置插入该部分;如果未指定索引,则该部分将附加到列表的末尾。在运行报告时,将在模型上调用视图。生成器只是一个方法或可调用对象,它不接受任何参数并返回一个 oslo_reports.models.base.ReportModel 或类似的对象。

该模型在序列化时通过包装生成器来被告知以文本形式序列化(如果可能)。附加到视图模型的附加视图(如果有)包装在 oslo_reports.views.text.header.TitledView

参数:
  • heading (str) – 该部分的标题

  • generator – 生成模型的该方法或类

  • index (intNone) – 在此处插入节的索引(或 None 以追加)

模块内容

提供了一种生成可序列化报告的方式

此包/模块提供了一种定义报告的机制,然后可以将这些报告序列化为各种数据类型。每个报告( oslo_reports.report.BasicReport )由一个或多个报告节( oslo_reports.report.BasicSection )组成,这些节包含生成数据模型( oslo_reports.models.base.ReportModels )的生成器,然后由视图序列化这些数据模型。