From faa7268429724f389e66596f3d70864af4798f8e Mon Sep 17 00:00:00 2001 From: Wes Carroll Date: Wed, 20 Feb 2019 17:29:20 -0500 Subject: [PATCH] Install if no VRA already Installed --- ZertoApiWrapper/Public/Install-ZertoVra.ps1 | 55 +++++++++++---------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/ZertoApiWrapper/Public/Install-ZertoVra.ps1 b/ZertoApiWrapper/Public/Install-ZertoVra.ps1 index c171607..4e41a2c 100644 --- a/ZertoApiWrapper/Public/Install-ZertoVra.ps1 +++ b/ZertoApiWrapper/Public/Install-ZertoVra.ps1 @@ -26,32 +26,35 @@ function Install-ZertoVra { ) #TODO - Test to see if VRA already exists! - #$vraName = "Z-VRA-{0}" -f $hostName - #$installedVras = Get-ZertoVra -hostName $hostName - $siteIdentifier = ((Get-Item Env:zertoLocalSiteInfo).value | ConvertFrom-Json).SiteIdentifier - $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" + $vraName = "Z-VRA-{0}" -f $hostName + if ( Get-ZertoVra -vraName $vraName ) { + $siteIdentifier = ((Get-Item Env:zertoLocalSiteInfo).value | ConvertFrom-Json).SiteIdentifier + $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) + } } 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) + Write-Error "Host $hostName already has a VRA installed. Aborting Install Call" } }