Skip to content

Commit f5aded6

Browse files
authored
Merge pull request #306 from ritazh/fixes
Ensuring all paths in powershell are passes and env vars
2 parents 7764ab9 + 2523e66 commit f5aded6

File tree

8 files changed

+53
-55
lines changed

8 files changed

+53
-55
lines changed

.github/workflows/windows.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ jobs:
2020
go build -v -a -o ./bin/csi-proxy-api-gen.exe ./cmd/csi-proxy-api-gen
2121
- name: Run Windows Integration Tests
2222
run: |
23+
# required for running Volume and Disk tests
24+
Install-WindowsFeature -name Hyper-V-PowerShell
25+
2326
# start the CSI Proxy before running tests on windows
2427
Start-Job -Name CSIProxy -ScriptBlock {
2528
.\bin\csi-proxy.exe
@@ -28,7 +31,7 @@ jobs:
2831
Write-Output "getting named pipes"
2932
[System.IO.Directory]::GetFiles("\\.\\pipe\\")
3033
$env:CSI_PROXY_GH_ACTIONS="TRUE"
31-
go test -v -race ./integrationtests/...
34+
go test -timeout 20m -v -race ./integrationtests/...
3235
unit_tests:
3336
strategy:
3437
matrix:

integrationtests/disk_v1_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,6 @@ func v1DiskTests(t *testing.T) {
7777
})
7878

7979
t.Run("Get/SetDiskState", func(t *testing.T) {
80-
skipTestOnCondition(t, isRunningOnGhActions())
81-
8280
client, err := diskv1client.NewClient()
8381
require.NoError(t, err)
8482

@@ -144,8 +142,6 @@ func v1DiskTests(t *testing.T) {
144142
})
145143

146144
t.Run("PartitionDisk", func(t *testing.T) {
147-
skipTestOnCondition(t, isRunningOnGhActions())
148-
149145
var err error
150146
client, err := diskv1client.NewClient()
151147
require.NoError(t, err)

integrationtests/disk_v1alpha1_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ func v1alpha1DiskTests(t *testing.T) {
3434
})
3535

3636
t.Run("Rescan", func(t *testing.T) {
37-
skipTestOnCondition(t, isRunningOnGhActions())
38-
3937
client, err := diskv1alpha1client.NewClient()
4038
require.NoError(t, err)
4139

@@ -47,8 +45,6 @@ func v1alpha1DiskTests(t *testing.T) {
4745
})
4846

4947
t.Run("PartitionDisk", func(t *testing.T) {
50-
skipTestOnCondition(t, isRunningOnGhActions())
51-
5248
var err error
5349
client, err := diskv1alpha1client.NewClient()
5450
require.NoError(t, err)

integrationtests/disk_v1beta1_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ func v1beta1DiskTests(t *testing.T) {
5757
})
5858

5959
t.Run("Get/SetDiskState", func(t *testing.T) {
60-
skipTestOnCondition(t, isRunningOnGhActions())
61-
6260
client, err := diskv1beta1client.NewClient()
6361
require.NoError(t, err)
6462

@@ -86,8 +84,6 @@ func v1beta1DiskTests(t *testing.T) {
8684
})
8785

8886
t.Run("PartitionDisk", func(t *testing.T) {
89-
skipTestOnCondition(t, isRunningOnGhActions())
90-
9187
var err error
9288
client, err := diskv1beta1client.NewClient()
9389
require.NoError(t, err)

integrationtests/disk_v1beta2_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@ func v1beta2DiskTests(t *testing.T) {
5858
})
5959

6060
t.Run("Get/SetDiskState", func(t *testing.T) {
61-
skipTestOnCondition(t, isRunningOnGhActions())
62-
6361
client, err := diskv1beta2client.NewClient()
6462
require.NoError(t, err)
6563

@@ -127,8 +125,6 @@ func v1beta2DiskTests(t *testing.T) {
127125
})
128126

129127
t.Run("PartitionDisk", func(t *testing.T) {
130-
skipTestOnCondition(t, isRunningOnGhActions())
131-
132128
var err error
133129
client, err := diskv1beta2client.NewClient()
134130
require.NoError(t, err)

integrationtests/disk_v1beta3_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,6 @@ func v1beta3DiskTests(t *testing.T) {
7777
})
7878

7979
t.Run("Get/SetDiskState", func(t *testing.T) {
80-
skipTestOnCondition(t, isRunningOnGhActions())
81-
8280
client, err := diskv1beta3client.NewClient()
8381
require.NoError(t, err)
8482

@@ -144,8 +142,6 @@ func v1beta3DiskTests(t *testing.T) {
144142
})
145143

146144
t.Run("PartitionDisk", func(t *testing.T) {
147-
skipTestOnCondition(t, isRunningOnGhActions())
148-
149145
var err error
150146
client, err := diskv1beta3client.NewClient()
151147
require.NoError(t, err)

integrationtests/volume_test.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -148,32 +148,26 @@ func TestVolumeAPIs(t *testing.T) {
148148
negativeVolumeTests(t)
149149
})
150150

151-
// TODO: These tests will fail on Github Actions because Hyper-V is disabled
152-
// see https://github.com/actions/virtual-environments/pull/2525
151+
// Github Actions WS 2022 supports hyper-v
152+
// must install management tools manually
153153

154154
// these tests should be considered frozen from the API point of view
155155
t.Run("v1alpha1Tests", func(t *testing.T) {
156-
skipTestOnCondition(t, isRunningOnGhActions())
157156
v1alpha1VolumeTests(t)
158157
})
159158
t.Run("v1beta1Tests", func(t *testing.T) {
160-
skipTestOnCondition(t, isRunningOnGhActions())
161159
v1beta1VolumeTests(t)
162160
})
163161
t.Run("v1beta2Tests", func(t *testing.T) {
164-
skipTestOnCondition(t, isRunningOnGhActions())
165162
v1beta2VolumeTests(t)
166163
})
167164
t.Run("v1beta3Tests", func(t *testing.T) {
168-
skipTestOnCondition(t, isRunningOnGhActions())
169165
v1beta3VolumeTests(t)
170166
})
171167
t.Run("v1Tests", func(t *testing.T) {
172-
skipTestOnCondition(t, isRunningOnGhActions())
173168
v1VolumeTests(t)
174169
})
175170
t.Run("v2alpha1Tests", func(t *testing.T) {
176-
skipTestOnCondition(t, isRunningOnGhActions())
177171
v2alpha1VolumeTests(t)
178172
})
179173
}

pkg/os/volume/api.go

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@ func New() VolumeAPI {
6262
}
6363

6464
func getVolumeSize(volumeID string) (int64, error) {
65-
cmd := fmt.Sprintf("(Get-Volume -UniqueId \"%s\" | Get-partition).Size", volumeID)
66-
out, err := utils.RunPowershellCmd(cmd)
65+
cmd := `(Get-Volume -UniqueId "$Env:volumeID" | Get-partition).Size`
66+
cmdEnv := fmt.Sprintf("volumeID=%s", volumeID)
67+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
6768

6869
if err != nil || len(out) == 0 {
6970
return -1, fmt.Errorf("error getting size of the partition from mount. cmd %s, output: %s, error: %v", cmd, string(out), err)
@@ -98,8 +99,9 @@ func (VolumeAPI) ListVolumesOnDisk(diskNumber uint32, partitionNumber uint32) (v
9899

99100
// FormatVolume - Formats a volume with the NTFS format.
100101
func (VolumeAPI) FormatVolume(volumeID string) (err error) {
101-
cmd := fmt.Sprintf("Get-Volume -UniqueId \"%s\" | Format-Volume -FileSystem ntfs -Confirm:$false", volumeID)
102-
out, err := utils.RunPowershellCmd(cmd)
102+
cmd := `Get-Volume -UniqueId "$Env:volumeID" | Format-Volume -FileSystem ntfs -Confirm:$false`
103+
cmdEnv := fmt.Sprintf("volumeID=%s", volumeID)
104+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
103105
if err != nil {
104106
return fmt.Errorf("error formatting volume. cmd: %s, output: %s, error: %v", cmd, string(out), err)
105107
}
@@ -114,8 +116,9 @@ func (VolumeAPI) WriteVolumeCache(volumeID string) (err error) {
114116

115117
// IsVolumeFormatted - Check if the volume is formatted with the pre specified filesystem(typically ntfs).
116118
func (VolumeAPI) IsVolumeFormatted(volumeID string) (bool, error) {
117-
cmd := fmt.Sprintf("(Get-Volume -UniqueId \"%s\" -ErrorAction Stop).FileSystemType", volumeID)
118-
out, err := utils.RunPowershellCmd(cmd)
119+
cmd := `(Get-Volume -UniqueId "$Env:volumeID" -ErrorAction Stop).FileSystemType`
120+
cmdEnv := fmt.Sprintf("volumeID=%s", volumeID)
121+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
119122
if err != nil {
120123
return false, fmt.Errorf("error checking if volume is formatted. cmd: %s, output: %s, error: %v", cmd, string(out), err)
121124
}
@@ -128,8 +131,12 @@ func (VolumeAPI) IsVolumeFormatted(volumeID string) (bool, error) {
128131

129132
// MountVolume - mounts a volume to a path. This is done using the Add-PartitionAccessPath for presenting the volume via a path.
130133
func (VolumeAPI) MountVolume(volumeID, path string) error {
131-
cmd := fmt.Sprintf("Get-Volume -UniqueId \"%s\" | Get-Partition | Add-PartitionAccessPath -AccessPath %s", volumeID, path)
132-
out, err := utils.RunPowershellCmd(cmd)
134+
cmd := `Get-Volume -UniqueId "$Env:volumeID" | Get-Partition | Add-PartitionAccessPath -AccessPath $Env:mountpath`
135+
cmdEnv := []string{}
136+
cmdEnv = append(cmdEnv, fmt.Sprintf("volumeID=%s", volumeID))
137+
cmdEnv = append(cmdEnv, fmt.Sprintf("mountpath=%s", path))
138+
out, err := utils.RunPowershellCmd(cmd, cmdEnv...)
139+
133140
if err != nil {
134141
return fmt.Errorf("error mount volume to path. cmd: %s, output: %s, error: %v", cmd, string(out), err)
135142
}
@@ -141,8 +148,13 @@ func (VolumeAPI) UnmountVolume(volumeID, path string) error {
141148
if err := writeCache(volumeID); err != nil {
142149
return err
143150
}
144-
cmd := fmt.Sprintf("Get-Volume -UniqueId \"%s\" | Get-Partition | Remove-PartitionAccessPath -AccessPath %s", volumeID, path)
145-
out, err := utils.RunPowershellCmd(cmd)
151+
152+
cmd := `Get-Volume -UniqueId "$Env:volumeID" | Get-Partition | Remove-PartitionAccessPath -AccessPath $Env:mountpath`
153+
cmdEnv := []string{}
154+
cmdEnv = append(cmdEnv, fmt.Sprintf("volumeID=%s", volumeID))
155+
cmdEnv = append(cmdEnv, fmt.Sprintf("mountpath=%s", path))
156+
out, err := utils.RunPowershellCmd(cmd, cmdEnv...)
157+
146158
if err != nil {
147159
return fmt.Errorf("error getting driver letter to mount volume. cmd: %s, output: %s,error: %v", cmd, string(out), err)
148160
}
@@ -158,8 +170,9 @@ func (VolumeAPI) ResizeVolume(volumeID string, size int64) error {
158170
var finalSize int64
159171
var outString string
160172
if size == 0 {
161-
cmd = fmt.Sprintf("Get-Volume -UniqueId \"%s\" | Get-partition | Get-PartitionSupportedSize | Select SizeMax | ConvertTo-Json", volumeID)
162-
out, err := utils.RunPowershellCmd(cmd)
173+
cmd = `Get-Volume -UniqueId "$Env:volumeID" | Get-partition | Get-PartitionSupportedSize | Select SizeMax | ConvertTo-Json`
174+
cmdEnv := fmt.Sprintf("volumeID=%s", volumeID)
175+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
163176

164177
if err != nil || len(out) == 0 {
165178
return fmt.Errorf("error getting sizemin,sizemax from mount. cmd: %s, output: %s, error: %v", cmd, string(out), err)
@@ -190,8 +203,10 @@ func (VolumeAPI) ResizeVolume(volumeID string, size int64) error {
190203
return nil
191204
}
192205

193-
cmd = fmt.Sprintf("Get-Volume -UniqueId \"%s\" | Get-Partition | Resize-Partition -Size %d", volumeID, finalSize)
194-
out, err = utils.RunPowershellCmd(cmd)
206+
cmd = fmt.Sprintf(`Get-Volume -UniqueId "$Env:volumeID" | Get-Partition | Resize-Partition -Size %d`, finalSize)
207+
cmdEnv := []string{}
208+
cmdEnv = append(cmdEnv, fmt.Sprintf("volumeID=%s", volumeID))
209+
out, err = utils.RunPowershellCmd(cmd, cmdEnv...)
195210
if err != nil {
196211
return fmt.Errorf("error resizing volume. cmd: %s, output: %s size:%v, finalSize %v, error: %v", cmd, string(out), size, finalSize, err)
197212
}
@@ -201,8 +216,9 @@ func (VolumeAPI) ResizeVolume(volumeID string, size int64) error {
201216
// GetVolumeStats - retrieves the volume stats for a given volume
202217
func (VolumeAPI) GetVolumeStats(volumeID string) (int64, int64, error) {
203218
// get the size and sizeRemaining for the volume
204-
cmd := fmt.Sprintf("(Get-Volume -UniqueId \"%s\" | Select SizeRemaining,Size) | ConvertTo-Json", volumeID)
205-
out, err := utils.RunPowershellCmd(cmd)
219+
cmd := `(Get-Volume -UniqueId "$Env:volumeID" | Select SizeRemaining,Size) | ConvertTo-Json`
220+
cmdEnv := fmt.Sprintf("volumeID=%s", volumeID)
221+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
206222

207223
if err != nil {
208224
return -1, -1, fmt.Errorf("error getting capacity and used size of volume. cmd: %s, output: %s, error: %v", cmd, string(out), err)
@@ -227,8 +243,9 @@ func (VolumeAPI) GetVolumeStats(volumeID string) (int64, int64, error) {
227243
// GetDiskNumberFromVolumeID - gets the disk number where the volume is.
228244
func (VolumeAPI) GetDiskNumberFromVolumeID(volumeID string) (uint32, error) {
229245
// get the size and sizeRemaining for the volume
230-
cmd := fmt.Sprintf("(Get-Volume -UniqueId \"%s\" | Get-Partition).DiskNumber", volumeID)
231-
out, err := utils.RunPowershellCmd(cmd)
246+
cmd := `(Get-Volume -UniqueId "$Env:volumeID" | Get-Partition).DiskNumber`
247+
cmdEnv := fmt.Sprintf("volumeID=%s", volumeID)
248+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
232249

233250
if err != nil || len(out) == 0 {
234251
return 0, fmt.Errorf("error getting disk number. cmd: %s, output: %s, error: %v", cmd, string(out), err)
@@ -261,8 +278,9 @@ func (VolumeAPI) GetVolumeIDFromTargetPath(mount string) (string, error) {
261278
}
262279

263280
func getTarget(mount string) (string, error) {
264-
cmd := fmt.Sprintf("(Get-Item -Path %s).Target", mount)
265-
out, err := utils.RunPowershellCmd(cmd)
281+
cmd := `(Get-Item -Path $Env:mountpath).Target`
282+
cmdEnv := fmt.Sprintf("mountpath=%s", mount)
283+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
266284
if err != nil || len(out) == 0 {
267285
return "", fmt.Errorf("error getting volume from mount. cmd: %s, output: %s, error: %v", cmd, string(out), err)
268286
}
@@ -352,8 +370,9 @@ func ensureVolumePrefix(volume string) string {
352370

353371
// dereferenceSymlink dereferences the symlink `path` and returns the stdout.
354372
func dereferenceSymlink(path string) (string, error) {
355-
cmd := fmt.Sprintf(`(Get-Item -Path %s).Target`, path)
356-
out, err := utils.RunPowershellCmd(cmd)
373+
cmd := `(Get-Item -Path $Env:linkpath).Target`
374+
cmdEnv := fmt.Sprintf("linkpath=%s", path)
375+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
357376
if err != nil {
358377
return "", err
359378
}
@@ -368,8 +387,9 @@ func getVolumeForDriveLetter(path string) (string, error) {
368387
return "", fmt.Errorf("The path=%s is not a valid DriverLetter", path)
369388
}
370389

371-
cmd := fmt.Sprintf(`(Get-Partition -DriveLetter %s | Get-Volume).UniqueId`, path)
372-
out, err := utils.RunPowershellCmd(cmd)
390+
cmd := `(Get-Partition -DriveLetter $Env:drivepath | Get-Volume).UniqueId`
391+
cmdEnv := fmt.Sprintf("drivepath=%s", path)
392+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
373393
if err != nil {
374394
return "", err
375395
}
@@ -379,8 +399,9 @@ func getVolumeForDriveLetter(path string) (string, error) {
379399
}
380400

381401
func writeCache(volumeID string) error {
382-
cmd := fmt.Sprintf("Get-Volume -UniqueId \"%s\" | Write-Volumecache", volumeID)
383-
out, err := utils.RunPowershellCmd(cmd)
402+
cmd := `Get-Volume -UniqueId "$Env:volumeID" | Write-Volumecache`
403+
cmdEnv := fmt.Sprintf("volumeID=%s", volumeID)
404+
out, err := utils.RunPowershellCmd(cmd, cmdEnv)
384405
if err != nil {
385406
return fmt.Errorf("error writing volume cache. cmd: %s, output: %s, error: %v", cmd, string(out), err)
386407
}

0 commit comments

Comments
 (0)