Merge pull request #3 from wcarroll/VariableScoping

Variable scoping
This commit is contained in:
Wes Carroll
2019-02-21 12:56:46 -05:00
committed by GitHub
4 changed files with 22 additions and 23 deletions
@@ -11,29 +11,22 @@ function Invoke-ZertoRestRequest {
[switch]$returnHeaders
)
$callerErrorActionPreference = $ErrorActionPreference
if ( Test-Path Env:zertoConnectionInformation ) {
$zertoConnectionInformation = $(Get-Item -Path Env:zertoConnectionInformation).value | ConvertFrom-Json
} else {
if ( -not (Test-Path variable:script:zvmServer -and Test-Path variable:script:zvmPort) ) {
Write-Error -Message "Zerto Connection does not Exist. Please run Connect-ZertoServer first to establish a connection"
break
}
if ( Test-Path Env:zertoAuthorizationHeaders ) {
$json = $(Get-Item Env:zertoAuthorizationHeaders).value | ConvertFrom-Json
$headers = @{}
$json.psobject.properties | ForEach-Object { $headers[$_.Name] = $_.Value }
if ( Test-Path variable:script:zvmHeaders ) {
$headers = $script:zvmHeaders
} else {
$headers = $null
}
if ( (Test-Path Env:zertoAuthorizationHeaders) -and $([datetime]$zertoConnectionInformation.lastAction).addMinutes(30) -lt $(get-date) ) {
if ( (Test-Path variable:script:zvmHeaders) -and $([datetime]$script:zvmLastAction).addMinutes(30) -lt $(get-date) ) {
Write-Error -Message "Authorization Token has Expired or Does not exist in Env variables. Please re-authorize to the Zerto Virtual Manager"
break
} else {
$submittedURI = "https://{0}:{1}/{2}/{3}" -f $zertoConnectionInformation.zertoServer, $zertoConnectionInformation.zertoPort, $apiVersion, $uri
$submittedURI = "https://{0}:{1}/{2}/{3}" -f $script:zvmServer, $script:zvmPort, $apiVersion, $uri
try {
$lastAction = (get-date).Ticks
$script:zvmLastAction = (get-date).Ticks
$apiRequestResults = Invoke-RestMethod -Uri $submittedURI -Headers $headers -Method $method -Body $body -ContentType $contentType -Credential $credential -SkipCertificateCheck -ResponseHeadersVariable responseHeaders -TimeoutSec 100
$zertoConnectionInformation.lastAction = $lastAction
Set-Item -Path Env:zertoConnectionInformation -Value $($zertoConnectionInformation | ConvertTo-Json -Compress)
} catch {
Write-Error -ErrorRecord $_ -ErrorAction $callerErrorActionPreference
}
@@ -18,14 +18,18 @@ function Connect-ZertoServer {
[System.Management.Automation.PSCredential]
$credential
)
$zertoConnectionInformation = @{"zertoServer" = $zertoServer; "zertoPort" = $zertoPort; "LastAction" = $(get-date).Ticks}
Set-Item Env:zertoConnectionInformation -Value ($zertoConnectionInformation | ConvertTo-Json -Compress)
Set-Variable -Name zvmHost -Scope Script -Value $zertoServer
Set-Variable -Name zvmPort -Scope Script -Value $zertoPort
Set-Variable -Name zmvLastAction -Scope Script -Value $(get-date).Ticks
# $zertoConnectionInformation = @{"zertoServer" = $zertoServer; "zertoPort" = $zertoPort; "LastAction" = $(get-date).Ticks}
# Set-Item Env:zertoConnectionInformation -Value ($zertoConnectionInformation | ConvertTo-Json -Compress)
$body = '{"AuthenticationMethod": "1"}'
$uri = "session/add"
$results = Invoke-ZertoRestRequest -uri $uri -credential $credential -returnHeaders -body $body -method POST
$zertoAuthorizationHeaders = @{"x-zerto-session" = $results.Headers['x-zerto-session'][0].ToString(); "Accept" = "application/json"}
Set-Item Env:zertoAuthorizationHeaders -Value ($zertoAuthorizationHeaders | ConvertTo-Json -Compress)
$zertoLocalSiteInfo = Get-ZertoLocalSite
Set-Item Env:zertoLocalSiteInfo -Value ($zertoLocalSiteInfo | ConvertTo-Json -Compress)
Set-Variable -Name zvmHeaders -Scope Script -Value $zertoAuthorizationHeaders
# Set-Item Env:zertoAuthorizationHeaders -Value ($zertoAuthorizationHeaders | ConvertTo-Json -Compress)
Set-Variable -Name zvmLocalInfo -Scope Script -Value (Get-ZertoLocalSite)
# Set-Item Env:zertoLocalSiteInfo -Value ($zertoLocalSiteInfo | ConvertTo-Json -Compress)
return $zertoAuthorizationHeaders
}
@@ -2,7 +2,9 @@ function Disconnect-ZertoServer {
[cmdletbinding()]
$uri = "session"
Invoke-ZertoRestRequest -uri $uri -method DELETE
Remove-Item Env:zertoAuthorizationHeaders
Remove-Item Env:zertoConnectionInformation
Remove-Item Env:zertoLocalSiteInfo
Clear-Variable -Name zvmServer -Scope Script
Clear-Variable -Name zvmPort -Scope Script
Clear-Variable -Name zvmLastAction -Scope Script
Clear-Variable -Name zvmHeaders -Scope Script
Clear-Variable -Name zvmLocalInfo -Scope Script
}
+2 -2
View File
@@ -28,7 +28,7 @@ function Install-ZertoVra {
#TODO - Test to see if VRA already exists!
$vraName = "Z-VRA-{0}" -f $hostName
if ( -not (Get-ZertoVra -vraName $vraName) ) {
$siteIdentifier = ((Get-Item Env:zertoLocalSiteInfo).value | ConvertFrom-Json).SiteIdentifier
$siteIdentifier = $script:zertoLocalInfo.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
@@ -51,7 +51,7 @@ function Install-ZertoVra {
$vraBasicNetwork['VraIPConfigurationTypeApi'] = "Dhcp"
}
$vraBasic['VraNetworkDataApi'] = $vraBasicNetwork
if ($PSCmdlet.ShouldProcess("Host $hostName with the following data $($vraBasic | convertto-json)")) {
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 {