Public/New-DuneActionAssignment.ps1
|
<# .SYNOPSIS Create or set an action assignment on a deployment/resourcegroup/resource. .DESCRIPTION PUTs action-assignment to the target path: `deployments|resourcegroups|resources` / <id> / `action-assignments`. Provide `ActionId` and optional `Parameters` and `CronExpression`. #> function New-DuneActionAssignment { [CmdletBinding(DefaultParameterSetName = 'Default')] param( [Parameter(ParameterSetName = 'Deployment', ValueFromPipeline)] [Parameter(ParameterSetName = 'DeploymentId')] [DuneDeployment]$Deployment, [Parameter(ParameterSetName = 'ResourceGroup', ValueFromPipeline)] [Parameter(ParameterSetName = 'ResourceGroupId')] [DuneResourceGroup]$ResourceGroup, [Parameter(ParameterSetName = 'Resource', ValueFromPipeline)] [Parameter(ParameterSetName = 'ResourceId')] [DuneResource]$Resource, [Parameter(Mandatory = $true)] [string]$Name, [Parameter(ParameterSetName = 'Deployment')] [Parameter(ParameterSetName = 'ResourceGroup')] [Parameter(ParameterSetName = 'Resource')] [guid]$ActionId, [Parameter(ParameterSetName = 'DeploymentId', ValueFromPipeline)] [Parameter(ParameterSetName = 'ResourceGroupId', ValueFromPipeline)] [Parameter(ParameterSetName = 'ResourceId', ValueFromPipeline)] [DuneAction]$Action, [Parameter()] [hashtable]$Parameters, [Parameter()] [string]$CronExpression ) begin {} process { $Uri = 'action-assignments' $Body = @{ ActionId = $ActionId Name = $Name } switch ($PSCmdlet.ParameterSetName) { 'Deployment' { $Body.ConfigItemId = $Deployment.Id $Body.ConfigItemType = "Deployment" } 'ResourceGroup' { $ResourceGroup.Id $Body.ConfigItemType = "ResourceGroup" } 'Resource' { $Resource.Id $Body.ConfigItemType = "Resource" } } if ($PSBoundParameters.ContainsKey('Parameters')) { $Body.Parameters = $Parameters } if ($PSBoundParameters.ContainsKey('CronExpression')) { $Body.CronExpression = $CronExpression } $Return = Invoke-DuneApiRequest -Uri $Uri -Method POST -Body $Body $ReturnObject = if ($Return.Content) { $Return.Content | ConvertFrom-Json | ConvertTo-DuneClassObject -Class DuneActionAssignment } return $ReturnObject } end {} } |