public override void ExecuteCmdlet() { if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = new ResourceIdentifier(ParentObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; AccountName = resourceIdentifier.ResourceName; } else if (ParameterSetName.Equals(ObjectParameterSet, StringComparison.Ordinal)) { Id = InputObject.Id; ResourceIdentifier resourceIdentifier = new ResourceIdentifier(InputObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; AccountName = resourceIdentifier.GetDatabaseAccountName(); } if (ShouldProcess(Id, "Deleting CosmosDB Sql Role Definition")) { CosmosDBManagementClient.SqlResources.DeleteSqlRoleDefinitionWithHttpMessagesAsync(RoleHelper.ParseToRoleDefinitionId(Id), ResourceGroupName, AccountName).GetAwaiter().GetResult(); if (PassThru) { WriteObject(true); } } return; }
public override void ExecuteCmdlet() { if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal)) { RoleDefinitionId = ParentObject.Id; ResourceIdentifier resourceIdentifier = new ResourceIdentifier(ParentObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; AccountName = resourceIdentifier.GetDatabaseAccountName(); } else if (ParameterSetName.Equals(NameParameterSet, StringComparison.Ordinal)) { IEnumerable <SqlRoleDefinitionGetResults> sqlRoleDefinitions = CosmosDBManagementClient.SqlResources.ListSqlRoleDefinitionsWithHttpMessagesAsync(ResourceGroupName, AccountName).GetAwaiter().GetResult().Body.Where(r => String.Equals(r.RoleName, RoleDefinitionName)); if (!sqlRoleDefinitions.Any()) { throw new ResourceNotFoundException(message: string.Format(ExceptionMessage.NotFoundSqlRoleResourceName, "Assignment", RoleDefinitionName)); } RoleDefinitionId = sqlRoleDefinitions.FirstOrDefault().Id; } Id = string.IsNullOrWhiteSpace(Id) ? Guid.NewGuid().ToString() : RoleHelper.ParseToRoleAssignmentId(Id); SqlRoleAssignmentGetResults readSqlRoleAssignmentGetResults = null; try { readSqlRoleAssignmentGetResults = CosmosDBManagementClient.SqlResources.GetSqlRoleAssignment(Id, ResourceGroupName, AccountName); } catch (CloudException e) { if (e.Response.StatusCode != HttpStatusCode.NotFound) { throw; } } if (readSqlRoleAssignmentGetResults != null) { throw new ConflictingResourceException(message: string.Format(ExceptionMessage.ConflictSqlRoleResourceId, "Assignment", Id)); } SqlRoleAssignmentCreateUpdateParameters sqlRoleAssignmentCreateUpdateParameters = new SqlRoleAssignmentCreateUpdateParameters { RoleDefinitionId = RoleHelper.ParseToFullyQualifiedRoleDefinitionId(RoleDefinitionId, DefaultProfile.DefaultContext.Subscription.Id, ResourceGroupName, AccountName), Scope = RoleHelper.ParseToFullyQualifiedScope(Scope, DefaultProfile.DefaultContext.Subscription.Id, ResourceGroupName, AccountName), PrincipalId = PrincipalId }; if (ShouldProcess(Id.ToString(), "Creating a new CosmosDB Sql Role Assignment")) { SqlRoleAssignmentGetResults sqlRoleAssignmentGetResults = CosmosDBManagementClient.SqlResources.CreateUpdateSqlRoleAssignmentWithHttpMessagesAsync(Id, ResourceGroupName, AccountName, sqlRoleAssignmentCreateUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSSqlRoleAssignmentGetResults(sqlRoleAssignmentGetResults)); } return; }
public override void ExecuteCmdlet() { if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal)) { RoleDefinitionId = ParentObject.Id; ResourceIdentifier resourceIdentifier = new ResourceIdentifier(ParentObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; AccountName = resourceIdentifier.GetDatabaseAccountName(); } else if (ParameterSetName.Equals(ObjectParameterSet, StringComparison.Ordinal)) { Id = InputObject.Id; ResourceIdentifier resourceIdentifier = new ResourceIdentifier(InputObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; AccountName = resourceIdentifier.GetDatabaseAccountName(); RoleDefinitionId = InputObject.RoleDefinitionId; Scope = InputObject.Scope; PrincipalId = InputObject.PrincipalId; } if (!string.IsNullOrWhiteSpace(RoleDefinitionId) && !string.IsNullOrWhiteSpace(RoleDefinitionName)) { throw new ArgumentException($"Cannot specify both [{nameof(RoleDefinitionId)}] and [{nameof(RoleDefinitionName)}]"); } if (!string.IsNullOrWhiteSpace(RoleDefinitionName)) { IEnumerable <SqlRoleDefinitionGetResults> sqlRoleDefinitions = CosmosDBManagementClient.SqlResources.ListSqlRoleDefinitionsWithHttpMessagesAsync(ResourceGroupName, AccountName).GetAwaiter().GetResult().Body .Where(r => String.Equals(r.RoleName, RoleDefinitionName, StringComparison.OrdinalIgnoreCase)); if (!sqlRoleDefinitions.Any()) { throw new ResourceNotFoundException(message: string.Format(ExceptionMessage.NotFoundSqlRoleResourceName, "Assignment", RoleDefinitionName)); } RoleDefinitionId = sqlRoleDefinitions.FirstOrDefault().Id; } Id = RoleHelper.ParseToRoleAssignmentId(Id); SqlRoleAssignmentGetResults readSqlRoleAssignmentGetResults = null; try { readSqlRoleAssignmentGetResults = CosmosDBManagementClient.SqlResources.GetSqlRoleAssignment(Id, ResourceGroupName, AccountName); } catch (CloudException e) { if (e.Response.StatusCode == System.Net.HttpStatusCode.NotFound) { throw new ResourceNotFoundException(message: string.Format(ExceptionMessage.NotFoundSqlRoleResourceId, "Assignment", Id), innerException: e); } else { throw e; } } SqlRoleAssignmentCreateUpdateParameters sqlRoleAssignmentCreateUpdateParameters = new SqlRoleAssignmentCreateUpdateParameters { RoleDefinitionId = RoleHelper.ParseToFullyQualifiedRoleDefinitionId(RoleDefinitionId ?? readSqlRoleAssignmentGetResults.RoleDefinitionId, DefaultProfile.DefaultContext.Subscription.Id, ResourceGroupName, AccountName), Scope = RoleHelper.ParseToFullyQualifiedScope(Scope ?? readSqlRoleAssignmentGetResults.Scope, DefaultProfile.DefaultContext.Subscription.Id, ResourceGroupName, AccountName), PrincipalId = PrincipalId ?? readSqlRoleAssignmentGetResults.PrincipalId, }; if (ShouldProcess(Id, "Updating an existing CosmosDB Sql Role Definition")) { SqlRoleAssignmentGetResults sqlRoleAssignmentGetResults = CosmosDBManagementClient.SqlResources.CreateUpdateSqlRoleAssignmentWithHttpMessagesAsync(RoleHelper.ParseToRoleAssignmentId(Id), ResourceGroupName, AccountName, sqlRoleAssignmentCreateUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSSqlRoleAssignmentGetResults(sqlRoleAssignmentGetResults)); } return; }
public override void ExecuteCmdlet() { List <Permission> permissions = null; if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = new ResourceIdentifier(ParentObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; AccountName = resourceIdentifier.ResourceName; } else if (ParameterSetName.Equals(ObjectParameterSet)) { RoleName = InputObject.RoleName; Type = InputObject.Type; AssignableScope = new List <String>(InputObject.AssignableScopes); Id = InputObject.Id; permissions = new List <Permission>(InputObject.Permissions); ResourceIdentifier resourceIdentifier = new ResourceIdentifier(InputObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; AccountName = resourceIdentifier.GetDatabaseAccountName(); } if (DataAction != null && Permission != null) { throw new ArgumentException($"Cannot specify both [{nameof(DataAction)}] and [{nameof(Permission)}]"); } if (DataAction != null) { permissions = new List <Permission> { new Permission { DataActions = DataAction } }; } else if (Permission != null) { permissions = new List <Permission>(Permission.Select(p => new Permission(p.DataActions))); } Id = RoleHelper.ParseToRoleDefinitionId(Id); SqlRoleDefinitionGetResults readSqlRoleDefinitionGetResults = null; try { readSqlRoleDefinitionGetResults = CosmosDBManagementClient.SqlResources.GetSqlRoleDefinition(Id, ResourceGroupName, AccountName); } catch (CloudException e) { if (e.Response.StatusCode == System.Net.HttpStatusCode.NotFound) { throw new ResourceNotFoundException(message: string.Format(ExceptionMessage.NotFoundSqlRoleResourceId, "Definition", Id), innerException: e); } else { throw e; } } AssignableScope = AssignableScope ?? new List <string>(readSqlRoleDefinitionGetResults.AssignableScopes); AssignableScope = new List <string>(AssignableScope.Select(s => RoleHelper.ParseToFullyQualifiedScope(s, DefaultProfile.DefaultContext.Subscription.Id, ResourceGroupName, AccountName))); SqlRoleDefinitionCreateUpdateParameters sqlRoleDefinitionCreateUpdateParameters = new SqlRoleDefinitionCreateUpdateParameters { RoleName = RoleName ?? readSqlRoleDefinitionGetResults.RoleName, Type = (RoleDefinitionType)Enum.Parse(typeof(RoleDefinitionType), Type ?? readSqlRoleDefinitionGetResults.Type), AssignableScopes = AssignableScope, Permissions = permissions ?? readSqlRoleDefinitionGetResults.Permissions, }; if (ShouldProcess(Id, "Updating an existing CosmosDB Sql Role Definition")) { SqlRoleDefinitionGetResults sqlRoleDefinitionGetResults = CosmosDBManagementClient.SqlResources.CreateUpdateSqlRoleDefinitionWithHttpMessagesAsync(Id, ResourceGroupName, AccountName, sqlRoleDefinitionCreateUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSSqlRoleDefinitionGetResults(sqlRoleDefinitionGetResults)); } return; }