)]}'
{"keystone/auth/controllers.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0c1a58daed4a1314e93056ab088304bd39b492a7","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            include_catalog \u003d True"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"            if context and \u0027query_string\u0027 in context:"},{"line_number":295,"context_line":"                include_catalog \u003d \u0027nocatalog\u0027 not in context[\u0027query_string\u0027]"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"            (token_id, token_data) \u003d self.token_provider_api.issue_token("},{"line_number":298,"context_line":"                user_id\u003dauth_context[\u0027user_id\u0027],"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2FiAQ%3D","line":295,"updated":"2013-07-16 21:56:29.000000000","message":"what should happen if the query_string has nocatalog\u003dfalse?","commit_id":"d39551f85429d0de53cc2ac8c8197f3e0af45c3e"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"ee4e829b2aa04919da15259826c4ceb0e898cf2c","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            include_catalog \u003d True"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"            if context and \u0027query_string\u0027 in context:"},{"line_number":295,"context_line":"                include_catalog \u003d \u0027nocatalog\u0027 not in context[\u0027query_string\u0027]"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"            (token_id, token_data) \u003d self.token_provider_api.issue_token("},{"line_number":298,"context_line":"                user_id\u003dauth_context[\u0027user_id\u0027],"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Fh8c%3D","line":295,"in_reply_to":"AAAAP3%2F%2Fh9U%3D","updated":"2013-07-17 01:06:19.000000000","message":"Done.\nI also changed some tests for auth that were not passing a context","commit_id":"d39551f85429d0de53cc2ac8c8197f3e0af45c3e"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"4f04dad4e551d8e4a8ef95a4314fc0e7b2813b18","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            include_catalog \u003d True"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"            if context and \u0027query_string\u0027 in context:"},{"line_number":295,"context_line":"                include_catalog \u003d \u0027nocatalog\u0027 not in context[\u0027query_string\u0027]"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"            (token_id, token_data) \u003d self.token_provider_api.issue_token("},{"line_number":298,"context_line":"                user_id\u003dauth_context[\u0027user_id\u0027],"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Fh9U%3D","line":295,"in_reply_to":"AAAAP3%2F%2FiAQ%3D","updated":"2013-07-16 22:04:32.000000000","message":"the spec suggests there\u0027s no value for the query parameter... the query parameter is either provided or it\u0027s not, e.g.\n\n  ?nocatalog\n  ?\n\nso you just have to check for it\u0027s presence in the dict\n\n  \u0027nocatalog\u0027 in context[\u0027query_string\u0027]","commit_id":"d39551f85429d0de53cc2ac8c8197f3e0af45c3e"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a3b6b253b30878a5307855c8a85f3ed4bcaa45c5","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            method_names +\u003d auth_context.get(\u0027method_names\u0027, [])"},{"line_number":290,"context_line":"            # make sure the list is unique"},{"line_number":291,"context_line":"            method_names \u003d list(set(method_names))"},{"line_number":292,"context_line":"            include_catalog \u003d \u0027nocatalog\u0027 not in context[\u0027query_string\u0027]"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"            (token_id, token_data) \u003d self.token_provider_api.issue_token("},{"line_number":295,"context_line":"                user_id\u003dauth_context[\u0027user_id\u0027],"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAP3%2F%2Fhag%3D","line":292,"updated":"2013-07-17 01:13:41.000000000","message":"this doesn\u0027t belong in the try block at all","commit_id":"e9198f63558900d2a412c6310e8953092790dd12"}],"keystone/auth/token_factory.py":[{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"17cf94be1ecb06a7baaeb96d14e1599cfbe732da","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    def get_token_data(self, user_id, method_names, extras,"},{"line_number":197,"context_line":"                       domain_id\u003dNone, project_id\u003dNone, expires\u003dNone,"},{"line_number":198,"context_line":"                       trust\u003dNone, token\u003dNone, get_catalog\u003dTrue):"},{"line_number":199,"context_line":"        token_data \u003d {\u0027methods\u0027: method_names,"},{"line_number":200,"context_line":"                      \u0027extras\u0027: extras}"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        # We\u0027ve probably already written these to the token"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F8po%3D","line":199,"updated":"2013-06-17 16:59:19.000000000","message":"Just wondering can we use different name for this attribute? Because\n1. get_catalog does not sound a boolean \n2. It is a request from the caller to system to include catalog or not so get_catalog does not seems correct\n\nI think \"is_catalog_required\" makes more sens.","commit_id":"1bc519b2c3843ca1ee0854a0133c79fddc3d3100"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"53ef574431b829a751d62db4473a8bdc1a054123","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def get_token_data(self, user_id, method_names, extras,"},{"line_number":197,"context_line":"                       domain_id\u003dNone, project_id\u003dNone, expires\u003dNone,"},{"line_number":198,"context_line":"                       trust\u003dNone, token\u003dNone, need_catalog\u003dTrue):"},{"line_number":199,"context_line":"        token_data \u003d {\u0027methods\u0027: method_names,"},{"line_number":200,"context_line":"                      \u0027extras\u0027: extras}"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FvYo%3D","line":198,"updated":"2013-06-23 16:13:25.000000000","message":"suggest call the new argument \"include_catalog\"","commit_id":"5b8d01ff9a3031007b3ae901215bffec816be087"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4ee66d4304a998f33c9548ac5b9011eb0d1312e9","unresolved":false,"context_lines":[{"line_number":298,"context_line":"    include_catalog \u003d True"},{"line_number":299,"context_line":"    if context is not None:"},{"line_number":300,"context_line":"        if \u0027query_string\u0027 in context:"},{"line_number":301,"context_line":"            include_catalog \u003d \u0027no-catalog\u0027 not in context[\u0027query_string\u0027]"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    token_data \u003d token_data_helper.get_token_data("},{"line_number":304,"context_line":"        auth_context[\u0027user_id\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2Fj3k%3D","line":301,"updated":"2013-06-27 19:16:38.000000000","message":"if you want\n\ninclude_catalog \u003d (context and \u0027query_string\u0027 in context and\n    \u0027no-catalog\u0027 not in context[\u0027query_string\u0027])","commit_id":"48f11fb5e9618d69c7d5047ba638c3d411eca31b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ac86a7eb8aa26aafb514dc146a08253b04628fc8","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                            auth_context.get(\u0027method_names\u0027, [])))"},{"line_number":298,"context_line":"    include_catalog \u003d True"},{"line_number":299,"context_line":"    if context is not None:"},{"line_number":300,"context_line":"        if \u0027query_string\u0027 in context:"},{"line_number":301,"context_line":"            include_catalog \u003d \u0027no-catalog\u0027 not in context[\u0027query_string\u0027]"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    token_data \u003d token_data_helper.get_token_data("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FUSA%3D","line":300,"updated":"2013-07-04 06:36:38.000000000","message":"This can be a one liner but at least combine these \n\nif context and \u0027query_string\u0027 in context:","commit_id":"8a435dd7b0bae83f1f7c58512cd1c7629e2772c4"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"eaef6c39a41f24708602b7b7f48b9c0b390e266c","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                            auth_context.get(\u0027method_names\u0027, [])))"},{"line_number":298,"context_line":"    include_catalog \u003d True"},{"line_number":299,"context_line":"    if context is not None:"},{"line_number":300,"context_line":"        if \u0027query_string\u0027 in context:"},{"line_number":301,"context_line":"            include_catalog \u003d \u0027no-catalog\u0027 not in context[\u0027query_string\u0027]"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    token_data \u003d token_data_helper.get_token_data("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FQ6k%3D","line":300,"in_reply_to":"AAAAPn%2F%2FUSA%3D","updated":"2013-07-05 17:48:40.000000000","message":"Done","commit_id":"8a435dd7b0bae83f1f7c58512cd1c7629e2772c4"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"34c5c00b0c104088b4f710a320e90c2df5eff08b","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    method_names \u003d list(set(auth_info.get_method_names() +"},{"line_number":294,"context_line":"                            auth_context.get(\u0027method_names\u0027, [])))"},{"line_number":295,"context_line":"    include_catalog \u003d True"},{"line_number":296,"context_line":"    if auth_info.context and \u0027query_string\u0027 in auth_info.context:"},{"line_number":297,"context_line":"        include_catalog \u003d \u0027no-catalog\u0027 not in auth_info.context[\u0027query_string\u0027]"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    token_data \u003d token_data_helper.get_token_data("}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAP3%2F%2Fwns%3D","line":296,"updated":"2013-07-11 20:52:23.000000000","message":"this seems overly defensive ...  why would you not have an auth_info.context? (and what\u0027s the difference between auth_context and auth_info.context?!)\n\n  include_catalog \u003d \u0027no-catalog\u0027 not in auth_info.context.get(\u0027query_string\u0027, {})","commit_id":"ab6e166c7a61fb172fbe359b1f48beca53721d0d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"890351a65fa404d94303648a6b5b152a408aa4aa","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    method_names \u003d list(set(auth_info.get_method_names() +"},{"line_number":294,"context_line":"                            auth_context.get(\u0027method_names\u0027, [])))"},{"line_number":295,"context_line":"    include_catalog \u003d True"},{"line_number":296,"context_line":"    if auth_info.context and \u0027query_string\u0027 in auth_info.context:"},{"line_number":297,"context_line":"        include_catalog \u003d \u0027no-catalog\u0027 not in auth_info.context[\u0027query_string\u0027]"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    token_data \u003d token_data_helper.get_token_data("}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAP3%2F%2Fwe4%3D","line":296,"in_reply_to":"AAAAP3%2F%2Fwns%3D","updated":"2013-07-11 22:13:45.000000000","message":"the auth_context is actually empty and does not contain the request context (I agree is weird ...).\nPlease look at auth/controllers:\nauth_info \u003d AuthInfo(context, auth\u003dauth)\nauth_context \u003d {\u0027extras\u0027: {}, \u0027method_names\u0027: []}\nThat\u0027s why I used the auth_info.context.\n\nI didn\u0027t check the context before but there are all bunch of tests that do not send context and would fail. I think this makes it more robust.","commit_id":"ab6e166c7a61fb172fbe359b1f48beca53721d0d"}],"keystone/catalog/backends/sql.py":[{"author":{"_account_id":994,"name":"Arvind Tiwari","email":"arvindt7@gmail.com","username":"arvind-tiwari"},"change_message_id":"17cf94be1ecb06a7baaeb96d14e1599cfbe732da","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        return catalog"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    def get_v3_catalog(self, user_id\u003d\u0027$(user_id)\u0027, tenant_id\u003d\u0027$(project_id)\u0027, metadata\u003dNone):"},{"line_number":179,"context_line":"        d \u003d dict(CONF.iteritems())"},{"line_number":180,"context_line":"        d.update({\u0027tenant_id\u0027: tenant_id,"},{"line_number":181,"context_line":"                  \u0027user_id\u0027: user_id})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2F8l4%3D","line":178,"updated":"2013-06-17 16:59:19.000000000","message":"why do we want to default?","commit_id":"1bc519b2c3843ca1ee0854a0133c79fddc3d3100"}],"keystone/catalog/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8622b8e821aef768d25017ea2cfb98472507aa07","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from keystone.common import dependency"},{"line_number":22,"context_line":"from keystone import exception"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INTERFACES \u003d [\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2Fy4Y%3D","side":"PARENT","line":24,"updated":"2013-06-21 03:35:57.000000000","message":"Just curious, why was this line removed?","commit_id":"e0834da917f3313fb7ff5ca31569e82199313ed6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8622b8e821aef768d25017ea2cfb98472507aa07","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        refs \u003d self.catalog_api.list_services(context)"},{"line_number":142,"context_line":"        return ServiceV3.wrap_collection(context, refs, filters)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def get_catalog(self, context):"},{"line_number":145,"context_line":"        creds \u003d controller._build_policy_check_credentials(self,"},{"line_number":146,"context_line":"                                                           \"get_catalog\","},{"line_number":147,"context_line":"                                                           context, {})"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2Fy4U%3D","line":144,"updated":"2013-06-21 03:35:57.000000000","message":"Doc strings for params and return value?","commit_id":"5b8d01ff9a3031007b3ae901215bffec816be087"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"53ef574431b829a751d62db4473a8bdc1a054123","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def get_catalog(self, context):"},{"line_number":145,"context_line":"        creds \u003d controller._build_policy_check_credentials(self,"},{"line_number":146,"context_line":"                                                           \"get_catalog\","},{"line_number":147,"context_line":"                                                           context, {})"},{"line_number":148,"context_line":"        user_id \u003d creds[\u0027user_id\u0027]"},{"line_number":149,"context_line":"        project_id \u003d creds[\u0027project_id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FvYg%3D","line":146,"updated":"2013-06-23 16:13:25.000000000","message":"prefer \u0027 for strings, see pep8.","commit_id":"5b8d01ff9a3031007b3ae901215bffec816be087"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"53ef574431b829a751d62db4473a8bdc1a054123","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    def get_catalog(self, context):"},{"line_number":145,"context_line":"        creds \u003d controller._build_policy_check_credentials(self,"},{"line_number":146,"context_line":"                                                           \"get_catalog\","},{"line_number":147,"context_line":"                                                           context, {})"},{"line_number":148,"context_line":"        user_id \u003d creds[\u0027user_id\u0027]"},{"line_number":149,"context_line":"        project_id \u003d creds[\u0027project_id\u0027]"},{"line_number":150,"context_line":"        refs \u003d self.catalog_api.get_v3_catalog(context, user_id, project_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FvYU%3D","line":147,"updated":"2013-06-23 16:13:25.000000000","message":"provide a name for the {} parameter\n\n whatever \u003d {}\n ...\n     context, whatever)\n\nwhere whatever is the name of the argument.","commit_id":"5b8d01ff9a3031007b3ae901215bffec816be087"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"53ef574431b829a751d62db4473a8bdc1a054123","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        user_id \u003d creds[\u0027user_id\u0027]"},{"line_number":149,"context_line":"        project_id \u003d creds[\u0027project_id\u0027]"},{"line_number":150,"context_line":"        refs \u003d self.catalog_api.get_v3_catalog(context, user_id, project_id)"},{"line_number":151,"context_line":"        return {\"catalogs\": refs}"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    @controller.protected"},{"line_number":154,"context_line":"    def get_service(self, context, service_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FvYc%3D","line":151,"updated":"2013-06-23 16:13:25.000000000","message":"prefer \u0027 for strings, see pep8.","commit_id":"5b8d01ff9a3031007b3ae901215bffec816be087"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"065b0c02d61e1b55e9ed587a21228817737508b8","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def get_catalog(self, context):"},{"line_number":145,"context_line":"        keyword_dict \u003d {}"},{"line_number":146,"context_line":"        creds \u003d controller._build_policy_check_credentials(self,"},{"line_number":147,"context_line":"                                                           \u0027get_catalog\u0027,"},{"line_number":148,"context_line":"                                                           context,"},{"line_number":149,"context_line":"                                                           keyword_dict)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2Fo64%3D","line":146,"updated":"2013-06-26 06:29:57.000000000","message":"Why can\u0027t this be decorator just iike other functions?","commit_id":"9a036c2e61645d727fce271d6895a600c1eaa944"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4ee66d4304a998f33c9548ac5b9011eb0d1312e9","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                                           context,"},{"line_number":149,"context_line":"                                                           keyword_dict)"},{"line_number":150,"context_line":"        user_id \u003d creds[\u0027user_id\u0027]"},{"line_number":151,"context_line":"        project_id \u003d creds[\u0027project_id\u0027]"},{"line_number":152,"context_line":"        refs \u003d self.catalog_api.get_v3_catalog(context, user_id, project_id)"},{"line_number":153,"context_line":"        return {\u0027catalogs\u0027: refs}"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2Fj3U%3D","line":151,"updated":"2013-06-27 19:16:38.000000000","message":"if not project_id:\n    # raise a 400, token must be scoped to a project","commit_id":"48f11fb5e9618d69c7d5047ba638c3d411eca31b"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"ad86e6e1183c76454e1aa86aae6c4aefb5b23408","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                                                           context,"},{"line_number":149,"context_line":"                                                           keyword_dict)"},{"line_number":150,"context_line":"        user_id \u003d creds[\u0027user_id\u0027]"},{"line_number":151,"context_line":"        project_id \u003d creds[\u0027project_id\u0027]"},{"line_number":152,"context_line":"        refs \u003d self.catalog_api.get_v3_catalog(context, user_id, project_id)"},{"line_number":153,"context_line":"        return {\u0027catalogs\u0027: refs}"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2FjIo%3D","line":151,"in_reply_to":"AAAAPn%2F%2Fj3U%3D","updated":"2013-06-27 23:54:32.000000000","message":"Done","commit_id":"48f11fb5e9618d69c7d5047ba638c3d411eca31b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ac86a7eb8aa26aafb514dc146a08253b04628fc8","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        refs \u003d self.catalog_api.list_services(context)"},{"line_number":143,"context_line":"        return ServiceV3.wrap_collection(context, refs, filters)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def get_catalog(self, context):"},{"line_number":146,"context_line":"        keyword_dict \u003d {}"},{"line_number":147,"context_line":"        creds \u003d controller._build_policy_check_credentials(self,"},{"line_number":148,"context_line":"                                                           \u0027get_catalog\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FUQc%3D","line":145,"updated":"2013-07-04 06:36:38.000000000","message":"This may have been discussed already, but what is this authorization supposed to mean? \n\nWe are getting the catalog for the X-Auth-Token and there are no policy_api implications for this? Shouldn\u0027t this get the catalog for X-Subject-Token and probably X-Auth-Token if not present?","commit_id":"8a435dd7b0bae83f1f7c58512cd1c7629e2772c4"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"eaef6c39a41f24708602b7b7f48b9c0b390e266c","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        refs \u003d self.catalog_api.list_services(context)"},{"line_number":143,"context_line":"        return ServiceV3.wrap_collection(context, refs, filters)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def get_catalog(self, context):"},{"line_number":146,"context_line":"        keyword_dict \u003d {}"},{"line_number":147,"context_line":"        creds \u003d controller._build_policy_check_credentials(self,"},{"line_number":148,"context_line":"                                                           \u0027get_catalog\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAPn%2F%2FQ6Y%3D","line":145,"in_reply_to":"AAAAPn%2F%2FUQc%3D","updated":"2013-07-05 17:48:40.000000000","message":"X-Subject-Token is only for the token related operations (as far as I understand it).\nThe X-Auth-Token will be passed and must be associated to a project scoped token so then I can retrieve the user_id and project_id required to produce a catalog.","commit_id":"8a435dd7b0bae83f1f7c58512cd1c7629e2772c4"}],"keystone/catalog/routers.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"1a8d845c5798ca4d8c7802e89e2fd9e6480ccf0b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"                   controller\u003dservices_controller,"},{"line_number":27,"context_line":"                   action\u003d\u0027get_catalog\u0027,"},{"line_number":28,"context_line":"                   conditions\u003ddict(method\u003d[\u0027GET\u0027]))"},{"line_number":29,"context_line":"    endpoints_controller \u003d controllers.EndpointV3()"},{"line_number":30,"context_line":"    routers.append(router.Router(endpoints_controller,"},{"line_number":31,"context_line":"                                 \u0027endpoints\u0027, \u0027endpoint\u0027))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2FzDc%3D","line":29,"updated":"2013-06-25 21:57:58.000000000","message":"why is this change necessary?","commit_id":"5b8d01ff9a3031007b3ae901215bffec816be087"}],"tests/test_v3.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"34c5c00b0c104088b4f710a320e90c2df5eff08b","unresolved":false,"context_lines":[{"line_number":453,"context_line":"    def assertValidScopedTokenNoCatalogResponse(self, r, *args, **kwargs):"},{"line_number":454,"context_line":"        token \u003d self.assertValidTokenResponse(r, *args, **kwargs)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        self.assertNotIn(\u0027catalog\u0027, token)"},{"line_number":457,"context_line":"        self.assertIn(\u0027roles\u0027, token)"},{"line_number":458,"context_line":"        self.assertTrue(token[\u0027roles\u0027])"},{"line_number":459,"context_line":"        for role in token[\u0027roles\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAP3%2F%2FwnQ%3D","line":456,"updated":"2013-07-11 20:52:23.000000000","message":"this is the only line that is unique to this assertion... refactor the assertion hierarchy to eliminate the duplication you\u0027ve created below this line","commit_id":"ab6e166c7a61fb172fbe359b1f48beca53721d0d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"890351a65fa404d94303648a6b5b152a408aa4aa","unresolved":false,"context_lines":[{"line_number":453,"context_line":"    def assertValidScopedTokenNoCatalogResponse(self, r, *args, **kwargs):"},{"line_number":454,"context_line":"        token \u003d self.assertValidTokenResponse(r, *args, **kwargs)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        self.assertNotIn(\u0027catalog\u0027, token)"},{"line_number":457,"context_line":"        self.assertIn(\u0027roles\u0027, token)"},{"line_number":458,"context_line":"        self.assertTrue(token[\u0027roles\u0027])"},{"line_number":459,"context_line":"        for role in token[\u0027roles\u0027]:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAP3%2F%2FwYc%3D","line":456,"in_reply_to":"AAAAP3%2F%2FwnQ%3D","updated":"2013-07-11 22:13:45.000000000","message":"I\u0027ll take care of that","commit_id":"ab6e166c7a61fb172fbe359b1f48beca53721d0d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"34c5c00b0c104088b4f710a320e90c2df5eff08b","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        self.assertIn(\u0027name\u0027, token[\u0027project\u0027])"},{"line_number":487,"context_line":"        self.assertIn(\u0027domain\u0027, token[\u0027project\u0027])"},{"line_number":488,"context_line":"        self.assertIn(\u0027id\u0027, token[\u0027project\u0027][\u0027domain\u0027])"},{"line_number":489,"context_line":"        self.assertIn(\u0027name\u0027, token[\u0027project\u0027][\u0027domain\u0027])"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"        self.assertEqual(self.role_id, token[\u0027roles\u0027][0][\u0027id\u0027])"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAP3%2F%2FwnM%3D","line":489,"updated":"2013-07-11 20:52:23.000000000","message":"same as the above, stop copy pasting large chunks of code","commit_id":"ab6e166c7a61fb172fbe359b1f48beca53721d0d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"890351a65fa404d94303648a6b5b152a408aa4aa","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        self.assertIn(\u0027name\u0027, token[\u0027project\u0027])"},{"line_number":487,"context_line":"        self.assertIn(\u0027domain\u0027, token[\u0027project\u0027])"},{"line_number":488,"context_line":"        self.assertIn(\u0027id\u0027, token[\u0027project\u0027][\u0027domain\u0027])"},{"line_number":489,"context_line":"        self.assertIn(\u0027name\u0027, token[\u0027project\u0027][\u0027domain\u0027])"},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"        self.assertEqual(self.role_id, token[\u0027roles\u0027][0][\u0027id\u0027])"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAP3%2F%2FwYY%3D","line":489,"in_reply_to":"AAAAP3%2F%2FwnM%3D","updated":"2013-07-11 22:13:45.000000000","message":"I\u0027ll take care of that","commit_id":"ab6e166c7a61fb172fbe359b1f48beca53721d0d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ffcf6a553f36dd129abb7f401c5a68b0ee74bbf0","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        return token"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    def assertValidScopedTokenResponse(self, r, catalog\u003dTrue,"},{"line_number":442,"context_line":"                                       *args, **kwargs):"},{"line_number":443,"context_line":"        token \u003d self.assertValidTokenResponse(r, *args, **kwargs)"},{"line_number":444,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAP3%2F%2FkHc%3D","line":441,"updated":"2013-07-16 14:38:53.000000000","message":"require_catalog ? expect_catalog ?","commit_id":"bce27e596ebe9be8ea469ff5312a898578b429c3"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"dd035d40f597b2c4cdbc79baf16dc79f7e6fe65a","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        return token"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    def assertValidScopedTokenResponse(self, r, catalog\u003dTrue,"},{"line_number":442,"context_line":"                                       *args, **kwargs):"},{"line_number":443,"context_line":"        token \u003d self.assertValidTokenResponse(r, *args, **kwargs)"},{"line_number":444,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAP3%2F%2Fjgk%3D","line":441,"in_reply_to":"AAAAP3%2F%2FkHc%3D","updated":"2013-07-16 17:12:14.000000000","message":"Done","commit_id":"bce27e596ebe9be8ea469ff5312a898578b429c3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0c1a58daed4a1314e93056ab088304bd39b492a7","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def assertValidProjectScopedTokenResponse(self, r, require_catalog\u003dTrue,"},{"line_number":466,"context_line":"                                              *args, **kwargs):"},{"line_number":467,"context_line":"        token \u003d self.assertValidScopedTokenResponse(r, require_catalog,"},{"line_number":468,"context_line":"                                                    *args, **kwargs)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.assertIn(\u0027project\u0027, token)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2FiBM%3D","line":467,"updated":"2013-07-16 21:56:29.000000000","message":"suggest use a named argument for a named parameter, so change require_catalog to require_catalog\u003drequire_catalog\n\nalternatively, looks like could remove the require_catalog\u003dTrue from this function since kwargs is passed on anyways.","commit_id":"d39551f85429d0de53cc2ac8c8197f3e0af45c3e"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"ee4e829b2aa04919da15259826c4ceb0e898cf2c","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def assertValidProjectScopedTokenResponse(self, r, require_catalog\u003dTrue,"},{"line_number":466,"context_line":"                                              *args, **kwargs):"},{"line_number":467,"context_line":"        token \u003d self.assertValidScopedTokenResponse(r, require_catalog,"},{"line_number":468,"context_line":"                                                    *args, **kwargs)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.assertIn(\u0027project\u0027, token)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Fhbc%3D","line":467,"in_reply_to":"AAAAP3%2F%2FiBM%3D","updated":"2013-07-17 01:06:19.000000000","message":"Done. Incorporated into the kwargs. I had to change the call hierarchy because the addition of a new param was creating issues with several other tests not expecting the param.","commit_id":"d39551f85429d0de53cc2ac8c8197f3e0af45c3e"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"dc4a9b448d0eebbd153519823fb5c0307d2a7fec","unresolved":false,"context_lines":[{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def assertValidProjectScopedTokenResponse(self, r, require_catalog\u003dTrue,"},{"line_number":466,"context_line":"                                              *args, **kwargs):"},{"line_number":467,"context_line":"        token \u003d self.assertValidScopedTokenResponse(r, require_catalog,"},{"line_number":468,"context_line":"                                                    *args, **kwargs)"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        self.assertIn(\u0027project\u0027, token)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAP3%2F%2Fh84%3D","line":467,"in_reply_to":"AAAAP3%2F%2FiBM%3D","updated":"2013-07-16 22:05:15.000000000","message":"true and true","commit_id":"d39551f85429d0de53cc2ac8c8197f3e0af45c3e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"058364e357e06b980a66a8dafdf85b017fa75299","unresolved":false,"context_lines":[{"line_number":447,"context_line":""},{"line_number":448,"context_line":"    def assertValidScopedTokenResponse(self, r, *args, **kwargs):"},{"line_number":449,"context_line":"        token \u003d self.assertValidTokenResponse(r,"},{"line_number":450,"context_line":"                                              kwargs.get(\u0027user\u0027))"},{"line_number":451,"context_line":"        require_catalog \u003d kwargs.get(\u0027require_catalog\u0027, True)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        if require_catalog:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAP3%2F%2FhZ4%3D","line":450,"updated":"2013-07-17 01:19:14.000000000","message":"user should be a named parameter, like user\u003dNone, if this is necessary.\n\nAlso, should use a named argument for a named parameter, so should be user\u003dkwargs.get(\u0027user\u0027)","commit_id":"e9198f63558900d2a412c6310e8953092790dd12"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1b8e3a3ebabf66a3d22b506eb5fc18797eaa89e8","unresolved":false,"context_lines":[{"line_number":447,"context_line":""},{"line_number":448,"context_line":"    def assertValidScopedTokenResponse(self, r, *args, **kwargs):"},{"line_number":449,"context_line":"        token \u003d self.assertValidTokenResponse(r,"},{"line_number":450,"context_line":"                                              kwargs.get(\u0027user\u0027))"},{"line_number":451,"context_line":"        require_catalog \u003d kwargs.get(\u0027require_catalog\u0027, True)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        if require_catalog:"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAP3%2F%2FhXI%3D","line":450,"in_reply_to":"AAAAP3%2F%2FhZ4%3D","updated":"2013-07-17 01:30:32.000000000","message":"ugh i didn\u0027t notice this changed","commit_id":"e9198f63558900d2a412c6310e8953092790dd12"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"058364e357e06b980a66a8dafdf85b017fa75299","unresolved":false,"context_lines":[{"line_number":448,"context_line":"    def assertValidScopedTokenResponse(self, r, *args, **kwargs):"},{"line_number":449,"context_line":"        token \u003d self.assertValidTokenResponse(r,"},{"line_number":450,"context_line":"                                              kwargs.get(\u0027user\u0027))"},{"line_number":451,"context_line":"        require_catalog \u003d kwargs.get(\u0027require_catalog\u0027, True)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        if require_catalog:"},{"line_number":454,"context_line":"            self.assertIn(\u0027catalog\u0027, token)"}],"source_content_type":"text/x-python","patch_set":20,"id":"AAAAP3%2F%2FhaE%3D","line":451,"updated":"2013-07-17 01:19:14.000000000","message":"require_catalog should be a named parameter, like require_catalog\u003dTrue at line 448 rather than using kwargs.get().","commit_id":"e9198f63558900d2a412c6310e8953092790dd12"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"26ca54548d03b2cbdd316817630ce2205ed4ceac","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        return token"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":"    def assertValidScopedTokenResponse(self, r, *args, **kwargs):"},{"line_number":449,"context_line":"        require_catalog \u003d kwargs.pop(\u0027require_catalog\u0027, True)"},{"line_number":450,"context_line":"        token \u003d self.assertValidTokenResponse(r, *args, **kwargs)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        if require_catalog:"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAP3%2F%2FhVk%3D","line":449,"updated":"2013-07-17 01:43:27.000000000","message":"require_catalog should be a named parameter, like require_catalog\u003dTrue at line 448 rather than using kwargs.pop().","commit_id":"2efe035bcb05e14846317e8f06b7673ce326d1b4"}],"tests/test_v3_auth.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c6dae9f2a2612ec9357e716e64f81cb5d1e001ac","unresolved":false,"context_lines":[{"line_number":873,"context_line":"        r \u003d self.patch(\u0027/users/%(user_id)s\u0027 % {"},{"line_number":874,"context_line":"            \u0027user_id\u0027: self.user[\u0027id\u0027]},"},{"line_number":875,"context_line":"            body\u003dbody)"},{"line_number":876,"context_line":"        self.assertValidUserResponse(r)"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"        # attempt to authenticate without requesting a project"},{"line_number":879,"context_line":"        auth_data \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAP3%2F%2FsUs%3D","line":876,"updated":"2013-07-12 21:57:03.000000000","message":"why do we need line 859-876? All we care is no catalog is returned. That\u0027s all we really need.\n\nauth_data \u003d self.build_authentication_request(\n            user_id\u003dself.user[\u0027id\u0027],\n            password\u003dself.user[\u0027password\u0027],\n            project_id\u003dself.project[\u0027id\u0027])\n        r \u003d self.post(\u0027/auth/tokens?nocatalog\u0027, body\u003dauth_data)\n        self.assertValidProjectScopedTokenResponse(r, False)","commit_id":"bce27e596ebe9be8ea469ff5312a898578b429c3"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"dd035d40f597b2c4cdbc79baf16dc79f7e6fe65a","unresolved":false,"context_lines":[{"line_number":873,"context_line":"        r \u003d self.patch(\u0027/users/%(user_id)s\u0027 % {"},{"line_number":874,"context_line":"            \u0027user_id\u0027: self.user[\u0027id\u0027]},"},{"line_number":875,"context_line":"            body\u003dbody)"},{"line_number":876,"context_line":"        self.assertValidUserResponse(r)"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"        # attempt to authenticate without requesting a project"},{"line_number":879,"context_line":"        auth_data \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAP3%2F%2FjTw%3D","line":876,"in_reply_to":"AAAAP3%2F%2FkHk%3D","updated":"2013-07-16 17:12:14.000000000","message":"Done","commit_id":"bce27e596ebe9be8ea469ff5312a898578b429c3"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"dd035d40f597b2c4cdbc79baf16dc79f7e6fe65a","unresolved":false,"context_lines":[{"line_number":873,"context_line":"        r \u003d self.patch(\u0027/users/%(user_id)s\u0027 % {"},{"line_number":874,"context_line":"            \u0027user_id\u0027: self.user[\u0027id\u0027]},"},{"line_number":875,"context_line":"            body\u003dbody)"},{"line_number":876,"context_line":"        self.assertValidUserResponse(r)"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"        # attempt to authenticate without requesting a project"},{"line_number":879,"context_line":"        auth_data \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAP3%2F%2FjT0%3D","line":876,"in_reply_to":"AAAAP3%2F%2FsUs%3D","updated":"2013-07-16 17:12:14.000000000","message":"Done","commit_id":"bce27e596ebe9be8ea469ff5312a898578b429c3"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ffcf6a553f36dd129abb7f401c5a68b0ee74bbf0","unresolved":false,"context_lines":[{"line_number":873,"context_line":"        r \u003d self.patch(\u0027/users/%(user_id)s\u0027 % {"},{"line_number":874,"context_line":"            \u0027user_id\u0027: self.user[\u0027id\u0027]},"},{"line_number":875,"context_line":"            body\u003dbody)"},{"line_number":876,"context_line":"        self.assertValidUserResponse(r)"},{"line_number":877,"context_line":""},{"line_number":878,"context_line":"        # attempt to authenticate without requesting a project"},{"line_number":879,"context_line":"        auth_data \u003d self.build_authentication_request("}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAP3%2F%2FkHk%3D","line":876,"in_reply_to":"AAAAP3%2F%2FsUs%3D","updated":"2013-07-16 14:38:53.000000000","message":"the test case as written looks totally valid to me... it\u0027s a request that would normally generate a catalog, which now should not.\n\ni think we definitely need the test case you\u0027re describing *in addition* to this one, as written. so, there\u0027d be a test case for explicitly scoping a project and a test case for implicitly scoping to the user\u0027s default project... and asserting that no catalog is present in either response.","commit_id":"bce27e596ebe9be8ea469ff5312a898578b429c3"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ffcf6a553f36dd129abb7f401c5a68b0ee74bbf0","unresolved":false,"context_lines":[{"line_number":880,"context_line":"            user_id\u003dself.user[\u0027id\u0027],"},{"line_number":881,"context_line":"            password\u003dself.user[\u0027password\u0027])"},{"line_number":882,"context_line":"        r \u003d self.post(\u0027/auth/tokens?nocatalog\u0027, body\u003dauth_data)"},{"line_number":883,"context_line":"        self.assertValidProjectScopedTokenResponse(r, False)"},{"line_number":884,"context_line":"        self.assertEqual(r.result[\u0027token\u0027][\u0027project\u0027][\u0027id\u0027], project[\u0027id\u0027])"},{"line_number":885,"context_line":""},{"line_number":886,"context_line":"    def test_default_project_id_scoped_token_with_user_id_401(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAP3%2F%2FkH4%3D","line":883,"updated":"2013-07-16 14:38:53.000000000","message":"the False is arbitrary and non-obvious.. specify it as a kwarg, e.g. catalog\u003dFalse","commit_id":"bce27e596ebe9be8ea469ff5312a898578b429c3"}],"tests/test_v3_catalog.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8622b8e821aef768d25017ea2cfb98472507aa07","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        token_id \u003d self.get_scoped_token()"},{"line_number":172,"context_line":"        r \u003d self.get(\u0027/catalog\u0027,"},{"line_number":173,"context_line":"                     headers\u003d{\u0027X-Auth-Token\u0027: token_id})"},{"line_number":174,"context_line":"        print (r)"},{"line_number":175,"context_line":"        self.assertValidCatalogResponse(r)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2Fy4M%3D","line":174,"updated":"2013-06-21 03:35:57.000000000","message":"Do we need the print statement here? Isn\u0027t the assert validating the test?","commit_id":"5b8d01ff9a3031007b3ae901215bffec816be087"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"065b0c02d61e1b55e9ed587a21228817737508b8","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    def test_get_catalog(self):"},{"line_number":170,"context_line":"        \"\"\"Call ``GET /catalog``.\"\"\""},{"line_number":171,"context_line":"        token_id \u003d self.get_scoped_token()"},{"line_number":172,"context_line":"        r \u003d self.get(\u0027/catalog\u0027,"},{"line_number":173,"context_line":"                     headers\u003d{\u0027X-Auth-Token\u0027: token_id})"},{"line_number":174,"context_line":"        self.assertValidCatalogResponse(r)"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2Fo6w%3D","line":172,"updated":"2013-06-26 06:29:57.000000000","message":"Does catalog need to be protected?","commit_id":"9a036c2e61645d727fce271d6895a600c1eaa944"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"02429988d55a6b31a38b9042592ca0320298561b","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    def test_get_catalog(self):"},{"line_number":170,"context_line":"        \"\"\"Call ``GET /catalog``.\"\"\""},{"line_number":171,"context_line":"        token_id \u003d self.get_scoped_token()"},{"line_number":172,"context_line":"        r \u003d self.get(\u0027/catalog\u0027,"},{"line_number":173,"context_line":"                     headers\u003d{\u0027X-Auth-Token\u0027: token_id})"},{"line_number":174,"context_line":"        self.assertValidCatalogResponse(r)"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FnaI%3D","line":172,"in_reply_to":"AAAAPn%2F%2Fo6w%3D","updated":"2013-06-26 18:28:52.000000000","message":"No because you pass the token and I will get the userID and ProjectID from that","commit_id":"9a036c2e61645d727fce271d6895a600c1eaa944"}]}
