Skip to content

Commit 6817355

Browse files
committed
update
1 parent abe1ebc commit 6817355

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

src/aks-preview/azext_aks_preview/_roleassignments.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,30 @@ def _add_role_assignment_executor_new(cmd, role, assignee, resource_group_name=N
5656
mod="models",
5757
operation_group="role_assignments",
5858
)
59-
if cmd.supported_api_version(min_api="2018-01-01-preview", resource_type=ResourceType.MGMT_AUTHORIZATION):
59+
from azure.cli.core import __version__ as core_version
60+
if core_version >= "2.77.0":
61+
# since 2.77.0, role assignment client swithched to single api version from multi api versions
62+
# ref: https://github.com/Azure/azure-cli/pull/31859
6063
parameters = RoleAssignmentCreateParameters(role_definition_id=role_id, principal_id=object_id,
61-
principal_type=None)
64+
principal_type=assignee_principal_type)
6265
return assignments_client.create(scope, assignment_name, parameters, headers=custom_headers)
63-
64-
# for backward compatibility
65-
RoleAssignmentProperties = get_sdk(
66-
cmd.cli_ctx,
67-
ResourceType.MGMT_AUTHORIZATION,
68-
"RoleAssignmentProperties",
69-
mod="models",
70-
operation_group="role_assignments",
71-
)
72-
properties = RoleAssignmentProperties(role_definition_id=role_id, principal_id=object_id)
73-
return assignments_client.create(scope, assignment_name, properties, headers=custom_headers)
66+
else:
67+
# before 2.77.0, role assignment client used multi api versions
68+
if cmd.supported_api_version(min_api="2018-01-01-preview", resource_type=ResourceType.MGMT_AUTHORIZATION):
69+
parameters = RoleAssignmentCreateParameters(role_definition_id=role_id, principal_id=object_id,
70+
principal_type=None)
71+
return assignments_client.create(scope, assignment_name, parameters, headers=custom_headers)
72+
73+
# for backward compatibility
74+
RoleAssignmentProperties = get_sdk(
75+
cmd.cli_ctx,
76+
ResourceType.MGMT_AUTHORIZATION,
77+
"RoleAssignmentProperties",
78+
mod="models",
79+
operation_group="role_assignments",
80+
)
81+
properties = RoleAssignmentProperties(role_definition_id=role_id, principal_id=object_id)
82+
return assignments_client.create(scope, assignment_name, properties, headers=custom_headers)
7483

7584

7685
# TODO(fuming): remove and replaced by import from azure.cli.command_modules.acs once dependency bumped to 2.47.0
@@ -92,7 +101,7 @@ def _add_role_assignment_new(cmd, role, service_principal_msi_id, is_service_pri
92101
)
93102
break
94103
except HttpResponseError as ex:
95-
if isinstance(ex, ResourceExistsError) or "The role assignment already exists." in ex.message:
104+
if isinstance(ex, ResourceExistsError) or ex.error.code == 'RoleAssignmentExists':
96105
break
97106
logger.info(ex.message)
98107
except Exception as ex: # pylint: disable=broad-except

0 commit comments

Comments
 (0)