)]}'
{"doc/source/admin/architecture.rst":[{"author":{"_account_id":29523,"name":"Alexis Aurin","email":"alexis.aurin@objectif-libre.com"},"change_message_id":"cf2cae20b60d9957d94a664cf968a20c4e86074d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"The processor falls into the following parts:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"* The **fetcher** retrieves a list of **scopes** to rate. A scope is something"},{"line_number":27,"context_line":"  allowing to distinguish and isolate data. It also allows to split the worload"},{"line_number":28,"context_line":"  between several cloudkitty-processor workers. It can be anything that makes"},{"line_number":29,"context_line":"  sense in a given context, like an OpenStack project or a Kubernetes"},{"line_number":30,"context_line":"  namespace."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_3b6a0ab3","line":27,"range":{"start_line":27,"start_character":72,"end_line":27,"end_character":79},"updated":"2019-06-05 15:30:52.000000000","message":"typo","commit_id":"a6d5473908a7230da68c77b221fc7c62654b5039"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"c08a16d0e766a9bfbbeff86b77be9d3f4fd3c355","unresolved":false,"context_lines":[{"line_number":24,"context_line":"The processor falls into the following parts:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"* The **fetcher** retrieves a list of **scopes** to rate. A scope is something"},{"line_number":27,"context_line":"  allowing to distinguish and isolate data. It also allows to split the worload"},{"line_number":28,"context_line":"  between several cloudkitty-processor workers. It can be anything that makes"},{"line_number":29,"context_line":"  sense in a given context, like an OpenStack project or a Kubernetes"},{"line_number":30,"context_line":"  namespace."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_99ec4c2a","line":27,"range":{"start_line":27,"start_character":72,"end_line":27,"end_character":79},"in_reply_to":"9fb8cfa7_3b6a0ab3","updated":"2019-06-06 12:54:39.000000000","message":"Done","commit_id":"a6d5473908a7230da68c77b221fc7c62654b5039"},{"author":{"_account_id":29523,"name":"Alexis Aurin","email":"alexis.aurin@objectif-libre.com"},"change_message_id":"cf2cae20b60d9957d94a664cf968a20c4e86074d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Module loading and extensions"},{"line_number":46,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Nearly every part of CloudKitty makes use of stevedore to load extensions"},{"line_number":49,"context_line":"dynamically. The following schema shows the modular parts:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":".. image:: ../images/cloudkitty_modules.png"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_7b41620b","line":48,"range":{"start_line":48,"start_character":45,"end_line":48,"end_character":54},"updated":"2019-06-05 15:30:52.000000000","message":"could you put a link to a documentation ?","commit_id":"a6d5473908a7230da68c77b221fc7c62654b5039"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"c08a16d0e766a9bfbbeff86b77be9d3f4fd3c355","unresolved":false,"context_lines":[{"line_number":45,"context_line":"Module loading and extensions"},{"line_number":46,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Nearly every part of CloudKitty makes use of stevedore to load extensions"},{"line_number":49,"context_line":"dynamically. The following schema shows the modular parts:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":".. image:: ../images/cloudkitty_modules.png"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_39f3e00c","line":48,"range":{"start_line":48,"start_character":45,"end_line":48,"end_character":54},"in_reply_to":"9fb8cfa7_7b41620b","updated":"2019-06-06 12:54:39.000000000","message":"Done","commit_id":"a6d5473908a7230da68c77b221fc7c62654b5039"},{"author":{"_account_id":29523,"name":"Alexis Aurin","email":"alexis.aurin@objectif-libre.com"},"change_message_id":"cf2cae20b60d9957d94a664cf968a20c4e86074d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"Storage"},{"line_number":131,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The storage module is responsible for storing and retrieving data in a"},{"line_number":134,"context_line":"backend. It implements two interfaces (v1 and v2), each providing one or more"},{"line_number":135,"context_line":"drivers. For more information about the storage backend, see the"},{"line_number":136,"context_line":"`configuration section`_."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_db316ea4","line":133,"range":{"start_line":133,"start_character":66,"end_line":133,"end_character":68},"updated":"2019-06-05 15:30:52.000000000","message":"from","commit_id":"a6d5473908a7230da68c77b221fc7c62654b5039"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"c08a16d0e766a9bfbbeff86b77be9d3f4fd3c355","unresolved":false,"context_lines":[{"line_number":130,"context_line":"Storage"},{"line_number":131,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The storage module is responsible for storing and retrieving data in a"},{"line_number":134,"context_line":"backend. It implements two interfaces (v1 and v2), each providing one or more"},{"line_number":135,"context_line":"drivers. For more information about the storage backend, see the"},{"line_number":136,"context_line":"`configuration section`_."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9fb8cfa7_793718b2","line":133,"range":{"start_line":133,"start_character":66,"end_line":133,"end_character":68},"in_reply_to":"9fb8cfa7_db316ea4","updated":"2019-06-06 12:54:39.000000000","message":"Done","commit_id":"a6d5473908a7230da68c77b221fc7c62654b5039"},{"author":{"_account_id":2376,"name":"Christophe Sauthier","email":"christophe.sauthier@objectif-libre.com","username":"christophe.sauthier"},"change_message_id":"5cf296bf7350995121f33beb3054d45eadaa41ba","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"The processor falls into the following parts:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"* The **fetcher** retrieves a list of **scopes** to rate. A scope is something"},{"line_number":27,"context_line":"  allowing to distinguish and isolate data. It also allows to split the"},{"line_number":28,"context_line":"  workload between several cloudkitty-processor workers. It can be anything"},{"line_number":29,"context_line":"  that makes sense in a given context, like an OpenStack project or a"},{"line_number":30,"context_line":"  Kubernetes namespace."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_9631365d","line":27,"range":{"start_line":26,"start_character":58,"end_line":27,"end_character":43},"updated":"2019-06-11 08:22:35.000000000","message":"\"A scope distinguish and isolate data, and can split...\" ?","commit_id":"5c0dba2b6254fbe0807c896de932342c725e4081"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"9135c0320104514f00f437faccc9311d20a9e378","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"The processor falls into the following parts:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"* The **fetcher** retrieves a list of **scopes** to rate. A scope is something"},{"line_number":27,"context_line":"  allowing to distinguish and isolate data. It also allows to split the"},{"line_number":28,"context_line":"  workload between several cloudkitty-processor workers. It can be anything"},{"line_number":29,"context_line":"  that makes sense in a given context, like an OpenStack project or a"},{"line_number":30,"context_line":"  Kubernetes namespace."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_56bade6d","line":27,"range":{"start_line":26,"start_character":58,"end_line":27,"end_character":43},"in_reply_to":"9fb8cfa7_9631365d","updated":"2019-06-11 08:36:36.000000000","message":"Done","commit_id":"5c0dba2b6254fbe0807c896de932342c725e4081"},{"author":{"_account_id":2376,"name":"Christophe Sauthier","email":"christophe.sauthier@objectif-libre.com","username":"christophe.sauthier"},"change_message_id":"5cf296bf7350995121f33beb3054d45eadaa41ba","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  that makes sense in a given context, like an OpenStack project or a"},{"line_number":30,"context_line":"  Kubernetes namespace."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"* The **collector** will collect data from a source for a given scope and"},{"line_number":33,"context_line":"  metric."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* The collected data is then passed to the **rating modules** (several modules"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_b6455ab6","line":32,"range":{"start_line":32,"start_character":20,"end_line":32,"end_character":32},"updated":"2019-06-11 08:22:35.000000000","message":"\"collects\" ?","commit_id":"5c0dba2b6254fbe0807c896de932342c725e4081"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"9135c0320104514f00f437faccc9311d20a9e378","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  that makes sense in a given context, like an OpenStack project or a"},{"line_number":30,"context_line":"  Kubernetes namespace."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"* The **collector** will collect data from a source for a given scope and"},{"line_number":33,"context_line":"  metric."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* The collected data is then passed to the **rating modules** (several modules"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9fb8cfa7_366acaec","line":32,"range":{"start_line":32,"start_character":20,"end_line":32,"end_character":32},"in_reply_to":"9fb8cfa7_b6455ab6","updated":"2019-06-11 08:36:36.000000000","message":"Done","commit_id":"5c0dba2b6254fbe0807c896de932342c725e4081"}]}
