Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/azure-cli-core/azure/cli/core/profiles/_shared.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ def default_api_version(self):
ResourceType.MGMT_RESOURCE_DEPLOYMENTSCRIPTS: '2019-10-01-preview',
ResourceType.MGMT_NETWORK_DNS: '2018-05-01',
ResourceType.MGMT_KEYVAULT: '2019-09-01',
ResourceType.MGMT_AUTHORIZATION: SDKProfile('2018-09-01-preview', {
ResourceType.MGMT_AUTHORIZATION: SDKProfile('2020-04-01-preview', {
'classic_administrators': '2015-06-01',
'role_definitions': '2018-01-01-preview',

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need update this line?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2018-01-01-preview is the latest version which contains RoleDefinition.

'provider_operations_metadata': '2018-01-01-preview'
Expand Down

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,14 @@ def _init_permissions(self, role_definition_input):
return [self._init_individual_permission(role_definition_input)]

def create_role_definition(self, client, role_name, role_id, role_definition_input):
RoleDefinitionBase = get_sdk(self.cli_ctx, ResourceType.MGMT_AUTHORIZATION,
'RoleDefinitionProperties' if self.old_api else 'RoleDefinition',
RoleDefinitionBase = get_sdk(self.cli_ctx, ResourceType.MGMT_AUTHORIZATION, 'RoleDefinition',
mod='models', operation_group='role_definitions')
role_configuration = RoleDefinitionBase(role_name=role_name,
description=role_definition_input.get('description', None),
type='CustomRole',
assignable_scopes=role_definition_input['assignableScopes'],
permissions=self._init_permissions(role_definition_input))
scope = role_definition_input['assignableScopes'][0]
if self.old_api:
return client.create_or_update(role_definition_id=role_id, scope=scope, properties=role_configuration)
return client.create_or_update(role_definition_id=role_id, scope=scope, role_definition=role_configuration)

def create_role_assignment(self, client, assignment_name, role_id, object_id, scope, assignee_principal_type=None):
Expand All @@ -53,23 +50,33 @@ def create_role_assignment(self, client, assignment_name, role_id, object_id, sc
parameters.principal_type = assignee_principal_type
return client.create(scope, assignment_name, parameters)

def get_role_property(self, obj, property_name):
if self.old_api:
if isinstance(obj, dict):
obj = obj['properties']
else:
obj = obj.properties
def get_role_property(self, obj, property_name): # pylint: disable=no-self-use
"""Get property for RoleDefinition and RoleAssignment object."""
# 2015-07-01 RoleDefinition: flattened, RoleAssignment: unflattened
# 2018-01-01-preview RoleDefinition: flattened
# 2020-04-01-preview RoleAssignment: flattened
# Get property_name from properties if the model is unflattened.
if isinstance(obj, dict):
if 'properties' in obj:
obj = obj['properties']
return obj[property_name]

if hasattr(obj, 'properties'):
obj = obj.properties
return getattr(obj, property_name)

def set_role_property(self, obj, property_name, property_value):
if self.old_api:
if isinstance(obj, dict):
obj = obj['properties']
else:
obj = obj.properties
def set_role_property(self, obj, property_name, property_value): # pylint: disable=no-self-use
"""Set property for RoleDefinition and RoleAssignment object.
Luckily this function is only called for an RoleAssignment `obj` returned by the service, and `properties`
has been processed, either by being flattened or set. We can definitively know whether `obj` is flattened
or not.
There is NO use case where `obj` is provided by the user and `properties` has not been processed.
In such case, we won't be able to decide if `obj` is flattened or not."""
if isinstance(obj, dict):
if 'properties' in obj:
obj = obj['properties']
obj[property_name] = property_value
else:
if hasattr(obj, 'properties'):
obj = obj.properties
obj.property_name = property_value
2 changes: 1 addition & 1 deletion src/azure-cli/azure/cli/command_modules/role/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -1750,7 +1750,7 @@ def _set_owner(cli_ctx, graph_client, asset_object_id, setter):
setter(asset_object_id, _get_owner_url(cli_ctx, signed_in_user_object_id))


# for injecting test seems to produce predicatable role assignment id for playback
# for injecting test seems to produce predictable role assignment id for playback
def _gen_guid():
return uuid.uuid4()

Expand Down

Large diffs are not rendered by default.

Loading