)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Identity: Add support for system role assignment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allow granting and revoking system role assignment to a user or group."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https: //docs.openstack.org/api-ref/identity/v3/#system-role-assignments"},{"line_number":12,"context_line":"Change-Id: I17da22e7f7d64b4d2a237b8f96a503b3e020f5ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"b8b5e016_6964d981","line":9,"updated":"2022-01-13 07:30:27.000000000","message":"... and filtering for those when listing role assignments.\n\nMaybe you can phrase it better, but worth mentioning, too.","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Identity: Add support for system role assignment"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allow granting and revoking system role assignment to a user or group."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https: //docs.openstack.org/api-ref/identity/v3/#system-role-assignments"},{"line_number":12,"context_line":"Change-Id: I17da22e7f7d64b4d2a237b8f96a503b3e020f5ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"e3b93ab8_23c9a07a","line":9,"in_reply_to":"b8b5e016_6964d981","updated":"2022-01-13 22:18:56.000000000","message":"Done","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allow granting and revoking system role assignment to a user or group."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https: //docs.openstack.org/api-ref/identity/v3/#system-role-assignments"},{"line_number":12,"context_line":"Change-Id: I17da22e7f7d64b4d2a237b8f96a503b3e020f5ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"244d00b1_c4c2e11a","line":11,"updated":"2022-01-13 07:30:27.000000000","message":"Nit: drop the space from the URL","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allow granting and revoking system role assignment to a user or group."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https: //docs.openstack.org/api-ref/identity/v3/#system-role-assignments"},{"line_number":12,"context_line":"Change-Id: I17da22e7f7d64b4d2a237b8f96a503b3e020f5ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"70adbb40_158f3b20","line":11,"in_reply_to":"244d00b1_c4c2e11a","updated":"2022-01-13 22:18:56.000000000","message":"Done","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"1449e50fd45c6525029539b0f63a9e661a80c455","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fc983095_beea11c7","updated":"2022-01-14 05:17:51.000000000","message":"Looking at this now I\u0027m not confident that my previous remarks went into the right direction. Sorry for being so undecided here, might also be good to wait for other reviewers\u0027 opinions first.","commit_id":"e6d9de7f3235cc0c90e103c42e7ca221ce48fbfb"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fa6c3179055eb8177ef7530d532b6a35ae0539b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b8fb0317_440c0db1","updated":"2022-01-21 09:20:16.000000000","message":"Thanks James.","commit_id":"2d0b4d0bfef07cd7a981fb82bf9662456a98c851"}],"openstack/cloud/_identity.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":945,"context_line":"            * \u0027group\u0027 (string) - Group ID to be used as query filter."},{"line_number":946,"context_line":"            * \u0027project\u0027 (string) - Project ID to be used as query filter."},{"line_number":947,"context_line":"            * \u0027domain\u0027 (string) - Domain ID to be used as query filter."},{"line_number":948,"context_line":"            * \u0027system\u0027 (string) - System role ID to be used as query filter."},{"line_number":949,"context_line":"            * \u0027role\u0027 (string) - Role ID to be used as query filter."},{"line_number":950,"context_line":"            * \u0027os_inherit_extension_inherited_to\u0027 (string) - Return inherited"},{"line_number":951,"context_line":"              role assignments for either \u0027projects\u0027 or \u0027domains\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"259fac1d_76306f5f","line":948,"updated":"2022-01-13 07:30:27.000000000","message":"nit: is \"all\" an ID or a name? I\u0027d rather vote for the latter.","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":945,"context_line":"            * \u0027group\u0027 (string) - Group ID to be used as query filter."},{"line_number":946,"context_line":"            * \u0027project\u0027 (string) - Project ID to be used as query filter."},{"line_number":947,"context_line":"            * \u0027domain\u0027 (string) - Domain ID to be used as query filter."},{"line_number":948,"context_line":"            * \u0027system\u0027 (string) - System role ID to be used as query filter."},{"line_number":949,"context_line":"            * \u0027role\u0027 (string) - Role ID to be used as query filter."},{"line_number":950,"context_line":"            * \u0027os_inherit_extension_inherited_to\u0027 (string) - Return inherited"},{"line_number":951,"context_line":"              role assignments for either \u0027projects\u0027 or \u0027domains\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"40a0ede3_27b475ac","line":948,"in_reply_to":"259fac1d_76306f5f","updated":"2022-01-13 22:18:56.000000000","message":"Done","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":1111,"context_line":"        :param string group: The name or id of the group. (v3)"},{"line_number":1112,"context_line":"        :param string project: The name or id of the project."},{"line_number":1113,"context_line":"        :param string domain: The id of the domain. (v3)"},{"line_number":1114,"context_line":"        :param string system: True if to grant system role. (v3)"},{"line_number":1115,"context_line":"        :param bool wait: Wait for role to be granted"},{"line_number":1116,"context_line":"        :param int timeout: Timeout to wait for role to be granted"},{"line_number":1117,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"cf7a5885_9589df41","line":1114,"updated":"2022-01-13 07:30:27.000000000","message":"Shouldn\u0027t this be a bool instead of string then?\nOtherwise the value should not be \"True\", but either \"all\" or None?","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"1449e50fd45c6525029539b0f63a9e661a80c455","unresolved":true,"context_lines":[{"line_number":1111,"context_line":"        :param string group: The name or id of the group. (v3)"},{"line_number":1112,"context_line":"        :param string project: The name or id of the project."},{"line_number":1113,"context_line":"        :param string domain: The id of the domain. (v3)"},{"line_number":1114,"context_line":"        :param string system: True if to grant system role. (v3)"},{"line_number":1115,"context_line":"        :param bool wait: Wait for role to be granted"},{"line_number":1116,"context_line":"        :param int timeout: Timeout to wait for role to be granted"},{"line_number":1117,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"20bbc178_88c3f6c9","line":1114,"in_reply_to":"6351d289_d82940cf","updated":"2022-01-14 05:17:51.000000000","message":"I think a bool parameter should have a default value of True or False instead of None, this would also have to be propagated to the _get_grant_revoke_params() function accordingly.\n\nMaybe reverting to accepting a string and checking for it to be either None or \"all\" only would be more consistent with other locations where the system parameter is being used.","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":1111,"context_line":"        :param string group: The name or id of the group. (v3)"},{"line_number":1112,"context_line":"        :param string project: The name or id of the project."},{"line_number":1113,"context_line":"        :param string domain: The id of the domain. (v3)"},{"line_number":1114,"context_line":"        :param string system: True if to grant system role. (v3)"},{"line_number":1115,"context_line":"        :param bool wait: Wait for role to be granted"},{"line_number":1116,"context_line":"        :param int timeout: Timeout to wait for role to be granted"},{"line_number":1117,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"6351d289_d82940cf","line":1114,"in_reply_to":"cf7a5885_9589df41","updated":"2022-01-13 22:18:56.000000000","message":"Done","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":1138,"context_line":"        role \u003d data.get(\u0027role\u0027)"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"        if project:"},{"line_number":1141,"context_line":"            # Proceed with project - precedence over domain"},{"line_number":1142,"context_line":"            if user:"},{"line_number":1143,"context_line":"                has_role \u003d self.identity.validate_user_has_project_role("},{"line_number":1144,"context_line":"                    project, user, role)"}],"source_content_type":"text/x-python","patch_set":3,"id":"94584ac6_d0fd42b6","line":1141,"updated":"2022-01-13 07:30:27.000000000","message":"... over domain and system\n\nMaybe this precedence rules should make it into a note in the help string, too?","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":1138,"context_line":"        role \u003d data.get(\u0027role\u0027)"},{"line_number":1139,"context_line":""},{"line_number":1140,"context_line":"        if project:"},{"line_number":1141,"context_line":"            # Proceed with project - precedence over domain"},{"line_number":1142,"context_line":"            if user:"},{"line_number":1143,"context_line":"                has_role \u003d self.identity.validate_user_has_project_role("},{"line_number":1144,"context_line":"                    project, user, role)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ae088f2_7206a072","line":1141,"in_reply_to":"94584ac6_d0fd42b6","updated":"2022-01-13 22:18:56.000000000","message":"Done","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":1156,"context_line":"                self.identity.assign_project_role_to_group("},{"line_number":1157,"context_line":"                    project, group, role)"},{"line_number":1158,"context_line":"        elif domain:"},{"line_number":1159,"context_line":"            # Proceed with domain"},{"line_number":1160,"context_line":"            if user:"},{"line_number":1161,"context_line":"                has_role \u003d self.identity.validate_user_has_domain_role("},{"line_number":1162,"context_line":"                    domain, user, role)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4a7530c0_427e0370","line":1159,"updated":"2022-01-13 07:30:27.000000000","message":"- precendence over system","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":1156,"context_line":"                self.identity.assign_project_role_to_group("},{"line_number":1157,"context_line":"                    project, group, role)"},{"line_number":1158,"context_line":"        elif domain:"},{"line_number":1159,"context_line":"            # Proceed with domain"},{"line_number":1160,"context_line":"            if user:"},{"line_number":1161,"context_line":"                has_role \u003d self.identity.validate_user_has_domain_role("},{"line_number":1162,"context_line":"                    domain, user, role)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ab0bdf2b_8eedfff6","line":1159,"in_reply_to":"4a7530c0_427e0370","updated":"2022-01-13 22:18:56.000000000","message":"Done","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":1203,"context_line":"        :param string group: The name or id of the group. (v3)"},{"line_number":1204,"context_line":"        :param string project: The name or id of the project."},{"line_number":1205,"context_line":"        :param string domain: The id of the domain. (v3)"},{"line_number":1206,"context_line":"        :param string system: True if to grant system role. (v3)"},{"line_number":1207,"context_line":"        :param bool wait: Wait for role to be revoked"},{"line_number":1208,"context_line":"        :param int timeout: Timeout to wait for role to be revoked"},{"line_number":1209,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"a68eb27c_838a8f74","line":1206,"updated":"2022-01-13 07:30:27.000000000","message":"bool?","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"        :param string group: The name or id of the group. (v3)"},{"line_number":1204,"context_line":"        :param string project: The name or id of the project."},{"line_number":1205,"context_line":"        :param string domain: The id of the domain. (v3)"},{"line_number":1206,"context_line":"        :param string system: True if to grant system role. (v3)"},{"line_number":1207,"context_line":"        :param bool wait: Wait for role to be revoked"},{"line_number":1208,"context_line":"        :param int timeout: Timeout to wait for role to be revoked"},{"line_number":1209,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d723c120_c99cd8e2","line":1206,"in_reply_to":"a68eb27c_838a8f74","updated":"2022-01-13 22:18:56.000000000","message":"Done","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"1449e50fd45c6525029539b0f63a9e661a80c455","unresolved":true,"context_lines":[{"line_number":1176,"context_line":"                self.identity.assign_domain_role_to_group("},{"line_number":1177,"context_line":"                    domain, group, role)"},{"line_number":1178,"context_line":"        else:"},{"line_number":1179,"context_line":"            # Proceed with system"},{"line_number":1180,"context_line":"            if user:"},{"line_number":1181,"context_line":"                has_role \u003d self.identity.validate_group_has_system_role("},{"line_number":1182,"context_line":"                    user, role)"}],"source_content_type":"text/x-python","patch_set":4,"id":"b0770212_73cfa693","line":1179,"updated":"2022-01-14 05:17:51.000000000","message":"Might be good to add a note here that due to the checks performed in _get_grant_revoke_params() when we reach this branch, we can be sure that we have system\u003dTrue as parameter (or system\u003d\"all\" depending on the earlier comment).\n\nOr have an explicit \"elif\" which repeats that condition and at the end then:\n\nelse:\n  raise LogicError # this should never happen","commit_id":"e6d9de7f3235cc0c90e103c42e7ca221ce48fbfb"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fa6c3179055eb8177ef7530d532b6a35ae0539b0","unresolved":true,"context_lines":[{"line_number":945,"context_line":"            * \u0027group\u0027 (string) - Group ID to be used as query filter."},{"line_number":946,"context_line":"            * \u0027project\u0027 (string) - Project ID to be used as query filter."},{"line_number":947,"context_line":"            * \u0027domain\u0027 (string) - Domain ID to be used as query filter."},{"line_number":948,"context_line":"            * \u0027system\u0027 (string) - System role name to be used as query filter."},{"line_number":949,"context_line":"            * \u0027role\u0027 (string) - Role ID to be used as query filter."},{"line_number":950,"context_line":"            * \u0027os_inherit_extension_inherited_to\u0027 (string) - Return inherited"},{"line_number":951,"context_line":"              role assignments for either \u0027projects\u0027 or \u0027domains\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"e3fbaa41_206275d6","line":948,"range":{"start_line":948,"start_character":41,"end_line":948,"end_character":45},"updated":"2022-01-21 09:20:16.000000000","message":"I think it\u0027s just \u0027System name\u0027. Same for other doc strings.","commit_id":"2d0b4d0bfef07cd7a981fb82bf9662456a98c851"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fa6c3179055eb8177ef7530d532b6a35ae0539b0","unresolved":true,"context_lines":[{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        if \u0027system\u0027 in filters:"},{"line_number":996,"context_line":"            system_scope \u003d filters.pop(\u0027system\u0027)"},{"line_number":997,"context_line":"            if not system_scope \u003d\u003d \u0027all\u0027:"},{"line_number":998,"context_line":"                raise exc.OpenStackCloudException("},{"line_number":999,"context_line":"                    \"Only a system scope of \u0027all\u0027 is currently supported\""},{"line_number":1000,"context_line":"                )"},{"line_number":1001,"context_line":"            filters[\u0027scope.system\u0027] \u003d system_scope"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        return list(self.identity.role_assignments(**filters))"}],"source_content_type":"text/x-python","patch_set":5,"id":"6986ab79_a7087b50","line":1000,"range":{"start_line":997,"start_character":0,"end_line":1000,"end_character":17},"updated":"2022-01-21 09:20:16.000000000","message":"I\u0027d be tempted to let keystone handle this, and allow openstacksdk to just work when other systems are supported.","commit_id":"2d0b4d0bfef07cd7a981fb82bf9662456a98c851"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fa6c3179055eb8177ef7530d532b6a35ae0539b0","unresolved":true,"context_lines":[{"line_number":998,"context_line":"                raise exc.OpenStackCloudException("},{"line_number":999,"context_line":"                    \"Only a system scope of \u0027all\u0027 is currently supported\""},{"line_number":1000,"context_line":"                )"},{"line_number":1001,"context_line":"            filters[\u0027scope.system\u0027] \u003d system_scope"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        return list(self.identity.role_assignments(**filters))"},{"line_number":1004,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"a5193217_1b25838c","line":1001,"range":{"start_line":1001,"start_character":26,"end_line":1001,"end_character":27},"updated":"2022-01-21 09:20:16.000000000","message":"This seems to be consistent with keystone API params,but it\u0027s odd that domain and project scopes use underscores (L993)","commit_id":"2d0b4d0bfef07cd7a981fb82bf9662456a98c851"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fa6c3179055eb8177ef7530d532b6a35ae0539b0","unresolved":true,"context_lines":[{"line_number":1180,"context_line":"            # System role ID must be \u0027all\u0027 due to checks performed in"},{"line_number":1181,"context_line":"            # _get_grant_revoke_params"},{"line_number":1182,"context_line":"            if user:"},{"line_number":1183,"context_line":"                has_role \u003d self.identity.validate_group_has_system_role("},{"line_number":1184,"context_line":"                    user, role)"},{"line_number":1185,"context_line":"                if has_role:"},{"line_number":1186,"context_line":"                    self.log.debug(\u0027Assignment already exists\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"6fcc605a_b39750ac","line":1183,"range":{"start_line":1183,"start_character":50,"end_line":1183,"end_character":56},"updated":"2022-01-21 09:20:16.000000000","message":"user","commit_id":"2d0b4d0bfef07cd7a981fb82bf9662456a98c851"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fa6c3179055eb8177ef7530d532b6a35ae0539b0","unresolved":true,"context_lines":[{"line_number":1185,"context_line":"                if has_role:"},{"line_number":1186,"context_line":"                    self.log.debug(\u0027Assignment already exists\u0027)"},{"line_number":1187,"context_line":"                    return False"},{"line_number":1188,"context_line":"                self.identity.assign_system_role_to_user("},{"line_number":1189,"context_line":"                    user, role)"},{"line_number":1190,"context_line":"            else:"},{"line_number":1191,"context_line":"                has_role \u003d self.identity.validate_group_has_system_role("}],"source_content_type":"text/x-python","patch_set":5,"id":"4ee7234c_7a6494b4","line":1188,"range":{"start_line":1188,"start_character":30,"end_line":1188,"end_character":56},"updated":"2022-01-21 09:20:16.000000000","message":"I\u0027d suggest passing the system through to these functions to future-proof them.","commit_id":"2d0b4d0bfef07cd7a981fb82bf9662456a98c851"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fa6c3179055eb8177ef7530d532b6a35ae0539b0","unresolved":true,"context_lines":[{"line_number":1278,"context_line":"                if not has_role:"},{"line_number":1279,"context_line":"                    self.log.debug(\u0027Assignment does not exist\u0027)"},{"line_number":1280,"context_line":"                    return False"},{"line_number":1281,"context_line":"                self.identity.unassign_system_role_from_user("},{"line_number":1282,"context_line":"                    user, role)"},{"line_number":1283,"context_line":"            else:"},{"line_number":1284,"context_line":"                has_role \u003d self.identity.validate_group_has_system_role("}],"source_content_type":"text/x-python","patch_set":5,"id":"eb1d65f2_f3a042d3","line":1281,"range":{"start_line":1281,"start_character":30,"end_line":1281,"end_character":60},"updated":"2022-01-21 09:20:16.000000000","message":"ditto, pass system through","commit_id":"2d0b4d0bfef07cd7a981fb82bf9662456a98c851"}],"openstack/identity/v3/_proxy.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fa6c3179055eb8177ef7530d532b6a35ae0539b0","unresolved":true,"context_lines":[{"line_number":1357,"context_line":"        return project.validate_group_has_role(self, group, role)"},{"line_number":1358,"context_line":""},{"line_number":1359,"context_line":"    def assign_system_role_to_user(self, user, role):"},{"line_number":1360,"context_line":"        \"\"\"Assign system role to user"},{"line_number":1361,"context_line":""},{"line_number":1362,"context_line":"        :param user: Either the ID of a user or a"},{"line_number":1363,"context_line":"            :class:`~openstack.identity.v3.user.User` instance."}],"source_content_type":"text/x-python","patch_set":5,"id":"75406451_74e25a77","line":1360,"range":{"start_line":1360,"start_character":18,"end_line":1360,"end_character":37},"updated":"2022-01-21 09:20:16.000000000","message":"role to user on a system?","commit_id":"2d0b4d0bfef07cd7a981fb82bf9662456a98c851"}],"openstack/tests/functional/cloud/test_identity.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":117,"context_line":"        self.assertIsNotNone(role)"},{"line_number":118,"context_line":"        self.assertTrue(self.operator_cloud.delete_role(role_name))"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    # TODO(Shrews): Once we can support assigning roles within shade, we"},{"line_number":121,"context_line":"    # need to make this test a little more specific, and add more for testing"},{"line_number":122,"context_line":"    # filtering functionality."},{"line_number":123,"context_line":"    def test_list_role_assignments(self):"},{"line_number":124,"context_line":"        if self.identity_version in (\u00272\u0027, \u00272.0\u0027):"},{"line_number":125,"context_line":"            self.skipTest(\"Identity service does not support role assignments\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"ee66719f_9f62758f","line":122,"range":{"start_line":120,"start_character":4,"end_line":122,"end_character":30},"updated":"2022-01-13 07:30:27.000000000","message":"Can be done in a follow-up, but I still think it would be great to actually fulfill this plan now. Create a set of all possible kinds of role assignments (e.g. similar to what devstack has) and make sure that various filters return the expected subsets.\n\nAlso finally remove the references to shade ... ;)","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        self.assertIsNotNone(role)"},{"line_number":118,"context_line":"        self.assertTrue(self.operator_cloud.delete_role(role_name))"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    # TODO(Shrews): Once we can support assigning roles within shade, we"},{"line_number":121,"context_line":"    # need to make this test a little more specific, and add more for testing"},{"line_number":122,"context_line":"    # filtering functionality."},{"line_number":123,"context_line":"    def test_list_role_assignments(self):"},{"line_number":124,"context_line":"        if self.identity_version in (\u00272\u0027, \u00272.0\u0027):"},{"line_number":125,"context_line":"            self.skipTest(\"Identity service does not support role assignments\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"91e0f064_d7ea144e","line":122,"range":{"start_line":120,"start_character":4,"end_line":122,"end_character":30},"in_reply_to":"ee66719f_9f62758f","updated":"2022-01-13 22:18:56.000000000","message":"Ack","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"}],"releasenotes/notes/add-system-role-assignment-693dd3e1da33a54d.yaml":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a7b5741003cb854791bd72ba87c08676529fdfc4","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    ultimately controls access to system-level API calls."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    Good examples of system-level APIs include management of the"},{"line_number":8,"context_line":"    service catalog and compute hypervisors."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"162a90e4_6f97a17b","line":8,"updated":"2022-01-13 07:30:27.000000000","message":"Maybe add a link to some matching keystone doc in addition?","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":30810,"name":"James Kirsch","email":"generalfuzz@gmail.com","username":"generalfuzz"},"change_message_id":"f99193725410ca231cc67f2152a9063771a262bf","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    ultimately controls access to system-level API calls."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    Good examples of system-level APIs include management of the"},{"line_number":8,"context_line":"    service catalog and compute hypervisors."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"d99dbca4_b490ce9b","line":8,"in_reply_to":"162a90e4_6f97a17b","updated":"2022-01-13 22:18:56.000000000","message":"Done","commit_id":"6ce739f5dee775d78708a399a973f1d723f00b70"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"1449e50fd45c6525029539b0f63a9e661a80c455","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    Good examples of system-level APIs include management of the"},{"line_number":8,"context_line":"    service catalog and compute hypervisors."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    https://docs.openstack.org/api-ref/identity/v3/#system-role-assignments"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"16c74741_f0a73226","line":10,"updated":"2022-01-14 05:17:51.000000000","message":"Make this a proper external link in RST, cf. https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#external-links or look at some examples in existing release notes:\n\n`https://...`_","commit_id":"e6d9de7f3235cc0c90e103c42e7ca221ce48fbfb"}]}
