)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27cd4d79e2a2e03adcaf4d3c8a0c1268f962856d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a64a2ff9_7985a6c2","updated":"2024-07-08 12:45:56.000000000","message":"Hi Slawek, what happens with the \"network\", \"floatingip_port_forwarding\", \"rbac\" or \"security_group\" ADMIN (or similar) rules? Shouldn\u0027t a project manager have the same permissions as an admin for the resources of a particular project?","commit_id":"11e641a84a7e10314226735f5db6a9a01d881531"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9326af5b154a4b2570fb4ce0600d976f06c8cf43","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c6103d73_ac36097a","in_reply_to":"3d69432f_8935b8bc","updated":"2024-07-09 14:32:59.000000000","message":"ok, but do we have any document(s) about existing roles, like ADMIN, MEMBER or READER? I don\u0027t know about any. Maybe we should somehow document all of those roles?","commit_id":"11e641a84a7e10314226735f5db6a9a01d881531"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3c31cbf535d11f5b7e46989542b643e6bef3b8fe","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f5b848ea_08e3e697","in_reply_to":"85bfe326_4e6818d8","updated":"2024-07-08 14:54:45.000000000","message":"In that case, we need to be very explicit on what resources will have this project manager role check (that could be overridden, of course). We need to document and justify it.","commit_id":"11e641a84a7e10314226735f5db6a9a01d881531"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9bf37fba2917bddd0f32a788b9f262e26380b898","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"85bfe326_4e6818d8","in_reply_to":"a64a2ff9_7985a6c2","updated":"2024-07-08 13:04:44.000000000","message":"My idea was to give manager role more permissions to the resources related only to the project but not to e.g. things related to the infrastructure, config of deployment, etc. That\u0027s why I didn\u0027t initially allow manager to e.g. create networks with provider:network_type or things like that.\nOf course, my idea may be wrong and we may want to give more privileges to the MANAGER role. I am open for the discussion. If you think about any specific APIs which should be allowed for the manager, please comment on them in e.g. unit tests file, so we can discuss any specific API call separately.","commit_id":"11e641a84a7e10314226735f5db6a9a01d881531"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d768715f0fb83435a7a081006badfee2b7221fdd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f7ee50c3_7a94cb7f","in_reply_to":"f5b848ea_08e3e697","updated":"2024-07-09 07:43:37.000000000","message":"So are You saying that we should have some documentation about all our policies generated somewhere or what exactly?","commit_id":"11e641a84a7e10314226735f5db6a9a01d881531"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1760a8291342f0491351e7d96c05442ca20667ea","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3d69432f_8935b8bc","in_reply_to":"f7ee50c3_7a94cb7f","updated":"2024-07-09 14:20:16.000000000","message":"We are adding a new role that is not documented anywhere. We should add some documentation, probably a new file, to add this reference.","commit_id":"11e641a84a7e10314226735f5db6a9a01d881531"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c336e1caa323f313cad9c7fcfc499c592e2d2443","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"86b59a38_ea0456f2","updated":"2024-07-09 18:45:23.000000000","message":"Soft -1.\n\nAnd one meta comment that you could use super(), but I do realize you were following the style existing in the files.","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c736ee69132202fa9b3b61db5b88d1b53050409a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"48473143_41902705","in_reply_to":"86b59a38_ea0456f2","updated":"2024-07-10 12:33:09.000000000","message":"Done for all those unit tests in follow up patch https://review.opendev.org/c/openstack/neutron/+/923840","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d6dec3de317999a4a9932159c9e93015bccad616","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c3552a33_f5384f2a","updated":"2024-07-10 19:18:55.000000000","message":"I would be Ok with doing any doc updates in a follow-on. Is there any existing docs in oslo.policy or just the governance goal doc?","commit_id":"7c7dc26a01f3a09b2e3d269aff7b31be36aa8ace"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8b2f12ce87dca18bc541d6beabf5671fd6ef455f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f1054e76_66da6994","updated":"2024-07-12 17:15:20.000000000","message":"lgtm, doc explaining what is manager role and its use case will be good for users but agree to do that in follow up.","commit_id":"7c7dc26a01f3a09b2e3d269aff7b31be36aa8ace"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5824765964b8d17b00a1b34a7caf33cd71df601a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3fa299f0_f7282637","updated":"2024-07-18 07:54:02.000000000","message":"recheck - dhcp agent revert is done now, ci should be more stable","commit_id":"7c7dc26a01f3a09b2e3d269aff7b31be36aa8ace"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f13085b1d477606d06d1610d66101769fff223a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e3e28e1a_c860b53b","updated":"2024-07-16 13:42:55.000000000","message":"recheck - unrelated issue with the metadata service during one of the tests","commit_id":"7c7dc26a01f3a09b2e3d269aff7b31be36aa8ace"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e1925488d2243bfc0194b98cc255a538a587518d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2d962f36_a13ebe33","updated":"2024-07-12 06:59:31.000000000","message":"recheck - unrelated kernel panic in guest vm and problem with ssh to the ubuntu guest","commit_id":"7c7dc26a01f3a09b2e3d269aff7b31be36aa8ace"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"19c25f751d7bb60036d95dc002cc0b341860e337","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7a5aa3f6_210b4010","updated":"2024-07-15 06:17:50.000000000","message":"recheck - unrelated ssh authentication issue and ssh timeout","commit_id":"7c7dc26a01f3a09b2e3d269aff7b31be36aa8ace"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"314d726ce1a3dd07aca7fc351bc0aa95f4f48d21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e4810268_32253332","updated":"2024-07-18 06:25:49.000000000","message":"recheck reverted dhcp patch","commit_id":"7c7dc26a01f3a09b2e3d269aff7b31be36aa8ace"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e1925488d2243bfc0194b98cc255a538a587518d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"92b78fb4_cf30cc01","in_reply_to":"c3552a33_f5384f2a","updated":"2024-07-12 06:59:31.000000000","message":"just governance goal doc AFAIK","commit_id":"7c7dc26a01f3a09b2e3d269aff7b31be36aa8ace"}],"neutron/tests/unit/conf/policies/test_logging.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c336e1caa323f313cad9c7fcfc499c592e2d2443","unresolved":true,"context_lines":[{"line_number":126,"context_line":"            policy.enforce(self.context, \u0027delete_log\u0027, self.target))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class ProjectMemberTests(ProjectManagerTests):"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def setUp(self):"},{"line_number":132,"context_line":"        super(ProjectMemberTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"080da096_f6fa17fd","line":129,"range":{"start_line":129,"start_character":25,"end_line":129,"end_character":44},"updated":"2024-07-09 18:45:23.000000000","message":"I guess this could just stay AdminTests as it\u0027s really not inheriting anything from ProjectManagerTests that I can see.","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c736ee69132202fa9b3b61db5b88d1b53050409a","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            policy.enforce(self.context, \u0027delete_log\u0027, self.target))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class ProjectMemberTests(ProjectManagerTests):"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def setUp(self):"},{"line_number":132,"context_line":"        super(ProjectMemberTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"44993196_d648cd51","line":129,"range":{"start_line":129,"start_character":25,"end_line":129,"end_character":44},"in_reply_to":"080da096_f6fa17fd","updated":"2024-07-10 12:33:09.000000000","message":"yes but the whole idea behind this is to kind of show readers how roles inherits from each other. So it is like that in all unit test modules.","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"}],"neutron/tests/unit/conf/policies/test_metering.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c336e1caa323f313cad9c7fcfc499c592e2d2443","unresolved":true,"context_lines":[{"line_number":218,"context_line":"            self.context, \u0027delete_metering_label_rule\u0027, self.alt_target)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"class ProjectMemberTests(ProjectManagerTests):"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def setUp(self):"},{"line_number":224,"context_line":"        super(ProjectMemberTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ac7b0a2e_f040201f","line":221,"range":{"start_line":221,"start_character":25,"end_line":221,"end_character":44},"updated":"2024-07-09 18:45:23.000000000","message":"Same comment here","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c736ee69132202fa9b3b61db5b88d1b53050409a","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            self.context, \u0027delete_metering_label_rule\u0027, self.alt_target)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"class ProjectMemberTests(ProjectManagerTests):"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def setUp(self):"},{"line_number":224,"context_line":"        super(ProjectMemberTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"52fcfe27_5b6f926a","line":221,"range":{"start_line":221,"start_character":25,"end_line":221,"end_character":44},"in_reply_to":"ac7b0a2e_f040201f","updated":"2024-07-10 12:33:09.000000000","message":"same as in the previous file 😊","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"}],"neutron/tests/unit/conf/policies/test_port.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c336e1caa323f313cad9c7fcfc499c592e2d2443","unresolved":true,"context_lines":[{"line_number":1135,"context_line":"            policy.enforce, self.context, \u0027delete_port\u0027, self.alt_target)"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"class ProjectMemberTests(ProjectManagerTests):"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"    def setUp(self):"},{"line_number":1141,"context_line":"        super(ProjectMemberTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"0f964404_cffb6f7e","line":1138,"range":{"start_line":1138,"start_character":25,"end_line":1138,"end_character":44},"updated":"2024-07-09 18:45:23.000000000","message":"Not sure if same comment applies here as my screen isn\u0027t big enough to see the entire file.","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c736ee69132202fa9b3b61db5b88d1b53050409a","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"            policy.enforce, self.context, \u0027delete_port\u0027, self.alt_target)"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":""},{"line_number":1138,"context_line":"class ProjectMemberTests(ProjectManagerTests):"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"    def setUp(self):"},{"line_number":1141,"context_line":"        super(ProjectMemberTests, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"58050f00_2c87e601","line":1138,"range":{"start_line":1138,"start_character":25,"end_line":1138,"end_character":44},"in_reply_to":"0f964404_cffb6f7e","updated":"2024-07-10 12:33:09.000000000","message":"not really, there are tests which are different in those 2 classes in this module, but others are the same. Also, as I replied in previous files, this is convention I took with all those tests for the policies.","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"}],"neutron/tests/unit/conf/policies/test_qos.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c336e1caa323f313cad9c7fcfc499c592e2d2443","unresolved":true,"context_lines":[{"line_number":155,"context_line":"        super(ProjectMemberQosPolicyTests, self).setUp()"},{"line_number":156,"context_line":"        self.context \u003d self.project_member_ctx"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_get_policy(self):"},{"line_number":159,"context_line":"        self.assertTrue("},{"line_number":160,"context_line":"            policy.enforce(self.context, \u0027get_policy\u0027, self.target))"},{"line_number":161,"context_line":"        self.assertRaises("},{"line_number":162,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":163,"context_line":"            policy.enforce, self.context, \u0027get_policy\u0027, self.alt_target)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_create_policy(self):"},{"line_number":166,"context_line":"        self.assertRaises("},{"line_number":167,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":168,"context_line":"            policy.enforce, self.context, \u0027create_policy\u0027, self.target)"},{"line_number":169,"context_line":"        self.assertRaises("},{"line_number":170,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":171,"context_line":"            policy.enforce, self.context, \u0027create_policy\u0027, self.alt_target)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_update_policy(self):"},{"line_number":174,"context_line":"        self.assertRaises("},{"line_number":175,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":176,"context_line":"            policy.enforce, self.context, \u0027update_policy\u0027, self.target)"},{"line_number":177,"context_line":"        self.assertRaises("},{"line_number":178,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":179,"context_line":"            policy.enforce, self.context, \u0027update_policy\u0027, self.alt_target)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_delete_policy(self):"},{"line_number":182,"context_line":"        self.assertRaises("},{"line_number":183,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":184,"context_line":"            policy.enforce, self.context, \u0027delete_policy\u0027, self.target)"},{"line_number":185,"context_line":"        self.assertRaises("},{"line_number":186,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":187,"context_line":"            policy.enforce, self.context, \u0027delete_policy\u0027, self.alt_target)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class ProjectReaderQosPolicyTests(ProjectMemberQosPolicyTests):"}],"source_content_type":"text/x-python","patch_set":3,"id":"a94bbc10_4b16f822","line":187,"range":{"start_line":158,"start_character":4,"end_line":187,"end_character":75},"updated":"2024-07-09 18:45:23.000000000","message":"Can this go away as it\u0027s inheriting what looks like the same set of tests.","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c736ee69132202fa9b3b61db5b88d1b53050409a","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        super(ProjectMemberQosPolicyTests, self).setUp()"},{"line_number":156,"context_line":"        self.context \u003d self.project_member_ctx"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_get_policy(self):"},{"line_number":159,"context_line":"        self.assertTrue("},{"line_number":160,"context_line":"            policy.enforce(self.context, \u0027get_policy\u0027, self.target))"},{"line_number":161,"context_line":"        self.assertRaises("},{"line_number":162,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":163,"context_line":"            policy.enforce, self.context, \u0027get_policy\u0027, self.alt_target)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_create_policy(self):"},{"line_number":166,"context_line":"        self.assertRaises("},{"line_number":167,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":168,"context_line":"            policy.enforce, self.context, \u0027create_policy\u0027, self.target)"},{"line_number":169,"context_line":"        self.assertRaises("},{"line_number":170,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":171,"context_line":"            policy.enforce, self.context, \u0027create_policy\u0027, self.alt_target)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_update_policy(self):"},{"line_number":174,"context_line":"        self.assertRaises("},{"line_number":175,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":176,"context_line":"            policy.enforce, self.context, \u0027update_policy\u0027, self.target)"},{"line_number":177,"context_line":"        self.assertRaises("},{"line_number":178,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":179,"context_line":"            policy.enforce, self.context, \u0027update_policy\u0027, self.alt_target)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_delete_policy(self):"},{"line_number":182,"context_line":"        self.assertRaises("},{"line_number":183,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":184,"context_line":"            policy.enforce, self.context, \u0027delete_policy\u0027, self.target)"},{"line_number":185,"context_line":"        self.assertRaises("},{"line_number":186,"context_line":"            base_policy.PolicyNotAuthorized,"},{"line_number":187,"context_line":"            policy.enforce, self.context, \u0027delete_policy\u0027, self.alt_target)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class ProjectReaderQosPolicyTests(ProjectMemberQosPolicyTests):"}],"source_content_type":"text/x-python","patch_set":3,"id":"94a085e3_4b499c3c","line":187,"range":{"start_line":158,"start_character":4,"end_line":187,"end_character":75},"in_reply_to":"a94bbc10_4b16f822","updated":"2024-07-10 12:33:09.000000000","message":"tests are a bit different for ProjectManager and ProjectMember here, that\u0027s why they are here.","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"}],"releasenotes/notes/Add-support-for-the-MANAGER-role-in-the-RBAC-policies-3173cb9bd64836ad.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c336e1caa323f313cad9c7fcfc499c592e2d2443","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron API RBAC policies now supports by default project MANAGER role."},{"line_number":5,"context_line":"    Please refer to the `community goal"},{"line_number":6,"context_line":"    \u003chttps://governance.openstack.org/tc/goals/selected/consistent-and-secure-rbac.html#phase-3\u003e`_"},{"line_number":7,"context_line":"    for more information."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3c189413_f6432cbb","line":4,"range":{"start_line":4,"start_character":34,"end_line":4,"end_character":61},"updated":"2024-07-09 18:45:23.000000000","message":"nit: s/support by default the project","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c736ee69132202fa9b3b61db5b88d1b53050409a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron API RBAC policies now supports by default project MANAGER role."},{"line_number":5,"context_line":"    Please refer to the `community goal"},{"line_number":6,"context_line":"    \u003chttps://governance.openstack.org/tc/goals/selected/consistent-and-secure-rbac.html#phase-3\u003e`_"},{"line_number":7,"context_line":"    for more information."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"0490174c_9c371774","line":4,"range":{"start_line":4,"start_character":34,"end_line":4,"end_character":61},"in_reply_to":"3c189413_f6432cbb","updated":"2024-07-10 12:33:09.000000000","message":"Done","commit_id":"3b71a18264f2d37cb6ad14452d8baede2815ecc7"}]}
