)]}'
{"openstack_auth/utils.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"def get_websso_default_redirect_logout():"},{"line_number":162,"context_line":"    return settings.WEBSSO_DEFAULT_REDIRECT_LOGOUT"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"def build_absolute_uri(request, relative_url):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_df13c265","line":162,"updated":"2020-04-15 10:16:54.000000000","message":"we can drop these functions as they just returns settings.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"def get_websso_default_redirect_logout():"},{"line_number":162,"context_line":"    return settings.WEBSSO_DEFAULT_REDIRECT_LOGOUT"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"def build_absolute_uri(request, relative_url):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_347e426b","line":162,"in_reply_to":"3f4c43b2_df13c265","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"37321de113b5679fc4b203d27e2081c4768027b6","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    auth_url \u003d _augment_url_with_version(auth_url)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    url_fixed \u003d False"},{"line_number":306,"context_line":"    if has_in_url_path(auth_url, [\"/v2.0\"]):"},{"line_number":307,"context_line":"        url_fixed \u003d True"},{"line_number":308,"context_line":"        auth_url \u003d url_path_replace(auth_url, \"/v2.0\", \"/v3\", 1)"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_32463f25","line":306,"range":{"start_line":306,"start_character":4,"end_line":306,"end_character":44},"updated":"2020-04-15 07:26:03.000000000","message":"Do we need to remove this as well?","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":303,"context_line":"    auth_url \u003d _augment_url_with_version(auth_url)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    url_fixed \u003d False"},{"line_number":306,"context_line":"    if has_in_url_path(auth_url, [\"/v2.0\"]):"},{"line_number":307,"context_line":"        url_fixed \u003d True"},{"line_number":308,"context_line":"        auth_url \u003d url_path_replace(auth_url, \"/v2.0\", \"/v3\", 1)"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_63947b8c","line":306,"range":{"start_line":306,"start_character":4,"end_line":306,"end_character":44},"in_reply_to":"3f4c43b2_32463f25","updated":"2020-04-15 10:16:54.000000000","message":"Perhaps it is more than your comment. \n\nWhat we need is to decide whether we keep the warning on keystone v2.0 API (e.g. _get_endpoint_url in openstack_dashboard/api/keystone.py) or drop remaining codes on keystone v2.0 completely.\n\nThis involves user-visible change, so I would suggest to do it in a separate patch if we do so.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_auth/views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    \"\"\" Securely logs a user out. \"\"\""},{"line_number":205,"context_line":"    if (settings.WEBSSO_ENABLED and settings.WEBSSO_DEFAULT_REDIRECT and"},{"line_number":206,"context_line":"            settings.WEBSSO_ENABLED):"},{"line_number":207,"context_line":"        auth_user.unset_session_user_variables(request)"},{"line_number":208,"context_line":"        return django_http.HttpResponseRedirect("},{"line_number":209,"context_line":"            settings.WEBSSO_DEFAULT_REDIRECT_LOGOUT)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_ee93544e","line":206,"range":{"start_line":206,"start_character":12,"end_line":206,"end_character":35},"updated":"2020-04-23 00:58:39.000000000","message":"settings.WEBSSO_DEFAULT_REDIRECT_LOGOUT","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    \"\"\" Securely logs a user out. \"\"\""},{"line_number":205,"context_line":"    if (settings.WEBSSO_ENABLED and settings.WEBSSO_DEFAULT_REDIRECT and"},{"line_number":206,"context_line":"            settings.WEBSSO_ENABLED):"},{"line_number":207,"context_line":"        auth_user.unset_session_user_variables(request)"},{"line_number":208,"context_line":"        return django_http.HttpResponseRedirect("},{"line_number":209,"context_line":"            settings.WEBSSO_DEFAULT_REDIRECT_LOGOUT)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_49cc02bc","line":206,"range":{"start_line":206,"start_character":12,"end_line":206,"end_character":35},"in_reply_to":"1f493fa4_ee93544e","updated":"2020-04-23 02:18:01.000000000","message":"Done","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"}],"openstack_dashboard/api/base.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    return None"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"def get_version_from_service(service):"},{"line_number":297,"context_line":"    if service and service.get(\u0027endpoints\u0027):"},{"line_number":298,"context_line":"        endpoint \u003d service[\u0027endpoints\u0027][0]"},{"line_number":299,"context_line":"        if \u0027interface\u0027 in endpoint:"},{"line_number":300,"context_line":"            return 3"},{"line_number":301,"context_line":"        else:"},{"line_number":302,"context_line":"            return 2.0"},{"line_number":303,"context_line":"    return 2.0"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"# Mapping of V2 Catalog Endpoint_type to V3 Catalog Interfaces"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_da08f029","line":303,"range":{"start_line":296,"start_character":0,"end_line":303,"end_character":14},"updated":"2020-04-15 10:16:54.000000000","message":"This is no longer used. Looking at the returned version numbers, it is specific to the identity service.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    return None"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"def get_version_from_service(service):"},{"line_number":297,"context_line":"    if service and service.get(\u0027endpoints\u0027):"},{"line_number":298,"context_line":"        endpoint \u003d service[\u0027endpoints\u0027][0]"},{"line_number":299,"context_line":"        if \u0027interface\u0027 in endpoint:"},{"line_number":300,"context_line":"            return 3"},{"line_number":301,"context_line":"        else:"},{"line_number":302,"context_line":"            return 2.0"},{"line_number":303,"context_line":"    return 2.0"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"# Mapping of V2 Catalog Endpoint_type to V3 Catalog Interfaces"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_34f3e20c","line":303,"range":{"start_line":296,"start_character":0,"end_line":303,"end_character":14},"in_reply_to":"3f4c43b2_da08f029","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":293,"context_line":"    return None"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"def get_version_from_service(service):"},{"line_number":297,"context_line":"    if service and service.get(\u0027endpoints\u0027):"},{"line_number":298,"context_line":"        endpoint \u003d service[\u0027endpoints\u0027][0]"},{"line_number":299,"context_line":"        if \u0027interface\u0027 in endpoint:"},{"line_number":300,"context_line":"            return 3"},{"line_number":301,"context_line":"        else:"},{"line_number":302,"context_line":"            return 2.0"},{"line_number":303,"context_line":"    return 2.0"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"# Mapping of V2 Catalog Endpoint_type to V3 Catalog Interfaces"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_47b01d8b","line":303,"range":{"start_line":296,"start_character":0,"end_line":303,"end_character":14},"in_reply_to":"3f4c43b2_da08f029","updated":"2020-04-23 00:58:39.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    service_endpoints \u003d service.get(\u0027endpoints\u0027, [])"},{"line_number":321,"context_line":"    available_endpoints \u003d [endpoint for endpoint in service_endpoints"},{"line_number":322,"context_line":"                           if region \u003d\u003d _get_endpoint_region(endpoint)]"},{"line_number":323,"context_line":"    \"\"\"if we are dealing with the identity service and there is no endpoint"},{"line_number":324,"context_line":"    in the current region, it is okay to use the first endpoint for any"},{"line_number":325,"context_line":"    identity service endpoints and we can assume that it is global"},{"line_number":326,"context_line":"    \"\"\""},{"line_number":327,"context_line":"    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027 and not available_endpoints:"},{"line_number":328,"context_line":"        available_endpoints \u003d [endpoint for endpoint in service_endpoints]"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_7a7a7c88","line":326,"range":{"start_line":323,"start_character":4,"end_line":326,"end_character":7},"updated":"2020-04-15 10:16:54.000000000","message":"(not related to this change) This is a wrong usage of docstring. Normal comment would be better.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    service_endpoints \u003d service.get(\u0027endpoints\u0027, [])"},{"line_number":321,"context_line":"    available_endpoints \u003d [endpoint for endpoint in service_endpoints"},{"line_number":322,"context_line":"                           if region \u003d\u003d _get_endpoint_region(endpoint)]"},{"line_number":323,"context_line":"    \"\"\"if we are dealing with the identity service and there is no endpoint"},{"line_number":324,"context_line":"    in the current region, it is okay to use the first endpoint for any"},{"line_number":325,"context_line":"    identity service endpoints and we can assume that it is global"},{"line_number":326,"context_line":"    \"\"\""},{"line_number":327,"context_line":"    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027 and not available_endpoints:"},{"line_number":328,"context_line":"        available_endpoints \u003d [endpoint for endpoint in service_endpoints]"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_b4e6d243","line":326,"range":{"start_line":323,"start_character":4,"end_line":326,"end_character":7},"in_reply_to":"3f4c43b2_7a7a7c88","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    service_endpoints \u003d service.get(\u0027endpoints\u0027, [])"},{"line_number":321,"context_line":"    available_endpoints \u003d [endpoint for endpoint in service_endpoints"},{"line_number":322,"context_line":"                           if region \u003d\u003d _get_endpoint_region(endpoint)]"},{"line_number":323,"context_line":"    \"\"\"if we are dealing with the identity service and there is no endpoint"},{"line_number":324,"context_line":"    in the current region, it is okay to use the first endpoint for any"},{"line_number":325,"context_line":"    identity service endpoints and we can assume that it is global"},{"line_number":326,"context_line":"    \"\"\""},{"line_number":327,"context_line":"    if service[\u0027type\u0027] \u003d\u003d \u0027identity\u0027 and not available_endpoints:"},{"line_number":328,"context_line":"        available_endpoints \u003d [endpoint for endpoint in service_endpoints]"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_e764c924","line":326,"range":{"start_line":323,"start_character":4,"end_line":326,"end_character":7},"in_reply_to":"3f4c43b2_7a7a7c88","updated":"2020-04-23 00:58:39.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_dashboard/api/keystone.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":861,"context_line":""},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"def is_multi_domain_enabled():"},{"line_number":864,"context_line":"    return (settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"def is_federation_management_enabled():"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_ba82444e","line":864,"updated":"2020-04-15 10:16:54.000000000","message":"parentheses are unnecessary","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":861,"context_line":""},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"def is_multi_domain_enabled():"},{"line_number":864,"context_line":"    return (settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"def is_federation_management_enabled():"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_54702e73","line":864,"in_reply_to":"3f4c43b2_ba82444e","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":861,"context_line":""},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"def is_multi_domain_enabled():"},{"line_number":864,"context_line":"    return (settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT)"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"def is_federation_management_enabled():"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_4775bdca","line":864,"in_reply_to":"3f4c43b2_ba82444e","updated":"2020-04-23 00:58:39.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":860,"context_line":"    return VERSIONS.active"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"def is_federation_management_enabled():"},{"line_number":864,"context_line":"    return settings.OPENSTACK_KEYSTONE_FEDERATION_MANAGEMENT"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"def identity_provider_create(request, idp_id, description\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_0eb840c6","line":864,"range":{"start_line":863,"start_character":1,"end_line":864,"end_character":60},"updated":"2020-04-23 00:58:39.000000000","message":"Is it no longerr needed?","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":860,"context_line":"    return VERSIONS.active"},{"line_number":861,"context_line":""},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"def is_federation_management_enabled():"},{"line_number":864,"context_line":"    return settings.OPENSTACK_KEYSTONE_FEDERATION_MANAGEMENT"},{"line_number":865,"context_line":""},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"def identity_provider_create(request, idp_id, description\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_e964eebb","line":864,"range":{"start_line":863,"start_character":1,"end_line":864,"end_character":60},"in_reply_to":"1f493fa4_0eb840c6","updated":"2020-04-23 02:18:01.000000000","message":"It turns out is_federation_management_enabled is no longer used. Removed it.","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"}],"openstack_dashboard/dashboards/identity/application_credentials/panel.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    slug \u003d \u0027application_credentials\u0027"},{"line_number":25,"context_line":"    policy_rules \u003d ((\u0027identity\u0027, \u0027identity:list_application_credentials\u0027),)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def can_register():"},{"line_number":29,"context_line":"        return True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def can_access(self, context):"},{"line_number":32,"context_line":"        request \u003d context[\u0027request\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_da275064","line":29,"range":{"start_line":27,"start_character":0,"end_line":29,"end_character":19},"updated":"2020-04-15 10:16:54.000000000","message":"This can be dropped.\n\ncan_register is optional and if it does not exist the check will be skipped.\n\nhttps://opendev.org/openstack/horizon/src/branch/master/horizon/base.py#L288-L298","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    slug \u003d \u0027application_credentials\u0027"},{"line_number":25,"context_line":"    policy_rules \u003d ((\u0027identity\u0027, \u0027identity:list_application_credentials\u0027),)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def can_register():"},{"line_number":29,"context_line":"        return True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def can_access(self, context):"},{"line_number":32,"context_line":"        request \u003d context[\u0027request\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_946ab67d","line":29,"range":{"start_line":27,"start_character":0,"end_line":29,"end_character":19},"in_reply_to":"3f4c43b2_da275064","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    slug \u003d \u0027application_credentials\u0027"},{"line_number":25,"context_line":"    policy_rules \u003d ((\u0027identity\u0027, \u0027identity:list_application_credentials\u0027),)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def can_register():"},{"line_number":29,"context_line":"        return True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def can_access(self, context):"},{"line_number":32,"context_line":"        request \u003d context[\u0027request\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_a21aaf6b","line":29,"range":{"start_line":27,"start_character":0,"end_line":29,"end_character":19},"in_reply_to":"3f4c43b2_da275064","updated":"2020-04-23 00:58:39.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_dashboard/dashboards/identity/domains/panel.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @staticmethod"},{"line_number":27,"context_line":"    def can_register():"},{"line_number":28,"context_line":"        return True"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def can_access(self, context):"},{"line_number":31,"context_line":"        request \u003d context[\u0027request\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_9ad2e833","line":28,"updated":"2020-04-15 10:16:54.000000000","message":"See my comment for application_credential.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @staticmethod"},{"line_number":27,"context_line":"    def can_register():"},{"line_number":28,"context_line":"        return True"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def can_access(self, context):"},{"line_number":31,"context_line":"        request \u003d context[\u0027request\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_d409dedd","line":28,"in_reply_to":"3f4c43b2_9ad2e833","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @staticmethod"},{"line_number":27,"context_line":"    def can_register():"},{"line_number":28,"context_line":"        return True"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def can_access(self, context):"},{"line_number":31,"context_line":"        request \u003d context[\u0027request\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_a248ef5b","line":28,"in_reply_to":"3f4c43b2_9ad2e833","updated":"2020-04-23 00:58:39.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_dashboard/dashboards/identity/groups/panel.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def can_register():"},{"line_number":29,"context_line":"        return True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def can_access(self, context):"},{"line_number":32,"context_line":"        if keystone.is_multi_domain_enabled() \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_dadc7048","line":29,"updated":"2020-04-15 10:16:54.000000000","message":"ditto","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def can_register():"},{"line_number":29,"context_line":"        return True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def can_access(self, context):"},{"line_number":32,"context_line":"        if keystone.is_multi_domain_enabled() \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_54f5ceca","line":29,"in_reply_to":"3f4c43b2_dadc7048","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @staticmethod"},{"line_number":28,"context_line":"    def can_register():"},{"line_number":29,"context_line":"        return True"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def can_access(self, context):"},{"line_number":32,"context_line":"        if keystone.is_multi_domain_enabled() \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_423f6bb3","line":29,"in_reply_to":"3f4c43b2_dadc7048","updated":"2020-04-23 00:58:39.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    policy_rules \u003d ((\"identity\", \"identity:list_groups\"),)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def can_access(self, context):"},{"line_number":29,"context_line":"        if settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT \\"},{"line_number":30,"context_line":"                and not keystone.is_domain_admin(context[\u0027request\u0027]):"},{"line_number":31,"context_line":"            return False"},{"line_number":32,"context_line":"        return super(Groups, self).can_access(context)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_ceac988e","line":29,"range":{"start_line":29,"start_character":58,"end_line":29,"end_character":60},"updated":"2020-04-23 00:58:39.000000000","message":"Let\u0027s use parentheses instead of backslash.","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    policy_rules \u003d ((\"identity\", \"identity:list_groups\"),)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def can_access(self, context):"},{"line_number":29,"context_line":"        if settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT \\"},{"line_number":30,"context_line":"                and not keystone.is_domain_admin(context[\u0027request\u0027]):"},{"line_number":31,"context_line":"            return False"},{"line_number":32,"context_line":"        return super(Groups, self).can_access(context)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_495a42f3","line":29,"range":{"start_line":29,"start_character":58,"end_line":29,"end_character":60},"in_reply_to":"1f493fa4_ceac988e","updated":"2020-04-23 02:18:01.000000000","message":"Done","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"}],"openstack_dashboard/dashboards/identity/identity_providers/panel.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"5aedda4024de125210fa6694df474c0f6bd8c058","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @staticmethod"},{"line_number":27,"context_line":"    def can_register():"},{"line_number":28,"context_line":"        return settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_b1dc1a75","line":28,"range":{"start_line":28,"start_character":24,"end_line":28,"end_character":62},"updated":"2020-04-22 14:50:49.000000000","message":"why you replace it with MULTIDOMAIN_SUPPORT? It needs to be OPENSTACK_KEYSTONE_FEDERATION_MANAGEMENT.","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @staticmethod"},{"line_number":27,"context_line":"    def can_register():"},{"line_number":28,"context_line":"        return settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_292d3643","line":28,"range":{"start_line":28,"start_character":24,"end_line":28,"end_character":62},"in_reply_to":"1f493fa4_b1dc1a75","updated":"2020-04-23 02:18:01.000000000","message":"Done","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"}],"openstack_dashboard/dashboards/identity/mappings/panel.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"5aedda4024de125210fa6694df474c0f6bd8c058","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @staticmethod"},{"line_number":27,"context_line":"    def can_register():"},{"line_number":28,"context_line":"        return settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_b1cffa7d","line":28,"range":{"start_line":28,"start_character":15,"end_line":28,"end_character":62},"updated":"2020-04-22 14:50:49.000000000","message":"ditto.","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @staticmethod"},{"line_number":27,"context_line":"    def can_register():"},{"line_number":28,"context_line":"        return settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_49288233","line":28,"range":{"start_line":28,"start_character":15,"end_line":28,"end_character":62},"in_reply_to":"1f493fa4_b1cffa7d","updated":"2020-04-23 02:18:01.000000000","message":"Done","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"}],"openstack_dashboard/dashboards/identity/projects/tables.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                                    widget\u003dforms.Textarea(attrs\u003d{\u0027rows\u0027: 4}),"},{"line_number":221,"context_line":"                                    required\u003dFalse))"},{"line_number":222,"context_line":"    id \u003d tables.Column(\u0027id\u0027, verbose_name\u003d_(\u0027Project ID\u0027))"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    domain_name \u003d tables.Column("},{"line_number":225,"context_line":"        \u0027domain_name\u0027, verbose_name\u003d_(\u0027Domain Name\u0027))"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_1a941844","line":223,"updated":"2020-04-15 10:16:54.000000000","message":"In our convention, we don\u0027t use blank lines between fields.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                                    widget\u003dforms.Textarea(attrs\u003d{\u0027rows\u0027: 4}),"},{"line_number":221,"context_line":"                                    required\u003dFalse))"},{"line_number":222,"context_line":"    id \u003d tables.Column(\u0027id\u0027, verbose_name\u003d_(\u0027Project ID\u0027))"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    domain_name \u003d tables.Column("},{"line_number":225,"context_line":"        \u0027domain_name\u0027, verbose_name\u003d_(\u0027Domain Name\u0027))"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_94ff56a9","line":223,"in_reply_to":"3f4c43b2_1a941844","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_dashboard/dashboards/identity/projects/workflows.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"INDEX_URL \u003d \"horizon:identity:projects:index\""},{"line_number":45,"context_line":"ADD_USER_URL \u003d \"horizon:identity:projects:create_user\""},{"line_number":46,"context_line":"PROJECT_GROUP_ENABLED \u003d True"},{"line_number":47,"context_line":"PROJECT_USER_MEMBER_SLUG \u003d \"update_members\""},{"line_number":48,"context_line":"PROJECT_GROUP_MEMBER_SLUG \u003d \"update_group_members\""},{"line_number":49,"context_line":"COMMON_HORIZONTAL_TEMPLATE \u003d \"identity/projects/_common_horizontal_form.html\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_1ad098f7","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":21},"updated":"2020-04-15 10:16:54.000000000","message":"This is referred only in if clauses in this module. Let\u0027s clean them up.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"INDEX_URL \u003d \"horizon:identity:projects:index\""},{"line_number":45,"context_line":"ADD_USER_URL \u003d \"horizon:identity:projects:create_user\""},{"line_number":46,"context_line":"PROJECT_GROUP_ENABLED \u003d True"},{"line_number":47,"context_line":"PROJECT_USER_MEMBER_SLUG \u003d \"update_members\""},{"line_number":48,"context_line":"PROJECT_GROUP_MEMBER_SLUG \u003d \"update_group_members\""},{"line_number":49,"context_line":"COMMON_HORIZONTAL_TEMPLATE \u003d \"identity/projects/_common_horizontal_form.html\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_541e6e0c","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":21},"in_reply_to":"3f4c43b2_1ad098f7","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_dashboard/dashboards/identity/roles/panel.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"},{"line_number":34,"context_line":"    def can_register():"},{"line_number":35,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_3ad754f0","line":35,"updated":"2020-04-15 10:16:54.000000000","message":"We can drop can_register itself.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @staticmethod"},{"line_number":34,"context_line":"    def can_register():"},{"line_number":35,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_14e22604","line":35,"in_reply_to":"3f4c43b2_3ad754f0","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_dashboard/dashboards/identity/users/tables.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                            filters\u003d(defaultfilters.yesno,"},{"line_number":205,"context_line":"                                     defaultfilters.capfirst),"},{"line_number":206,"context_line":"                            empty_value\u003d\"False\")"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    domain_name \u003d tables.Column(\u0027domain_name\u0027,"},{"line_number":209,"context_line":"                                verbose_name\u003d_(\u0027Domain Name\u0027),"},{"line_number":210,"context_line":"                                attrs\u003d{\u0027data-type\u0027: \u0027uuid\u0027})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_7a2f1cf6","line":207,"updated":"2020-04-15 10:16:54.000000000","message":"We can drop the blank line.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                            filters\u003d(defaultfilters.yesno,"},{"line_number":205,"context_line":"                                     defaultfilters.capfirst),"},{"line_number":206,"context_line":"                            empty_value\u003d\"False\")"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    domain_name \u003d tables.Column(\u0027domain_name\u0027,"},{"line_number":209,"context_line":"                                verbose_name\u003d_(\u0027Domain Name\u0027),"},{"line_number":210,"context_line":"                                attrs\u003d{\u0027data-type\u0027: \u0027uuid\u0027})"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_54e30e06","line":207,"in_reply_to":"3f4c43b2_7a2f1cf6","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_dashboard/templatetags/context_selection.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def is_multidomain_supported():"},{"line_number":29,"context_line":"    return (settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"@register.simple_tag(takes_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_3a1e34ba","line":29,"updated":"2020-04-15 10:16:54.000000000","message":"we can drop parentheses.\n\nIn addition, it might be better to check if the function can be dropped.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def is_multidomain_supported():"},{"line_number":29,"context_line":"    return (settings.OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"@register.simple_tag(takes_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_547aee23","line":29,"in_reply_to":"3f4c43b2_3a1e34ba","updated":"2020-04-22 09:32:34.000000000","message":"Will do it in a follow-up patch","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"}],"openstack_dashboard/test/test_data/keystone_data.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# Dummy service catalog with all service."},{"line_number":40,"context_line":"# All endpoint URLs should point to example.com."},{"line_number":41,"context_line":"# Try to keep them as accurate to real data as possible (ports, URIs, etc.)"},{"line_number":42,"context_line":"SERVICE_CATALOG \u003d ["},{"line_number":43,"context_line":"    {\"type\": \"compute\","},{"line_number":44,"context_line":"     \"name\": \"nova\","},{"line_number":45,"context_line":"     \"endpoints_links\": [],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_63f59bcb","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":15},"updated":"2020-04-15 10:16:54.000000000","message":"Is the format of auth_ref.service_catalog.catalog referred in openstack_auth.user.Token different between keystone v2 and v3? (It is returned by keystoneauth1 library.)\nThis variable is used as a mock for \u0027service_catalog\u0027 attribute of User class, so we need to check it carefully.\n\nAnyway, it is nice to have a comment on where this sample data comes from (as there is no corresponding API response).","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"38acd160b08a298c4a16367c200f79426527eba2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# Dummy service catalog with all service."},{"line_number":40,"context_line":"# All endpoint URLs should point to example.com."},{"line_number":41,"context_line":"# Try to keep them as accurate to real data as possible (ports, URIs, etc.)"},{"line_number":42,"context_line":"SERVICE_CATALOG \u003d ["},{"line_number":43,"context_line":"    {\"type\": \"compute\","},{"line_number":44,"context_line":"     \"name\": \"nova\","},{"line_number":45,"context_line":"     \"endpoints_links\": [],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_fb546b00","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":15},"in_reply_to":"3f4c43b2_63f59bcb","updated":"2020-04-20 01:26:51.000000000","message":"I confirmed the new data matches scoped_auth_ref.service_catalog.catalog from keystoneauth1.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# Dummy service catalog with all service."},{"line_number":40,"context_line":"# All endpoint URLs should point to example.com."},{"line_number":41,"context_line":"# Try to keep them as accurate to real data as possible (ports, URIs, etc.)"},{"line_number":42,"context_line":"SERVICE_CATALOG \u003d ["},{"line_number":43,"context_line":"    {\"type\": \"compute\","},{"line_number":44,"context_line":"     \"name\": \"nova\","},{"line_number":45,"context_line":"     \"endpoints_links\": [],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_94a9167d","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":15},"in_reply_to":"3f4c43b2_fb546b00","updated":"2020-04-22 09:32:34.000000000","message":"Done","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":99,"context_line":"         {\"region\": \"RegionOne\","},{"line_number":100,"context_line":"          \"interface\": \"public\","},{"line_number":101,"context_line":"          \"url\": \"http://public.cinder.example.com:8776/v3\"},"},{"line_number":102,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":103,"context_line":"          \"interface\": \"admin\","},{"line_number":104,"context_line":"          \"url\": \"http://admin.cinder.example.com:8776/v3\"},"},{"line_number":105,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":106,"context_line":"          \"interface\": \"internal\","},{"line_number":107,"context_line":"          \"url\": \"http://int.cinder.example.com:8776/v3\"},"},{"line_number":108,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":109,"context_line":"          \"interface\": \"public\","},{"line_number":110,"context_line":"          \"url\": \"http://public.cinder.example.com:8776/v3\"}"},{"line_number":111,"context_line":"     ]},"},{"line_number":112,"context_line":"    {\"type\": \"image\","},{"line_number":113,"context_line":"     \"name\": \"glance\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_43221fa6","line":110,"range":{"start_line":102,"start_character":9,"end_line":110,"end_character":60},"updated":"2020-04-15 10:16:54.000000000","message":"RegionOne and RegionTwo use same endpoint URLs. Is it a good sample data?","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":99,"context_line":"         {\"region\": \"RegionOne\","},{"line_number":100,"context_line":"          \"interface\": \"public\","},{"line_number":101,"context_line":"          \"url\": \"http://public.cinder.example.com:8776/v3\"},"},{"line_number":102,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":103,"context_line":"          \"interface\": \"admin\","},{"line_number":104,"context_line":"          \"url\": \"http://admin.cinder.example.com:8776/v3\"},"},{"line_number":105,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":106,"context_line":"          \"interface\": \"internal\","},{"line_number":107,"context_line":"          \"url\": \"http://int.cinder.example.com:8776/v3\"},"},{"line_number":108,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":109,"context_line":"          \"interface\": \"public\","},{"line_number":110,"context_line":"          \"url\": \"http://public.cinder.example.com:8776/v3\"}"},{"line_number":111,"context_line":"     ]},"},{"line_number":112,"context_line":"    {\"type\": \"image\","},{"line_number":113,"context_line":"     \"name\": \"glance\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_44b6a9fc","line":110,"range":{"start_line":102,"start_character":9,"end_line":110,"end_character":60},"in_reply_to":"1f493fa4_34b2c2e7","updated":"2020-04-23 02:18:01.000000000","message":"It turns out RegionTwo for cinder endpoints are not used anywhere, so we can change URLs for RegionTwo in this patch.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"eb4293b4c2952aa38c05316f91d3159bb4a70d95","unresolved":false,"context_lines":[{"line_number":99,"context_line":"         {\"region\": \"RegionOne\","},{"line_number":100,"context_line":"          \"interface\": \"public\","},{"line_number":101,"context_line":"          \"url\": \"http://public.cinder.example.com:8776/v3\"},"},{"line_number":102,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":103,"context_line":"          \"interface\": \"admin\","},{"line_number":104,"context_line":"          \"url\": \"http://admin.cinder.example.com:8776/v3\"},"},{"line_number":105,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":106,"context_line":"          \"interface\": \"internal\","},{"line_number":107,"context_line":"          \"url\": \"http://int.cinder.example.com:8776/v3\"},"},{"line_number":108,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":109,"context_line":"          \"interface\": \"public\","},{"line_number":110,"context_line":"          \"url\": \"http://public.cinder.example.com:8776/v3\"}"},{"line_number":111,"context_line":"     ]},"},{"line_number":112,"context_line":"    {\"type\": \"image\","},{"line_number":113,"context_line":"     \"name\": \"glance\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_34b2c2e7","line":110,"range":{"start_line":102,"start_character":9,"end_line":110,"end_character":60},"in_reply_to":"3f4c43b2_43221fa6","updated":"2020-04-22 09:32:34.000000000","message":"I\u0027ll fix it in a follow-up patch.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":70,"context_line":"     \"endpoints_links\": [],"},{"line_number":71,"context_line":"     \"endpoints\": ["},{"line_number":72,"context_line":"         {\"region\": \"RegionOne\","},{"line_number":73,"context_line":"          \"interface\": \"public\","},{"line_number":74,"context_line":"          \"url\": \"http://admin.cinder.example.com:8776/v2\"},"},{"line_number":75,"context_line":"         {\"region\": \"RegionOne\","},{"line_number":76,"context_line":"          \"interface\": \"internal\","}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_a4604dd0","line":73,"range":{"start_line":73,"start_character":23,"end_line":73,"end_character":31},"updated":"2020-04-23 02:18:01.000000000","message":"Two \u0027public\u0027 entries for RegionOne.\nIt needs to be \u0027admin\u0027.","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":79,"context_line":"          \"interface\": \"public\","},{"line_number":80,"context_line":"          \"url\": \"http://public.cinder.example.com:8776/v2\"},"},{"line_number":81,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":82,"context_line":"          \"interface\": \"public\","},{"line_number":83,"context_line":"          \"url\": \"http://admin.cinder.example.com:8776/v2\"},"},{"line_number":84,"context_line":"         {\"region\": \"RegionTwo\","},{"line_number":85,"context_line":"          \"interface\": \"internal\","}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_049b01c9","line":82,"range":{"start_line":82,"start_character":24,"end_line":82,"end_character":31},"updated":"2020-04-23 02:18:01.000000000","message":"ditto","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"}],"openstack_dashboard/test/unit/api/test_keystone.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4710fa38e134d93cd3b435becb02a290f5c50193","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                         service.url)"},{"line_number":100,"context_line":"        self.assertEqual(\"http://public.nova.example.com:8774/v2\","},{"line_number":101,"context_line":"                         service.public_url)"},{"line_number":102,"context_line":"        self.assertEqual(\"int.nova.example.com\", service.host)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class APIVersionTests(test.APIMockTestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4c43b2_e3036b0c","line":102,"updated":"2020-04-15 10:16:54.000000000","message":"If I understand correctly, the purpose of this test checks endpoints are picked correctly for a second region.\nI haven\u0027t checked the impact of the service catalog format, but this is one of the affected cases.","commit_id":"2340d2f3a6954e2e9e78307bf33c7b71e8c7c6fc"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0c2a10381caf6afc526ea900fac6fbd3f90e49f6","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                         service.url)"},{"line_number":100,"context_line":"        self.assertEqual(\"http://public.nova.example.com:8774/v2\","},{"line_number":101,"context_line":"                         service.public_url)"},{"line_number":102,"context_line":"        self.assertEqual(\"int.nova.example.com\", service.host)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class APIVersionTests(test.APIMockTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_ce77783a","line":102,"range":{"start_line":102,"start_character":26,"end_line":102,"end_character":46},"updated":"2020-04-23 00:58:39.000000000","message":"My comment in patch set 3 is not addressed yet.\nI don\u0027t think it is a good idea to change the expected value.\nThe test is to pick up a proper endpoint from the second region.\nTest data change affects what we test. It is not good.","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4cc91ad8c26f6876f8b7123a21cb034d16753a51","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                         service.url)"},{"line_number":100,"context_line":"        self.assertEqual(\"http://public.nova.example.com:8774/v2\","},{"line_number":101,"context_line":"                         service.public_url)"},{"line_number":102,"context_line":"        self.assertEqual(\"int.nova.example.com\", service.host)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class APIVersionTests(test.APIMockTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_4441890b","line":102,"range":{"start_line":102,"start_character":26,"end_line":102,"end_character":46},"in_reply_to":"1f493fa4_ce77783a","updated":"2020-04-23 02:18:01.000000000","message":"After checking the detail, L.93 looks not good. It looks better to specify \u0027RegionTwo\u0027 explicitly at L.93.","commit_id":"421c103a9626a3c28c55b124c4e344a2f3410c66"}]}
