Skip to content

Commit 2752ba0

Browse files
committed
Use WMI instead of PowerShell for OS operations
1 parent 82af2a2 commit 2752ba0

File tree

1,825 files changed

+513688
-4078
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,825 files changed

+513688
-4078
lines changed

Diff for: go.mod

+19-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
11
module github.com/kubernetes-csi/csi-proxy/v2
22

3-
go 1.16
3+
go 1.22.0
4+
5+
toolchain go1.22.3
46

57
require (
6-
github.com/davecgh/go-spew v1.1.1 // indirect
7-
github.com/stretchr/testify v1.5.1
8-
k8s.io/klog/v2 v2.9.0
8+
github.com/go-ole/go-ole v1.2.4
9+
github.com/microsoft/wmi v0.23.0
10+
github.com/stretchr/testify v1.10.0
11+
golang.org/x/sys v0.28.0
12+
k8s.io/klog/v2 v2.130.1
913
)
14+
15+
require (
16+
github.com/go-logr/logr v1.4.2 // indirect
17+
github.com/kr/pretty v0.2.0 // indirect
18+
github.com/pkg/errors v0.9.1 // indirect
19+
github.com/pmezard/go-difflib v1.0.0 // indirect
20+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
21+
gopkg.in/yaml.v3 v3.0.1 // indirect
22+
)
23+
24+
require github.com/davecgh/go-spew v1.1.1 // indirect

Diff for: go.sum

+23-11
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
1-
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
21
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
32
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4-
github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc=
5-
github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
3+
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
4+
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
5+
github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
6+
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
7+
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
8+
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
9+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
10+
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
11+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
12+
github.com/microsoft/wmi v0.23.0 h1:EbgjakKBOfb4QaTJNiGkfKrb2RWv7wpyicI2g3DHWkw=
13+
github.com/microsoft/wmi v0.23.0/go.mod h1:PNc5VFG7cpB7VOb3ILZNuWMWsqFfYLPyzpoiFkA6fAQ=
14+
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
15+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
616
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
717
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
8-
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
9-
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
10-
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
11-
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
18+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
19+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
20+
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
21+
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1222
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
13-
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
14-
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
15-
k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM=
16-
k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
23+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
24+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
25+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
26+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
27+
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
28+
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=

Diff for: integrationtests/iscsi_ps_scripts.go

+15-10
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
@@ -172,8 +172,13 @@ func runPowershellScript(script string) (string, error) {
172172
return string(out), nil
173173
}
174174

175-
func setupEnv(targetName string) (*iSCSISetupConfig, error) {
176-
script := fmt.Sprintf(iSCSIEnvironmentSetupScript, targetName)
175+
func setupEnv(targetName string) (*IscsiSetupConfig, error) {
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)

Diff for: pkg/cim/disk.go

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package cim
2+
3+
import (
4+
"fmt"
5+
"strconv"
6+
7+
"github.com/microsoft/wmi/pkg/base/query"
8+
"github.com/microsoft/wmi/server2019/root/microsoft/windows/storage"
9+
)
10+
11+
const (
12+
// PartitionStyleUnknown indicates an unknown partition table format
13+
PartitionStyleUnknown = 0
14+
// PartitionStyleGPT indicates the disk uses GUID Partition Table (GPT) format
15+
PartitionStyleGPT = 2
16+
17+
// GPTPartitionTypeBasicData is the GUID for basic data partitions in GPT
18+
// Used for general purpose storage partitions
19+
GPTPartitionTypeBasicData = "{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}"
20+
// GPTPartitionTypeMicrosoftReserved is the GUID for Microsoft Reserved Partition (MSR)
21+
// Reserved by Windows for system use
22+
GPTPartitionTypeMicrosoftReserved = "{e3c9e316-0b5c-4db8-817d-f92df00215ae}"
23+
)
24+
25+
// QueryDiskByNumber retrieves disk information for a specific disk identified by its number.
26+
func QueryDiskByNumber(diskNumber uint32, selectorList []string) (*storage.MSFT_Disk, error) {
27+
diskQuery := query.NewWmiQueryWithSelectList("MSFT_Disk", selectorList, "Number", strconv.Itoa(int(diskNumber)))
28+
instances, err := QueryInstances(WMINamespaceStorage, diskQuery)
29+
if err != nil {
30+
return nil, err
31+
}
32+
33+
disk, err := storage.NewMSFT_DiskEx1(instances[0])
34+
if err != nil {
35+
return nil, fmt.Errorf("failed to query disk %d. error: %v", diskNumber, err)
36+
}
37+
38+
return disk, nil
39+
}
40+
41+
// ListDisks retrieves information about all available disks.
42+
func ListDisks(selectorList []string) ([]*storage.MSFT_Disk, error) {
43+
diskQuery := query.NewWmiQueryWithSelectList("MSFT_Disk", selectorList)
44+
instances, err := QueryInstances(WMINamespaceStorage, diskQuery)
45+
if IgnoreNotFound(err) != nil {
46+
return nil, err
47+
}
48+
49+
var disks []*storage.MSFT_Disk
50+
for _, instance := range instances {
51+
disk, err := storage.NewMSFT_DiskEx1(instance)
52+
if err != nil {
53+
return nil, fmt.Errorf("failed to query disk %v. error: %v", instance, err)
54+
}
55+
56+
disks = append(disks, disk)
57+
}
58+
59+
return disks, nil
60+
}

0 commit comments

Comments
 (0)