Skip to content

Commit b606d65

Browse files
authored
changes to the module including project v3 map (Azure#342)
1 parent d8407e5 commit b606d65

File tree

1 file changed

+32
-14
lines changed

1 file changed

+32
-14
lines changed

azure-migrate/dependencies-at-scale/AzMig_Dependencies.psm1

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,32 +132,51 @@ function Get-AzMigDiscoveredVMwareVMs {
132132

133133
$discoverySolution = $response
134134

135-
$map = $discoverysolution.properties.details.extendedDetails.applianceNameToSiteIdMapV2
136-
$map = $map | ConvertFrom-Json
137-
Write-Debug $map.count
138-
if($map) {$map | Write-Debug}
139-
if (-not $map.count) {throw "No Migrate Appliance in project"}
135+
$appMap = @{}
140136

141-
$vmwareappliancemap = @()
137+
if ($null -ne $discoverySolution.properties.details.extendedDetails.applianceNameToSiteIdMapV2) {
138+
$appMapV2 = $discoverySolution.properties.details.extendedDetails.applianceNameToSiteIdMapV2 | ConvertFrom-Json
139+
# Fetch all appliance from V2 map first. Then these can be updated if found again in V3 map.
140+
foreach ($item in $appMapV2) {
141+
$appMap[$item.ApplianceName] = $item.SiteId
142+
}
143+
}
144+
145+
if ($null -ne $discoverySolution.properties.details.extendedDetails.applianceNameToSiteIdMapV3) {
146+
$appMapV3 = $discoverySolution.properties.details.extendedDetails.applianceNameToSiteIdMapV3 | ConvertFrom-Json
147+
foreach ($item in $appMapV3) {
148+
$t = $item.psobject.properties
149+
$appMap[$t.Name] = $t.Value.SiteId
150+
}
151+
}
152+
153+
if ($null -eq $discoverySolution.properties.details.extendedDetails.applianceNameToSiteIdMapV2 -And
154+
$null -eq $discoverySolution.properties.details.extendedDetails.applianceNameToSiteIdMapV3 ) {
155+
throw "Server Discovery Solution missing Appliance Details. Invalid Solution."
156+
}
157+
158+
159+
160+
161+
$vmwareappliancemap = @{}
142162
#Discard non-VMware appliances
143-
144-
$map | foreach {if($_.SiteId -match "VMwareSites") {$vmwareappliancemap += $_}}
163+
164+
$appMap.GetEnumerator() | foreach {if($_.Value -match "VMwareSites") {$vmwareappliancemap[$_.Key] = $_.Value}}
145165
Write-Debug $vmwareappliancemap.count
146-
if($vmwareappliancemap) {$vmwareappliancemap | Write-Debug};
166+
if($vmwareappliancemap) {$vmwareappliancemap | Out-String | Write-Debug};
147167
if (-not $vmwareappliancemap.count) {throw "No VMware VMs discovered in project"};
148168

149169
Write-Host "Please wait while the list of discovered machines is downloaded..."
150170

151171
$DiscoveredMachines = @()
152-
foreach ($item in $vmwareappliancemap) {
153-
$SiteId = $item.SiteId;
172+
foreach ($item in $vmwareappliancemap.GetEnumerator()) {
173+
$SiteId = $item.Value;
154174
Write-Debug "Get machines for Site $SiteId"
155175
$requesturi = $Properties['baseurl'] + $SiteId + "/machines" + $SDS_APIVERSION + "&`$top=400"
156176

157177
#Write-Host $requesturi
158178

159-
$temp = $SiteId -match "\/([^\/]*)\w{4}site$" # Extract the appliance name
160-
$appliancename = $Matches[1]
179+
$appliancename = $item.Key
161180
Write-Host "Downloading machines for appliance " $appliancename ". This can take 1-2 minutes..."
162181
$response = $null
163182
try {
@@ -448,4 +467,3 @@ $jsonPayload = @"
448467
Remove-Item $temp_filename
449468
}
450469
Export-ModuleMember -Function Get-AzMigDependenciesAgentless
451-

0 commit comments

Comments
 (0)