Install if no VRA already Installed

This commit is contained in:
Wes Carroll
2019-02-20 17:29:20 -05:00
parent 390404249c
commit faa7268429
+29 -26
View File
@@ -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"
}
}