Spec: Refactor CloudKitty's documentation
This is a proposal for the new layout of cloudkitty's documentation, Once this has been approved and discussed, we'll add some tasks to the associated story. Depends-On: https://review.openstack.org/#/c/613339/ Change-Id: I64704d9e78a7c70c66cab3068fbc4addf87783a6 Story: 2004179 Task: 27664
This commit is contained in:
parent
9616269ecf
commit
7baca66b9e
@ -4,6 +4,16 @@
|
|||||||
Cloudkitty Project Specifications
|
Cloudkitty Project Specifications
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
|
Stein
|
||||||
|
=====
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:glob:
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
specs/stein/*
|
||||||
|
|
||||||
|
|
||||||
Pike
|
Pike
|
||||||
====
|
====
|
||||||
|
|
||||||
|
187
specs/stein/refactoring_cloudkittys_documentation.rst
Normal file
187
specs/stein/refactoring_cloudkittys_documentation.rst
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
======================================
|
||||||
|
Refactoring CloudKitty's documentation
|
||||||
|
======================================
|
||||||
|
|
||||||
|
https://storyboard.openstack.org/#!/story/2004179
|
||||||
|
|
||||||
|
CloudKitty's documentation needs to be refactored. This spec aims at proposing
|
||||||
|
a new content layout. It is of course subject to discussion, as well
|
||||||
|
on storyboard as on gerrit.
|
||||||
|
|
||||||
|
Problem Description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Since Cloudkitty has been through major changes in the last releases, the
|
||||||
|
current documentation layout and content causes several problems:
|
||||||
|
|
||||||
|
* The layout is not intuitive: many people on IRC ask for information that is
|
||||||
|
available in the documentation, but very hard to find.
|
||||||
|
|
||||||
|
* Cloudkitty's architecture as well as the role of each component (fetcher,
|
||||||
|
collector, rating module, storage backend...) is not explained clearly enough.
|
||||||
|
This is a problem for operators, as they don't know how CloudKitty works
|
||||||
|
internally, which is an issue when troubleshooting.
|
||||||
|
|
||||||
|
* The configuration of metric collection is very poorly documented, leading most
|
||||||
|
operators to stick to the default ``metrics.yml`` file, without knowing
|
||||||
|
exactly what each entry means.
|
||||||
|
|
||||||
|
* The developer documentation is almost non-existent: It only contains
|
||||||
|
information about the v2 storage interface. It should be extended to help
|
||||||
|
contributors.
|
||||||
|
|
||||||
|
* The documentation also lacks an FAQ/troubleshooting part: Typical question
|
||||||
|
is "I deployed Cloudkitty with Devstack, why is summary 0 ?".
|
||||||
|
|
||||||
|
Proposed Change
|
||||||
|
===============
|
||||||
|
|
||||||
|
The first thing in the documentation should be a very brief introduction about
|
||||||
|
what CloudKitty is and does. Concerning people reading CloudKitty's
|
||||||
|
documentation: they can be split into three groups; users, operators/admins,
|
||||||
|
and developers. In consequence, proposed top-level sections after the short
|
||||||
|
introduction would be the following:
|
||||||
|
|
||||||
|
* Common introduction: What's the matter/need Cloudkitty aims to solve ?
|
||||||
|
What's possible ? What's not (yet) ? What will never be supported ?
|
||||||
|
|
||||||
|
In addition to these questions, there should be a general introduction on the
|
||||||
|
different components, their roles and how they interact.
|
||||||
|
|
||||||
|
* User documentation: How do I retrieve information through cloudkitty's API ?
|
||||||
|
What kind of information can I get ?
|
||||||
|
|
||||||
|
* HTTP API reference. However, reference of the v2 API will be published to
|
||||||
|
``developer.openstack.org/api-ref`` once it is considered stable.
|
||||||
|
|
||||||
|
* Operator documentation: This section should detail the role of each component,
|
||||||
|
and provide information about how to configure it. This is also where
|
||||||
|
information on rating rule creation should live. Operators are also the target
|
||||||
|
audience for the troubleshooting section.
|
||||||
|
|
||||||
|
In opposition to the current approach (with keystone/openstack vs.
|
||||||
|
without keystone/openstack), I believe that this part of the documentation
|
||||||
|
should explain each component one by one: its purpose, how it can be used,
|
||||||
|
existing implementations (list different collectors/fetchers/rating modules,
|
||||||
|
and ideally provide a support matrix), and how it can be configured.
|
||||||
|
|
||||||
|
Example of a usecase where configuration is hard to deduce from the
|
||||||
|
documentation: CloudKitty is used without keystone authentication and collects
|
||||||
|
prometheus metrics. However, in order to collect metrics from gnocchi, the
|
||||||
|
collector needs to authenticate to keystone. How to configure this ?
|
||||||
|
|
||||||
|
* Developer documentation: This section should provide implementation details
|
||||||
|
about the different components cloudkitty is made of. It should explain
|
||||||
|
contributors what they need to implement, which interfaces they should use,
|
||||||
|
and how their contribution should be tested. Ideally, this should complete
|
||||||
|
the docstrings of an interface. A (small and probably not complete enough)
|
||||||
|
example of such a documentation can be found here:
|
||||||
|
https://docs.openstack.org/cloudkitty/latest/developer/storage.html
|
||||||
|
|
||||||
|
Here again, the documentation should be split by component.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
I don't have any alternative layouts or contents in mind, but proposals are
|
||||||
|
of course welcome!
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
None
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None, except maybe a better documentation of the API.
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications Impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
End users and contributors will have a better understanding of the project.
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Better understanding of the projet, troubleshooting made easier.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Better understanding of the projet, contributing made easier.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Luka Peschke is assigned for the work on the spec, and the integration of the
|
||||||
|
new layout to the doc. Work on the content of the documentation will be
|
||||||
|
dispatched once the spec has been reviewed, corrected and merged.
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
peschk_l
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
None
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Apply the new layout to cloudkitty's documentation
|
||||||
|
|
||||||
|
* Write an introduction with a few schemas
|
||||||
|
|
||||||
|
* Improve the documentation (sub-)section by (sub-)section, with one commit/task
|
||||||
|
couple per subject.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
The documentation will be completely modified, and a lot of content will be
|
||||||
|
added.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
* Glance documentation, which is a good example of a documentation organised per
|
||||||
|
user profile: https://docs.openstack.org/glance/latest/
|
||||||
|
|
||||||
|
* Some support matrixes:
|
||||||
|
|
||||||
|
- Elastic product / OS: https://www.elastic.co/support/matrix
|
||||||
|
|
||||||
|
- Kubernetes persistent volumes access modes:
|
||||||
|
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
|
Loading…
Reference in New Issue
Block a user