)]}'
{"monasca_common/rest/utils.py":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"364285540c07e110ea10831cf6703c809a6e97c9","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ENCODING \u003d \u0027utf8\u0027"},{"line_number":22,"context_line":"_DEFAULT_CONTENT_TYPE \u003d \u0027application/json\u0027"},{"line_number":23,"context_line":"_READABLE_CONTENT_TYPES \u003d [\u0027application/json\u0027, \u0027text/plain\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class UnsupportedContentType(Exception):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_fc508a60","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":23},"updated":"2016-01-08 02:02:49.000000000","message":"I guess you are adding the _ prefix to specify that these values are private to this module. \n\nHowever, we haven\u0027t been using that convention anywhere else.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"0d9d2530e8ede3b2d572ac45830e91c0ac0b31b4","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ENCODING \u003d \u0027utf8\u0027"},{"line_number":22,"context_line":"_DEFAULT_CONTENT_TYPE \u003d \u0027application/json\u0027"},{"line_number":23,"context_line":"_READABLE_CONTENT_TYPES \u003d [\u0027application/json\u0027, \u0027text/plain\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class UnsupportedContentType(Exception):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_1cb45acf","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":23},"in_reply_to":"fa69d971_4c8bf268","updated":"2016-01-19 20:46:04.000000000","message":"OK","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d015d6a18c2ebdef17c3a738f86245395f17283f","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"ENCODING \u003d \u0027utf8\u0027"},{"line_number":22,"context_line":"_DEFAULT_CONTENT_TYPE \u003d \u0027application/json\u0027"},{"line_number":23,"context_line":"_READABLE_CONTENT_TYPES \u003d [\u0027application/json\u0027, \u0027text/plain\u0027]"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class UnsupportedContentType(Exception):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_4c8bf268","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":23},"in_reply_to":"fa69d971_fc508a60","updated":"2016-01-08 13:32:25.000000000","message":"That\u0027s more or less python convention to indicate that privacy. I am not sure, but if you find it problematic, I don\u0027t see a point in arguing to keep it that way.\n\nBut, I have another idea. I\u0027ll create two fields to mark application/json and text/plain to be used in read_body as content_type but I\u0027ll keep _READABLE_CONTENT_TYPES marked private.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"364285540c07e110ea10831cf6703c809a6e97c9","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class UnsupportedContentType(Exception):"},{"line_number":27,"context_line":"    \"\"\"Exception throw if content type is not supported.\"\"\""},{"line_number":28,"context_line":"    pass"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def read_body(payload, content_type\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_fc0f2a2c","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":4},"updated":"2016-01-08 02:02:49.000000000","message":"Would like to see this exception put in a separate filed for exceptions. For example, in the monasca-api, we have a separate file for exceptions created by the repositories. \n\nSee, https://github.com/openstack/monasca-api/blob/master/monasca_api/common/repositories/exceptions.py.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d015d6a18c2ebdef17c3a738f86245395f17283f","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class UnsupportedContentType(Exception):"},{"line_number":27,"context_line":"    \"\"\"Exception throw if content type is not supported.\"\"\""},{"line_number":28,"context_line":"    pass"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def read_body(payload, content_type\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_8c0eca30","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":4},"in_reply_to":"fa69d971_fc0f2a2c","updated":"2016-01-08 13:32:25.000000000","message":"Nice idea, I will make it happen :).","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"364285540c07e110ea10831cf6703c809a6e97c9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    pass"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def read_body(payload, content_type\u003dNone):"},{"line_number":32,"context_line":"    \"\"\"Reads HTTP payload according to given content_type."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Function is capable of reading from payload stream."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_1cfd5e6e","line":31,"range":{"start_line":31,"start_character":23,"end_line":31,"end_character":35},"updated":"2016-01-08 02:02:49.000000000","message":"I think it would be cleared if content_type\u003d_DEFAULT_CONTENT_TYPE in the parameter list.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d015d6a18c2ebdef17c3a738f86245395f17283f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    pass"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def read_body(payload, content_type\u003dNone):"},{"line_number":32,"context_line":"    \"\"\"Reads HTTP payload according to given content_type."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Function is capable of reading from payload stream."}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_ccf5a2ed","line":31,"range":{"start_line":31,"start_character":23,"end_line":31,"end_character":35},"in_reply_to":"fa69d971_1cfd5e6e","updated":"2016-01-08 13:32:25.000000000","message":"I had that originally, but one of my colleagues, who is much better experienced in Python, told me that current approach is slightly better. However, I think I might check that once again. On the other hand , that will take few lines away :).","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"0d9d2530e8ede3b2d572ac45830e91c0ac0b31b4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    pass"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def read_body(payload, content_type\u003dNone):"},{"line_number":32,"context_line":"    \"\"\"Reads HTTP payload according to given content_type."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    Function is capable of reading from payload stream."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_5ce172cf","line":31,"range":{"start_line":31,"start_character":23,"end_line":31,"end_character":35},"in_reply_to":"fa69d971_ccf5a2ed","updated":"2016-01-19 20:46:04.000000000","message":"OK.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"364285540c07e110ea10831cf6703c809a6e97c9","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    if not content_type:"},{"line_number":60,"context_line":"        content_type \u003d _DEFAULT_CONTENT_TYPE"},{"line_number":61,"context_line":"    elif content_type not in _READABLE_CONTENT_TYPES:"},{"line_number":62,"context_line":"        raise UnsupportedContentType((\u0027Cannot read %s, not in %s\u0027 %"},{"line_number":63,"context_line":"                                      (content_type, _READABLE_CONTENT_TYPES)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_dcf7c68a","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":20},"updated":"2016-01-08 02:02:49.000000000","message":"I think it would be clearer if content_type\u003d_DEFAULT_CONTENT_TYPE in the parameter list.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"66612fb0a14f0f2a9ee056d4cbf185b49810733c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    if not content_type:"},{"line_number":60,"context_line":"        content_type \u003d _DEFAULT_CONTENT_TYPE"},{"line_number":61,"context_line":"    elif content_type not in _READABLE_CONTENT_TYPES:"},{"line_number":62,"context_line":"        raise UnsupportedContentType((\u0027Cannot read %s, not in %s\u0027 %"},{"line_number":63,"context_line":"                                      (content_type, _READABLE_CONTENT_TYPES)))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_bdc2a5e7","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":20},"in_reply_to":"fa69d971_dcf7c68a","updated":"2016-01-11 08:22:54.000000000","message":"Done","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"364285540c07e110ea10831cf6703c809a6e97c9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    try:"},{"line_number":66,"context_line":"        content \u003d payload.read()"},{"line_number":67,"context_line":"        if not content:"},{"line_number":68,"context_line":"            return False"},{"line_number":69,"context_line":"    except Exception:"},{"line_number":70,"context_line":"        LOG.exception(\u0027Failed to read a payload stream\u0027)"},{"line_number":71,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_d7123f58","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":18},"updated":"2016-01-08 02:02:49.000000000","message":"So, this function returns False if there is no content, and it returns the json or text content if there is content.\n\nI think it would be clearer to return None, rather than False, in this case. Returning multiple types based on the success/failure seems a little more difficult of the client of this method to have to account for.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d015d6a18c2ebdef17c3a738f86245395f17283f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    try:"},{"line_number":66,"context_line":"        content \u003d payload.read()"},{"line_number":67,"context_line":"        if not content:"},{"line_number":68,"context_line":"            return False"},{"line_number":69,"context_line":"    except Exception:"},{"line_number":70,"context_line":"        LOG.exception(\u0027Failed to read a payload stream\u0027)"},{"line_number":71,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_eeadfb88","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":18},"in_reply_to":"fa69d971_d7123f58","updated":"2016-01-08 13:32:25.000000000","message":"Correct, I will fix it.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"66612fb0a14f0f2a9ee056d4cbf185b49810733c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    try:"},{"line_number":66,"context_line":"        content \u003d payload.read()"},{"line_number":67,"context_line":"        if not content:"},{"line_number":68,"context_line":"            return False"},{"line_number":69,"context_line":"    except Exception:"},{"line_number":70,"context_line":"        LOG.exception(\u0027Failed to read a payload stream\u0027)"},{"line_number":71,"context_line":"        raise"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_fd8d7dd3","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":18},"in_reply_to":"fa69d971_eeadfb88","updated":"2016-01-11 08:22:54.000000000","message":"Done","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"364285540c07e110ea10831cf6703c809a6e97c9","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        if not content:"},{"line_number":68,"context_line":"            return False"},{"line_number":69,"context_line":"    except Exception:"},{"line_number":70,"context_line":"        LOG.exception(\u0027Failed to read a payload stream\u0027)"},{"line_number":71,"context_line":"        raise"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_f7e3c303","line":70,"range":{"start_line":70,"start_character":8,"end_line":70,"end_character":11},"updated":"2016-01-08 02:02:49.000000000","message":"With most of these common methods, it might be better to create and return exceptions, similar to the UnsupportedContentType exception rather than just logging and then throwing whatever exception was thrown.\n\nIn this case there is no content in the message request body. Is that really an exception that should be propogated up, or something that should just result in a no-op.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d015d6a18c2ebdef17c3a738f86245395f17283f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        if not content:"},{"line_number":68,"context_line":"            return False"},{"line_number":69,"context_line":"    except Exception:"},{"line_number":70,"context_line":"        LOG.exception(\u0027Failed to read a payload stream\u0027)"},{"line_number":71,"context_line":"        raise"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_ae7943fe","line":70,"range":{"start_line":70,"start_character":8,"end_line":70,"end_character":11},"in_reply_to":"fa69d971_f7e3c303","updated":"2016-01-08 13:32:25.000000000","message":"So, what you\u0027re saying, is to add custom Exception (i.e. DataReadException) and throw it without logging ?","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"364285540c07e110ea10831cf6703c809a6e97c9","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            content \u003d from_json(content)"},{"line_number":76,"context_line":"    except Exception:"},{"line_number":77,"context_line":"        LOG.exception(\u0027Failed to read body as %s\u0027, content_type)"},{"line_number":78,"context_line":"        raise"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    return content"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_57bbaf75","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":13},"updated":"2016-01-08 02:02:49.000000000","message":"It is not possible to translate the request body to json.  Ultimately, you wold like to return a Bad Request or Unprocessable Entity to the user. Would it be better to just throw that type of exception here, rather than re-throwing the exception, and requiring the client to catch and process further.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"0d9d2530e8ede3b2d572ac45830e91c0ac0b31b4","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            content \u003d from_json(content)"},{"line_number":76,"context_line":"    except Exception:"},{"line_number":77,"context_line":"        LOG.exception(\u0027Failed to read body as %s\u0027, content_type)"},{"line_number":78,"context_line":"        raise"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    return content"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_5c1c1277","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":13},"in_reply_to":"fa69d971_2e78f3c3","updated":"2016-01-19 20:46:04.000000000","message":"I think you are correct. As monasca-common doesn\u0027t have a dependency on Falcon yet, it probably would be good to try and maintain that.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d015d6a18c2ebdef17c3a738f86245395f17283f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            content \u003d from_json(content)"},{"line_number":76,"context_line":"    except Exception:"},{"line_number":77,"context_line":"        LOG.exception(\u0027Failed to read body as %s\u0027, content_type)"},{"line_number":78,"context_line":"        raise"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    return content"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_2e78f3c3","line":78,"range":{"start_line":78,"start_character":8,"end_line":78,"end_character":13},"in_reply_to":"fa69d971_57bbaf75","updated":"2016-01-08 13:32:25.000000000","message":"Hmm...I haven\u0027t checked if monasca-common has appropriate dependency to match Falcon exception for instance. If not, do you think it\u0027d be good to add it at this, somehow, lower level. After all that is library that supports monasca-api and the rest of monasca-* stuff, introducing library with exceptions you\u0027ve mentioned seems to much, doesn\u0027t it ?","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"364285540c07e110ea10831cf6703c809a6e97c9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    \"\"\""},{"line_number":89,"context_line":"    return json.dumps(data,"},{"line_number":90,"context_line":"                      sort_keys\u003dFalse,"},{"line_number":91,"context_line":"                      ensure_ascii\u003dFalse).encoding(ENCODING)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def from_json(data):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_373f1bd8","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":34},"updated":"2016-01-08 02:02:49.000000000","message":"Do you want to catch exceptions from dumps, and handle in some way?","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"66612fb0a14f0f2a9ee056d4cbf185b49810733c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    \"\"\""},{"line_number":89,"context_line":"    return json.dumps(data,"},{"line_number":90,"context_line":"                      sort_keys\u003dFalse,"},{"line_number":91,"context_line":"                      ensure_ascii\u003dFalse).encoding(ENCODING)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def from_json(data):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_12915bf1","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":34},"in_reply_to":"fa69d971_0e540f1f","updated":"2016-01-11 08:22:54.000000000","message":"Done","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"},{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"d015d6a18c2ebdef17c3a738f86245395f17283f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    \"\"\""},{"line_number":89,"context_line":"    return json.dumps(data,"},{"line_number":90,"context_line":"                      sort_keys\u003dFalse,"},{"line_number":91,"context_line":"                      ensure_ascii\u003dFalse).encoding(ENCODING)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def from_json(data):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_0e540f1f","line":91,"range":{"start_line":91,"start_character":22,"end_line":91,"end_character":34},"in_reply_to":"fa69d971_373f1bd8","updated":"2016-01-08 13:32:25.000000000","message":"Yes, perhaps it is nice idea to think about something decent here.","commit_id":"4d4bdeef4c54fabefd6180e7d60a2fa9688236d2"}],"monasca_common/tests/test_rest_utils.py":[{"author":{"_account_id":16168,"name":"Tomasz Trębski","email":"kornicameister@gmail.com","username":"trebskit"},"change_message_id":"c9b9a370261961ac2b6b181baae4147e4b3a9c53","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 kornicameister@gmail.com"},{"line_number":2,"context_line":"# Copyright 2015 FUJITSU LIMITED"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a740942_b03754af","line":1,"updated":"2015-12-10 19:57:21.000000000","message":"That will be removed. Sorry for that.","commit_id":"529b3fcae447368802fb2061bd1c2b753f2f31dd"}]}
