From 05783a1f37a531d0f55367c5c8a53f847f5bdd0c Mon Sep 17 00:00:00 2001 From: Wes Carroll Date: Thu, 19 Dec 2019 18:49:13 -0500 Subject: [PATCH] Update Import Logic --- .../Public/Import-ZertoVmNicSetting.ps1 | 71 ++++++++++--------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/ZertoApiWrapper/Public/Import-ZertoVmNicSetting.ps1 b/ZertoApiWrapper/Public/Import-ZertoVmNicSetting.ps1 index 0a59888..104e325 100644 --- a/ZertoApiWrapper/Public/Import-ZertoVmNicSetting.ps1 +++ b/ZertoApiWrapper/Public/Import-ZertoVmNicSetting.ps1 @@ -44,15 +44,28 @@ function Import-ZertoVmNicSetting { [string]::IsNullOrWhiteSpace($Vm.LiveShouldReplaceMac) -or [string]::IsNullOrWhiteSpace($Vm.TestNetwork) -or [string]::IsNullOrWhiteSpace($Vm.TestShouldReplaceMac)) { - Write-Error "$($Vm.VMName) does not contain all the required data. Please check the CSV entry for this item and try again." -ErrorAction Continue + Write-Error "$($Vm.VMName) does not contain all the required data. Please check the CSV entry for this item and try again. You are required to provide the VPGName, VMName, NicIdentifier, LiveNetwork, and ShouldReplaceMacAddress for each Nic." -ErrorAction Continue } else { $uri = "vpgSettings/{0}/vms/{1}" -f $vpgSettingsId, $vmMap[$vm.VMName] $VmNicSettings = Get-ZertoVpgSetting -vpgSettingsIdentifier $vpgSettingsId -vmIdentifier $vmMap[$vm.VMName] foreach ($nic in $VmNicSettings.nics) { if ($nic.NicIdentifier -eq $vm.NicIdentifier) { - $nic.failover.Hypervisor.NetworkIdentifier = $NetworkMap[$vm.LiveNetwork] - $nic.failover.Hypervisor.ShouldReplaceMacAddress = $vm.LiveShouldReplaceMac - if ($null -eq $nic.failover.Hypervisor.IpConfig -and ($null -ne $vm.LiveIsDHCP -or $null -ne $vm.LiveIpAddress)) { + $NicUri = "{0}/nics/{1}" -f $uri, $nic.NicIdentifier + Invoke-ZertoRestRequest -uri $NicUri -Method "DELETE" + $nicSettings = Invoke-ZertoRestRequest -uri $NicUri -Method "GET" + $nicSettings.failover.Hypervisor.NetworkIdentifier = $NetworkMap[$vm.LiveNetwork] + $nicSettings.failover.Hypervisor.ShouldReplaceMacAddress = $vm.LiveShouldReplaceMac + if ($vm.LiveIsDHCP -imatch "true") { + $IpConfig = [PSCustomObject]@{ + IsDhcp = $vm.LiveIsDHCP + PrimaryDns = $vm.LivePrimaryDns + SecondaryDns = $vm.LiveSecondayDns + } + $nicSettings.failover.Hypervisor.IpConfig = $IpConfig + $nicSettings.failover.Hypervisor.DnsSuffix = $vm.LiveDnsSuffix + } elseif (($vm.LiveIsDHCP -imatch "false" -or + [string]::IsNullOrWhiteSpace($vm.LiveIsDHCP)) -and + -not [string]::IsNullOrWhiteSpace($vm.LiveIpAddress)) { $IpConfig = [PSCustomObject]@{ IsDhcp = $vm.LiveIsDHCP StaticIp = $vm.LiveIpAddress @@ -61,21 +74,22 @@ function Import-ZertoVmNicSetting { PrimaryDns = $vm.LivePrimaryDns SecondaryDns = $vm.LiveSecondayDns } - $nic.failover.Hypervisor.IpConfig = $IpConfig - } elseif ($null -eq $nic.failover.Hypervisor.IpConfig -and $null -eq $vm.LiveIsDHCP -and $null -eq $vm.LiveIpAddress) { - $nic.failover.Hypervisor.IpConfig = $null - } else { - $nic.failover.Hypervisor.IpConfig.IsDhcp = $vm.LiveIsDHCP - $nic.failover.Hypervisor.IpConfig.StaticIp = $vm.LiveIpAddress - $nic.failover.Hypervisor.IpConfig.SubnetMask = $vm.LiveIpSubnetMask - $nic.failover.Hypervisor.IpConfig.Gateway = $vm.LiveIpDefaultGateway - $nic.failover.Hypervisor.IpConfig.PrimaryDns = $vm.LivePrimaryDns - $nic.failover.Hypervisor.IpConfig.SecondaryDns = $vm.LiveSecondayDns + $nicSettings.failover.Hypervisor.IpConfig = $IpConfig + $nicSettings.failover.Hypervisor.DnsSuffix = $vm.LiveDnsSuffix } - $nic.failover.Hypervisor.DnsSuffix = $vm.LiveDnsSuffix - $nic.failoverTest.Hypervisor.NetworkIdentifier = $NetworkMap[$vm.TestNetwork] - $nic.failoverTest.Hypervisor.ShouldReplaceMacAddress = $vm.TestShouldReplaceMac - if ($null -eq $nic.failoverTest.Hypervisor.IpConfig -and ($null -ne $vm.TestIsDHCP -or $null -ne $vm.TestIpAddress)) { + $nicSettings.failoverTest.Hypervisor.NetworkIdentifier = $NetworkMap[$vm.TestNetwork] + $nicSettings.failoverTest.Hypervisor.ShouldReplaceMacAddress = $vm.TestShouldReplaceMac + if ($vm.TestIsDHCP -imatch "true" ) { + $IpConfig = [PsCustomObject]@{ + IsDhcp = $vm.TestIsDHCP + PrimaryDns = $vm.TestPrimaryDns + SecondaryDns = $vm.TestSecondayDns + } + $nicSettings.failoverTest.Hypervisor.IpConfig = $IpConfig + $nicSettings.failoverTest.Hypervisor.DnsSuffix = $vm.TestDnsSuffix + } elseif (($vm.TestIsDHCP -imatch "false" -or + [string]::IsNullOrWhiteSpace($vm.TestIsDHCP)) -and + -not [string]::IsNullOrWhiteSpace($vm.TestIpAddress)) { $IpConfig = [PsCustomObject]@{ IsDhcp = $vm.TestIsDHCP StaticIp = $vm.TestIpAddress @@ -84,24 +98,15 @@ function Import-ZertoVmNicSetting { PrimaryDns = $vm.TestPrimaryDns SecondaryDns = $vm.TestSecondayDns } - $nic.failoverTest.Hypervisor.IpConfig = $IpConfig - } elseif ($null -eq $nic.failoverTest.Hypervisor.IpConfig -and $null -eq $vm.TestIsDHCP -and $null -eq $vm.TestIpAddress) { - $nic.failoverTest.Hypervisor.IpConfig = $null - } else { - $nic.failoverTest.Hypervisor.IpConfig.IsDhcp = $vm.TestIsDHCP - $nic.failoverTest.Hypervisor.IpConfig.StaticIp = $vm.TestIpAddress - $nic.failoverTest.Hypervisor.IpConfig.SubnetMask = $vm.TestIpSubnetMask - $nic.failoverTest.Hypervisor.IpConfig.Gateway = $vm.TestIpDefaultGateway - $nic.failoverTest.Hypervisor.IpConfig.PrimaryDns = $vm.TestPrimaryDns - $nic.failoverTest.Hypervisor.IpConfig.SecondaryDns = $vm.TestSecondayDns + $nicSettings.failoverTest.Hypervisor.IpConfig = $IpConfig + $nicSettings.failoverTest.Hypervisor.DnsSuffix = $vm.TestDnsSuffix + } + Write-Verbose "Putting Updated Config for VM: $($vm.name), NIC: $($nic.nicidentifier) in VPG: $Vpg" + if ($PSCmdlet.ShouldProcess($vm.NicIdentifier, "Updating Nic")) { + Invoke-ZertoRestRequest -uri $NicUri -Method "PUT" -Body ($nicSettings | ConvertTo-Json -Depth 10) > $null } - $nic.failoverTest.Hypervisor.DnsSuffix = $vm.TestDnsSuffix } } - Write-Verbose "Putting Updated Config for VM: $($vm.vmname) in Vpg: $Vpg" - if ($PSCmdlet.ShouldProcess($vm.NicIdentifier, "Updating Nic")) { - Invoke-ZertoRestRequest -uri $uri -Method "PUT" -Body ($VmNicSettings | ConvertTo-Json -Depth 10) > $null - } } } Write-Verbose "Saving updated configuration for VPG: $Vpg"