Change-Id: Ifc2990a0f66bd5cb3e6107975c798db42d374970
4.9 KiB
Graduating Reports
https://blueprints.launchpad.net/oslo-incubator/+spec/graduate-oslo-reports
The reports module currently provides a convenient way to assemble "Guru Meditation Reports" about the current state a of a given OpenStack process. The basic report includes thread (both normal and green) state and stack traces, as well as configuration and version information. The reports are customizable and may be extended with additional sections on a per-process or per-project basis. A mechanism is also included to set up the reports to dump to stdout (or a file) on SIGUSR1, and may be serialized as text (default), as well as XML and JSON.
Library Name
The library will be called "oslo.reports". The current name in the incubator is "openstack.common.report", but pluralizing the name seems more natural.
Contents
openstack/common/report/report.py openstack/common/report/utils.py openstack/common/report/guru_meditation_report.py openstack/common/report/__init__.py openstack/common/report/views/__init__.py openstack/common/report/views/text/__init__.py openstack/common/report/views/text/generic.py openstack/common/report/views/text/threading.py openstack/common/report/views/text/header.py openstack/common/report/views/xml/__init__.py openstack/common/report/views/xml/generic.py openstack/common/report/views/jinja_view.py openstack/common/report/views/json/__init__.py openstack/common/report/views/json/generic.py openstack/common/report/generators/conf.py openstack/common/report/generators/__init__.py openstack/common/report/generators/version.py openstack/common/report/generators/threading.py openstack/common/report/models/base.py openstack/common/report/models/conf.py openstack/common/report/models/__init__.py openstack/common/report/models/version.py openstack/common/report/models/with_default_views.py openstack/common/report/models/threading.py
tests/unit/reports/test_base_report.py tests/unit/reports/test_guru_meditation_report.py tests/unit/reports/test_openstack_generators.py tests/unit/reports/test_views.py
Early Adopters
None
Public API
The reports module contains several public submodules:
- reports.guru_meditation_report
-
Contains the code revolving around setting up the signal handler and registering persistent custom sections
- reports.report
-
Contains the basic classes for the reports themselves, including a class for the whole report, a class for each section, and a subclass specifically for reports serialized as text
- reports.generators
-
Contains the submodules containing generator code: conf, threading, version (not that there is no base module here since generators are just callables)
- reports.models
-
Contains the submodules containing the base model classes (base and with_default_views) as well as the implementation model classes (threading, version, and conf)
- report.views
-
Contains the submodule containing the basic Jinja-based view (jinja_view), as well as the JSON, XML, and text views (json, xml, and text, respectively). Note that each of the serialization-formatting submodules contains a generic submodule containing generic classes, and the text submodule additionally contains the header submodule (as well as the threading submodule, which may be made private).
The following submodules do not necessarily need to be public:
- reports.utils
-
Contains a utility class for attaching attributes to strings, as well as a function for finding all objects of a particular class using the garbage collector functionality. Neither of these need to be exposed as public, and the object-finding function can be moved into the file of the generator which uses it (StringWithAttrs is used by both reports.views.xml.generic and reports.views.json.generic), so it needs to stay in its own file.
- reports.views.text.threading
-
This contains several views specific to certain models (which already have them set as the default text view), so it does not need to be public.
Implementation
Assignee(s)
- Primary assignee:
-
sross-7
- Other contributors:
-
None
Primary Maintainer
- Primary Maintainer:
-
sross-7
- Other Contributors:
-
None
Security Contact
- Security Contact:
-
sross-7
Milestones
Target Milestone for completion: Uknown
Work Items
The graduation checklist should be completed.
Additionally, there are a few places where reports currently uses str and should be using six.text_type instead. These should be fixed before graduation is complete.
Adoption Notes
None
Dependencies
- oslo.utils
- oslo.serialization
References
None
Note
This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode