)]}'
{"fenix/api/context.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        raise exceptions.ServiceCatalogNotFound()"},{"line_number":29,"context_line":"    except TypeError:"},{"line_number":30,"context_line":"        raise exceptions.WrongFormat()"},{"line_number":31,"context_line":"    if \u0027X-User-Id\u0027 in headers:"},{"line_number":32,"context_line":"        user_id \u003d headers[\u0027X-User-Id\u0027]"},{"line_number":33,"context_line":"    else:"},{"line_number":34,"context_line":"        user_id \u003d None"},{"line_number":35,"context_line":"    if \u0027X-Project-Id\u0027 in headers:"},{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_172a252b","line":34,"range":{"start_line":31,"start_character":0,"end_line":34,"end_character":22},"updated":"2019-06-26 06:58:14.000000000","message":"user_id \u003d headers.get(\u0027X-User-Id\u0027, None)","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        raise exceptions.ServiceCatalogNotFound()"},{"line_number":29,"context_line":"    except TypeError:"},{"line_number":30,"context_line":"        raise exceptions.WrongFormat()"},{"line_number":31,"context_line":"    if \u0027X-User-Id\u0027 in headers:"},{"line_number":32,"context_line":"        user_id \u003d headers[\u0027X-User-Id\u0027]"},{"line_number":33,"context_line":"    else:"},{"line_number":34,"context_line":"        user_id \u003d None"},{"line_number":35,"context_line":"    if \u0027X-Project-Id\u0027 in headers:"},{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_999ac711","line":34,"range":{"start_line":31,"start_character":0,"end_line":34,"end_character":22},"in_reply_to":"9fb8cfa7_172a252b","updated":"2019-06-26 10:30:45.000000000","message":"Thanks, I need to revisit all these","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        raise exceptions.ServiceCatalogNotFound()"},{"line_number":29,"context_line":"    except TypeError:"},{"line_number":30,"context_line":"        raise exceptions.WrongFormat()"},{"line_number":31,"context_line":"    if \u0027X-User-Id\u0027 in headers:"},{"line_number":32,"context_line":"        user_id \u003d headers[\u0027X-User-Id\u0027]"},{"line_number":33,"context_line":"    else:"},{"line_number":34,"context_line":"        user_id \u003d None"},{"line_number":35,"context_line":"    if \u0027X-Project-Id\u0027 in headers:"},{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_b4e9c01a","line":34,"range":{"start_line":31,"start_character":0,"end_line":34,"end_character":22},"in_reply_to":"9fb8cfa7_999ac711","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        user_id \u003d headers[\u0027X-User-Id\u0027]"},{"line_number":33,"context_line":"    else:"},{"line_number":34,"context_line":"        user_id \u003d None"},{"line_number":35,"context_line":"    if \u0027X-Project-Id\u0027 in headers:"},{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"},{"line_number":38,"context_line":"        project_id \u003d None"},{"line_number":39,"context_line":"    if \u0027X-Auth-Token\u0027 in headers:"},{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_b7223951","line":38,"range":{"start_line":35,"start_character":0,"end_line":38,"end_character":25},"updated":"2019-06-26 06:58:14.000000000","message":"project_id \u003d headers.get(\u0027X-Project-Id\u0027, None)","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        user_id \u003d headers[\u0027X-User-Id\u0027]"},{"line_number":33,"context_line":"    else:"},{"line_number":34,"context_line":"        user_id \u003d None"},{"line_number":35,"context_line":"    if \u0027X-Project-Id\u0027 in headers:"},{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"},{"line_number":38,"context_line":"        project_id \u003d None"},{"line_number":39,"context_line":"    if \u0027X-Auth-Token\u0027 in headers:"},{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_d4eeb420","line":38,"range":{"start_line":35,"start_character":0,"end_line":38,"end_character":25},"in_reply_to":"9fb8cfa7_399b9b17","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        user_id \u003d headers[\u0027X-User-Id\u0027]"},{"line_number":33,"context_line":"    else:"},{"line_number":34,"context_line":"        user_id \u003d None"},{"line_number":35,"context_line":"    if \u0027X-Project-Id\u0027 in headers:"},{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"},{"line_number":38,"context_line":"        project_id \u003d None"},{"line_number":39,"context_line":"    if \u0027X-Auth-Token\u0027 in headers:"},{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_399b9b17","line":38,"range":{"start_line":35,"start_character":0,"end_line":38,"end_character":25},"in_reply_to":"9fb8cfa7_b7223951","updated":"2019-06-26 10:30:45.000000000","message":"Thanks, I need to revisit all these","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"},{"line_number":38,"context_line":"        project_id \u003d None"},{"line_number":39,"context_line":"    if \u0027X-Auth-Token\u0027 in headers:"},{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        auth_token \u003d None"},{"line_number":43,"context_line":"    if \u0027X-User-Name\u0027 in headers:"},{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_9715b5e7","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":25},"updated":"2019-06-26 06:58:14.000000000","message":"auth_token \u003d headers.get(\u0027X-Auth-Token\u0027, None)","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"},{"line_number":38,"context_line":"        project_id \u003d None"},{"line_number":39,"context_line":"    if \u0027X-Auth-Token\u0027 in headers:"},{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        auth_token \u003d None"},{"line_number":43,"context_line":"    if \u0027X-User-Name\u0027 in headers:"},{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_74efc81c","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":25},"in_reply_to":"9fb8cfa7_9715b5e7","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        project_id \u003d headers[\u0027X-Project-Id\u0027]"},{"line_number":37,"context_line":"    else:"},{"line_number":38,"context_line":"        project_id \u003d None"},{"line_number":39,"context_line":"    if \u0027X-Auth-Token\u0027 in headers:"},{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        auth_token \u003d None"},{"line_number":43,"context_line":"    if \u0027X-User-Name\u0027 in headers:"},{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_59a0cf42","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":25},"in_reply_to":"9fb8cfa7_9715b5e7","updated":"2019-06-26 10:30:45.000000000","message":"Thanks, I need to revisit all these","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        auth_token \u003d None"},{"line_number":43,"context_line":"    if \u0027X-User-Name\u0027 in headers:"},{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"},{"line_number":46,"context_line":"        user_name \u003d None"},{"line_number":47,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_57d97d54","line":46,"range":{"start_line":43,"start_character":1,"end_line":46,"end_character":24},"updated":"2019-06-26 06:58:14.000000000","message":"user_name \u003d headers.get(\u0027X-User-Name\u0027, None)","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        auth_token \u003d None"},{"line_number":43,"context_line":"    if \u0027X-User-Name\u0027 in headers:"},{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"},{"line_number":46,"context_line":"        user_name \u003d None"},{"line_number":47,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_f988a3c6","line":46,"range":{"start_line":43,"start_character":1,"end_line":46,"end_character":24},"in_reply_to":"9fb8cfa7_57d97d54","updated":"2019-06-26 10:30:45.000000000","message":"Thanks, I need to revisit all these","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        auth_token \u003d headers[\u0027X-Auth-Token\u0027]"},{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        auth_token \u003d None"},{"line_number":43,"context_line":"    if \u0027X-User-Name\u0027 in headers:"},{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"},{"line_number":46,"context_line":"        user_name \u003d None"},{"line_number":47,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_94f4bcf2","line":46,"range":{"start_line":43,"start_character":1,"end_line":46,"end_character":24},"in_reply_to":"9fb8cfa7_f988a3c6","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"},{"line_number":46,"context_line":"        user_name \u003d None"},{"line_number":47,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"},{"line_number":50,"context_line":"        project_name \u003d None"},{"line_number":51,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_17df853a","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":27},"updated":"2019-06-26 06:58:14.000000000","message":"project_name \u003d headers.get(\u0027X-Project-Name\u0027, None)","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"},{"line_number":46,"context_line":"        user_name \u003d None"},{"line_number":47,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"},{"line_number":50,"context_line":"        project_name \u003d None"},{"line_number":51,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_b98eabce","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":27},"in_reply_to":"9fb8cfa7_17df853a","updated":"2019-06-26 10:30:45.000000000","message":"Thanks, I need to revisit all these","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        user_name \u003d headers[\u0027X-User-Name\u0027]"},{"line_number":45,"context_line":"    else:"},{"line_number":46,"context_line":"        user_name \u003d None"},{"line_number":47,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"},{"line_number":50,"context_line":"        project_name \u003d None"},{"line_number":51,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_34ddd06f","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":27},"in_reply_to":"9fb8cfa7_b98eabce","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"},{"line_number":50,"context_line":"        project_name \u003d None"},{"line_number":51,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"},{"line_number":54,"context_line":"        project_name \u003d None"},{"line_number":55,"context_line":"    if \u0027X-Roles\u0027 in headers:"},{"line_number":56,"context_line":"        roles \u003d list(map(six.text_type.strip, headers[\u0027X-Roles\u0027].split(\u0027,\u0027)))"},{"line_number":57,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_b7e79912","line":54,"range":{"start_line":51,"start_character":0,"end_line":54,"end_character":27},"updated":"2019-06-26 06:58:14.000000000","message":"\u0027project_name\u0027 duplicate","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"},{"line_number":50,"context_line":"        project_name \u003d None"},{"line_number":51,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"},{"line_number":54,"context_line":"        project_name \u003d None"},{"line_number":55,"context_line":"    if \u0027X-Roles\u0027 in headers:"},{"line_number":56,"context_line":"        roles \u003d list(map(six.text_type.strip, headers[\u0027X-Roles\u0027].split(\u0027,\u0027)))"},{"line_number":57,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_54dac477","line":54,"range":{"start_line":51,"start_character":0,"end_line":54,"end_character":27},"in_reply_to":"9fb8cfa7_79bef365","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":49,"context_line":"    else:"},{"line_number":50,"context_line":"        project_name \u003d None"},{"line_number":51,"context_line":"    if \u0027X-Project-Name\u0027 in headers:"},{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"},{"line_number":54,"context_line":"        project_name \u003d None"},{"line_number":55,"context_line":"    if \u0027X-Roles\u0027 in headers:"},{"line_number":56,"context_line":"        roles \u003d list(map(six.text_type.strip, headers[\u0027X-Roles\u0027].split(\u0027,\u0027)))"},{"line_number":57,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_79bef365","line":54,"range":{"start_line":51,"start_character":0,"end_line":54,"end_character":27},"in_reply_to":"9fb8cfa7_b7e79912","updated":"2019-06-26 10:30:45.000000000","message":"Thanks, my copy/paste bad","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"},{"line_number":54,"context_line":"        project_name \u003d None"},{"line_number":55,"context_line":"    if \u0027X-Roles\u0027 in headers:"},{"line_number":56,"context_line":"        roles \u003d list(map(six.text_type.strip, headers[\u0027X-Roles\u0027].split(\u0027,\u0027)))"},{"line_number":57,"context_line":"    else:"},{"line_number":58,"context_line":"        roles \u003d None"},{"line_number":59,"context_line":"    return context.FenixContext("},{"line_number":60,"context_line":"        user_id\u003duser_id,"},{"line_number":61,"context_line":"        project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_f7a751bb","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":20},"updated":"2019-06-26 06:58:14.000000000","message":"roles \u003d headers.get(\u0027X-Roles\u0027, None)\nif roles:\n    roles \u003d list(map(six.text_type.strip, roles.split(\u0027,\u0027)))","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"},{"line_number":54,"context_line":"        project_name \u003d None"},{"line_number":55,"context_line":"    if \u0027X-Roles\u0027 in headers:"},{"line_number":56,"context_line":"        roles \u003d list(map(six.text_type.strip, headers[\u0027X-Roles\u0027].split(\u0027,\u0027)))"},{"line_number":57,"context_line":"    else:"},{"line_number":58,"context_line":"        roles \u003d None"},{"line_number":59,"context_line":"    return context.FenixContext("},{"line_number":60,"context_line":"        user_id\u003duser_id,"},{"line_number":61,"context_line":"        project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_f9b18390","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":20},"in_reply_to":"9fb8cfa7_f7a751bb","updated":"2019-06-26 10:30:45.000000000","message":"Thanks","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        project_name \u003d headers[\u0027X-Project-Name\u0027]"},{"line_number":53,"context_line":"    else:"},{"line_number":54,"context_line":"        project_name \u003d None"},{"line_number":55,"context_line":"    if \u0027X-Roles\u0027 in headers:"},{"line_number":56,"context_line":"        roles \u003d list(map(six.text_type.strip, headers[\u0027X-Roles\u0027].split(\u0027,\u0027)))"},{"line_number":57,"context_line":"    else:"},{"line_number":58,"context_line":"        roles \u003d None"},{"line_number":59,"context_line":"    return context.FenixContext("},{"line_number":60,"context_line":"        user_id\u003duser_id,"},{"line_number":61,"context_line":"        project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_14e0cc25","line":58,"range":{"start_line":55,"start_character":0,"end_line":58,"end_character":20},"in_reply_to":"9fb8cfa7_f9b18390","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"}],"fenix/api/root.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @pecan.expose(content_type\u003d\u0027application/json\u0027)"},{"line_number":34,"context_line":"    def index(self):"},{"line_number":35,"context_line":"        pecan.response.status_code \u003d 300"},{"line_number":36,"context_line":"        pecan.response.content_type \u003d \u0027application/json\u0027"},{"line_number":37,"context_line":"        versions \u003d {\"versions\": []}"},{"line_number":38,"context_line":"        self._append_versions_from_controller(versions[\u0027versions\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_378ba91f","line":35,"range":{"start_line":35,"start_character":37,"end_line":35,"end_character":40},"updated":"2019-06-26 06:58:14.000000000","message":"Why does the request have more than one possible responses?","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @pecan.expose(content_type\u003d\u0027application/json\u0027)"},{"line_number":34,"context_line":"    def index(self):"},{"line_number":35,"context_line":"        pecan.response.status_code \u003d 300"},{"line_number":36,"context_line":"        pecan.response.content_type \u003d \u0027application/json\u0027"},{"line_number":37,"context_line":"        versions \u003d {\"versions\": []}"},{"line_number":38,"context_line":"        self._append_versions_from_controller(versions[\u0027versions\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_9c2dd596","line":35,"range":{"start_line":35,"start_character":37,"end_line":35,"end_character":40},"in_reply_to":"9fb8cfa7_378ba91f","updated":"2019-06-26 10:30:45.000000000","message":"ok, so I have looked example with more that one version while we only have one. Actually, this seems correct behavior as at least heat also have 300, while returns list with only one version. So the result is always a list of versions while you would only have one.","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"}],"fenix/api/v1/controllers/maintenance.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        data \u003d json.loads(request.body.decode(\u0027utf8\u0027))"},{"line_number":123,"context_line":"        session \u003d self.engine_rpcapi.admin_create_session(data)"},{"line_number":124,"context_line":"        if session is None:"},{"line_number":125,"context_line":"            response.status \u003d 509"},{"line_number":126,"context_line":"            return {\"error\": \"Too many sessions\"}"},{"line_number":127,"context_line":"        response.body \u003d jsonutils.dumps(session)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_b789d9ca","line":125,"range":{"start_line":125,"start_character":30,"end_line":125,"end_character":33},"updated":"2019-06-26 06:58:14.000000000","message":"Is there any other reason that we cannot get the session besides bw limit?","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        data \u003d json.loads(request.body.decode(\u0027utf8\u0027))"},{"line_number":123,"context_line":"        session \u003d self.engine_rpcapi.admin_create_session(data)"},{"line_number":124,"context_line":"        if session is None:"},{"line_number":125,"context_line":"            response.status \u003d 509"},{"line_number":126,"context_line":"            return {\"error\": \"Too many sessions\"}"},{"line_number":127,"context_line":"        response.body \u003d jsonutils.dumps(session)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_3ca149f8","line":125,"range":{"start_line":125,"start_character":30,"end_line":125,"end_character":33},"in_reply_to":"9fb8cfa7_b789d9ca","updated":"2019-06-26 10:30:45.000000000","message":"admin_create_session will only return currently None in this case, so this is ok. Surely it is another story to have all \"engine\"/workflow side \"exceptions\" with a better error message to API response.","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"}],"fenix/cmd/api.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"eventlet.monkey_patch("},{"line_number":18,"context_line":"    os\u003dTrue, select\u003dTrue, socket\u003dTrue, thread\u003dTrue, time\u003dTrue)"},{"line_number":19,"context_line":"from eventlet import wsgi"},{"line_number":20,"context_line":"import gettext"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_17ba256d","line":20,"range":{"start_line":16,"start_character":0,"end_line":20,"end_character":14},"updated":"2019-06-26 06:58:14.000000000","message":"Are you sure you want to use eventlet? There\u0027re plans to replace it with something else.","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"eventlet.monkey_patch("},{"line_number":18,"context_line":"    os\u003dTrue, select\u003dTrue, socket\u003dTrue, thread\u003dTrue, time\u003dTrue)"},{"line_number":19,"context_line":"from eventlet import wsgi"},{"line_number":20,"context_line":"import gettext"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_7c37c1b1","line":20,"range":{"start_line":16,"start_character":0,"end_line":20,"end_character":14},"in_reply_to":"9fb8cfa7_17ba256d","updated":"2019-06-26 10:30:45.000000000","message":"Happily followed the way other projects have done. I guess the wsgiref we had would have been fine? I have not followed any discussions","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"eventlet.monkey_patch("},{"line_number":18,"context_line":"    os\u003dTrue, select\u003dTrue, socket\u003dTrue, thread\u003dTrue, time\u003dTrue)"},{"line_number":19,"context_line":"from eventlet import wsgi"},{"line_number":20,"context_line":"import gettext"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_94427c0e","line":20,"range":{"start_line":16,"start_character":0,"end_line":20,"end_character":14},"in_reply_to":"9fb8cfa7_7c37c1b1","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"}],"fenix/exceptions.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    code \u003d 403"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class PolicyNotAuthorized(NotAuthorized):"},{"line_number":64,"context_line":"    msg_fmt \u003d \"Policy doesn\u0027t allow %(action)s to be performed\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class ServiceCatalogNotFound(NotFound):"},{"line_number":68,"context_line":"    msg_fmt \u003d \"Could not find service catalog\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class WrongFormat(FenixException):"},{"line_number":72,"context_line":"    msg_fmt \u003d \"Unenxpectable object format\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_176f85fc","line":72,"range":{"start_line":63,"start_character":0,"end_line":72,"end_character":43},"updated":"2019-06-26 06:58:14.000000000","message":"Do these Exceptions return 500 code?","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    code \u003d 403"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class PolicyNotAuthorized(NotAuthorized):"},{"line_number":64,"context_line":"    msg_fmt \u003d \"Policy doesn\u0027t allow %(action)s to be performed\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class ServiceCatalogNotFound(NotFound):"},{"line_number":68,"context_line":"    msg_fmt \u003d \"Could not find service catalog\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class WrongFormat(FenixException):"},{"line_number":72,"context_line":"    msg_fmt \u003d \"Unenxpectable object format\""}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_1901f738","line":72,"range":{"start_line":63,"start_character":0,"end_line":72,"end_character":43},"in_reply_to":"9fb8cfa7_176f85fc","updated":"2019-06-26 10:30:45.000000000","message":"500 is default in FenixException, but PolicyNotAuthorized and ServiceCatalogNotFound do not inherit straight that and have a different response.","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"}],"fenix/policy.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"718217e67737da2e35cdc9c4513612fabd13d25d","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Policy Engine For Fenix.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_7756012d","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":16},"updated":"2019-06-26 06:58:14.000000000","message":"Include this in requirements.txt","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"35e42d41d73119a0f15cb91ae407dc4564aa1c00","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Policy Engine For Fenix.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_7871f2a7","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":16},"in_reply_to":"9fb8cfa7_148bec67","updated":"2019-06-27 13:10:08.000000000","message":"This is handled by the upper-constraints.txt","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"75644f85333187a5a064bfa6775722527f734916","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Policy Engine For Fenix.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_9c3cf593","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":16},"in_reply_to":"9fb8cfa7_7756012d","updated":"2019-06-26 10:30:45.000000000","message":"Thanks","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"d8d67b7bd229128703b5c2bcbea4dbb297c1cb13","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Policy Engine For Fenix.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_7ca6b8c3","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":16},"in_reply_to":"9fb8cfa7_7871f2a7","updated":"2019-06-28 04:41:45.000000000","message":"I don\u0027t understand this. Anyway, if we can install fenix without mentioning this in requirements.txt, I\u0027m fine with this.","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"3f50d3d1f59382be001cd62f0b807d61dcff7155","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\"Policy Engine For Fenix.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import functools"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_config import cfg"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_148bec67","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":16},"in_reply_to":"9fb8cfa7_9c3cf593","updated":"2019-06-27 06:27:29.000000000","message":"Done","commit_id":"dd11fc5a0cab356ef3dc1d6329887b76d77346d3"}]}
