)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"8e0c19e4c63ee4515c84efe71a17bb90d2a2a320","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This introduces GET methods for rating modules in the v2 API. Work items:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"* Implement the \"/v1/rating/modules endpoints\" in the v2 API, including"},{"line_number":12,"context_line":"  unit tests and documentation"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I0a2f24051d268a396955c8df7e3e5615546f6293"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_8cb9e079","line":11,"range":{"start_line":11,"start_character":35,"end_line":11,"end_character":36},"updated":"2019-09-30 13:55:03.000000000","message":"quotes should be closed here","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"136690a4ac15827a4c3a9f201499634fe4ed9672","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"5ef87cee_b650789c","updated":"2022-03-21 14:18:57.000000000","message":"reapplying my review","commit_id":"69178c8b11cd4c93663f66932b3d85ec40b9822d"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"ec2623446467150705a170c10ba29510f75861a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"065f337c_64414c18","updated":"2022-03-21 14:26:25.000000000","message":"LGTM, can you please add a release note?","commit_id":"dde79b63f14230c077b56f75538ff96fc9dffb65"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"00fa7b0ea94265cdccd0c3e3e72c182e440976c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ea492139_4fb16465","updated":"2022-03-21 14:31:00.000000000","message":"We should merge this one only after YOGA is released.","commit_id":"9f9f4f12335372d2b98c0d0c618aa4c457da9378"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"7ff4ed9b00feb3797e2280b0cb68e42843ca1bc7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d7d97a51_422697fc","updated":"2022-06-13 11:27:04.000000000","message":"recheck","commit_id":"9f9f4f12335372d2b98c0d0c618aa4c457da9378"}],"cloudkitty/api/v2/base.py":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"8e0c19e4c63ee4515c84efe71a17bb90d2a2a320","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":43,"context_line":"        super(BaseResource, self).__init__(*args, **kwargs)"},{"line_number":44,"context_line":"        self.modules \u003d []"},{"line_number":45,"context_line":"        lock \u003d lockutils.lock(\u0027rating-modules\u0027)"},{"line_number":46,"context_line":"        with lock:"},{"line_number":47,"context_line":"            ck_utils.refresh_stevedore(PROCESSORS_NAMESPACE)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_b230b257","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":25},"updated":"2019-09-30 13:55:03.000000000","message":"Useless.","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":30960,"name":"Quentin Anglade","email":"quentin.anglade@objectif-libre.com","username":"qanglade"},"change_message_id":"d4c6aa31b9e94a5c5ed5bf435235d1e48b1c9683","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":43,"context_line":"        super(BaseResource, self).__init__(*args, **kwargs)"},{"line_number":44,"context_line":"        self.modules \u003d []"},{"line_number":45,"context_line":"        lock \u003d lockutils.lock(\u0027rating-modules\u0027)"},{"line_number":46,"context_line":"        with lock:"},{"line_number":47,"context_line":"            ck_utils.refresh_stevedore(PROCESSORS_NAMESPACE)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_58cabfa0","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":25},"in_reply_to":"3fa7e38b_b230b257","updated":"2019-10-01 08:21:18.000000000","message":"Done","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"8e0c19e4c63ee4515c84efe71a17bb90d2a2a320","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":43,"context_line":"        super(BaseResource, self).__init__(*args, **kwargs)"},{"line_number":44,"context_line":"        self.modules \u003d []"},{"line_number":45,"context_line":"        lock \u003d lockutils.lock(\u0027rating-modules\u0027)"},{"line_number":46,"context_line":"        with lock:"},{"line_number":47,"context_line":"            ck_utils.refresh_stevedore(PROCESSORS_NAMESPACE)"},{"line_number":48,"context_line":"            self.modules \u003d extension.ExtensionManager("},{"line_number":49,"context_line":"                PROCESSORS_NAMESPACE, invoke_on_load\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4caf6829","line":46,"range":{"start_line":45,"start_character":8,"end_line":46,"end_character":18},"updated":"2019-09-30 13:55:03.000000000","message":"This could be a single line: \"with lockutils.lock...\"\n\n\nNOTE: Is this blocking or not ?","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":30960,"name":"Quentin Anglade","email":"quentin.anglade@objectif-libre.com","username":"qanglade"},"change_message_id":"d4c6aa31b9e94a5c5ed5bf435235d1e48b1c9683","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":43,"context_line":"        super(BaseResource, self).__init__(*args, **kwargs)"},{"line_number":44,"context_line":"        self.modules \u003d []"},{"line_number":45,"context_line":"        lock \u003d lockutils.lock(\u0027rating-modules\u0027)"},{"line_number":46,"context_line":"        with lock:"},{"line_number":47,"context_line":"            ck_utils.refresh_stevedore(PROCESSORS_NAMESPACE)"},{"line_number":48,"context_line":"            self.modules \u003d extension.ExtensionManager("},{"line_number":49,"context_line":"                PROCESSORS_NAMESPACE, invoke_on_load\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_d500b8ad","line":46,"range":{"start_line":45,"start_character":8,"end_line":46,"end_character":18},"in_reply_to":"3fa7e38b_4caf6829","updated":"2019-10-01 08:21:18.000000000","message":"Does not seems blocking according to the doc: https://docs.openstack.org/oslo.concurrency/latest/reference/lockutils.html","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"135a36288018d9777760c02c685f7d1a671d8bbf","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        super(BaseResource, self).__init__(*args, **kwargs)"},{"line_number":44,"context_line":"        with lockutils.lock(\u0027rating-modules\u0027):"},{"line_number":45,"context_line":"            ck_utils.refresh_stevedore(PROCESSORS_NAMESPACE)"},{"line_number":46,"context_line":"            self.modules \u003d extension.ExtensionManager("},{"line_number":47,"context_line":"                PROCESSORS_NAMESPACE, invoke_on_load\u003dTrue)"},{"line_number":48,"context_line":"        self._storage \u003d storage.get_storage()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_7ec191e4","line":47,"range":{"start_line":46,"start_character":12,"end_line":47,"end_character":58},"updated":"2019-10-02 13:42:19.000000000","message":"I\u0027d rather have this done in the RatingModule classes (Best would be to use a base class for both), as these won\u0027t be required by every resource inheriting BaseResource. \n\nAlso, please call the attribute \"rating_modules\" to be explicit.","commit_id":"11661a9aba66d984e3d2137656ae0e405f26f3f1"},{"author":{"_account_id":30960,"name":"Quentin Anglade","email":"quentin.anglade@objectif-libre.com","username":"qanglade"},"change_message_id":"5e3782b6b39ac80fbdf9b7aaa36d07a56ca7db9b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        super(BaseResource, self).__init__(*args, **kwargs)"},{"line_number":44,"context_line":"        with lockutils.lock(\u0027rating-modules\u0027):"},{"line_number":45,"context_line":"            ck_utils.refresh_stevedore(PROCESSORS_NAMESPACE)"},{"line_number":46,"context_line":"            self.modules \u003d extension.ExtensionManager("},{"line_number":47,"context_line":"                PROCESSORS_NAMESPACE, invoke_on_load\u003dTrue)"},{"line_number":48,"context_line":"        self._storage \u003d storage.get_storage()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_fda9f623","line":47,"range":{"start_line":46,"start_character":12,"end_line":47,"end_character":58},"in_reply_to":"3fa7e38b_7ec191e4","updated":"2019-10-02 16:17:39.000000000","message":"Done","commit_id":"11661a9aba66d984e3d2137656ae0e405f26f3f1"}],"cloudkitty/api/v2/rating/__init__.py":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"f99432045ec0966dc8a711225577cf2ad4982187","unresolved":true,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#     from cloudkitty.api.v2 import utils as api_utils"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cloudkitty.api.v2 import utils as api_utils"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"c675314b_6a039b81","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":54},"updated":"2022-02-07 14:46:21.000000000","message":"Remove","commit_id":"482fdf7221c56f6d9e70fee1fdd3a80c8d433fb1"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"13af558f47ea043d741dafa2c7012b1ed55f0a52","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#     from cloudkitty.api.v2 import utils as api_utils"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cloudkitty.api.v2 import utils as api_utils"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"8785d924_df61e316","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":54},"in_reply_to":"c675314b_6a039b81","updated":"2022-03-21 14:21:48.000000000","message":"Done","commit_id":"482fdf7221c56f6d9e70fee1fdd3a80c8d433fb1"}],"cloudkitty/api/v2/rating/modules.py":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"8e0c19e4c63ee4515c84efe71a17bb90d2a2a320","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get(self, module_id):"},{"line_number":53,"context_line":"        policy.authorize(flask.request.context, \u0027v2_rating:get_module\u0027, {})"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            lock \u003d lockutils.lock(\u0027rating-modules\u0027)"},{"line_number":56,"context_line":"            with lock:"},{"line_number":57,"context_line":"                module \u003d self.modules[module_id]"},{"line_number":58,"context_line":"        except KeyError:"},{"line_number":59,"context_line":"            raise http_exceptions.NotFound("}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_92d5761e","line":56,"range":{"start_line":55,"start_character":11,"end_line":56,"end_character":22},"updated":"2019-09-30 13:55:03.000000000","message":"Please make this a single line","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":30960,"name":"Quentin Anglade","email":"quentin.anglade@objectif-libre.com","username":"qanglade"},"change_message_id":"d4c6aa31b9e94a5c5ed5bf435235d1e48b1c9683","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    def get(self, module_id):"},{"line_number":53,"context_line":"        policy.authorize(flask.request.context, \u0027v2_rating:get_module\u0027, {})"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            lock \u003d lockutils.lock(\u0027rating-modules\u0027)"},{"line_number":56,"context_line":"            with lock:"},{"line_number":57,"context_line":"                module \u003d self.modules[module_id]"},{"line_number":58,"context_line":"        except KeyError:"},{"line_number":59,"context_line":"            raise http_exceptions.NotFound("}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_18c8c7a3","line":56,"range":{"start_line":55,"start_character":11,"end_line":56,"end_character":22},"in_reply_to":"3fa7e38b_92d5761e","updated":"2019-10-01 08:21:18.000000000","message":"Done","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"135a36288018d9777760c02c685f7d1a671d8bbf","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class RatingModule(base.BaseResource):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @api_utils.add_output_schema({"},{"line_number":31,"context_line":"        voluptuous.Required("},{"line_number":32,"context_line":"            \u0027description\u0027,"},{"line_number":33,"context_line":"            default\u003dNone,"},{"line_number":34,"context_line":"        ): validation_utils.get_string_type(),"},{"line_number":35,"context_line":"        voluptuous.Required("},{"line_number":36,"context_line":"            \u0027module_id\u0027,"},{"line_number":37,"context_line":"            default\u003dNone,"},{"line_number":38,"context_line":"        ): validation_utils.get_string_type(),"},{"line_number":39,"context_line":"        voluptuous.Required("},{"line_number":40,"context_line":"            \u0027enabled\u0027,"},{"line_number":41,"context_line":"            default\u003dNone,"},{"line_number":42,"context_line":"        ): voluptuous.Boolean(),"},{"line_number":43,"context_line":"        voluptuous.Required("},{"line_number":44,"context_line":"            \u0027hot_config\u0027,"},{"line_number":45,"context_line":"            default\u003dNone,"},{"line_number":46,"context_line":"        ): voluptuous.Boolean(),"},{"line_number":47,"context_line":"        voluptuous.Required("},{"line_number":48,"context_line":"            \u0027priority\u0027,"},{"line_number":49,"context_line":"            default\u003dNone,"},{"line_number":50,"context_line":"        ): voluptuous.All(int, min\u003d1),"},{"line_number":51,"context_line":"    })"},{"line_number":52,"context_line":"    def get(self, module_id):"},{"line_number":53,"context_line":"        policy.authorize(flask.request.context, \u0027v2_rating:get_module\u0027, {})"},{"line_number":54,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e3d17324","line":51,"range":{"start_line":30,"start_character":33,"end_line":51,"end_character":5},"updated":"2019-10-02 13:42:19.000000000","message":"Could you please declare a global MODULE_SCHEMA to avoid code duplication ?","commit_id":"11661a9aba66d984e3d2137656ae0e405f26f3f1"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"31c168bb8af0bf13a53e3e6008ffbc0ffead1961","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    @api_utils.add_output_schema(MODULE_SCHEMA)"},{"line_number":68,"context_line":"    def get(self, module_id):"},{"line_number":69,"context_line":"        policy.authorize(flask.request.context, \u0027v2_rating:get_module\u0027, {})"},{"line_number":70,"context_line":"        try:"},{"line_number":71,"context_line":"            with lockutils.lock(\u0027rating-modules\u0027):"},{"line_number":72,"context_line":"                module \u003d self.rating_modules[module_id]"},{"line_number":73,"context_line":"        except KeyError:"},{"line_number":74,"context_line":"            raise http_exceptions.NotFound("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_dff90080","line":71,"range":{"start_line":70,"start_character":8,"end_line":71,"end_character":50},"updated":"2019-10-11 08:54:33.000000000","message":"Why the lock ?","commit_id":"85d9f1d3b0f62a1fbd4eedd33fa08f9176592a92"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"31c168bb8af0bf13a53e3e6008ffbc0ffead1961","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def get(self):"},{"line_number":92,"context_line":"        modules \u003d []"},{"line_number":93,"context_line":"        lock \u003d lockutils.lock(\u0027v2_rating:list_modules\u0027)"},{"line_number":94,"context_line":"        with lock:"},{"line_number":95,"context_line":"            for module in self.rating_modules:"},{"line_number":96,"context_line":"                infos \u003d module.obj.module_info.copy()"},{"line_number":97,"context_line":"                modules.append({"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_9fef08b0","line":94,"range":{"start_line":94,"start_character":8,"end_line":94,"end_character":18},"updated":"2019-10-11 08:54:33.000000000","message":"Why the lock ?","commit_id":"85d9f1d3b0f62a1fbd4eedd33fa08f9176592a92"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"2e53854dee59cc55fc89203278138212dc8fdc73","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class BaseRatingModule(base.BaseResource):"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":58,"context_line":"        super(BaseRatingModule, self).__init__(*args, **kwargs)"},{"line_number":59,"context_line":"        with lockutils.lock(\u0027rating-modules\u0027):"},{"line_number":60,"context_line":"            ck_utils.refresh_stevedore(PROCESSORS_NAMESPACE)"},{"line_number":61,"context_line":"            self.rating_modules \u003d extension.ExtensionManager("},{"line_number":62,"context_line":"                PROCESSORS_NAMESPACE, invoke_on_load\u003dTrue)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class RatingModule(BaseRatingModule):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_5ba44b07","line":62,"range":{"start_line":56,"start_character":0,"end_line":62,"end_character":58},"updated":"2019-11-19 09:37:16.000000000","message":"Hi quentin, could you please update this to be part of the \"reload\" method ? Please see https://docs.openstack.org/cloudkitty/latest/developer/api/tutorial.html#loading-drivers","commit_id":"dc4ba3a68ec5890635f30bbf0fc0a703850afc8a"},{"author":{"_account_id":32304,"name":"Jegor van Opdorp","email":"jegor@leaf.cloud","username":"jopdorp"},"change_message_id":"92240e48037ed8ba0eb4e41d942dbf99e77c6195","unresolved":false,"context_lines":[{"line_number":52,"context_line":"}"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"class BaseRatingModule(base.BaseResource):"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @classmethod"},{"line_number":58,"context_line":"    def reload(cls):"},{"line_number":59,"context_line":"        super(BaseRatingModule, cls).reload()"},{"line_number":60,"context_line":"        with lockutils.lock(\u0027rating-modules\u0027):"},{"line_number":61,"context_line":"            ck_utils.refresh_stevedore(PROCESSORS_NAMESPACE)"},{"line_number":62,"context_line":"            cls.rating_modules \u003d extension.ExtensionManager("},{"line_number":63,"context_line":"                PROCESSORS_NAMESPACE, invoke_on_load\u003dTrue)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RatingModule(BaseRatingModule):"}],"source_content_type":"text/x-python","patch_set":6,"id":"fffc6b78_ade97681","line":63,"range":{"start_line":55,"start_character":0,"end_line":63,"end_character":58},"updated":"2020-11-19 14:16:53.000000000","message":"can someone pay extra attention to this, regarding Luka\u0027s comment on the previous patch set","commit_id":"ec2b6f3f50bf447edb1bfeba6b9e77e3deaa16a7"}],"cloudkitty/common/policies/__init__.py":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"8e0c19e4c63ee4515c84efe71a17bb90d2a2a320","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        v2_dataframes.list_rules(),"},{"line_number":39,"context_line":"        v2_scope.list_rules(),"},{"line_number":40,"context_line":"        v2_summary.list_rules(),"},{"line_number":41,"context_line":"        v2_rating.list_rules(),"},{"line_number":42,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_52e5beda","line":41,"range":{"start_line":41,"start_character":7,"end_line":41,"end_character":31},"updated":"2019-09-30 13:55:03.000000000","message":"nit: these are sorted alphabetically, could you please put this between v2_dataframes and v2_scope ?","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":30960,"name":"Quentin Anglade","email":"quentin.anglade@objectif-libre.com","username":"qanglade"},"change_message_id":"d4c6aa31b9e94a5c5ed5bf435235d1e48b1c9683","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        v2_dataframes.list_rules(),"},{"line_number":39,"context_line":"        v2_scope.list_rules(),"},{"line_number":40,"context_line":"        v2_summary.list_rules(),"},{"line_number":41,"context_line":"        v2_rating.list_rules(),"},{"line_number":42,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_78421b11","line":41,"range":{"start_line":41,"start_character":7,"end_line":41,"end_character":31},"in_reply_to":"3fa7e38b_52e5beda","updated":"2019-10-01 08:21:18.000000000","message":"Done","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"}],"cloudkitty/common/policies/v2/rating.py":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"2e53854dee59cc55fc89203278138212dc8fdc73","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        check_str\u003dbase.ROLE_ADMIN,"},{"line_number":24,"context_line":"        description\u003d\u0027Returns the list of loaded modules in Cloudkitty.\u0027,"},{"line_number":25,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2/rating/modules\u0027,"},{"line_number":26,"context_line":"                     \u0027method\u0027: \u0027LIST\u0027}]),"},{"line_number":27,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":28,"context_line":"        name\u003d\u0027v2_rating:get_module\u0027,"},{"line_number":29,"context_line":"        check_str\u003dbase.ROLE_ADMIN,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_5e637c42","line":26,"range":{"start_line":26,"start_character":31,"end_line":26,"end_character":37},"updated":"2019-11-19 09:37:16.000000000","message":"Not an HTTP method. You probably meant GET","commit_id":"dc4ba3a68ec5890635f30bbf0fc0a703850afc8a"},{"author":{"_account_id":32304,"name":"Jegor van Opdorp","email":"jegor@leaf.cloud","username":"jopdorp"},"change_message_id":"922a1f97c4b012d9296648261f1d40dcdabe737b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        check_str\u003dbase.ROLE_ADMIN,"},{"line_number":24,"context_line":"        description\u003d\u0027Returns the list of loaded modules in Cloudkitty.\u0027,"},{"line_number":25,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2/rating/modules\u0027,"},{"line_number":26,"context_line":"                     \u0027method\u0027: \u0027LIST\u0027}]),"},{"line_number":27,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":28,"context_line":"        name\u003d\u0027v2_rating:get_module\u0027,"},{"line_number":29,"context_line":"        check_str\u003dbase.ROLE_ADMIN,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fffc6b78_cd683a23","line":26,"range":{"start_line":26,"start_character":31,"end_line":26,"end_character":37},"in_reply_to":"3fa7e38b_5e637c42","updated":"2020-11-19 14:10:15.000000000","message":"this is probably a confusion based on the v1 policies","commit_id":"dc4ba3a68ec5890635f30bbf0fc0a703850afc8a"}],"doc/source/_static/cloudkitty.conf.sample":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"31e9e492f9bdcad57533e03cf2e86ec24a5ab804","unresolved":true,"context_lines":[{"line_number":1212,"context_line":"# heartbeat. (integer value)"},{"line_number":1213,"context_line":"#heartbeat_rate \u003d 2"},{"line_number":1214,"context_line":""},{"line_number":1215,"context_line":"# DEPRECATED: (DEPRECATED) Enable/Disable the RabbitMQ mandatory flag"},{"line_number":1216,"context_line":"# for direct send. The direct send is used as reply, so the"},{"line_number":1217,"context_line":"# MessageUndeliverable exception is raised in case the client queue"},{"line_number":1218,"context_line":"# does not exist.MessageUndeliverable exception will be used to loop"},{"line_number":1219,"context_line":"# for a timeout to lets a chance to sender to recover.This flag is"},{"line_number":1220,"context_line":"# deprecated and it will not be possible to deactivate this"},{"line_number":1221,"context_line":"# functionality anymore (boolean value)"},{"line_number":1222,"context_line":"# This option is deprecated for removal."},{"line_number":1223,"context_line":"# Its value may be silently ignored in the future."},{"line_number":1224,"context_line":"# Reason: Mandatory flag no longer deactivable."},{"line_number":1225,"context_line":"#direct_mandatory_flag \u003d true"},{"line_number":1226,"context_line":""},{"line_number":1227,"context_line":"# Enable x-cancel-on-ha-failover flag so that rabbitmq server will"},{"line_number":1228,"context_line":"# cancel and notify consumerswhen queue is down (boolean value)"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"09413f8b_9a1bc5c7","line":1225,"range":{"start_line":1215,"start_character":0,"end_line":1225,"end_character":29},"updated":"2022-02-07 14:46:35.000000000","message":"Unrelated to this patch","commit_id":"482fdf7221c56f6d9e70fee1fdd3a80c8d433fb1"},{"author":{"_account_id":28356,"name":"Rafael Weingartner","email":"rafael@apache.org","username":"rafaelweingartner"},"change_message_id":"d00d8a3c1003ad7c596d1ac115afb0f061a08594","unresolved":false,"context_lines":[{"line_number":1212,"context_line":"# heartbeat. (integer value)"},{"line_number":1213,"context_line":"#heartbeat_rate \u003d 2"},{"line_number":1214,"context_line":""},{"line_number":1215,"context_line":"# DEPRECATED: (DEPRECATED) Enable/Disable the RabbitMQ mandatory flag"},{"line_number":1216,"context_line":"# for direct send. The direct send is used as reply, so the"},{"line_number":1217,"context_line":"# MessageUndeliverable exception is raised in case the client queue"},{"line_number":1218,"context_line":"# does not exist.MessageUndeliverable exception will be used to loop"},{"line_number":1219,"context_line":"# for a timeout to lets a chance to sender to recover.This flag is"},{"line_number":1220,"context_line":"# deprecated and it will not be possible to deactivate this"},{"line_number":1221,"context_line":"# functionality anymore (boolean value)"},{"line_number":1222,"context_line":"# This option is deprecated for removal."},{"line_number":1223,"context_line":"# Its value may be silently ignored in the future."},{"line_number":1224,"context_line":"# Reason: Mandatory flag no longer deactivable."},{"line_number":1225,"context_line":"#direct_mandatory_flag \u003d true"},{"line_number":1226,"context_line":""},{"line_number":1227,"context_line":"# Enable x-cancel-on-ha-failover flag so that rabbitmq server will"},{"line_number":1228,"context_line":"# cancel and notify consumerswhen queue is down (boolean value)"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"3c8659e2_bac941d2","line":1225,"range":{"start_line":1215,"start_character":0,"end_line":1225,"end_character":29},"in_reply_to":"09413f8b_9a1bc5c7","updated":"2022-03-21 11:13:47.000000000","message":"Done","commit_id":"482fdf7221c56f6d9e70fee1fdd3a80c8d433fb1"}],"doc/source/api-reference/v2/api_samples/rating/module_get.json":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"2e53854dee59cc55fc89203278138212dc8fdc73","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"  \"module_id\": \"f6f4f726-583z-4a09-a972-c908dea4c291\""},{"line_number":3,"context_line":"  \"description\": \"Sample extension\","},{"line_number":4,"context_line":"  \"enabled\": true,"},{"line_number":5,"context_line":"  \"hot-config\": false,"}],"source_content_type":"application/json","patch_set":5,"id":"3fa7e38b_9bec032a","line":2,"range":{"start_line":2,"start_character":16,"end_line":2,"end_character":52},"updated":"2019-11-19 09:37:16.000000000","message":"Please don\u0027t use an uuid. What about \"sample\" ?","commit_id":"dc4ba3a68ec5890635f30bbf0fc0a703850afc8a"}],"doc/source/api-reference/v2/api_samples/rating/modules_list_get.json":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"31c168bb8af0bf13a53e3e6008ffbc0ffead1961","unresolved":false,"context_lines":[{"line_number":1,"context_line":" {"},{"line_number":2,"context_line":"   \"modules\": ["},{"line_number":3,"context_line":"     {"},{"line_number":4,"context_line":"         \"module_id\": \"f6f4f726-583z-4a09-a972-c908dea4c291\""},{"line_number":5,"context_line":"         \"description\": \"Sample extension\","},{"line_number":6,"context_line":"         \"enabled\": true,"},{"line_number":7,"context_line":"         \"hot-config\": false,"}],"source_content_type":"application/json","patch_set":4,"id":"3fa7e38b_9f038810","line":4,"range":{"start_line":4,"start_character":23,"end_line":4,"end_character":59},"updated":"2019-10-11 08:54:33.000000000","message":"module id\u0027s aren\u0027t UUID\u0027s. Use a real-life example if it\u0027s simpler","commit_id":"85d9f1d3b0f62a1fbd4eedd33fa08f9176592a92"}],"doc/source/api-reference/v2/rating/modules.inc":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"8e0c19e4c63ee4515c84efe71a17bb90d2a2a320","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Returns the details of one specific module."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. rest_method::  GET /v2/rating/modules/(module_id)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Status codes"},{"line_number":49,"context_line":"------------"}],"source_content_type":"text/x-c++src","patch_set":1,"id":"3fa7e38b_126f462b","line":46,"range":{"start_line":46,"start_character":41,"end_line":46,"end_character":52},"updated":"2019-09-30 13:55:03.000000000","message":"Please use curly braces or angle brackets.","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":30960,"name":"Quentin Anglade","email":"quentin.anglade@objectif-libre.com","username":"qanglade"},"change_message_id":"d4c6aa31b9e94a5c5ed5bf435235d1e48b1c9683","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Returns the details of one specific module."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. rest_method::  GET /v2/rating/modules/(module_id)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Status codes"},{"line_number":49,"context_line":"------------"}],"source_content_type":"text/x-c++src","patch_set":1,"id":"3fa7e38b_38cd8384","line":46,"range":{"start_line":46,"start_character":41,"end_line":46,"end_character":52},"in_reply_to":"3fa7e38b_126f462b","updated":"2019-10-01 08:21:18.000000000","message":"Done","commit_id":"c2bae785749248098e285c1330136c622a30b0a4"},{"author":{"_account_id":29503,"name":"Justin Ferrieu","email":"jferrieu@objectif-libre.com","username":"jferrieu"},"change_message_id":"7f4fe96a3597a04c7c4352c8406c27cb72cf0ab0","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Returns the details of one specific module."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. rest_method::  GET /v2/rating/modules/\u003cmodule_id\u003e"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Status codes"},{"line_number":49,"context_line":"------------"}],"source_content_type":"text/x-c++src","patch_set":2,"id":"3fa7e38b_b09e46b6","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":52},"updated":"2019-10-02 14:08:14.000000000","message":"Query parameters details are missing.\n\nYou can include them and bind them with `.. rest_parameters::` rst opcode.\n\nAn example here:\nhttps://github.com/openstack/cloudkitty/blob/1b43403ecd3df9a6f30cd266c1837710cf80cbb5/doc/source/api-reference/v2/dataframes/dataframes.inc#L50","commit_id":"11661a9aba66d984e3d2137656ae0e405f26f3f1"},{"author":{"_account_id":30960,"name":"Quentin Anglade","email":"quentin.anglade@objectif-libre.com","username":"qanglade"},"change_message_id":"5e3782b6b39ac80fbdf9b7aaa36d07a56ca7db9b","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Returns the details of one specific module."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. rest_method::  GET /v2/rating/modules/\u003cmodule_id\u003e"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Status codes"},{"line_number":49,"context_line":"------------"}],"source_content_type":"text/x-c++src","patch_set":2,"id":"3fa7e38b_e09e2db7","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":52},"in_reply_to":"3fa7e38b_b09e46b6","updated":"2019-10-02 16:17:39.000000000","message":"There are no parameters needed for this endpoint, I\u0027ll add an explicit message stating so.","commit_id":"11661a9aba66d984e3d2137656ae0e405f26f3f1"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"2e53854dee59cc55fc89203278138212dc8fdc73","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":".. literalinclude:: ./api_samples/rating/modules_list_get.json"},{"line_number":37,"context_line":"   :language: javascript"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Get one module"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-c++src","patch_set":5,"id":"3fa7e38b_1bd8137d","line":40,"range":{"start_line":38,"start_character":0,"end_line":40,"end_character":0},"updated":"2019-11-19 09:37:16.000000000","message":"Too many empty lines","commit_id":"dc4ba3a68ec5890635f30bbf0fc0a703850afc8a"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"2e53854dee59cc55fc89203278138212dc8fdc73","unresolved":false,"context_lines":[{"line_number":78,"context_line":".. literalinclude:: ./api_samples/rating/module_get.json"},{"line_number":79,"context_line":"   :language: javascript"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":5,"id":"3fa7e38b_7bd02754","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":0},"updated":"2019-11-19 09:37:16.000000000","message":"Too many empty lines","commit_id":"dc4ba3a68ec5890635f30bbf0fc0a703850afc8a"}],"doc/source/api-reference/v2/rating/modules_parameters.yml":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"31c168bb8af0bf13a53e3e6008ffbc0ffead1961","unresolved":false,"context_lines":[{"line_number":8,"context_line":"module_id:"},{"line_number":9,"context_line":"  in: body"},{"line_number":10,"context_line":"  description: |"},{"line_number":11,"context_line":"    The uid of the module"},{"line_number":12,"context_line":"  type: string"},{"line_number":13,"context_line":"  required: true"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_df558051","line":11,"range":{"start_line":11,"start_character":8,"end_line":11,"end_character":12},"updated":"2019-10-11 08:54:33.000000000","message":"Not a uuid","commit_id":"85d9f1d3b0f62a1fbd4eedd33fa08f9176592a92"}]}
