From 7645a24be1519b53773bf4e5ebba86dcfec8e226 Mon Sep 17 00:00:00 2001 From: Wes Carroll Date: Wed, 20 Feb 2019 13:30:36 -0500 Subject: [PATCH] Complete Install-Vra.ps1 --- ZertoApiWrapper/Public/Install-Vra.ps1 | 31 +++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/ZertoApiWrapper/Public/Install-Vra.ps1 b/ZertoApiWrapper/Public/Install-Vra.ps1 index 152b15d..7f7cb89 100644 --- a/ZertoApiWrapper/Public/Install-Vra.ps1 +++ b/ZertoApiWrapper/Public/Install-Vra.ps1 @@ -1,5 +1,5 @@ function Install-Vra { - [cmdletbinding()] + [cmdletbinding( SupportsShouldProcess = $true )] param( [Parameter( Mandatory = $true )] [string]$hostName, @@ -7,7 +7,8 @@ function Install-Vra { [string]$datastoreName, [Parameter( Mandatory = $true )] [string]$networkName, - [Parameter()] + [Parameter( HelpMessage = "Initial amount of memory to assign to the VRA in GB. Minimum is 1, Maximum is 16" )] + [ValidateRange(1, 16)] [int]$memoryInGB = 3, [Parameter()] [string]$groupName, @@ -26,5 +27,29 @@ function Install-Vra { ) $siteIdentifier = ((Get-Item Env:zertoLocalSiteInfo).value | ConvertFrom-Json).SiteIdentifier - $hostInformation = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -hosts | Where-Object {$_.VirtualizationHostName -eq $hostName} + $hostIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -hosts | Where-Object {$_.VirtualizationHostName -eq $hostName} | Select-Object hostIdentifier -ExpandProperty hostIdentifier + $networkIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -networks | Where-Object {$_.VirtualizationNetworkName -eq $networkName} | Select-Object NetworkIdentifier -ExpandProperty NetworkIdentifier + $datastoreIdentifier = Get-ZertoVirtualizationSite -siteIdentifier $siteIdentifier -datastores | Where-Object {$_.DatastoreName -eq $datastoreName} | Select-Object DatastoreIdentifier -ExpandProperty DatastoreIdentifier + $vraBasic = [ordered]@{} + $vraBasic['DatastoreIdentifier'] = $datastoreIdentifier.toString() + if ($PSBoundParameters.ContainsKey('groupName')) { + $vraBasic['GroupName'] = $groupName + } + $vraBasic['HostIdentifier'] = $hostIdentifier.toString() + $vraBasic['MemoryInGB'] = $memoryInGB + $vraBasic['NetworkIdentifier'] = $networkIdentifier.toString() + $vraBasic['UsePublicKeyInsteadOfCredentials'] = $true + $vraBasicNetwork = [ordered]@{} + if ( $PSCmdlet.ParameterSetName -eq "StaticIp" ) { + $vraBasicNetwork['DefaultGateway'] = $defaultGateway.toString() + $vraBasicNetwork['SubnetMask'] = $subnetMask.toString() + $vraBasicNetwork['VraIPAddress'] = $vraIpAddress.toString() + $vraBasicNetwork['VraIPConfigurationTypeApi'] = "Static" + } else { + $vraBasicNetwork['VraIPConfigurationTypeApi'] = "Dhcp" + } + $vraBasic['VraNetworkDataApi'] = $vraBasicNetwork + if ($PSCmdlet.ShouldProcess("Preforming operation 'Install-Vra' on Host $hostName with the following data \n $($vraBasic | convertto-json)")) { + Invoke-ZertoRestRequest -uri "vras" -method POST -body $($vraBasic | ConvertTo-Json) + } }