)]}'
{"aodh/api/controllers/v2/alarms.py":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"6db97ab32735ef5e7efa443156a0c49f2725a9dc","unresolved":false,"context_lines":[{"line_number":629,"context_line":"        alarm_object.delete_actions()"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    @wsme_pecan.wsexpose([AlarmChange], [base.Query], base.Pagination)"},{"line_number":632,"context_line":"    def history(self, q\u003dNone, pagination\u003dNone):"},{"line_number":633,"context_line":"        \"\"\"Assembles the alarm history requested."},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"        :param q: Filter rules for the changes to be described."}],"source_content_type":"text/x-python","patch_set":16,"id":"dab17558_5e1fa207","line":632,"range":{"start_line":632,"start_character":30,"end_line":632,"end_character":40},"updated":"2016-05-11 02:17:32.000000000","message":"I prefer \"p\" than \"pagination\"","commit_id":"41ad03ee228c0a18a214d842c2500061feaec7c8"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"6db97ab32735ef5e7efa443156a0c49f2725a9dc","unresolved":false,"context_lines":[{"line_number":784,"context_line":"        return Alarm.from_db_model(alarm)"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    @wsme_pecan.wsexpose([Alarm], [base.Query], base.Pagination)"},{"line_number":787,"context_line":"    def get_all(self, q\u003dNone, pagination\u003dNone):"},{"line_number":788,"context_line":"        \"\"\"Return all alarms, based on the query provided."},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        :param q: Filter rules for the alarms to be returned."}],"source_content_type":"text/x-python","patch_set":16,"id":"dab17558_9e158ae6","line":787,"range":{"start_line":787,"start_character":30,"end_line":787,"end_character":40},"updated":"2016-05-11 02:17:32.000000000","message":"ditto","commit_id":"41ad03ee228c0a18a214d842c2500061feaec7c8"}],"aodh/api/controllers/v2/base.py":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"d8343594ea226f4a702c76de7d096b746221258a","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    \"The sort direction of pagination query\""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    @classmethod"},{"line_number":229,"context_line":"    def sampple(cls):"},{"line_number":230,"context_line":"        return cls(key\u003d\u0027key\u0027, dir\u003d\u0027desc\u0027)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":14,"id":"dab17558_5368efba","line":229,"range":{"start_line":229,"start_character":8,"end_line":229,"end_character":15},"updated":"2016-05-06 03:12:17.000000000","message":"typo","commit_id":"49dfbeaaecf8eb11ebcb58184dda9e6aee6f5720"}],"aodh/api/controllers/v2/utils.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"aad5c61938bea6a2bd9726d06fa64f3074643e7c","unresolved":false,"context_lines":[{"line_number":310,"context_line":"    for s in sort or []:"},{"line_number":311,"context_line":"        try:"},{"line_number":312,"context_line":"            sort_key, sort_dir \u003d s.split(\u0027:\u0027)"},{"line_number":313,"context_line":"            sorts.append((sort_key, sort_dir))"},{"line_number":314,"context_line":"        except ValueError:"},{"line_number":315,"context_line":"            raise wsme.exc.InvalidInput("},{"line_number":316,"context_line":"                \u0027sort\u0027, s, \"it should be a pair of sort key and sort \""}],"source_content_type":"text/x-python","patch_set":24,"id":"bab6814e_aa6bd91c","line":313,"range":{"start_line":313,"start_character":36,"end_line":313,"end_character":44},"updated":"2016-05-23 06:58:03.000000000","message":"sort_dir or \u0027desc\u0027 ?\n\nthen users can specify sort\u003dname,created_at instead of sort\u003dname:desc,created_at:desc\n\nthis is just for flexibility.","commit_id":"b33a8507e0f3d17f7cd2e49684e4fc2db0b3dbc2"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ac19a5f139b8115fd54c279b13c2d89edc4b13fd","unresolved":false,"context_lines":[{"line_number":310,"context_line":"    for s in sort or []:"},{"line_number":311,"context_line":"        try:"},{"line_number":312,"context_line":"            sort_key, sort_dir \u003d s.split(\u0027:\u0027)"},{"line_number":313,"context_line":"            sorts.append((sort_key, sort_dir))"},{"line_number":314,"context_line":"        except ValueError:"},{"line_number":315,"context_line":"            raise wsme.exc.InvalidInput("},{"line_number":316,"context_line":"                \u0027sort\u0027, s, \"it should be a pair of sort key and sort \""}],"source_content_type":"text/x-python","patch_set":24,"id":"bab6814e_e466b0b9","line":313,"range":{"start_line":313,"start_character":36,"end_line":313,"end_character":44},"in_reply_to":"bab6814e_aa6bd91c","updated":"2016-05-23 07:33:46.000000000","message":"has been done in latest patchset.","commit_id":"b33a8507e0f3d17f7cd2e49684e4fc2db0b3dbc2"}],"aodh/storage/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bf197822ce0e0a5aedce92113eee0d67c0ae14e3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"class InvalidPagination(Exception):"},{"line_number":54,"context_line":"    \"\"\"Invalid pagination query parameters\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self, msg):"},{"line_number":57,"context_line":"        super(InvalidPagination, self).__init__(msg)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def get_connection_from_config(conf):"}],"source_content_type":"text/x-python","patch_set":24,"id":"bab6814e_d29c475f","line":57,"range":{"start_line":56,"start_character":1,"end_line":57,"end_character":52},"updated":"2016-05-20 11:52:38.000000000","message":"This is useless :)","commit_id":"b33a8507e0f3d17f7cd2e49684e4fc2db0b3dbc2"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ac19a5f139b8115fd54c279b13c2d89edc4b13fd","unresolved":false,"context_lines":[{"line_number":53,"context_line":"class InvalidPagination(Exception):"},{"line_number":54,"context_line":"    \"\"\"Invalid pagination query parameters\"\"\""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self, msg):"},{"line_number":57,"context_line":"        super(InvalidPagination, self).__init__(msg)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def get_connection_from_config(conf):"}],"source_content_type":"text/x-python","patch_set":24,"id":"bab6814e_c443b311","line":57,"range":{"start_line":56,"start_character":1,"end_line":57,"end_character":52},"in_reply_to":"bab6814e_d29c475f","updated":"2016-05-23 07:33:46.000000000","message":"Done","commit_id":"b33a8507e0f3d17f7cd2e49684e4fc2db0b3dbc2"}],"aodh/storage/base.py":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"d8343594ea226f4a702c76de7d096b746221258a","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        self.sort_keys \u003d sort_keys or []"},{"line_number":83,"context_line":"        self.sort_dirs \u003d sort_dirs or []"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def get_marker_value_encoded(self):"},{"line_number":86,"context_line":"        \"\"\"Get the encoded marker value."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        The meter_id is generated by encoding resource_id and name."}],"source_content_type":"text/x-python","patch_set":14,"id":"dab17558_b3be7bd2","line":85,"range":{"start_line":85,"start_character":4,"end_line":85,"end_character":39},"updated":"2016-05-06 03:12:17.000000000","message":"don\u0027t need to encode marker, just use alarm_id, there is no resource and meter in aodh.","commit_id":"49dfbeaaecf8eb11ebcb58184dda9e6aee6f5720"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"fbd845750cef9005d29851391e07f0c6417e9583","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class ClientSideError(wsme.exc.ClientSideError):"},{"line_number":27,"context_line":"    def __init__(self, error, status_code\u003d400):"},{"line_number":28,"context_line":"        pecan.response.translatable_error \u003d error"},{"line_number":29,"context_line":"        super(ClientSideError, self).__init__(error, status_code)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_599b89c9","line":28,"range":{"start_line":28,"start_character":8,"end_line":28,"end_character":13},"updated":"2016-05-14 08:33:07.000000000","message":"import pecan","commit_id":"a7594bd7cf2c1726f02a672899a14a7af48d969e"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"fbd845750cef9005d29851391e07f0c6417e9583","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class MarkerNotFound(ClientSideError):"},{"line_number":33,"context_line":"    def __init__(self, api_model, marker):"},{"line_number":34,"context_line":"        msg \u003d _(\u0027%(api_model)s with %(marker)s cannot be found.\u0027) % {"},{"line_number":35,"context_line":"                    \u0027api_model\u0027: api_model, \u0027marker\u0027: marker}"},{"line_number":36,"context_line":"        super(MarkerNotFound, self).__init__(msg, status_code\u003d404)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_f9b4fd35","line":34,"range":{"start_line":34,"start_character":14,"end_line":34,"end_character":15},"updated":"2016-05-14 08:33:07.000000000","message":"from aodh.i18n import _","commit_id":"a7594bd7cf2c1726f02a672899a14a7af48d969e"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"fbd845750cef9005d29851391e07f0c6417e9583","unresolved":false,"context_lines":[{"line_number":32,"context_line":"class MarkerNotFound(ClientSideError):"},{"line_number":33,"context_line":"    def __init__(self, api_model, marker):"},{"line_number":34,"context_line":"        msg \u003d _(\u0027%(api_model)s with %(marker)s cannot be found.\u0027) % {"},{"line_number":35,"context_line":"                    \u0027api_model\u0027: api_model, \u0027marker\u0027: marker}"},{"line_number":36,"context_line":"        super(MarkerNotFound, self).__init__(msg, status_code\u003d404)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_997cd173","line":35,"range":{"start_line":35,"start_character":20,"end_line":35,"end_character":61},"updated":"2016-05-14 08:33:07.000000000","message":"continuation line over-indented for hanging indent","commit_id":"a7594bd7cf2c1726f02a672899a14a7af48d969e"}],"aodh/storage/impl_sqlalchemy.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bf197822ce0e0a5aedce92113eee0d67c0ae14e3","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        limit \u003d pagination.get(\u0027limit\u0027)"},{"line_number":169,"context_line":"        sort_keys \u003d [s[0] for s in pagination[\u0027sort\u0027]]"},{"line_number":170,"context_line":"        sort_dirs \u003d [s[1] for s in pagination[\u0027sort\u0027]]"},{"line_number":171,"context_line":"        query \u003d oslo_sql_utils.paginate_query("},{"line_number":172,"context_line":"            query, model, limit, sort_keys, sort_dirs\u003dsort_dirs, marker\u003dmarker)"},{"line_number":173,"context_line":"        return query"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"bab6814e_72ac7b8c","line":171,"range":{"start_line":171,"start_character":8,"end_line":171,"end_character":15},"updated":"2016-05-20 11:52:38.000000000","message":"return\n\n:)","commit_id":"b33a8507e0f3d17f7cd2e49684e4fc2db0b3dbc2"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ac19a5f139b8115fd54c279b13c2d89edc4b13fd","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        limit \u003d pagination.get(\u0027limit\u0027)"},{"line_number":169,"context_line":"        sort_keys \u003d [s[0] for s in pagination[\u0027sort\u0027]]"},{"line_number":170,"context_line":"        sort_dirs \u003d [s[1] for s in pagination[\u0027sort\u0027]]"},{"line_number":171,"context_line":"        query \u003d oslo_sql_utils.paginate_query("},{"line_number":172,"context_line":"            query, model, limit, sort_keys, sort_dirs\u003dsort_dirs, marker\u003dmarker)"},{"line_number":173,"context_line":"        return query"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"bab6814e_e4407709","line":171,"range":{"start_line":171,"start_character":8,"end_line":171,"end_character":15},"in_reply_to":"bab6814e_72ac7b8c","updated":"2016-05-23 07:33:46.000000000","message":"Done","commit_id":"b33a8507e0f3d17f7cd2e49684e4fc2db0b3dbc2"}],"aodh/storage/models.py":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"6db97ab32735ef5e7efa443156a0c49f2725a9dc","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    STATE_TRANSITION \u003d \u0027state transition\u0027"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    DEFAULT_SORT \u003d ((\u0027alarm_id\u0027, \u0027asc\u0027),)"},{"line_number":117,"context_line":"    API_PRIMARY_KEY \u003d (\u0027alarm_id\u0027,)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def __init__(self,"},{"line_number":120,"context_line":"                 event_id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"dab17558_9e50ead5","line":117,"range":{"start_line":117,"start_character":24,"end_line":117,"end_character":31},"updated":"2016-05-11 02:17:32.000000000","message":"the primary key of alarm history is \"event_id\", not \"alarm_id\".","commit_id":"41ad03ee228c0a18a214d842c2500061feaec7c8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bf197822ce0e0a5aedce92113eee0d67c0ae14e3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                           alarm evaluation."},{"line_number":69,"context_line":"    :param severity: Alarm level (low/moderate/critical)"},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, alarm_id, type, enabled, name, description,"},{"line_number":73,"context_line":"                 timestamp, user_id, project_id, state, state_timestamp,"},{"line_number":74,"context_line":"                 ok_actions, alarm_actions, insufficient_data_actions,"}],"source_content_type":"text/x-python","patch_set":24,"id":"bab6814e_d2b3a7e7","line":71,"updated":"2016-05-20 11:52:38.000000000","message":"WHYYYYY :D","commit_id":"b33a8507e0f3d17f7cd2e49684e4fc2db0b3dbc2"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ac19a5f139b8115fd54c279b13c2d89edc4b13fd","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                           alarm evaluation."},{"line_number":69,"context_line":"    :param severity: Alarm level (low/moderate/critical)"},{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, alarm_id, type, enabled, name, description,"},{"line_number":73,"context_line":"                 timestamp, user_id, project_id, state, state_timestamp,"},{"line_number":74,"context_line":"                 ok_actions, alarm_actions, insufficient_data_actions,"}],"source_content_type":"text/x-python","patch_set":24,"id":"bab6814e_843d2b91","line":71,"in_reply_to":"bab6814e_d2b3a7e7","updated":"2016-05-23 07:33:46.000000000","message":"Done","commit_id":"b33a8507e0f3d17f7cd2e49684e4fc2db0b3dbc2"}],"aodh/storage/sqlalchemy/utils.py":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"d8343594ea226f4a702c76de7d096b746221258a","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        return"},{"line_number":182,"context_line":"    marker_value \u003d pagination.marker_value"},{"line_number":183,"context_line":"    api_model_name \u003d api_model.__name__"},{"line_number":184,"context_line":"    if api_model_name \u003d\u003d \u0027Meter\u0027:"},{"line_number":185,"context_line":"        marker_value \u003d pagination.get_marker_value_encoded()"},{"line_number":186,"context_line":"    primary_keys \u003d api_model.API_PRIMARY_KEY"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"dab17558_13d147ce","line":184,"range":{"start_line":184,"start_character":25,"end_line":184,"end_character":31},"updated":"2016-05-06 03:12:17.000000000","message":"where is meter ?","commit_id":"49dfbeaaecf8eb11ebcb58184dda9e6aee6f5720"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"6db97ab32735ef5e7efa443156a0c49f2725a9dc","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        \u0027user_id\u0027: (models.Alarm, \u0027user_id\u0027),"},{"line_number":34,"context_line":"        \u0027type\u0027: (models.Alarm, \u0027type\u0027),"},{"line_number":35,"context_line":"        \u0027state_timestamp\u0027: (models.Alarm, \u0027state_timestamp\u0027)"},{"line_number":36,"context_line":"    }"},{"line_number":37,"context_line":"}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"dab17558_7ecc266a","line":36,"updated":"2016-05-11 02:17:32.000000000","message":"\"AlarmChange\" ?","commit_id":"41ad03ee228c0a18a214d842c2500061feaec7c8"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"6db97ab32735ef5e7efa443156a0c49f2725a9dc","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    api_model_name \u003d api_model.__name__"},{"line_number":184,"context_line":"    primary_keys \u003d api_model.API_PRIMARY_KEY"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    if not isinstance(marker_value, list):"},{"line_number":187,"context_line":"        marker_value \u003d [marker_value]"},{"line_number":188,"context_line":"    for key, value in zip(primary_keys, marker_value):"},{"line_number":189,"context_line":"        db_model, db_key \u003d MODEL_ATTRS_MAP[api_model_name][key]"}],"source_content_type":"text/x-python","patch_set":16,"id":"dab17558_bed96e24","line":186,"range":{"start_line":186,"start_character":11,"end_line":186,"end_character":41},"updated":"2016-05-11 02:17:32.000000000","message":"it shouldn\u0027t be a list","commit_id":"41ad03ee228c0a18a214d842c2500061feaec7c8"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"6db97ab32735ef5e7efa443156a0c49f2725a9dc","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    try:"},{"line_number":194,"context_line":"        ret \u003d query.one()"},{"line_number":195,"context_line":"    except exc.NoResultFound:"},{"line_number":196,"context_line":"        raise base.NoResultFound"},{"line_number":197,"context_line":"    return ret"}],"source_content_type":"text/x-python","patch_set":16,"id":"dab17558_3e6c5ecf","line":196,"range":{"start_line":196,"start_character":19,"end_line":196,"end_character":32},"updated":"2016-05-11 02:17:32.000000000","message":"didn\u0027t find this exception difinition","commit_id":"41ad03ee228c0a18a214d842c2500061feaec7c8"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"fbd845750cef9005d29851391e07f0c6417e9583","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \u0027type\u0027: (models.Alarm, \u0027type\u0027),"},{"line_number":35,"context_line":"        \u0027state_timestamp\u0027: (models.Alarm, \u0027state_timestamp\u0027)"},{"line_number":36,"context_line":"    },"},{"line_number":37,"context_line":"    \u0027AlarmChange\u0027:{"},{"line_number":38,"context_line":"        \u0027event_id\u0027: (models.AlarmChange, \u0027event_id\u0027),"},{"line_number":39,"context_line":"        \u0027alarm_id\u0027: (models.AlarmChange, \u0027alarm_id\u0027),"},{"line_number":40,"context_line":"        \u0027type\u0027: (models.AlarmChange, \u0027type\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"dab17558_f95d1d16","line":37,"range":{"start_line":37,"start_character":17,"end_line":37,"end_character":18},"updated":"2016-05-14 08:33:07.000000000","message":"missing whitespace after \u0027:\u0027","commit_id":"a7594bd7cf2c1726f02a672899a14a7af48d969e"}],"aodh/tests/functional/api/v2/test_alarm_scenarios.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"2364a1a657f6786001b78b4cc61428bc7cb419e1","unresolved":false,"context_lines":[{"line_number":3291,"context_line":"        data \u003d self.get_json(\u0027/alarms\u0027, headers\u003dself.auth_headers)"},{"line_number":3292,"context_line":"        self.assertEqual(8, len(data))"},{"line_number":3293,"context_line":"        sort_url \u003d (\u0027/alarms?p.sort.key\u003dname\u0026p.sort.dir\u003ddesc\u0026p.sort.key\u003d\u0027"},{"line_number":3294,"context_line":"                    \u0027alarm_id\u0026p.sort.dir\u003dasc\u0027)"},{"line_number":3295,"context_line":"        data \u003d self.get_json(sort_url, headers\u003dself.auth_headers)"},{"line_number":3296,"context_line":"        name_ids \u003d [(a[\u0027name\u0027], a[\u0027alarm_id\u0027]) for a in data]"},{"line_number":3297,"context_line":"        expected \u003d [(\u0027name4\u0027, \u0027d\u0027), (\u0027name4\u0027, \u0027h\u0027), (\u0027name3\u0027, \u0027c\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"bab6814e_30655de1","line":3294,"updated":"2016-05-18 08:16:31.000000000","message":"This syntax differs from Gnocchi that use:\n\n  \"?sort\u003dname:desc\u0026sort\u003dalarm_id:asc\u0026marker\u003dfoo\" \n\nIt also not the same as Nova for example that uses: \n\n  \"?sort_key\u003dname\u0026sort_dir\u003ddesc\u0026sort_key\u003dalarm_id\u0026sort_dir\u003dasc\u0026marker\u003dfoo\"","commit_id":"4eb41674f8ddaa683726e854f0b47f7e1638d65c"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"5ee556189d32bca3d45dbccce2a0f40c3ff85ebe","unresolved":false,"context_lines":[{"line_number":3291,"context_line":"        data \u003d self.get_json(\u0027/alarms\u0027, headers\u003dself.auth_headers)"},{"line_number":3292,"context_line":"        self.assertEqual(8, len(data))"},{"line_number":3293,"context_line":"        sort_url \u003d (\u0027/alarms?p.sort.key\u003dname\u0026p.sort.dir\u003ddesc\u0026p.sort.key\u003d\u0027"},{"line_number":3294,"context_line":"                    \u0027alarm_id\u0026p.sort.dir\u003dasc\u0027)"},{"line_number":3295,"context_line":"        data \u003d self.get_json(sort_url, headers\u003dself.auth_headers)"},{"line_number":3296,"context_line":"        name_ids \u003d [(a[\u0027name\u0027], a[\u0027alarm_id\u0027]) for a in data]"},{"line_number":3297,"context_line":"        expected \u003d [(\u0027name4\u0027, \u0027d\u0027), (\u0027name4\u0027, \u0027h\u0027), (\u0027name3\u0027, \u0027c\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"bab6814e_4badd630","line":3294,"in_reply_to":"bab6814e_30655de1","updated":"2016-05-18 08:40:04.000000000","message":"Hi sileht, thanks for your pointing, this is similar with the query parameter, e.g. \"?q.user_id\u003dxxx\" and based on the pecan API model. \n\nI will try to change this to be same usage as Gnocchi.","commit_id":"4eb41674f8ddaa683726e854f0b47f7e1638d65c"}]}
