Skip to content

Commit

Permalink
Merge pull request #2579 from umagnus/replace_golang_api_win
Browse files Browse the repository at this point in the history
feat: replace Get-Item powershell cmd with golang api on Windows HostProcess mode
  • Loading branch information
andyzhangx authored Nov 8, 2024
2 parents c667f4f + 57b1ebc commit 043d0b2
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
8 changes: 4 additions & 4 deletions pkg/azuredisk/nodeserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1049,19 +1049,19 @@ func TestNodeExpandVolume(t *testing.T) {

devicePathErr := testutil.TestError{
DefaultError: status.Errorf(codes.NotFound, "could not determine device path(%s), error: %v", targetTest, notFoundErr),
WindowsError: status.Errorf(codes.NotFound, "error getting volume from mount. cmd: (Get-Item -Path $Env:mount).Target, output: , error: <nil>"),
WindowsError: status.Errorf(codes.NotFound, "error reading link for mount D:\\a\\azuredisk-csi-driver\\azuredisk-csi-driver\\pkg\\azuredisk\\target_test. target err: readlink D:\\a\\azuredisk-csi-driver\\azuredisk-csi-driver\\pkg\\azuredisk\\target_test: The file or directory is not a reparse point."),
}
blockSizeErr := testutil.TestError{
DefaultError: status.Error(codes.Internal, "could not get size of block volume at path test: error when getting size of block volume at path test: output: , err: exit status 1"),
WindowsError: status.Errorf(codes.NotFound, "error getting volume from mount. cmd: (Get-Item -Path $Env:mount).Target, output: , error: <nil>"),
WindowsError: status.Errorf(codes.NotFound, "error reading link for mount D:\\a\\azuredisk-csi-driver\\azuredisk-csi-driver\\pkg\\azuredisk\\target_test. target err: readlink D:\\a\\azuredisk-csi-driver\\azuredisk-csi-driver\\pkg\\azuredisk\\target_test: The file or directory is not a reparse point."),
}
resizeErr := testutil.TestError{
DefaultError: status.Errorf(codes.Internal, "could not resize volume \"test\" (\"test\"): resize of device test failed: %v. resize2fs output: ", notFoundErr),
WindowsError: status.Errorf(codes.NotFound, "error getting volume from mount. cmd: (Get-Item -Path $Env:mount).Target, output: , error: <nil>"),
WindowsError: status.Errorf(codes.NotFound, "error reading link for mount D:\\a\\azuredisk-csi-driver\\azuredisk-csi-driver\\pkg\\azuredisk\\target_test. target err: readlink D:\\a\\azuredisk-csi-driver\\azuredisk-csi-driver\\pkg\\azuredisk\\target_test: The file or directory is not a reparse point."),
}
sizeTooSmallErr := testutil.TestError{
DefaultError: status.Errorf(codes.Internal, "resize requested for %v, but after resizing volume size was %v", volumehelper.RoundUpGiB(stdCapacityRange.RequiredBytes), volumehelper.RoundUpGiB(stdCapacityRange.RequiredBytes/2)),
WindowsError: status.Errorf(codes.NotFound, "error getting volume from mount. cmd: (Get-Item -Path $Env:mount).Target, output: , error: <nil>"),
WindowsError: status.Errorf(codes.NotFound, "error reading link for mount D:\\a\\azuredisk-csi-driver\\azuredisk-csi-driver\\pkg\\azuredisk\\target_test. target err: readlink D:\\a\\azuredisk-csi-driver\\azuredisk-csi-driver\\pkg\\azuredisk\\target_test: The file or directory is not a reparse point."),
}

notFoundErrAction := func() ([]byte, []byte, error) {
Expand Down
12 changes: 6 additions & 6 deletions pkg/os/volume/volume.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package volume
import (
"encoding/json"
"fmt"
"os"
"regexp"
"strconv"
"strings"
Expand Down Expand Up @@ -209,13 +210,12 @@ func getTarget(mount string, depth int) (string, error) {
if depth == 0 {
return "", fmt.Errorf("maximum depth reached on mount %s", mount)
}
cmd := "(Get-Item -Path $Env:mount).Target"
out, err := azureutils.RunPowershellCmd(cmd, fmt.Sprintf("mount=%s", mount))
if err != nil || len(out) == 0 {
return "", fmt.Errorf("error getting volume from mount. cmd: %s, output: %s, error: %v", cmd, string(out), err)
target, err := os.Readlink(mount)
if err != nil {
return "", fmt.Errorf("error reading link for mount %s. target %s err: %v", mount, target, err)
}
volumeString := strings.TrimSpace(string(out))
if !strings.HasPrefix(volumeString, "Volume") {
volumeString := strings.TrimSpace(target)
if !strings.HasPrefix(volumeString, "Volume") && !strings.HasPrefix(volumeString, "\\\\?\\Volume") {
return getTarget(volumeString, depth-1)
}

Expand Down

0 comments on commit 043d0b2

Please sign in to comment.