From 1370f547b1b34d1e5671906f134ba4a3cdf81d69 Mon Sep 17 00:00:00 2001 From: Sanjay Rajmohan Date: Mon, 6 Oct 2025 08:40:40 -0700 Subject: [PATCH] VMFS kernel adapter validation --- Microsoft.AVS.NFS/Microsoft.AVS.NFS.psd1 | 2 +- Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psd1 | 2 +- Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psm1 | 42 ++++++++++++++++++++ Microsoft.AVS.VVOLS/Microsoft.AVS.VVOLS.psd1 | 2 +- 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/Microsoft.AVS.NFS/Microsoft.AVS.NFS.psd1 b/Microsoft.AVS.NFS/Microsoft.AVS.NFS.psd1 index 43bcb21..abf75a6 100644 --- a/Microsoft.AVS.NFS/Microsoft.AVS.NFS.psd1 +++ b/Microsoft.AVS.NFS/Microsoft.AVS.NFS.psd1 @@ -48,7 +48,7 @@ # Modules that must be imported into the global environment prior to importing this module RequiredModules = @( - @{ "ModuleName" = "Microsoft.AVS.Management"; "ModuleVersion" = "7.0.175" } + @{ "ModuleName" = "Microsoft.AVS.Management"; "ModuleVersion" = "7.0.198" } ) # Assemblies that must be loaded prior to importing this module diff --git a/Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psd1 b/Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psd1 index 57dccab..12a98d6 100644 --- a/Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psd1 +++ b/Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psd1 @@ -48,7 +48,7 @@ # Modules that must be imported into the global environment prior to importing this module RequiredModules = @( - @{ "ModuleName" = "Microsoft.AVS.Management"; "ModuleVersion" = "7.0.175" } + @{ "ModuleName" = "Microsoft.AVS.Management"; "ModuleVersion" = "7.0.198" } ) # Assemblies that must be loaded prior to importing this module diff --git a/Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psm1 b/Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psm1 index 492d29e..c64eff9 100644 --- a/Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psm1 +++ b/Microsoft.AVS.VMFS/Microsoft.AVS.VMFS.psm1 @@ -83,6 +83,27 @@ function Set-VmfsIscsi { } $VMHosts = $Cluster | Get-VMHost + foreach ($VMHost in $VMHosts) { + # vmk5 and vmk6 are not provisioned for Microsoft hosts + if ($VMHost.ExtensionData.Hardware.SystemInfo.Vendor -eq "Microsoft Corporation") { + continue; + } + + try { + $KernelAdapters = Get-VMHostNetworkAdapter -VMHost $VmHost.Name -VMKernel + } + catch { + throw "Failed to collect VMKernel info on host $($VmHost.Name), unable to verify whether vmk5 and vmk6 exist." + } + + + $vmk5 = $KernelAdapters | Where-Object { $_.Name -eq "vmk5" } + $vmk6 = $KernelAdapters | Where-Object { $_.Name -eq "vmk6" } + if ((-not $vmk5) -or (-not $vmk6)) { + throw "Kernel Adapters vmk5 and vmk6 do not exist on host $($VmHost.Name)." + } + } + foreach ($VMHost in $VMHosts) { $Iscsi = $VMHost | Get-VMHostStorage if ($Iscsi.SoftwareIScsiEnabled -ne $true) { @@ -212,6 +233,27 @@ function Set-VmfsStaticIscsi { } $VMHosts = $Cluster | Get-VMHost + foreach ($VMHost in $VMHosts) { + # vmk5 and vmk6 are not provisioned for Microsoft hosts + if ($VMHost.ExtensionData.Hardware.SystemInfo.Vendor -eq "Microsoft Corporation") { + continue; + } + + try { + $KernelAdapters = Get-VMHostNetworkAdapter -VMHost $VmHost.Name -VMKernel + } + catch { + throw "Failed to collect VMKernel info on host $($VmHost.Name), unable to verify whether vmk5 and vmk6 exist." + } + + + $vmk5 = $KernelAdapters | Where-Object { $_.Name -eq "vmk5" } + $vmk6 = $KernelAdapters | Where-Object { $_.Name -eq "vmk6" } + if ((-not $vmk5) -or (-not $vmk6)) { + throw "Kernel Adapters vmk5 and vmk6 do not exist on host $($VmHost.Name)." + } + } + foreach ($VMHost in $VMHosts) { $Iscsi = $VMHost | Get-VMHostStorage if ($Iscsi.SoftwareIScsiEnabled -ne $true) { diff --git a/Microsoft.AVS.VVOLS/Microsoft.AVS.VVOLS.psd1 b/Microsoft.AVS.VVOLS/Microsoft.AVS.VVOLS.psd1 index c5de609..5e204b1 100644 --- a/Microsoft.AVS.VVOLS/Microsoft.AVS.VVOLS.psd1 +++ b/Microsoft.AVS.VVOLS/Microsoft.AVS.VVOLS.psd1 @@ -48,7 +48,7 @@ # Modules that must be imported into the global environment prior to importing this module RequiredModules = @( - @{ "ModuleName" = "Microsoft.AVS.Management"; "ModuleVersion" = "7.0.175" } + @{ "ModuleName" = "Microsoft.AVS.Management"; "ModuleVersion" = "7.0.198" } ) # Assemblies that must be loaded prior to importing this module