Skip to content

Commit cf11272

Browse files
authored
{Role} az role assignment create: Use RoleAssignmentExists error code to implement idempotence (#32027)
1 parent af21abe commit cf11272

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

src/azure-cli-core/azure/cli/core/commands/arm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,7 @@ def assign_identity(cli_ctx, getter, setter, identity_role=None, identity_scope=
787787
parameters=parameters)
788788
break
789789
except HttpResponseError as ex:
790-
if 'role assignment already exists' in ex.message:
790+
if ex.error.code == 'RoleAssignmentExists':
791791
logger.info('Role assignment already exists')
792792
break
793793
if retry_time < retry_times and ' does not exist in the directory ' in ex.message:

src/azure-cli/azure/cli/command_modules/acs/_roleassignments.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def add_role_assignment(cmd, role, service_principal_msi_id, is_service_principa
118118
)
119119
break
120120
except HttpResponseError as ex:
121-
if isinstance(ex, ResourceExistsError) or "The role assignment already exists." in ex.message:
121+
if isinstance(ex, ResourceExistsError) or ex.error.code == 'RoleAssignmentExists':
122122
break
123123
logger.info(ex.message)
124124
except Exception as ex: # pylint: disable=broad-except

src/azure-cli/azure/cli/command_modules/role/custom.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1332,7 +1332,7 @@ def _process_certificate(cli_ctx, years, app_start_date, app_end_date, cert, cre
13321332

13331333

13341334
def _error_caused_by_role_assignment_exists(ex):
1335-
return getattr(ex, 'status_code', None) == 409 and 'role assignment already exists' in ex.message
1335+
return getattr(ex, 'status_code', None) == 409 and ex.error.code == 'RoleAssignmentExists'
13361336

13371337

13381338
def _validate_app_dates(app_start_date, app_end_date, cert_start_date, cert_end_date):

src/azure-cli/azure/cli/command_modules/synapse/manual/operations/accesscontrol.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def _get_object_stubs(graph_client, assignees):
158158

159159

160160
def _error_caused_by_role_assignment_exists(ex):
161-
return getattr(ex, 'status_code', None) == 409 and 'role assignment already exists' in ex.message
161+
return getattr(ex, 'status_code', None) == 409 and ex.error.code == 'RoleAssignmentExists'
162162

163163

164164
def _create_role_assignment(cmd, workspace_name, role, assignee, scope=None, item=None, item_type=None,

0 commit comments

Comments
 (0)