Skip to content

Commit de04a0b

Browse files
authored
Merge pull request #377 from laozc/wmi-process-iscsi-api
feat: Use WMI to implement iSCSI API to reduce PowerShell overhead
2 parents 24f2ecd + b9e33ae commit de04a0b

File tree

4 files changed

+507
-96
lines changed

4 files changed

+507
-96
lines changed

integrationtests/iscsi_ps_scripts.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ $ProgressPreference = "SilentlyContinue"
4242
$targetName = "%s"
4343
4444
# Get local IPv4 (e.g. 10.30.1.15, not 127.0.0.1)
45-
$address = $(Get-NetIPAddress | Where-Object { $_.InterfaceAlias -eq "Ethernet" -and $_.AddressFamily -eq "IPv4" }).IPAddress
45+
$address = $(Get-NetIPAddress | Where-Object { $_.InterfaceAlias -eq "%s" -and $_.AddressFamily -eq "IPv4" }).IPAddress
4646
4747
# Create virtual disk in RAM
48-
New-IscsiVirtualDisk -Path "ramdisk:scratch-${targetName}.vhdx" -Size 100MB | Out-Null
48+
New-IscsiVirtualDisk -Path "ramdisk:scratch-${targetName}.vhdx" -Size 100MB -ComputerName $env:computername | Out-Null
4949
5050
# Create a target that allows all initiator IQNs and map a disk to the new target
51-
$target = New-IscsiServerTarget -TargetName $targetName -InitiatorIds @("Iqn:*")
52-
Add-IscsiVirtualDiskTargetMapping -TargetName $targetName -DevicePath "ramdisk:scratch-${targetName}.vhdx" | Out-Null
51+
$target = New-IscsiServerTarget -TargetName $targetName -InitiatorIds @("Iqn:*") -ComputerName $env:computername
52+
Add-IscsiVirtualDiskTargetMapping -TargetName $targetName -DevicePath "ramdisk:scratch-${targetName}.vhdx" -ComputerName $env:computername | Out-Null
5353
5454
$output = @{
5555
"iqn" = "$($target.TargetIqn)"
@@ -68,7 +68,7 @@ $username = "%s"
6868
$password = "%s"
6969
$securestring = ConvertTo-SecureString -String $password -AsPlainText -Force
7070
$chap = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($username, $securestring)
71-
Set-IscsiServerTarget -TargetName $targetName -EnableChap $true -Chap $chap
71+
Set-IscsiServerTarget -TargetName $targetName -EnableChap $true -Chap $chap -ComputerName $env:computername
7272
`
7373

7474
func setChap(targetName string, username string, password string) error {
@@ -92,7 +92,7 @@ $securestring = ConvertTo-SecureString -String $password -AsPlainText -Force
9292
9393
# Windows initiator does not uses the username for mutual authentication
9494
$chap = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($username, $securestring)
95-
Set-IscsiServerTarget -TargetName $targetName -EnableReverseChap $true -ReverseChap $chap
95+
Set-IscsiServerTarget -TargetName $targetName -EnableReverseChap $true -ReverseChap $chap -ComputerName $env:computername
9696
`
9797

9898
func setReverseChap(targetName string, password string) error {
@@ -131,8 +131,8 @@ Get-IscsiTarget | Disconnect-IscsiTarget -Confirm:$false
131131
Get-IscsiTargetPortal | Remove-IscsiTargetPortal -confirm:$false
132132
133133
# Clean target
134-
Get-IscsiServerTarget | Remove-IscsiServerTarget
135-
Get-IscsiVirtualDisk | Remove-IscsiVirtualDisk
134+
Get-IscsiServerTarget -ComputerName $env:computername | Remove-IscsiServerTarget
135+
Get-IscsiVirtualDisk -ComputerName $env:computername | Remove-IscsiVirtualDisk
136136
137137
# Stop iSCSI initiator
138138
Get-Service "MsiSCSI" | Stop-Service
@@ -173,7 +173,12 @@ func runPowershellScript(script string) (string, error) {
173173
}
174174

175175
func setupEnv(targetName string) (*IscsiSetupConfig, error) {
176-
script := fmt.Sprintf(IscsiEnvironmentSetupScript, targetName)
176+
ethernetName := "Ethernet"
177+
if val, ok := os.LookupEnv("ETHERNET_NAME"); ok {
178+
ethernetName = val
179+
}
180+
181+
script := fmt.Sprintf(IscsiEnvironmentSetupScript, targetName, ethernetName)
177182
out, err := runPowershellScript(script)
178183
if err != nil {
179184
return nil, fmt.Errorf("failed setting up environment. err=%v", err)

pkg/cim/disk.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,12 @@ func ListDisks(selectorList []string) ([]*storage.MSFT_Disk, error) {
7676

7777
return disks, nil
7878
}
79+
80+
// GetDiskNumber returns the number of a disk.
81+
func GetDiskNumber(disk *storage.MSFT_Disk) (uint32, error) {
82+
number, err := disk.GetProperty("Number")
83+
if err != nil {
84+
return 0, err
85+
}
86+
return uint32(number.(int32)), err
87+
}

0 commit comments

Comments
 (0)