)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9ea42de7217e37cd2dfabdef78ca8e389da46c89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1c824159_00f6bf9c","updated":"2025-07-07 07:20:09.000000000","message":"I think this change deserves:\n* A release note\n* Testing (unit test), maybe in Neutron, implementing custom made rules with this new role.","commit_id":"3fb84655964cb613e6b03c461d05d1b13d0c26bf"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"fe647839c97304c3a6381510464c67658ecbdf4a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4b32a692_26c58203","in_reply_to":"1c824159_00f6bf9c","updated":"2025-07-07 12:20:41.000000000","message":"Release note and UT added","commit_id":"3fb84655964cb613e6b03c461d05d1b13d0c26bf"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"890469933ab1a8b8c79ab02a99c298a5aa9db386","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"eff01d5d_d8382849","updated":"2025-07-09 07:11:47.000000000","message":"recheck - unrelated failure of test_fip_connection_for_address_scope - issue with connectivity to the IP address","commit_id":"b510f7feb8678081f0c51d19d9c484b7f19964e1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8188aa82ce31864fe0500b8a9056b2459ca4255a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"edeca5e2_ca8a469c","updated":"2025-07-08 18:26:04.000000000","message":"recheck unrelated functional job failure","commit_id":"b510f7feb8678081f0c51d19d9c484b7f19964e1"}],"neutron_lib/context.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"abf4179320eb7831616627a9c8b8edcd7b75fbfb","unresolved":true,"context_lines":[{"line_number":54,"context_line":"                        \u0027project_name instead\u0027)"},{"line_number":55,"context_line":"        kwargs.setdefault(\u0027project_id\u0027, project_id)"},{"line_number":56,"context_line":"        kwargs.setdefault(\u0027project_name\u0027, project_name)"},{"line_number":57,"context_line":"        self.has_global_access \u003d has_global_access"},{"line_number":58,"context_line":"        super().__init__("},{"line_number":59,"context_line":"            is_admin\u003dis_admin, user_id\u003duser_id, **kwargs)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1e35b4ef_884e14e4","line":57,"updated":"2025-07-03 16:30:45.000000000","message":"Why are we setting this here then just over-riding below?","commit_id":"c4404cf1f37b0bfa2f6d48af7d3df26713046c4d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"fe647839c97304c3a6381510464c67658ecbdf4a","unresolved":true,"context_lines":[{"line_number":54,"context_line":"                        \u0027project_name instead\u0027)"},{"line_number":55,"context_line":"        kwargs.setdefault(\u0027project_id\u0027, project_id)"},{"line_number":56,"context_line":"        kwargs.setdefault(\u0027project_name\u0027, project_name)"},{"line_number":57,"context_line":"        self.has_global_access \u003d has_global_access"},{"line_number":58,"context_line":"        super().__init__("},{"line_number":59,"context_line":"            is_admin\u003dis_admin, user_id\u003duser_id, **kwargs)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fcd91420_6e49ded7","line":57,"in_reply_to":"1e35b4ef_884e14e4","updated":"2025-07-07 12:20:41.000000000","message":"it is like that because it needs to be defined before super() is called. Otherwise it will fail in some cases. For is_admin it is not needed as is_admin is actually defined in the super().__init_() already but this new option is only in the Neutron\u0027s context (for now at least) so that\u0027s why it is done that way.","commit_id":"c4404cf1f37b0bfa2f6d48af7d3df26713046c4d"}],"neutron_lib/policy/_engine.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9ea42de7217e37cd2dfabdef78ca8e389da46c89","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        description\u003d\u0027Rule for cloud admin access\u0027),"},{"line_number":35,"context_line":"    policy.RuleDefault("},{"line_number":36,"context_line":"        _GLOBAL_CTX_POLICY,"},{"line_number":37,"context_line":"        \u0027!\u0027,"},{"line_number":38,"context_line":"        description\u003d\u0027Rule for context with global access to the resources\u0027),"},{"line_number":39,"context_line":"    policy.RuleDefault("},{"line_number":40,"context_line":"        _ADVSVC_CTX_POLICY,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9b2d1bdd_cf7327b7","line":37,"range":{"start_line":37,"start_character":9,"end_line":37,"end_character":10},"updated":"2025-07-07 07:20:09.000000000","message":"Sorry, is this something defined in Keystone?","commit_id":"3fb84655964cb613e6b03c461d05d1b13d0c26bf"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"fe647839c97304c3a6381510464c67658ecbdf4a","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        description\u003d\u0027Rule for cloud admin access\u0027),"},{"line_number":35,"context_line":"    policy.RuleDefault("},{"line_number":36,"context_line":"        _GLOBAL_CTX_POLICY,"},{"line_number":37,"context_line":"        \u0027!\u0027,"},{"line_number":38,"context_line":"        description\u003d\u0027Rule for context with global access to the resources\u0027),"},{"line_number":39,"context_line":"    policy.RuleDefault("},{"line_number":40,"context_line":"        _ADVSVC_CTX_POLICY,"}],"source_content_type":"text/x-python","patch_set":2,"id":"cdf1f954_24aa5529","line":37,"range":{"start_line":37,"start_character":9,"end_line":37,"end_character":10},"in_reply_to":"9b2d1bdd_cf7327b7","updated":"2025-07-07 12:20:41.000000000","message":"yes, it is documented in oslo_policy docs: https://docs.openstack.org/oslo.policy/latest/admin/policy-yaml-file.html#examples","commit_id":"3fb84655964cb613e6b03c461d05d1b13d0c26bf"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7763e7fa05597772797237de2bc7a096fb78817d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        description\u003d\u0027Rule for cloud admin access\u0027),"},{"line_number":35,"context_line":"    policy.RuleDefault("},{"line_number":36,"context_line":"        _GLOBAL_CTX_POLICY,"},{"line_number":37,"context_line":"        \u0027!\u0027,"},{"line_number":38,"context_line":"        description\u003d\u0027Rule for context with global access to the resources\u0027),"},{"line_number":39,"context_line":"    policy.RuleDefault("},{"line_number":40,"context_line":"        _ADVSVC_CTX_POLICY,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7db26b4e_5875c815","line":37,"range":{"start_line":37,"start_character":9,"end_line":37,"end_character":10},"in_reply_to":"cdf1f954_24aa5529","updated":"2025-07-08 07:55:58.000000000","message":"+1","commit_id":"3fb84655964cb613e6b03c461d05d1b13d0c26bf"}],"releasenotes/notes/add-has_global_access-to-the-context-object-672af662b46be0a3.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9ad9040f431ba1b238f7cb89676f34a2f6ff4e3c","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    New attribute ``has_global_access`` is added to the context object. Value of"},{"line_number":5,"context_line":"    this attribute is set based on the API policy rule"},{"line_number":6,"context_line":"    ``context_with_global_access`` and should be used in case when there are"},{"line_number":7,"context_line":"    custom roles with access to the resources from all projects, like for example"},{"line_number":8,"context_line":"    ``auditor`` role which should have read only access to all of the resources"},{"line_number":9,"context_line":"    in the cloud."},{"line_number":10,"context_line":"    By default ``context.has_global_access`` is granted to no one."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"e92e4f8a_b9577c39","line":7,"range":{"start_line":7,"start_character":55,"end_line":7,"end_character":81},"updated":"2025-07-07 20:20:57.000000000","message":"Nit: if you respin can you change this part so the sentence isn\u0027t really long:\n\ns/projects. For example,","commit_id":"d927ad68924f13539d8a165fa1bbc62ffa13104e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"fef8e9712538dfe4f3f3ba1d3b79baa2f9a5c5dc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    New attribute ``has_global_access`` is added to the context object. Value of"},{"line_number":5,"context_line":"    this attribute is set based on the API policy rule"},{"line_number":6,"context_line":"    ``context_with_global_access`` and should be used in case when there are"},{"line_number":7,"context_line":"    custom roles with access to the resources from all projects, like for example"},{"line_number":8,"context_line":"    ``auditor`` role which should have read only access to all of the resources"},{"line_number":9,"context_line":"    in the cloud."},{"line_number":10,"context_line":"    By default ``context.has_global_access`` is granted to no one."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"610f0a95_a3d87b21","line":7,"range":{"start_line":7,"start_character":55,"end_line":7,"end_character":81},"in_reply_to":"e92e4f8a_b9577c39","updated":"2025-07-08 07:43:06.000000000","message":"Done","commit_id":"d927ad68924f13539d8a165fa1bbc62ffa13104e"}]}
