Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 06e81b46d6 | |||
| af33715f02 | |||
| 912bca0f9c | |||
| 4ac951607b | |||
| d3d01f892f | |||
| 84b7922156 | |||
| 0eaf89608b |
+12
-3
@@ -5,13 +5,22 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project is transitioning to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project is transitioning to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## Unreleased
|
## [Unreleased]
|
||||||
|
|
||||||
### Zerto Virtual Manager
|
### Zerto Virtual Manager
|
||||||
|
|
||||||
#### New
|
#### Fixed
|
||||||
|
|
||||||
|
* Fixed an [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/112) where `New-ZertoVpg` would fail when specifying the localsite as the target site.
|
||||||
|
|
||||||
|
## [1.5.2]
|
||||||
|
|
||||||
|
### Zerto Virtual Manager
|
||||||
|
|
||||||
|
#### Fixed
|
||||||
|
|
||||||
|
* Fixed an issue when attempting to export more than 100 VPGs with the `Export-ZertoVpg` function that would cause an error.
|
||||||
|
|
||||||
* Added `Get-ZertoAzureResource` function to the module. This function is designed to retrieve information about resources in Azure that can be utilized when creating VPGs targeting the specified Azure site. Please read the [help file](https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZertoAzureResource.md) for more information and examples.
|
|
||||||
## [1.5.1]
|
## [1.5.1]
|
||||||
|
|
||||||
### Zerto Virtual Manager
|
### Zerto Virtual Manager
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|||||||
return "1024d377-afb8-4880-82f0-96eeff413ffd"
|
return "1024d377-afb8-4880-82f0-96eeff413ffd"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Mock -ModuleName ZertoApiWrapper -CommandName Remove-ZertoVpgSettingsIdentifier {
|
||||||
|
return $null
|
||||||
|
}
|
||||||
|
|
||||||
Mock -ModuleName ZertoApiWrapper -CommandName Get-ZertoVpgSetting {
|
Mock -ModuleName ZertoApiWrapper -CommandName Get-ZertoVpgSetting {
|
||||||
$returnObj = @{
|
$returnObj = @{
|
||||||
Backup = $null
|
Backup = $null
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
#Requires -Modules Pester
|
|
||||||
$global:here = (Split-Path -Parent $PSCommandPath)
|
|
||||||
$global:function = ((Split-Path -Leaf $PSCommandPath).Split('.'))[0]
|
|
||||||
|
|
||||||
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
|
|
||||||
BeforeAll {
|
|
||||||
$script:ScriptBlock = (Get-Command $global:function).ScriptBlock
|
|
||||||
}
|
|
||||||
|
|
||||||
Context "$global:function::Parameter Unit Tests" {
|
|
||||||
|
|
||||||
It "$global:function should have exactly 17 parameters defined" {
|
|
||||||
(Get-Command $global:function).Parameters.Count | Should -Be 17
|
|
||||||
}
|
|
||||||
|
|
||||||
$ParameterTestCases = @(
|
|
||||||
@{ParameterName = 'siteName'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
|
||||||
@{ParameterName = 'SiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
|
|
||||||
@{ParameterName = 'SecurityGroup'; Type = 'Switch'; Mandatory = $true; Validation = 'None' }
|
|
||||||
@{ParameterName = 'Subnet'; Type = 'Switch'; Mandatory = $true; Validation = 'None' }
|
|
||||||
@{ParameterName = 'Network'; Type = 'Switch'; Mandatory = $true; Validation = 'None' }
|
|
||||||
@{ParameterName = 'VmInstanceType'; Type = 'Switch'; Mandatory = $true; Validation = 'None' }
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
|
|
||||||
param($ParameterName, $Type, $Mandatory, $Validation)
|
|
||||||
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
|
|
||||||
}
|
|
||||||
|
|
||||||
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
|
|
||||||
param($ParameterName, $Validation)
|
|
||||||
Switch ($Validation) {
|
|
||||||
'None' {
|
|
||||||
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
|
||||||
$attrs.Count | Should -Be 3
|
|
||||||
}
|
|
||||||
|
|
||||||
'NotNullOrEmpty' {
|
|
||||||
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
|
|
||||||
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
|
|
||||||
}
|
|
||||||
|
|
||||||
default {
|
|
||||||
$true | Should -Be $false -Because "No Validation Selected. Review test cases"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Context "$global:function::Functional Unit Tests" {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Remove-Variable -Name here -Scope Global
|
|
||||||
Remove-Variable -Name function -Scope Global
|
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
|
||||||
function Add-ZertoAzureVpgVm {
|
|
||||||
[Cmdletbinding()]
|
|
||||||
param(
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "VPG Settings Identifier of the target VPG.",
|
|
||||||
ValueFromPipeline,
|
|
||||||
ValueFromPipelineByPropertyName
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[Guid]$VpgSettingsIdentifier,
|
|
||||||
[Parameter(Mandatory)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$VmName,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$LiveNetworkName,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$LiveSubnetName,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$LiveSecurityGroupName,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$LiveInstanceType,
|
|
||||||
[ValidateSet("UnmanagedStandard", "ManagedPremiumSSD", "ManagedStandardSSD", "ManagedStandardHDD")]
|
|
||||||
[String]$LiveDiskType,
|
|
||||||
[ValidateScript( { $_ -match [IPAddress]$_ })]
|
|
||||||
[String]$LiveIpAddress,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TestNetworkName,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TestSubnetName,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TestSecurityGroupName,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TestInstanceType,
|
|
||||||
[ValidateSet("UnmanagedStandard", "ManagedPremiumSSD", "ManagedStandardSSD", "ManagedStandardHDD")]
|
|
||||||
[String]$TestDiskType,
|
|
||||||
[ValidateScript( { $_ -match [IPAddress]$_ })]
|
|
||||||
[String]$TestIpAddress,
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String[]]$TempDrive
|
|
||||||
)
|
|
||||||
|
|
||||||
begin {
|
|
||||||
}
|
|
||||||
|
|
||||||
process {
|
|
||||||
# Get Target Site Identifier from the settings for resource lookups
|
|
||||||
$TargetSiteIdentifier = Get-ZertoVpgSetting -vpgSettingsIdentifier $VpgSettingsIdentifier -basic | Select-Object -ExpandProperty RecoverySiteIdentifier
|
|
||||||
|
|
||||||
# Add VM to VPG. Setting to Null as this function returns the VpgSettingsIdentifier
|
|
||||||
$null = Add-ZertoVpgVm -vpgSettingsIdentifier $VpgSettingsIdentifier -vm $VmName
|
|
||||||
|
|
||||||
# Getting the VmIdentifier
|
|
||||||
$VmIdentifier = Get-ZertoVpgSetting -vpgSettingsIdentifier $VpgSettingsIdentifier -vms | Where-Object { $_.VmName -match $VmName } | Select-Object -ExpandProperty VmIdentifier
|
|
||||||
|
|
||||||
# Setting the URI fragment for use later
|
|
||||||
$VmSettingsUri = "vpgSettings/{0}/vms/{1}" -f $VpgSettingsIdentifier, $VmIdentifier
|
|
||||||
|
|
||||||
# Getting all default settings for the specified VM to update per passed parameters
|
|
||||||
$VmSettings = Get-ZertoVpgSetting -vpgSettingsIdentifier $VpgSettingsIdentifier -vmIdentifier $VmIdentifier
|
|
||||||
|
|
||||||
# Create Maps for quick lookups and validations
|
|
||||||
$NetworksMap = GetMap -InputObject (Get-ZertoAzureResource -SiteIdentifier $TargetSiteIdentifier -Network) -Key "VirtualNetworkName" -Value "VirtualNetworkIdentifier"
|
|
||||||
$SubnetsMap = GetMap -InputObject (Get-ZertoAzureResource -SiteIdentifier $TargetSiteIdentifier -Subnet) -Key "SubnetName" -Value "SubnetIdentifier"
|
|
||||||
$SecurityGroupsMap = GetMap -InputObject (Get-ZertoAzureResource -SiteIdentifier $TargetSiteIdentifier -SecurityGroup) -Key "SecurityGroupName" -Value "SecurityGroupIdentifier"
|
|
||||||
$Instances = Get-ZertoAzureResource -SiteIdentifier $TargetSiteIdentifier -VmInstanceType
|
|
||||||
|
|
||||||
# Iterate through the bound parameters and set attributes accordingly
|
|
||||||
Switch ($PSBoundParameters.Keys) {
|
|
||||||
"LiveNetworkName" {
|
|
||||||
if ($null -eq $NetworksMap[$LiveNetworkName]) {
|
|
||||||
Write-Error "Unable to find network with name $LiveNetworkName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} else {
|
|
||||||
$VmSettings.Recovery.PublicCloud.Failover.VirtualNetworkIdentifier = $NetworksMap[$LiveNetworkName]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"LiveSubnetName" {
|
|
||||||
if ($null -eq $SubnetsMap[$LiveSubnetName]) {
|
|
||||||
Write-Error "Unable to find subnet with name $LiveSubnetName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} else {
|
|
||||||
$VmSettings.Nics[0].Failover.PublicCloud.SubnetIdentifier = $SubnetsMap[$LiveSubnetName]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"LiveSecurityGroupName" {
|
|
||||||
if ($null -eq $null -eq $SecurityGroupsMap[$LiveSecurityGroupName]) {
|
|
||||||
Write-Error "Unable to find security group with name $LiveSecurityGroupName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} else {
|
|
||||||
$VmSettings.Nics[0].Failover.PublicCloud.SecurityGroupIdentifier = $SecurityGroupsMap[$LiveSecurityGroupName]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"LiveInstanceType" {
|
|
||||||
if ($LiveInstanceType -notin $Instances.VmInstanceType) {
|
|
||||||
Write-Error "Unable to find a supported VM Instance Type with name $LiveInstanceType. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} else {
|
|
||||||
$LiveInstanceType = $Instances.Where( { $_.VmInstanceType -match $LiveInstanceType }) | Select-Object -ExpandProperty VmInstanceType
|
|
||||||
$VmSettings.Recovery.PublicCloud.Failover.VmInstanceType = $LiveInstanceType
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"TestNetworkName" {
|
|
||||||
if ($null -eq $NetworksMap[$TestNetworkName]) {
|
|
||||||
Write-Error "Unable to find network with name $TestNetworkName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} else {
|
|
||||||
$VmSettings.Recovery.PublicCloud.FailoverTest.VirtualNetworkIdentifier = $NetworksMap[$TestNetworkName]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"TestSubnetName" {
|
|
||||||
if ($null -eq $SubnetsMap[$TestSubnetName]) {
|
|
||||||
Write-Error "Unable to find subnet with name $TestSubnetName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} else {
|
|
||||||
$VmSettings.Nics[0].FailoverTest.PublicCloud.SubnetIdentifier = $SubnetsMap[$TestSubnetName]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"TestSecurityGroupName" {
|
|
||||||
if ($null -eq $SecurityGroupsMap) {
|
|
||||||
Write-Error "Unable to find security group with name $TestSecurityGroupName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} else {
|
|
||||||
$VmSettings.Nics[0].FailoverTest.PublicCloud.SecurityGroupIdentifier = $SecurityGroupsMap[$TestSecurityGroupName]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"TestInstanceType" {
|
|
||||||
if ($TestInstanceType -notin $Instances.VmInstanceType) {
|
|
||||||
Write-Error "Unable to find a supported VM Instance Type with name $TestInstanceType. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} else {
|
|
||||||
$TestInstanceType = $Instances.Where( { $_.VmInstanceType -match $TestInstanceType }) | Select-Object -ExpandProperty VmInstanceType
|
|
||||||
$VmSettings.Recovery.PublicCloud.FailoverTest.VmInstanceType = $TestInstanceType
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
"LiveDiskType" {
|
|
||||||
$VmSettings.Recovery.PublicCloud.Failover.Azure.RecoveryDiskType = $LiveDiskType
|
|
||||||
}
|
|
||||||
|
|
||||||
"TestDiskType" {
|
|
||||||
$VmSettings.Recovery.PublicCloud.FailoverTest.Azure.RecoveryDiskType = $TestDiskType
|
|
||||||
}
|
|
||||||
|
|
||||||
"LiveIpAddress" {
|
|
||||||
$VmSettings.Nics[0].Failover.PublicCloud.PrivateIP = $LiveIpAddress
|
|
||||||
}
|
|
||||||
|
|
||||||
"TestIpAddress" {
|
|
||||||
$VmSettings.Nics[0].FailoverTest.PublicCloud.PrivateIP = $TestIpAddress
|
|
||||||
}
|
|
||||||
} # End Switch Statement
|
|
||||||
|
|
||||||
# Update the VPG VM Settings Object with the updated attributes
|
|
||||||
$null = Invoke-ZertoRestRequest -uri $VmSettingsUri -method PUT -body ($VmSettings | ConvertTo-Json -Depth 10)
|
|
||||||
|
|
||||||
# If any Temp Drives are specified, loop through them and set them as such
|
|
||||||
if ($PSBoundParameters.Keys -contains "TempDrive") {
|
|
||||||
foreach ($drive in $TempDrive) {
|
|
||||||
$driveUri = "{0}/volumes/{1}" -f $VmSettingsUri, $drive
|
|
||||||
$driveSettings = Invoke-ZertoRestRequest -uri $driveUri
|
|
||||||
$driveSettings.IsSwap = $True
|
|
||||||
$null = Invoke-ZertoRestRequest -uri $driveUri -method PUT -body ($driveSettings | ConvertTo-Json -Depth 10)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
end {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -38,6 +38,7 @@ function Export-ZertoVpg {
|
|||||||
$vpgSettings = Get-ZertoVpgSetting -vpgSettingsIdentifier $vpgSettingsIdentifier
|
$vpgSettings = Get-ZertoVpgSetting -vpgSettingsIdentifier $vpgSettingsIdentifier
|
||||||
$filePath = "{0}\{1}.json" -f $outputPath, $name
|
$filePath = "{0}\{1}.json" -f $outputPath, $name
|
||||||
$vpgSettings | Convertto-Json -depth 10 | Out-File -FilePath $filePath
|
$vpgSettings | Convertto-Json -depth 10 | Out-File -FilePath $filePath
|
||||||
|
$null = Remove-ZertoVpgSettingsIdentifier -vpgSettingsIdentifier $vpgSettingsIdentifier
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,137 +0,0 @@
|
|||||||
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
|
||||||
function Get-ZertoAzureResource {
|
|
||||||
[CmdletBinding(DefaultParameterSetName = "SiteNameVmInstanceType")]
|
|
||||||
param (
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name the Azure Site you wish to get the information.",
|
|
||||||
ParameterSetName = "SiteNameSecurityGroup"
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name the Azure Site you wish to get the information.",
|
|
||||||
ParameterSetName = "SiteNameSubnet"
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name the Azure Site you wish to get the information.",
|
|
||||||
ParameterSetName = "SiteNameNetwork"
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name the Azure Site you wish to get the information.",
|
|
||||||
ParameterSetName = "SiteNameVmInstanceType"
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$SiteName,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Site Identifier of the Azure Site you wish to get the information.",
|
|
||||||
ParameterSetName = "SiteIdentifierSecurityGroup"
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Site Identifier of the Azure Site you wish to get the information.",
|
|
||||||
ParameterSetName = "SiteIdentifierSubnet"
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Site Identifier of the Azure Site you wish to get the information.",
|
|
||||||
ParameterSetName = "SiteIdentifierNetwork"
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Site Identifier of the Azure Site you wish to get the information.",
|
|
||||||
ParameterSetName = "SiteIdentifierVmInstanceType"
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$SiteIdentifier,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
ParameterSetName = "SiteIdentifierSecurityGroup",
|
|
||||||
HelpMessage = "Use this switch to get information about the supported Security Groups"
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
ParameterSetName = "SiteNameSecurityGroup",
|
|
||||||
HelpMessage = "Use this switch to get information about the supported Security Groups"
|
|
||||||
)]
|
|
||||||
[Switch]$SecurityGroup,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
ParameterSetName = "SiteIdentifierSubnet",
|
|
||||||
HelpMessage = "Use this switch to get information about the supported Subnets"
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
ParameterSetName = "SiteNameSubnet",
|
|
||||||
HelpMessage = "Use this switch to get information about the supported Subnets"
|
|
||||||
)]
|
|
||||||
[Switch]$Subnet,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
ParameterSetName = "SiteIdentifierNetwork",
|
|
||||||
HelpMessage = "Use this switch to get information about the supported Networks (VNets)."
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
ParameterSetName = "SiteNameNetwork",
|
|
||||||
HelpMessage = "Use this switch to get information about the supported Networks (VNets)."
|
|
||||||
)]
|
|
||||||
[Switch]$Network,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
ParameterSetName = "SiteIdentifierVmInstanceType",
|
|
||||||
HelpMessage = "Use this switch to get information about the supported Vm Instance Types."
|
|
||||||
)]
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
ParameterSetName = "SiteNameVmInstanceType",
|
|
||||||
HelpMessage = "Use this switch to get information about the supported Vm Instance Types."
|
|
||||||
)]
|
|
||||||
[Switch]$VmInstanceType
|
|
||||||
)
|
|
||||||
|
|
||||||
begin {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
process {
|
|
||||||
if ($PSCmdlet.ParameterSetName -match "SiteName") {
|
|
||||||
$SiteInfo = Get-ZertoPeerSite | Where-Object { $_.PeerSiteName -match $SiteName }
|
|
||||||
if ($null -eq $SiteInfo) {
|
|
||||||
Write-Error "Unable to find a peer site with the name $SiteName. Please check your parameters and try again." -ErrorAction Stop
|
|
||||||
}
|
|
||||||
$SiteIdentifier = $SiteInfo | Select-Object -ExpandProperty SiteIdentifier
|
|
||||||
} else {
|
|
||||||
$SiteInfo = Get-ZertoPeerSite -siteIdentifier $SiteIdentifier
|
|
||||||
if ($null -eq $SiteInfo) {
|
|
||||||
Write-Error "Unable to find a peer site with identifier of $SiteIdentifier. Please check your parameters and try again." -ErrorAction Stop
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($SiteInfo.SiteType -notmatch "Azure") {
|
|
||||||
Write-Error "Specified site is not an Azure site. Please specify an Azure site and try again." -ErrorAction Stop
|
|
||||||
}
|
|
||||||
$baseUri = "virtualizationsites/{0}/publicCloud" -f $SiteIdentifier
|
|
||||||
|
|
||||||
switch -wildcard ($PSCmdlet.ParameterSetName) {
|
|
||||||
"*VmInstanceType" {
|
|
||||||
$uri = "{0}/VmInstanceType" -f $baseUri
|
|
||||||
}
|
|
||||||
"*Subnet" {
|
|
||||||
$uri = "{0}/subnets" -f $baseUri
|
|
||||||
}
|
|
||||||
"*Network" {
|
|
||||||
$uri = "{0}/virtualNetworks" -f $baseUri
|
|
||||||
}
|
|
||||||
"*SecurityGroup" {
|
|
||||||
$uri = "{0}/securityGroups" -f $baseUri
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Invoke-ZertoRestRequest -uri $uri
|
|
||||||
}
|
|
||||||
|
|
||||||
end {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,201 +0,0 @@
|
|||||||
<# .ExternalHelp ./en-us/ZertoApiWrapper-help.xml #>
|
|
||||||
function New-ZertoAzureVpg {
|
|
||||||
[CmdletBinding()]
|
|
||||||
# Ignoring Should Process PSSA rule. Change is in memory and not committed untill the Save-ZertoVpgSetting function is called.
|
|
||||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessForStateChangingFunctions", "")]
|
|
||||||
param(
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Desired name of the VPG to be created."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[string]$Name,
|
|
||||||
[Parameter(
|
|
||||||
HelpMessage = "Replication priority of the VPG to be created. Default value is 'Medium'"
|
|
||||||
)]
|
|
||||||
[ValidateSet("High", "Medium", "Low")]
|
|
||||||
[string]$Priority = "Medium",
|
|
||||||
[Parameter(
|
|
||||||
HelpMessage = "Desired journal history in hours of the VPG to be created. Min 1 hour, Max 720 hours (30 days). Default is 24 hours."
|
|
||||||
)]
|
|
||||||
[ValidateRange(1, 720)]
|
|
||||||
[Int]$JournalHistoryInHours = 24,
|
|
||||||
[Parameter(
|
|
||||||
HelpMessage = "Desired RPO alert value in seconds. Min 60 seconds, Max 86400 seconds (24 hours). Default is 300 seconds (5 minutes)."
|
|
||||||
)]
|
|
||||||
[ValidateRange(60, 86400)]
|
|
||||||
[Int]$RpoInSeconds = 300,
|
|
||||||
[Parameter(
|
|
||||||
HelpMessage = "Desired test interval in minutes. Please review documentation for values. Default is 262080 minutes (6 months)."
|
|
||||||
)]
|
|
||||||
[ValidateSet(0, 43200, 131040, 262080, 394560, 525600)]
|
|
||||||
[Int]$TestIntervalInMinutes = 262080,
|
|
||||||
[Parameter(
|
|
||||||
HelpMessage = "Turn on or off WAN compression. Recommended this setting is not turned off. Default is to leave WAN compression turned on."
|
|
||||||
)]
|
|
||||||
[Bool]$UseWanCompression = $True,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the ZCA site for the VPG to target."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TargetSiteName,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the default Network (VNet) to use during a live operation."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$LiveNetworkName,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the default subnet to use during a live operation."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$LiveSubnetName,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the default Security Group to use during a live operation."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$LiveSecurityGroupName,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the default VM Instance Type to use during a live operation."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$LiveInstanceType,
|
|
||||||
[Parameter(
|
|
||||||
HelpMessage = "Type of disk to select as the default for the VPG during a live operation. Default is 'ManagedPremiumSSD'"
|
|
||||||
)]
|
|
||||||
[ValidateSet("UnmanagedStandard", "ManagedPremiumSSD", "ManagedStandardSSD", "ManagedStandardHDD")]
|
|
||||||
[String]$LiveDiskType = "ManagedPremiumSSD",
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the default Network (VNet) to use during a test operation."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TestNetworkName,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the default subnet to use during a test operation."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TestSubnetName,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the default Security Group to use during a test operation."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TestSecurityGroupName,
|
|
||||||
[Parameter(
|
|
||||||
Mandatory,
|
|
||||||
HelpMessage = "Name of the default VM Instance Type to use during a test operation."
|
|
||||||
)]
|
|
||||||
[ValidateNotNullOrEmpty()]
|
|
||||||
[String]$TestInstanceType,
|
|
||||||
[Parameter(
|
|
||||||
HelpMessage = "Type of disk to select as the default for the VPG during a live operation. Default is 'ManagedPremiumSSD'"
|
|
||||||
)]
|
|
||||||
[ValidateSet("UnmanagedStandard", "ManagedPremiumSSD", "ManagedStandardSSD", "ManagedStandardHDD")]
|
|
||||||
[String]$TestDiskType = "ManagedPremiumSSD"
|
|
||||||
)
|
|
||||||
|
|
||||||
begin {
|
|
||||||
# Grab local site identifier and target site information and identifier
|
|
||||||
$LocalSiteIdentifier = Get-ZertoLocalSite | Select-Object -ExpandProperty SiteIdentifier
|
|
||||||
$TargetSiteInfo = Get-ZertoPeerSite | Where-Object { $_.PeerSiteName -match $TargetSiteName }
|
|
||||||
$TargetSiteIdentifier = $TargetSiteInfo | Select-Object -ExpandProperty SteIdentifier
|
|
||||||
|
|
||||||
# Validate site identifier and site type.
|
|
||||||
if ($null -eq $TargetSiteIdentifier) {
|
|
||||||
Write-Error "Unable to find target site with name $TargetSiteName. Please check the name and try again" -ErrorAction Stop
|
|
||||||
} elseif ($TargetSiteInfo.SiteType -notmatch "Azure") {
|
|
||||||
Write-Error "Specified site is not an Azure site. Please specify an Azure site and try again." -ErrorAction Stop
|
|
||||||
}
|
|
||||||
|
|
||||||
# Build Maps for quick lookups and validation
|
|
||||||
$NetworksMap = GetMap -InputObject (Get-ZertoAzureResource -SiteIdentifier $TargetSiteIdentifier -Network) -Key "VirtualNetworkName" -Value "VirtualNetworkIdentifier"
|
|
||||||
$SubnetsMap = GetMap -InputObject (Get-ZertoAzureResource -SiteIdentifier $TargetSiteIdentifier -Subnet) -Key "SubnetName" -Value "SubnetIdentifier"
|
|
||||||
$SecurityGroupsMap = GetMap -InputObject (Get-ZertoAzureResource -SiteIdentifier $TargetSiteIdentifier -SecurityGroup) -Key "SecurityGroupName" -Value "SecurityGroupIdentifier"
|
|
||||||
$InstancesMap = GetMap -InputObject (Get-ZertoAzureResource -SiteIdentifier $TargetSiteIdentifier -VmInstanceType) -Key "VmInstanceType" -Value "IsPremiumSupported"
|
|
||||||
|
|
||||||
# Validate instance types and ensure case insensitivity
|
|
||||||
$TestInstanceType = $Instances.Where( { $_.VmInstanceType -match $TestInstanceType }) | Select-Object -ExpandProperty VmInstanceType
|
|
||||||
$LiveInstanceType = $Instances.Where( { $_.VmInstanceType -match $LiveInstanceType }) | Select-Object -ExpandProperty VmInstanceType
|
|
||||||
|
|
||||||
# Validate parameters are found at target site and Instance and Disk Types are valid
|
|
||||||
if ($null -eq $NetworksMap[$LiveNetworkName]) {
|
|
||||||
Write-Error "Unable to find network with name $LiveNetworkName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} elseif ($null -eq $SubnetsMap[$LiveSubnetName]) {
|
|
||||||
Write-Error "Unable to find subnet with name $LiveSubnetName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} elseif ($null -eq $SecurityGroupsMap[$LiveSecurityGroupName]) {
|
|
||||||
Write-Error "Unable to find security group with name $LiveSecurityGroupName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} elseif ($LiveInstanceType -notin $Instances.VmInstanceType) {
|
|
||||||
Write-Error "Unable to find a supported VM Instance Type with name $LiveInstanceType. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} elseif ($null -eq $NetworksMap[$TestNetworkName]) {
|
|
||||||
Write-Error "Unable to find network with name $TestNetworkName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} elseif ($null -eq $SubnetsMap[$TestSubnetName]) {
|
|
||||||
Write-Error "Unable to find subnet with name $TestSubnetName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} elseif ($null -eq $SecurityGroupsMap[$TestSecurityGroupName]) {
|
|
||||||
Write-Error "Unable to find security group with name $TestSecurityGroupName. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} elseif ($TestInstanceType -notin $Instances.VmInstanceType) {
|
|
||||||
Write-Error "Unable to find a supported VM Instance Type with name $TestInstanceType. Please check the name and try again." -ErrorAction Stop
|
|
||||||
} elseif ($LiveDiskType -eq "ManagedPremiumSSD" -and ( -not $InstancesMap[$LiveInstanceType])) {
|
|
||||||
Write-Error "$LiveDiskType disk type is not supported on the selected instance $LiveInstanceType. Please check your settings and try again." -ErrorAction Stop
|
|
||||||
} elseif ($LiveDiskType -ne "ManagedPremiumSSD" -and $InstancesMap[$LiveInstanceType]) {
|
|
||||||
Write-Error "$TestDiskType disk type is not supported on the selected instance $LiveInstanceType. Please check your settings and try again." -ErrorAction Stop
|
|
||||||
} elseif ($TestDiskType -eq "ManagedPremiumSSD" -and ( -not $InstancesMap[$TestInstanceType])) {
|
|
||||||
Write-Error "$TestDiskType disk type is not supported on the selected instance $TestInstanceType. Please check your settings and try again." -ErrorAction Stop
|
|
||||||
} elseif ($TestDiskType -ne "ManagedPremiumSSD" -and $InstancesMap[$TestInstanceType]) {
|
|
||||||
Write-Error "$TestDiskType disk type is not supported on the selected instance $TestInstanceType. Please check your settings and try again." -ErrorAction Stop
|
|
||||||
}
|
|
||||||
|
|
||||||
# Create the VPG Settings Identifier and get the skeleton
|
|
||||||
$VpgSettingsIdentifier = New-ZertoVpgSettingsIdentifier -newVpg
|
|
||||||
$Settings = Get-ZertoVpgSetting -vpgSettingsIdentifier $VpgSettingsIdentifier
|
|
||||||
|
|
||||||
# Set the VPG Settings URI
|
|
||||||
$VpgSettingsBaseUri = "vpgSettings/{0}" -f $VpgSettingsIdentifier
|
|
||||||
|
|
||||||
# Populate the skeleton with the basic information
|
|
||||||
$Settings.Basic.Name = $Name
|
|
||||||
$Settings.Basic.Priority = $Priority
|
|
||||||
$Settings.Basic.JournalHistoryInHours = $JournalHistoryInHours
|
|
||||||
$Settings.Basic.ProtectedSiteIdentifier = $LocalSiteIdentifier
|
|
||||||
$Settings.Basic.RecoverySiteIdentifier = $TargetSiteIdentifier
|
|
||||||
$Settings.Basic.RpoInSeconds = $RpoInSeconds
|
|
||||||
$Settings.Basic.TestIntervalInMinutes = $TestIntervalInMinutes
|
|
||||||
$Settings.Basic.UseWanCompression = $UseWanCompression
|
|
||||||
|
|
||||||
# Put the basic information to get am Azure Skeleton for the remainder of the default settings
|
|
||||||
$null = Invoke-ZertoRestRequest -method PUT -uri $VpgSettingsBaseUri -body ($Settings | ConvertTo-Json -Depth 10)
|
|
||||||
Start-Sleep -Milliseconds 500
|
|
||||||
|
|
||||||
# Get an updated Skeleton with Azure specific settings to populate and populate them
|
|
||||||
$Settings = Get-ZertoVpgSetting -vpgSettingsIdentifier $VpgSettingsIdentifier
|
|
||||||
$Settings.Networks.Failover.PublicCloud.VirtualNetworkIdentifier = $NetworksMap[$LiveNetworkName]
|
|
||||||
$Settings.Networks.Failover.PublicCloud.SubnetIdentifier = $SubnetsMap[$LiveSubnetName]
|
|
||||||
$Settings.Networks.Failover.PublicCloud.SecurityGroupIdentifier = $SecurityGroupsMap[$LiveSecurityGroupName]
|
|
||||||
$Settings.Networks.FailoverTest.PublicCloud.VirtualNetworkIdentifier = $NetworksMap[$TestNetworkName]
|
|
||||||
$Settings.Networks.FailoverTest.PublicCloud.SubnetIdentifier = $SubnetsMap[$TestSubnetName]
|
|
||||||
$Settings.Networks.FailoverTest.PublicCloud.SecurityGroupIdentifier = $SecurityGroupsMap[$TestSecurityGroupName]
|
|
||||||
$Settings.Recovery.PublicCloud.Failover.VmInstanceType = $LiveInstanceType
|
|
||||||
$Settings.Recovery.PublicCloud.Failover.Azure.RecoveryDiskType = $LiveDiskType
|
|
||||||
$Settings.Recovery.PublicCloud.FailoverTest.VmInstanceType = $TestInstanceType
|
|
||||||
$Settings.Recovery.PublicCloud.FailoverTest.Azure.RecoveryDiskType = $TestDiskType
|
|
||||||
|
|
||||||
# Update the VPG Settings on the Server with a PUT request
|
|
||||||
$null = Invoke-ZertoRestRequest -method PUT -uri $VpgSettingsBaseUri -body ($Settings | ConvertTo-Json -Depth 10)
|
|
||||||
|
|
||||||
# Return the VPG Settings Identifier to use when adding VMs to the VPG.
|
|
||||||
$VpgSettingsIdentifier
|
|
||||||
}
|
|
||||||
|
|
||||||
process {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
end {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -165,7 +165,7 @@ function New-ZertoVpg {
|
|||||||
begin {
|
begin {
|
||||||
# Create an identifiers table, and start converting names to identifiers.
|
# Create an identifiers table, and start converting names to identifiers.
|
||||||
$identifiersTable = @{ }
|
$identifiersTable = @{ }
|
||||||
$identifiersTable['recoverySiteIdentifier'] = (Get-ZertoPeerSite).Where({$_.PeerSiteName -like $recoverySite}) | Select-Object -ExpandProperty SiteIdentifier
|
$identifiersTable['recoverySiteIdentifier'] = (Get-ZertoVirtualizationSite).Where( { $_.VirtualizationSiteName -like $recoverySite }) | Select-Object -ExpandProperty SiteIdentifier
|
||||||
$peerSiteNetworks = $(Get-ZertoVirtualizationSite -siteIdentifier $identifiersTable['recoverySiteIdentifier'] -networks)
|
$peerSiteNetworks = $(Get-ZertoVirtualizationSite -siteIdentifier $identifiersTable['recoverySiteIdentifier'] -networks)
|
||||||
$identifiersTable['failoverNetworkIdentifier'] = $peerSiteNetworks | Where-Object { $_.VirtualizationNetworkName -like $recoveryNetwork } | Select-Object -ExpandProperty NetworkIdentifier
|
$identifiersTable['failoverNetworkIdentifier'] = $peerSiteNetworks | Where-Object { $_.VirtualizationNetworkName -like $recoveryNetwork } | Select-Object -ExpandProperty NetworkIdentifier
|
||||||
$identifiersTable['testNetworkIdentifier'] = $peerSiteNetworks | Where-Object { $_.VirtualizationNetworkName -like $testNetwork } | Select-Object -ExpandProperty NetworkIdentifier
|
$identifiersTable['testNetworkIdentifier'] = $peerSiteNetworks | Where-Object { $_.VirtualizationNetworkName -like $testNetwork } | Select-Object -ExpandProperty NetworkIdentifier
|
||||||
|
|||||||
@@ -1,221 +0,0 @@
|
|||||||
---
|
|
||||||
external help file: ZertoApiWrapper-help.xml
|
|
||||||
Module Name: ZertoApiWrapper
|
|
||||||
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/Get-ZertoAzureResource.md
|
|
||||||
schema: 2.0.0
|
|
||||||
---
|
|
||||||
|
|
||||||
# Get-ZertoAzureResource
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
Function used to get data for the Azure site to populate VPGs targeting Azure. This information includes Networks (VNets), Subnets, Security Groups, and VM Instance Types.
|
|
||||||
|
|
||||||
## SYNTAX
|
|
||||||
|
|
||||||
### SiteNameVmInstanceType (Default)
|
|
||||||
```
|
|
||||||
Get-ZertoAzureResource -SiteName <String> [-VmInstanceType] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
### SiteNameNetwork
|
|
||||||
```
|
|
||||||
Get-ZertoAzureResource -SiteName <String> [-Network] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
### SiteNameSubnet
|
|
||||||
```
|
|
||||||
Get-ZertoAzureResource -SiteName <String> [-Subnet] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
### SiteNameSecurityGroup
|
|
||||||
```
|
|
||||||
Get-ZertoAzureResource -SiteName <String> [-SecurityGroup] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
### SiteIdentifierVmInstanceType
|
|
||||||
```
|
|
||||||
Get-ZertoAzureResource -SiteIdentifier <String> [-VmInstanceType] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
### SiteIdentifierNetwork
|
|
||||||
```
|
|
||||||
Get-ZertoAzureResource -SiteIdentifier <String> [-Network] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
### SiteIdentifierSubnet
|
|
||||||
```
|
|
||||||
Get-ZertoAzureResource -SiteIdentifier <String> [-Subnet] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
### SiteIdentifierSecurityGroup
|
|
||||||
```
|
|
||||||
Get-ZertoAzureResource -SiteIdentifier <String> [-SecurityGroup] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
Function used to get data for the Azure site to populate VPGs targeting Azure. This information includes Networks (VNets), Subnets, Security Groups, and VM Instance Types.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Example 1
|
|
||||||
```powershell
|
|
||||||
PS C:\> Get-ZertoAzureResource -SiteName "My Azure Site" -Network
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns information about the usable Networks (Vnets) at the Azure site with Zerto ZCA site named "My Azure Site"
|
|
||||||
|
|
||||||
### Example 2
|
|
||||||
```powershell
|
|
||||||
PS C:\> Get-ZertoAzureResource -SiteName "My Azure Site" -Subnet
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns information about the usable Subnets at the Azure site with Zerto ZCA site named "My Azure Site"
|
|
||||||
|
|
||||||
### Example 3
|
|
||||||
```powershell
|
|
||||||
PS C:\> Get-ZertoAzureResource -SiteName "My Azure Site" -SecurityGroup
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns information about the usable Security Groups at the Azure site with Zerto ZCA site named "My Azure Site"
|
|
||||||
|
|
||||||
### Example 4
|
|
||||||
```powershell
|
|
||||||
PS C:\> Get-ZertoAzureResource -SiteName "My Azure Site" -VmInstanceType
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns information about the usable Vm Instance Types at the Azure site with Zerto ZCA site named "My Azure Site"
|
|
||||||
|
|
||||||
### Example 5
|
|
||||||
```powershell
|
|
||||||
PS C:\> Get-ZertoAzureResource -SiteIdentifier "0123-4142-152414" -Network
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns information about the usable Networks (Vnets) at the Azure site with Zerto ZCA site with identifier "0123-4142-152414"
|
|
||||||
|
|
||||||
### Example 6
|
|
||||||
```powershell
|
|
||||||
PS C:\> Get-ZertoAzureResource -SiteIdentifier "0123-4142-152414" -Subnet
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns information about the usable Subnets at the Azure site with Zerto ZCA site with identifier "0123-4142-152414"
|
|
||||||
|
|
||||||
### Example 7
|
|
||||||
```powershell
|
|
||||||
PS C:\> Get-ZertoAzureResource -SiteIdentifier "0123-4142-152414" -SecurityGroup
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns information about the usable Security Groups at the Azure site with Zerto ZCA site with identifier "0123-4142-152414"
|
|
||||||
|
|
||||||
### Example 8
|
|
||||||
```powershell
|
|
||||||
PS C:\> Get-ZertoAzureResource -SiteIdentifier "0123-4142-152414" -VmInstanceType
|
|
||||||
```
|
|
||||||
|
|
||||||
Returns information about the usable Vm Instance Types at the Azure site with Zerto ZCA site with identifier "0123-4142-152414"
|
|
||||||
|
|
||||||
## PARAMETERS
|
|
||||||
|
|
||||||
### -Network
|
|
||||||
Use this switch to get information about the supported Networks (VNets).
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: SwitchParameter
|
|
||||||
Parameter Sets: SiteNameNetwork, SiteIdentifierNetwork
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: Named
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -SecurityGroup
|
|
||||||
Use this switch to get information about the supported Security Groups
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: SwitchParameter
|
|
||||||
Parameter Sets: SiteNameSecurityGroup, SiteIdentifierSecurityGroup
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: Named
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -SiteIdentifier
|
|
||||||
Site Identifier of the Azure Site you wish to get the information.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: SiteIdentifierVmInstanceType, SiteIdentifierNetwork, SiteIdentifierSubnet, SiteIdentifierSecurityGroup
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: Named
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -SiteName
|
|
||||||
Name the Azure Site you wish to get the information.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: SiteNameVmInstanceType, SiteNameNetwork, SiteNameSubnet, SiteNameSecurityGroup
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: Named
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -Subnet
|
|
||||||
Use this switch to get information about the supported Subnets
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: SwitchParameter
|
|
||||||
Parameter Sets: SiteNameSubnet, SiteIdentifierSubnet
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: Named
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -VmInstanceType
|
|
||||||
Use this switch to get information about the supported Vm Instance Types.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: SwitchParameter
|
|
||||||
Parameter Sets: SiteNameVmInstanceType, SiteIdentifierVmInstanceType
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: Named
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### CommonParameters
|
|
||||||
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
|
||||||
|
|
||||||
## INPUTS
|
|
||||||
|
|
||||||
### None
|
|
||||||
|
|
||||||
## OUTPUTS
|
|
||||||
|
|
||||||
### System.Object
|
|
||||||
## NOTES
|
|
||||||
|
|
||||||
## RELATED LINKS
|
|
||||||
[ZVM Azure Resource API Endpoint Documentation](https://s3.amazonaws.com/zertodownload_docs/Latest/Zerto%20Virtual%20Replication%20Zerto%20Virtual%20Manager%20(ZVM)%20-%20vSphere%20Online%20Help/content/zvr_apis/virtualization_sites_api.htm#Availabl)
|
|
||||||
@@ -1,334 +0,0 @@
|
|||||||
---
|
|
||||||
external help file: ZertoApiWrapper-help.xml
|
|
||||||
Module Name: ZertoApiWrapper
|
|
||||||
online version: https://github.com/ZertoPublic/ZertoApiWrapper/blob/master/docs/New-ZertoAzureVpg.md
|
|
||||||
schema: 2.0.0
|
|
||||||
---
|
|
||||||
|
|
||||||
# New-ZertoAzureVpg
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
Creates a New VPG Settings object targeting an Azure ZCA. A Zerto VPG Settings Identifier will be returned to as the VPG will need to be updated with the Virtual Machines that will be members of this VPG.
|
|
||||||
|
|
||||||
## SYNTAX
|
|
||||||
|
|
||||||
```
|
|
||||||
New-ZertoAzureVpg [-Name] <String> [[-Priority] <String>] [[-JournalHistoryInHours] <Int32>]
|
|
||||||
[[-RpoInSeconds] <Int32>] [[-TestIntervalInMinutes] <Int32>] [[-UseWanCompression] <Boolean>]
|
|
||||||
[-TargetSiteName] <String> [-LiveNetworkName] <String> [-LiveSubnetName] <String>
|
|
||||||
[-LiveSecurityGroupName] <String> [-LiveInstanceType] <String> [[-LiveDiskType] <String>]
|
|
||||||
[-TestNetworkName] <String> [-TestSubnetName] <String> [-TestSecurityGroupName] <String>
|
|
||||||
[-TestInstanceType] <String> [[-TestDiskType] <String>] [<CommonParameters>]
|
|
||||||
```
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
Creates a New VPG Settings object targeting an Azure ZCA. A Zerto VPG Settings Identifier will be returned to as the VPG will need to be updated with the Virtual Machines that will be members of this VPG.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Example 1
|
|
||||||
```powershell
|
|
||||||
PS C:\> $VpgSettingsIdentifier = New-ZertoAzureVpg -Name "Example VPG" -Priority "Medium" -JournalHistoryInHours 24 -RpoInSeconds 300 -TestIntervalInMinutes 262080 -UseWanCompression $True -targetSiteName "My Azure Site" -liveNetworkName "Vnet_EastUS_Prod" -liveSubnetName "EUS-Subnet-1" -liveSecurityGroupName "SGP_East_Us_Prod" -LiveInstanceType "Standard_DS1_v2" -liveDiskType "ManagedPremiumSSD" -testNetworkName "Vnet_EastUS_Test" -testSubnetName "EUS-Subnet-2" -testSecurityGroupName "SGP_East_Us_Test" -testInstanceType "Standard_DS1_v2" -testDiskType "ManagedPremiumSSD"
|
|
||||||
```
|
|
||||||
|
|
||||||
Creates a VPG with the specified settings returning a Vpg Settings Identifier to the specified variable to be used in later steps creating the Vpg. All parameters are specified in this example.
|
|
||||||
|
|
||||||
### Example 2
|
|
||||||
```powershell
|
|
||||||
PS C:\> $VpgSettingsIdentifier = New-ZertoAzureVpg -Name "Example VPG" -targetSiteName "My Azure Site" -liveNetworkName "Vnet_EastUS_Prod" -liveSubnetName "EUS-Subnet-1" -liveSecurityGroupName "SGP_East_Us_Prod" -LiveInstanceType "Standard_DS1_v2" -testNetworkName "Vnet_EastUS_Test" -testSubnetName "EUS-Subnet-2" -testSecurityGroupName "SGP_East_Us_Test" -testInstanceType "Standard_DS1_v2"
|
|
||||||
```
|
|
||||||
|
|
||||||
Creates a VPG with the specified settings returning a Vpg Settings Identifier to the specified variable to be used in later steps creating the Vpg. Only mandatory parameters are specified in this example.
|
|
||||||
|
|
||||||
## PARAMETERS
|
|
||||||
|
|
||||||
### -JournalHistoryInHours
|
|
||||||
Desired journal history in hours of the VPG to be created.
|
|
||||||
Min 1 hour, Max 720 hours (30 days).
|
|
||||||
Default is 24 hours.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: Int32
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: 2
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -LiveDiskType
|
|
||||||
Type of disk to select as the default for the VPG during a live operation.
|
|
||||||
Default is 'ManagedPremiumSSD'
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
Accepted values: UnmanagedStandard, ManagedPremiumSSD, ManagedStandardSSD, ManagedStandardHDD
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: 11
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -LiveInstanceType
|
|
||||||
Name of the default VM Instance Type to use during a live operation.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 10
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -LiveNetworkName
|
|
||||||
Name of the default Network (VNet) to use during a live operation.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 7
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -LiveSecurityGroupName
|
|
||||||
Name of the default Security Group to use during a live operation.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 9
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -LiveSubnetName
|
|
||||||
Name of the default subnet to use during a live operation.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 8
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -Name
|
|
||||||
Desired name of the VPG to be created.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 0
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -Priority
|
|
||||||
Replication priority of the VPG to be created.
|
|
||||||
Default value is 'Medium'
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
Accepted values: High, Medium, Low
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: 1
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -RpoInSeconds
|
|
||||||
Desired RPO alert value in seconds.
|
|
||||||
Min 60 seconds, Max 86400 seconds (24 hours).
|
|
||||||
Default is 300 seconds (5 minutes).
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: Int32
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: 3
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -TargetSiteName
|
|
||||||
Name of the ZCA site for the VPG to target.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 6
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -TestDiskType
|
|
||||||
Type of disk to select as the default for the VPG during a live operation.
|
|
||||||
Default is 'ManagedPremiumSSD'
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
Accepted values: UnmanagedStandard, ManagedPremiumSSD, ManagedStandardSSD, ManagedStandardHDD
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: 16
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -TestInstanceType
|
|
||||||
Name of the default VM Instance Type to use during a test operation.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 15
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -TestIntervalInMinutes
|
|
||||||
Desired test interval in minutes.
|
|
||||||
Please review documentation for values.
|
|
||||||
Default is 262080 minutes (6 months).
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: Int32
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
Accepted values: 0, 43200, 131040, 262080, 394560, 525600
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: 4
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -TestNetworkName
|
|
||||||
Name of the default Network (VNet) to use during a test operation.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 12
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -TestSecurityGroupName
|
|
||||||
Name of the default Security Group to use during a test operation.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 14
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -TestSubnetName
|
|
||||||
Name of the default subnet to use during a test operation.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: String
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: True
|
|
||||||
Position: 13
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### -UseWanCompression
|
|
||||||
Turn on or off WAN compression.
|
|
||||||
Recommended this setting is not turned off.
|
|
||||||
Default is to leave WAN compression turned on.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
Type: Boolean
|
|
||||||
Parameter Sets: (All)
|
|
||||||
Aliases:
|
|
||||||
|
|
||||||
Required: False
|
|
||||||
Position: 5
|
|
||||||
Default value: None
|
|
||||||
Accept pipeline input: False
|
|
||||||
Accept wildcard characters: False
|
|
||||||
```
|
|
||||||
|
|
||||||
### CommonParameters
|
|
||||||
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
|
|
||||||
|
|
||||||
## INPUTS
|
|
||||||
|
|
||||||
### None
|
|
||||||
|
|
||||||
## OUTPUTS
|
|
||||||
|
|
||||||
### System.Object
|
|
||||||
|
|
||||||
Vpg Settings Identifier
|
|
||||||
|
|
||||||
## NOTES
|
|
||||||
|
|
||||||
Please review the process and examples outlined in the [Wiki on GitHub](https://Need.ToAdd.link/To/Wiki) for full Vpg Creation workflow and required examples.
|
|
||||||
|
|
||||||
## RELATED LINKS
|
|
||||||
|
|
||||||
[Zerto Create Azure VPG Help Documentation](https://s3.amazonaws.com/zertodownload_docs/Latest/Zerto%20Virtual%20Replication%20Zerto%20Virtual%20Manager%20(ZVM)%20-%20vSphere%20Online%20Help/content/zvr_apis/vsphere_to_azure_vpg_management_apis.htm?tocpath=ZVR%20RESTful%20APIs%7CZerto%20APIs%7C_____26)
|
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
1.5.1
|
1.5.2
|
||||||
|
|||||||
Reference in New Issue
Block a user