Toolkit/Public/New-RscSlaReplicationSpecs.ps1
|
#Requires -Version 3 function New-RscSlaReplicationSpecs { <# .SYNOPSIS Creates a replication specification input object for use with New-RscSla or Set-RscSla. .DESCRIPTION Defines how snapshots are replicated to a target Rubrik cluster or cloud region, including retention and optional cascading archival. The output is passed to New-RscSla or Set-RscSla via the -ReplicationSpecs parameter. Use New-RscSlaDuration to build duration values and New-RscSlaArchivalSpecs for cascading archival specs. .LINK Schema reference: https://rubrikinc.github.io/rubrik-api-documentation/schema/reference .PARAMETER ClusterUuid UUID of the target Rubrik cluster that will receive replicated snapshots. .PARAMETER StorageSettingId ID of the storage setting on the target cluster. .PARAMETER RetentionDuration How long replicated snapshots are retained on the target. Create with New-RscSlaDuration. .PARAMETER AwsAccount AWS account identifier when replicating to an AWS region. .PARAMETER AzureSubscription Azure subscription identifier when replicating to an Azure region. .PARAMETER AwsRegion AWS region for the replication target. .PARAMETER AzureRegion Azure region for the replication target. .PARAMETER ReplicationLocalRetentionDuration How long the snapshot is kept on the local (source) cluster after replication. Create with New-RscSlaDuration. .PARAMETER CascadingArchivalSpecs One or more cascading archival specifications that archive replicated snapshots to a secondary location. Create with New-RscSlaArchivalSpecs. .EXAMPLE Replicate to an on-premises cluster with 7-month retention. $repl = New-RscSlaReplicationSpecs ` -ClusterUuid '9c930153-2a3c-4b7d-8603-48145315e71f' ` -StorageSettingId '7a937a41-6abf-5gja-984f-1f0ea9ac2130' ` -RetentionDuration (New-RscSlaDuration -Duration 7 -Unit MONTHS) New-RscSla -Name "DR-Gold" -ReplicationSpecs @($repl) -ObjectType VSPHERE_OBJECT_TYPE .EXAMPLE Replicate to AWS with cascading archival to Glacier. $archive = New-RscSlaArchivalSpecs -ArchivalThreshold 230 ` -ArchivalThresholdUnit DAYS ` -Frequencies @('MONTHS','YEARS') ` -ArchivalLocationId 'aa137af1-6abf-59aa-984f-a9ac21301f0e' New-RscSlaReplicationSpecs ` -ClusterUuid '9c930153-2a3c-4b7d-8603-48145315e71f' ` -StorageSettingId '7a937a41-6abf-5gja-984f-1f0ea9ac2130' ` -RetentionDuration (New-RscSlaDuration -Duration 7 -Unit MONTHS) ` -AwsAccount 'AWS_ACCOUNT' ` -AwsRegion 'US_WEST_2' ` -ReplicationLocalRetentionDuration (New-RscSlaDuration -Duration 3 -Unit MONTHS) ` -CascadingArchivalSpecs @($archive) #> [CmdletBinding()] Param( # Cluster UUID [Parameter()] [String]$ClusterUuid, # Storage Setting ID [Parameter()] [String]$StorageSettingId, # Retention Duration [Parameter()] [RubrikSecurityCloud.Types.SlaDurationInput]$RetentionDuration, # AWS Account [Parameter()] [String]$AwsAccount, # Azure Subscription [Parameter()] [String]$AzureSubscription, # AWS Region [Parameter()] [RubrikSecurityCloud.Types.AwsNativeRegionForReplication]$AwsRegion, # Azure Region [Parameter()] [RubrikSecurityCloud.Types.AzureNativeRegionForReplication]$AzureRegion, # Replication Local Retention Duration [Parameter()] [RubrikSecurityCloud.Types.SlaDurationInput]$ReplicationLocalRetentionDuration, # Cascading Archival Specifications [Parameter()] [RubrikSecurityCloud.Types.CascadingArchivalSpecInput[]] $CascadingArchivalSpecs ) Process { $replicationSpecs = New-Object -TypeName RubrikSecurityCloud.Types.ReplicationSpecV2Input $replicationSpecs.ClusterUuid = $ClusterUuid $replicationSpecs.StorageSettingId = $StorageSettingId $replicationSpecs.RetentionDuration = $RetentionDuration $replicationSpecs.AwsAccount = $AwsAccount $replicationSpecs.AzureSubscription = $AzureSubscription $replicationSpecs.AwsRegion = $AwsRegion $replicationSpecs.AzureRegion = $AzureRegion $replicationSpecs.ReplicationLocalRetentionDuration = $ReplicationLocalRetentionDuration $replicationSpecs.CascadingArchivalSpecs = $CascadingArchivalSpecs $replicationSpecs } } |