Public/Remove-DMLunFromHyperCDPSchedule.ps1
|
function Remove-DMLunFromHyperCDPSchedule { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '')] [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'High', DefaultParameterSetName = 'ByLunName')] param( [Parameter(ValueFromPipelineByPropertyName = $true)] [pscustomobject]$WebSession, [Parameter(ParameterSetName = 'ByLunObject', ValueFromPipeline = $true, Mandatory = $true)] [psobject]$InputObject, [Parameter(ParameterSetName = 'ByLunName', Mandatory = $true, Position = 0, ValueFromPipelineByPropertyName = $true)] [Alias('Name')] [ValidateNotNullOrEmpty()] [string]$LunName, [Parameter(ParameterSetName = 'ByLunId', Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [Alias('Id')] [ValidateNotNullOrEmpty()] [string]$LunId, [Parameter()] [Alias('HyperCDPScheduleId')] [string]$ScheduleId, [Parameter()] [Alias('HyperCDPScheduleName')] [string]$ScheduleName, [string]$VstoreId ) process { try { $session = if ($WebSession) { $WebSession } else { $script:CurrentOceanstorSession } $lun = switch ($PSCmdlet.ParameterSetName) { 'ByLunObject' { Resolve-DMHyperCDPLun -WebSession $session -InputObject $InputObject } 'ByLunId' { Resolve-DMHyperCDPLun -WebSession $session -LunId $LunId } default { Resolve-DMHyperCDPLun -WebSession $session -LunName $LunName } } if ($ScheduleId -and $ScheduleName) { throw 'ScheduleId and ScheduleName cannot be used together.' } if (-not $ScheduleId -and -not $ScheduleName) { throw 'ScheduleId or ScheduleName is required.' } $schedule = if ($ScheduleId) { Resolve-DMHyperCDPSchedule -WebSession $session -Id $ScheduleId } else { Resolve-DMHyperCDPSchedule -WebSession $session -Name $ScheduleName } $query = @( "ID=$($schedule.Id)", 'ASSOCIATEOBJTYPE=11', "ASSOCIATEOBJID=$($lun.Id)", 'SCHEDULETYPE=1' ) if ($VstoreId) { $query += "vstoreId=$([uri]::EscapeDataString($VstoreId))" } if ($PSCmdlet.ShouldProcess("$($lun.Name) <- $($schedule.Name)", 'Remove LUN from HyperCDP schedule')) { $response = Invoke-DeviceManager -WebSession $session -Method 'DELETE' -Resource "snapshot_schedule/remove_associate?$($query -join '&')" $response = $response | Assert-DMApiSuccess return $response.error } } catch { $PSCmdlet.WriteError($_) } } } |