Public/Suspend-RubrikSLA.ps1
#Requires -Version 3 function Suspend-RubrikSLA { <# .SYNOPSIS Pauses an existing Rubrik SLA Domain .DESCRIPTION The Pause-RubrikSLA cmdlet will pause an existing SLA Domain with specified parameters. An alias has been created for this function, Pause-RubrikSLA to allign better with the Rubrik Terminology. Note that this functionality is only available on Rubrik Cluster running 5.1 or later. .NOTES Written by Jaap Brasser for community usage Twitter: @jaap_brasser GitHub: JaapBrasser .LINK https://rubrik.gitbook.io/rubrik-sdk-for-powershell/command-documentation/reference/suspend-rubriksla .EXAMPLE Get-RubrikSLA -Name Gold | Suspend-RubrikSLA This will update the SLA Domain named "Gold" to pause backups .EXAMPLE Get-RubrikSLA -Name Gold | Pause-RubrikSLA This will update the SLA Domain named "Gold" to pause backups .EXAMPLE Pause-RubrikSLA Gold -Verbose This will pause the backups for the Gold SLA while displaying verbose information #> [CmdletBinding( SupportsShouldProcess = $true, ConfirmImpact = 'High', DefaultParameterSetName='Query' )] [Alias("Pause-RubrikSLA")] Param( # SLA id value from the Rubrik Cluster [Parameter( ParameterSetName='ID', Position = 0, ValueFromPipelineByPropertyName = $true, Mandatory = $true )] [ValidateNotNullOrEmpty()] [String]$id, # SLA Domain Name [Parameter( ParameterSetName='Query', Position = 0, ValueFromPipeline=$true, Mandatory = $true )] [Alias('SLA')] [ValidateNotNullOrEmpty()] [String]$Name, # Rubrik server IP or FQDN [String]$Server = $global:RubrikConnection.server, # API version [String]$api = $global:RubrikConnection.api ) Begin { # The Begin section is used to perform one-time loads of data necessary to carry out the function's purpose # If a command needs to be run with each iteration or pipeline input, place it in the Process section # Check to ensure that a session to the Rubrik cluster exists and load the needed header data for authentication Test-RubrikConnection # API data references the name of the function # For convenience, that name is saved here to $function $function = $MyInvocation.MyCommand.Name # Retrieve all of the URI, method, body, query, result, filter, and success details for the API endpoint Write-Verbose -Message "Gather API Data for $function" $resources = Get-RubrikAPIData -endpoint $function Write-Verbose -Message "Load API data for $($resources.Function)" Write-Verbose -Message "Description: $($resources.Description)" } Process { if ('Query' -eq $pscmdlet.parametersetname) { $id = (Get-RubrikSLA -Name $Name -PrimaryClusterID local).id } $uri = New-URIString -server $Server -endpoint ($resources.URI) -id $id $uri = Test-QueryParam -querykeys ($resources.Query.Keys) -parameters ((Get-Command $function).Parameters.Values) -uri $uri # Custom as paused is always true $body = '{"isPaused": true}' $result = Submit-Request -uri $uri -header $Header -method $($resources.Method) -body $body $result = Test-ReturnFormat -api $api -result $result -location $resources.Result $result = Set-ObjectTypeName -TypeName $resources.ObjectTName -result $result return $result } # End of process } # End of function |