)]}'
{"openstack/config/cloud_region.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"af0098e6b4c7c4fb1565e4a020cbb7fb63cb5dfb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from openstack import exceptions"},{"line_number":39,"context_line":"from openstack import proxy"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"SCOPE_KEYS \u003d {\u0027project_id\u0027, \u0027project_name\u0027, \u0027system_scope\u0027}"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _make_key(key, service_type):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_79b6fc40","line":41,"updated":"2019-03-13 12:47:54.000000000","message":"It is also possible to scope to domains","commit_id":"fbdff2eac670fe8d12ab17624fef3ff213b1bff7"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"311094a08f793b660b925d84d047b7f2daaa28a8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from openstack import exceptions"},{"line_number":39,"context_line":"from openstack import proxy"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"SCOPE_KEYS \u003d {\u0027project_id\u0027, \u0027project_name\u0027, \u0027system_scope\u0027}"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _make_key(key, service_type):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_d5ed70f0","line":41,"in_reply_to":"5fc1f717_79b6fc40","updated":"2019-03-13 16:19:00.000000000","message":"++","commit_id":"fbdff2eac670fe8d12ab17624fef3ff213b1bff7"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"af0098e6b4c7c4fb1565e4a020cbb7fb63cb5dfb","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            value \u003d auth.get(\u0027endpoint\u0027)"},{"line_number":327,"context_line":"        if (not value and service_type \u003d\u003d \u0027identity\u0027"},{"line_number":328,"context_line":"                and SCOPE_KEYS.isdisjoint(set(auth.keys()))):"},{"line_number":329,"context_line":"            # Some identity operations are unscoped, which means they"},{"line_number":330,"context_line":"            # are perfectly valid to do without a project or a system-scope."},{"line_number":331,"context_line":"            value \u003d auth.get(\u0027auth_url\u0027)"},{"line_number":332,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_39d4f447","line":329,"range":{"start_line":329,"start_character":14,"end_line":329,"end_character":51},"updated":"2019-03-13 12:47:54.000000000","message":"Technically true but these are very rare, they\u0027re limited to\n1) look up list of possible targets (projects, domains, system) to scope to\n2) exchange unscoped token for scoped token\n3) change password, which doesn\u0027t use a token at all and should probably go through a completely different code path\n\nAre these cases what you\u0027re addressing?","commit_id":"fbdff2eac670fe8d12ab17624fef3ff213b1bff7"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"1617a9909441cc66820550e2256448bf145a684f","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            value \u003d auth.get(\u0027endpoint\u0027)"},{"line_number":327,"context_line":"        if (not value and service_type \u003d\u003d \u0027identity\u0027"},{"line_number":328,"context_line":"                and SCOPE_KEYS.isdisjoint(set(auth.keys()))):"},{"line_number":329,"context_line":"            # Some identity operations are unscoped, which means they"},{"line_number":330,"context_line":"            # are perfectly valid to do without a project or a system-scope."},{"line_number":331,"context_line":"            value \u003d auth.get(\u0027auth_url\u0027)"},{"line_number":332,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_56b3c60a","line":329,"range":{"start_line":329,"start_character":14,"end_line":329,"end_character":51},"in_reply_to":"5fc1f717_39d4f447","updated":"2019-03-13 18:18:02.000000000","message":"Yes. (1) is the main one. I have no idea if (2) is a thing one could reasonably do with sdk at this point.\n\nI agree about (3) - I think a Connection  method \"change_password\" would be more useful than a method on Connection.identity.","commit_id":"fbdff2eac670fe8d12ab17624fef3ff213b1bff7"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"b02a2f89d303f2d0b5b1640a8c628c89796277b4","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"SCOPE_KEYS \u003d {"},{"line_number":42,"context_line":"    \u0027project_id\u0027, \u0027project_name\u0027,"},{"line_number":43,"context_line":"    \u0027user_domain_name\u0027, \u0027user_doman_id\u0027,"},{"line_number":44,"context_line":"    \u0027project_domain_name\u0027, \u0027project_domain_id\u0027,"},{"line_number":45,"context_line":"    \u0027domain_id\u0027, \u0027domain_name\u0027,"},{"line_number":46,"context_line":"    \u0027system_scope\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_eadbe2e9","line":43,"updated":"2019-03-13 19:16:11.000000000","message":"Confusingly, user domain doesn\u0027t have anything to do with the scope of the token, it\u0027s more like a namespace for the user.","commit_id":"5e927ce34357cde56ce034282faed6996affb994"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"b02a2f89d303f2d0b5b1640a8c628c89796277b4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"SCOPE_KEYS \u003d {"},{"line_number":42,"context_line":"    \u0027project_id\u0027, \u0027project_name\u0027,"},{"line_number":43,"context_line":"    \u0027user_domain_name\u0027, \u0027user_doman_id\u0027,"},{"line_number":44,"context_line":"    \u0027project_domain_name\u0027, \u0027project_domain_id\u0027,"},{"line_number":45,"context_line":"    \u0027domain_id\u0027, \u0027domain_name\u0027,"},{"line_number":46,"context_line":"    \u0027system_scope\u0027"},{"line_number":47,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_8af6de62","line":44,"updated":"2019-03-13 19:16:11.000000000","message":"Same with the project domain, it\u0027s not a scope target but a namespace.\n\nSo the relevant keys to determine whether the user is requesting a scoped token are project_id/project_name, domain_id/domain_name, and system_scope.","commit_id":"5e927ce34357cde56ce034282faed6996affb994"}]}
