)]}'
{"cloudkitty/rating/hash/controllers/mapping.py":[{"author":{"_account_id":7923,"name":"Gauvain Pocentek","email":"gauvainpocentek@gmail.com","username":"gpocentek"},"change_message_id":"e455ea1c9833218c772f4be0196f01589aea2d5d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        :param group_id: Group UUID to filter on."},{"line_number":72,"context_line":"        :param no_group: Filter on orphaned mappings."},{"line_number":73,"context_line":"        :param tenant_id: Tenant UUID to filter on."},{"line_number":74,"context_line":"        :return: List of every mappings."},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        hashmap \u003d db_api.get_instance()"},{"line_number":77,"context_line":"        mapping_list \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_1857a4cb","line":74,"updated":"2016-06-02 10:03:44.000000000","message":"Would be nice to document filter_tenant and explain why it\u0027s there.","commit_id":"6e902176483edf779b1be763705f7b803552d882"},{"author":{"_account_id":7042,"name":"Stéphane Albert","email":"sheeprine@nullplace.com","username":"sheeprine"},"change_message_id":"de2b53bda1fe5f76e48dbe0af4dec0b6cbf566c3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        :param group_id: Group UUID to filter on."},{"line_number":72,"context_line":"        :param no_group: Filter on orphaned mappings."},{"line_number":73,"context_line":"        :param tenant_id: Tenant UUID to filter on."},{"line_number":74,"context_line":"        :return: List of every mappings."},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        hashmap \u003d db_api.get_instance()"},{"line_number":77,"context_line":"        mapping_list \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_3b9262a0","line":74,"in_reply_to":"9abb7d3a_1857a4cb","updated":"2016-06-02 10:15:32.000000000","message":"Oops, forgot it, will fix it.","commit_id":"6e902176483edf779b1be763705f7b803552d882"},{"author":{"_account_id":7923,"name":"Gauvain Pocentek","email":"gauvainpocentek@gmail.com","username":"gpocentek"},"change_message_id":"68669ca0c00ddd9c4995ef2190b848eb4a97f2d6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        hashmap \u003d db_api.get_instance()"},{"line_number":77,"context_line":"        mapping_list \u003d []"},{"line_number":78,"context_line":"        search_opts \u003d dict()"},{"line_number":79,"context_line":"        if filter_tenant:"},{"line_number":80,"context_line":"            search_opts[\u0027tenant_uuid\u0027] \u003d tenant_id"},{"line_number":81,"context_line":"        mappings_uuid_list \u003d hashmap.list_mappings("},{"line_number":82,"context_line":"            service_uuid\u003dservice_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_c7626b3d","line":79,"updated":"2016-06-02 05:39:03.000000000","message":"Couldn\u0027t we just test if tenant_id \u003d\u003d None, and avoid an extra parameter?","commit_id":"6e902176483edf779b1be763705f7b803552d882"},{"author":{"_account_id":7042,"name":"Stéphane Albert","email":"sheeprine@nullplace.com","username":"sheeprine"},"change_message_id":"a5e306e618743077e865d05af41f1e354c264aed","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        hashmap \u003d db_api.get_instance()"},{"line_number":77,"context_line":"        mapping_list \u003d []"},{"line_number":78,"context_line":"        search_opts \u003d dict()"},{"line_number":79,"context_line":"        if filter_tenant:"},{"line_number":80,"context_line":"            search_opts[\u0027tenant_uuid\u0027] \u003d tenant_id"},{"line_number":81,"context_line":"        mappings_uuid_list \u003d hashmap.list_mappings("},{"line_number":82,"context_line":"            service_uuid\u003dservice_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_84a97427","line":79,"in_reply_to":"9abb7d3a_c7626b3d","updated":"2016-06-02 09:53:43.000000000","message":"By default we filter on all mappings, without any knowledge of tenant.\nIf we want to filter on default mappings (no tenant) we need to filter on None.\nThis way we can filter on every mappings, no tenant and tenant.\nYou need 3 states which is not available with only one variable.","commit_id":"6e902176483edf779b1be763705f7b803552d882"}],"cloudkitty/rating/hash/controllers/threshold.py":[{"author":{"_account_id":7923,"name":"Gauvain Pocentek","email":"gauvainpocentek@gmail.com","username":"gpocentek"},"change_message_id":"68669ca0c00ddd9c4995ef2190b848eb4a97f2d6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        hashmap \u003d db_api.get_instance()"},{"line_number":77,"context_line":"        threshold_list \u003d []"},{"line_number":78,"context_line":"        search_opts \u003d dict()"},{"line_number":79,"context_line":"        if filter_tenant:"},{"line_number":80,"context_line":"            search_opts[\u0027tenant_uuid\u0027] \u003d tenant_id"},{"line_number":81,"context_line":"        thresholds_uuid_list \u003d hashmap.list_thresholds("},{"line_number":82,"context_line":"            service_uuid\u003dservice_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_47de7bdd","line":79,"range":{"start_line":79,"start_character":11,"end_line":79,"end_character":24},"updated":"2016-06-02 05:39:03.000000000","message":"Test if tenant_id \u003d\u003d None instead of adding an extra parameter?","commit_id":"6e902176483edf779b1be763705f7b803552d882"}],"cloudkitty/rating/hash/datamodels/mapping.py":[{"author":{"_account_id":9642,"name":"Guillaume Espanel","email":"guillaume.espanel@gmail.com","username":"quatre"},"change_message_id":"501b4b9dcbbfd67a2da017d35c9de5654e0b0f6e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                     field_id\u003d\u0027ac55b000-a05b-4832-b2ff-265a034886ab\u0027,"},{"line_number":68,"context_line":"                     value\u003d\u0027m1.micro\u0027,"},{"line_number":69,"context_line":"                     map_type\u003d\u0027flat\u0027,"},{"line_number":70,"context_line":"                     cost\u003ddecimal.Decimal(\u00274.2\u0027))"},{"line_number":71,"context_line":"        return sample"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_c902000b","line":70,"updated":"2016-06-07 14:58:02.000000000","message":"Should we include tenant_id in the sample?","commit_id":"fa8326a1b20a7a9e02cc2c93c3eeb94d5b843eec"},{"author":{"_account_id":7042,"name":"Stéphane Albert","email":"sheeprine@nullplace.com","username":"sheeprine"},"change_message_id":"3cf9fd828e5fddcf6084fc7243e0a8c78cea64ec","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                     field_id\u003d\u0027ac55b000-a05b-4832-b2ff-265a034886ab\u0027,"},{"line_number":68,"context_line":"                     value\u003d\u0027m1.micro\u0027,"},{"line_number":69,"context_line":"                     map_type\u003d\u0027flat\u0027,"},{"line_number":70,"context_line":"                     cost\u003ddecimal.Decimal(\u00274.2\u0027))"},{"line_number":71,"context_line":"        return sample"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_14c81f54","line":70,"in_reply_to":"7aa08908_c902000b","updated":"2016-06-09 09:41:14.000000000","message":"I forgot to add it as tenant_id is optional, will add it.","commit_id":"fa8326a1b20a7a9e02cc2c93c3eeb94d5b843eec"}],"cloudkitty/rating/hash/datamodels/threshold.py":[{"author":{"_account_id":9642,"name":"Guillaume Espanel","email":"guillaume.espanel@gmail.com","username":"quatre"},"change_message_id":"501b4b9dcbbfd67a2da017d35c9de5654e0b0f6e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                     field_id\u003d\u0027ac55b000-a05b-4832-b2ff-265a034886ab\u0027,"},{"line_number":71,"context_line":"                     level\u003ddecimal.Decimal(\u00271024\u0027),"},{"line_number":72,"context_line":"                     map_type\u003d\u0027flat\u0027,"},{"line_number":73,"context_line":"                     cost\u003ddecimal.Decimal(\u00274.2\u0027))"},{"line_number":74,"context_line":"        return sample"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_440d5536","line":73,"updated":"2016-06-07 14:58:02.000000000","message":"Should we include tenant_id in the sample?","commit_id":"fa8326a1b20a7a9e02cc2c93c3eeb94d5b843eec"}],"cloudkitty/rating/hash/db/api.py":[{"author":{"_account_id":7923,"name":"Gauvain Pocentek","email":"gauvainpocentek@gmail.com","username":"gpocentek"},"change_message_id":"e455ea1c9833218c772f4be0196f01589aea2d5d","unresolved":false,"context_lines":[{"line_number":261,"context_line":"                      field_uuid\u003dNone,"},{"line_number":262,"context_line":"                      group_uuid\u003dNone,"},{"line_number":263,"context_line":"                      no_group\u003dFalse,"},{"line_number":264,"context_line":"                      **kwargs):"},{"line_number":265,"context_line":"        \"\"\"Return an UUID list of every mapping."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        :param service_uuid: The service to filter on."}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_78c4f05e","line":264,"range":{"start_line":264,"start_character":24,"end_line":264,"end_character":30},"updated":"2016-06-02 10:03:44.000000000","message":"Any reason why you use **kwargs here and a named parameter in the other methods?","commit_id":"6e902176483edf779b1be763705f7b803552d882"},{"author":{"_account_id":7042,"name":"Stéphane Albert","email":"sheeprine@nullplace.com","username":"sheeprine"},"change_message_id":"de2b53bda1fe5f76e48dbe0af4dec0b6cbf566c3","unresolved":false,"context_lines":[{"line_number":261,"context_line":"                      field_uuid\u003dNone,"},{"line_number":262,"context_line":"                      group_uuid\u003dNone,"},{"line_number":263,"context_line":"                      no_group\u003dFalse,"},{"line_number":264,"context_line":"                      **kwargs):"},{"line_number":265,"context_line":"        \"\"\"Return an UUID list of every mapping."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        :param service_uuid: The service to filter on."}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_dbceb6b6","line":264,"range":{"start_line":264,"start_character":24,"end_line":264,"end_character":30},"in_reply_to":"9abb7d3a_78c4f05e","updated":"2016-06-02 10:15:32.000000000","message":"It enables us to do tri-state.\nIf it\u0027s in kwargs then we want to filter on it, if it\u0027s not then we don\u0027t filter on tenant.","commit_id":"6e902176483edf779b1be763705f7b803552d882"}],"cloudkitty/rating/hash/db/sqlalchemy/api.py":[{"author":{"_account_id":7923,"name":"Gauvain Pocentek","email":"gauvainpocentek@gmail.com","username":"gpocentek"},"change_message_id":"e455ea1c9833218c772f4be0196f01589aea2d5d","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                      field_uuid\u003dNone,"},{"line_number":169,"context_line":"                      group_uuid\u003dNone,"},{"line_number":170,"context_line":"                      no_group\u003dFalse,"},{"line_number":171,"context_line":"                      **kwargs):"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        session \u003d db.get_session()"},{"line_number":174,"context_line":"        q \u003d session.query(models.HashMapMapping)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_3878a82b","line":171,"range":{"start_line":171,"start_character":24,"end_line":171,"end_character":30},"updated":"2016-06-02 10:03:44.000000000","message":"Same comment about kwargs / named parameter.","commit_id":"6e902176483edf779b1be763705f7b803552d882"},{"author":{"_account_id":9642,"name":"Guillaume Espanel","email":"guillaume.espanel@gmail.com","username":"quatre"},"change_message_id":"501b4b9dcbbfd67a2da017d35c9de5654e0b0f6e","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        try:"},{"line_number":495,"context_line":"            r \u003d q.delete()"},{"line_number":496,"context_line":"        except Exception as e:"},{"line_number":497,"context_line":"            raise Exception(e.__dict__)"},{"line_number":498,"context_line":"        if not r:"},{"line_number":499,"context_line":"            raise api.NoSuchField(uuid)"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_242c8901","line":497,"updated":"2016-06-07 14:58:02.000000000","message":"Why this?","commit_id":"fa8326a1b20a7a9e02cc2c93c3eeb94d5b843eec"},{"author":{"_account_id":7042,"name":"Stéphane Albert","email":"sheeprine@nullplace.com","username":"sheeprine"},"change_message_id":"3cf9fd828e5fddcf6084fc7243e0a8c78cea64ec","unresolved":false,"context_lines":[{"line_number":494,"context_line":"        try:"},{"line_number":495,"context_line":"            r \u003d q.delete()"},{"line_number":496,"context_line":"        except Exception as e:"},{"line_number":497,"context_line":"            raise Exception(e.__dict__)"},{"line_number":498,"context_line":"        if not r:"},{"line_number":499,"context_line":"            raise api.NoSuchField(uuid)"},{"line_number":500,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_94940f37","line":497,"in_reply_to":"7aa08908_242c8901","updated":"2016-06-09 09:41:14.000000000","message":"Guess it was part of a debugging phase to catch what was the problem on the backend... Will remove it.","commit_id":"fa8326a1b20a7a9e02cc2c93c3eeb94d5b843eec"}]}
