)]}'
{"cloudkitty/api/v2/scope/state.py":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"f5d0186fcddb919e2b7919a22dfbf8f2187b0f72","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class ScopeState(base.BaseResource):"},{"line_number":27,"context_line":"    client \u003d messaging.get_client()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @api_utils.paginated"},{"line_number":30,"context_line":"    @api_utils.add_input_schema(\u0027query\u0027, {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_df7ecde2","line":27,"range":{"start_line":27,"start_character":4,"end_line":27,"end_character":35},"updated":"2019-06-27 07:43:03.000000000","message":"Shouldn\u0027t the version be specified ?","commit_id":"83485ff44fa3865edb013499892691131e268174"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"f5d0186fcddb919e2b7919a22dfbf8f2187b0f72","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            raise http_exceptions.NotFound("},{"line_number":112,"context_line":"                \"No resource found for provided filters.\")"},{"line_number":113,"context_line":"        self.client.cast({}, \u0027reset_state\u0027, res_data\u003d{\u0027scopes\u0027: results})"},{"line_number":114,"context_line":"        return {"},{"line_number":115,"context_line":"            \u0027results\u0027: [{"},{"line_number":116,"context_line":"                \u0027scope_id\u0027: r.identifier,"},{"line_number":117,"context_line":"                \u0027scope_key\u0027: r.scope_key,"},{"line_number":118,"context_line":"                \u0027fetcher\u0027: r.fetcher,"},{"line_number":119,"context_line":"                \u0027collector\u0027: r.collector,"},{"line_number":120,"context_line":"                \u0027state\u0027: str(r.state),"},{"line_number":121,"context_line":"            } for r in results]"},{"line_number":122,"context_line":"        }, 202"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_bfd3d937","line":122,"range":{"start_line":114,"start_character":5,"end_line":122,"end_character":14},"updated":"2019-06-27 07:43:03.000000000","message":"It is said in the spec that the response body would be empty","commit_id":"83485ff44fa3865edb013499892691131e268174"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"9a78397cdff4fb525aae5e92ee814b96f75d0cab","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @api_utils.add_input_schema(\u0027body\u0027, {"},{"line_number":85,"context_line":"        voluptuous.Exclusive(\u0027all_scopes\u0027, \u0027scope_selector\u0027):"},{"line_number":86,"context_line":"            bool,"},{"line_number":87,"context_line":"        voluptuous.Exclusive(\u0027scope_id\u0027, \u0027scope_selector\u0027):"},{"line_number":88,"context_line":"            api_utils.MultiQueryParam(str),"},{"line_number":89,"context_line":"        voluptuous.Optional(\u0027scope_key\u0027, default\u003d[]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_a58bc31c","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":16},"updated":"2019-07-16 15:40:02.000000000","message":"You\u0027ll have to use voluptuous.Boolean() here, as you receive a string: \"True\" will raise an invalid type error.","commit_id":"b97da88ac6d4f65f154ed35bdf376a70d56ce9cb"}],"cloudkitty/api/v2/utils.py":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"f5d0186fcddb919e2b7919a22dfbf8f2187b0f72","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from cloudkitty.api import v2 as v2_api"},{"line_number":25,"context_line":"from cloudkitty import json_utils as json"},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class SingleQueryParam(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_7fa7a1bd","line":28,"range":{"start_line":26,"start_character":0,"end_line":28,"end_character":33},"updated":"2019-06-27 07:43:03.000000000","message":"What\u0027s this needed for ?","commit_id":"83485ff44fa3865edb013499892691131e268174"}],"cloudkitty/messaging.py":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"f5d0186fcddb919e2b7919a22dfbf8f2187b0f72","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    return transport"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def get_target():"},{"line_number":53,"context_line":"    global RPC_TARGET"},{"line_number":54,"context_line":"    if RPC_TARGET is None:"},{"line_number":55,"context_line":"        RPC_TARGET \u003d oslo_messaging.Target("},{"line_number":56,"context_line":"            topic\u003d\u0027cloudkitty\u0027,"},{"line_number":57,"context_line":"            server\u003dCONF.host,"},{"line_number":58,"context_line":"        )"},{"line_number":59,"context_line":"    return RPC_TARGET"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def get_client(version_cap\u003dNone):"},{"line_number":63,"context_line":"    transport \u003d get_transport()"},{"line_number":64,"context_line":"    # target \u003d get_target()"},{"line_number":65,"context_line":"    target \u003d oslo_messaging.Target(topic\u003d\u0027cloudkitty\u0027)"},{"line_number":66,"context_line":"    return oslo_messaging.RPCClient(transport, target, version_cap\u003dversion_cap)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def get_server(target\u003dNone, endpoints\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_ff9ab16c","line":66,"range":{"start_line":52,"start_character":0,"end_line":66,"end_character":79},"updated":"2019-06-27 07:43:03.000000000","message":"I guess this will be fixed in the final version","commit_id":"83485ff44fa3865edb013499892691131e268174"}],"cloudkitty/orchestrator.py":[{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"f5d0186fcddb919e2b7919a22dfbf8f2187b0f72","unresolved":false,"context_lines":[{"line_number":78,"context_line":"         + str(CONF.collect.collector + \u0027-\u0027)"},{"line_number":79,"context_line":"         + str(CONF.fetcher.backend + \u0027-\u0027)"},{"line_number":80,"context_line":"         + str(CONF.collect.scope_key)).encode(\u0027ascii\u0027)).hexdigest()"},{"line_number":81,"context_line":"    return name, coord.get_lock(name)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"class RatingEndpoint(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_7f8001f8","line":81,"range":{"start_line":81,"start_character":32,"end_line":81,"end_character":36},"updated":"2019-06-27 07:43:03.000000000","message":"Please encode the name in ascii, as some tooz backends need to receive bytes...","commit_id":"83485ff44fa3865edb013499892691131e268174"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"f5d0186fcddb919e2b7919a22dfbf8f2187b0f72","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"class ScopeEndpoint(object):"},{"line_number":142,"context_line":"    target \u003d oslo_messaging.Target(version\u003d\u00271.1\u0027)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def __init__(self):"},{"line_number":145,"context_line":"        self._coord \u003d coordination.get_coordinator("}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_7f956131","line":142,"range":{"start_line":142,"start_character":35,"end_line":142,"end_character":48},"updated":"2019-06-27 07:43:03.000000000","message":"Shouldn\u0027t this be 1.0 ? It is the first version of this endpoint. Except if this is a global version for all endpoints.","commit_id":"83485ff44fa3865edb013499892691131e268174"},{"author":{"_account_id":23060,"name":"Luka Peschke","email":"mail@lukapeschke.com","username":"lukapeschke"},"change_message_id":"9a78397cdff4fb525aae5e92ee814b96f75d0cab","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def reset_state(self, ctxt, res_data):"},{"line_number":153,"context_line":"        LOG.info(\u0027Received state reset command. {}\u0027.format(res_data))"},{"line_number":154,"context_line":"        for scope in res_data[\u0027scopes\u0027]:"},{"line_number":155,"context_line":"            lock_name, lock \u003d get_lock(self._coord, scope[\u0027scope_id\u0027])"},{"line_number":156,"context_line":"            LOG.debug("},{"line_number":157,"context_line":"                \u0027[ScopeEndpoint] Trying to acquire lock \"{}\" ...\u0027.format("}],"source_content_type":"text/x-python","patch_set":8,"id":"7faddb67_25cd9365","line":154,"range":{"start_line":154,"start_character":8,"end_line":154,"end_character":40},"updated":"2019-07-16 15:40:02.000000000","message":"Shuffling  this list would be nice, as the results returned by the DB will always be in the same order, which is problematic in the following case:\n\n- The first scope of the DB is reset to a point a long while ago (several months). It will take some time to catch up.\n\n- Several other scopes are reset to another state once the first scope has been reset.\n\n- Since the first scope is re-processing a long period, this loop will block on the acquisition of the first lock, and the other scopes will thus not be reset.","commit_id":"b97da88ac6d4f65f154ed35bdf376a70d56ce9cb"}]}
