mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-06 02:34:03 +00:00
enable flexvolume on Windows
This commit is contained in:
parent
f875ee596d
commit
5c7a1a2c5d
@ -19,6 +19,7 @@ package kubelet
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
@ -91,7 +92,11 @@ func (kvh *kubeletVolumeHost) GetVolumeDevicePluginDir(pluginName string) string
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (kvh *kubeletVolumeHost) GetPodVolumeDir(podUID types.UID, pluginName string, volumeName string) string {
|
func (kvh *kubeletVolumeHost) GetPodVolumeDir(podUID types.UID, pluginName string, volumeName string) string {
|
||||||
return kvh.kubelet.getPodVolumeDir(podUID, pluginName, volumeName)
|
dir := kvh.kubelet.getPodVolumeDir(podUID, pluginName, volumeName)
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
dir = volume.GetWindowsPath(dir)
|
||||||
|
}
|
||||||
|
return dir
|
||||||
}
|
}
|
||||||
|
|
||||||
func (kvh *kubeletVolumeHost) GetPodVolumeDeviceDir(podUID types.UID, pluginName string) string {
|
func (kvh *kubeletVolumeHost) GetPodVolumeDeviceDir(podUID types.UID, pluginName string) string {
|
||||||
|
@ -19,6 +19,7 @@ package flexvolume
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"path"
|
"path"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@ -100,7 +101,11 @@ func (plugin *flexVolumePlugin) Init(host volume.VolumeHost) error {
|
|||||||
func (plugin *flexVolumePlugin) getExecutable() string {
|
func (plugin *flexVolumePlugin) getExecutable() string {
|
||||||
parts := strings.Split(plugin.driverName, "/")
|
parts := strings.Split(plugin.driverName, "/")
|
||||||
execName := parts[len(parts)-1]
|
execName := parts[len(parts)-1]
|
||||||
return path.Join(plugin.execPath, execName)
|
execPath := path.Join(plugin.execPath, execName)
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
execPath = volume.GetWindowsPath(execPath)
|
||||||
|
}
|
||||||
|
return execPath
|
||||||
}
|
}
|
||||||
|
|
||||||
// Name is part of the volume.VolumePlugin interface.
|
// Name is part of the volume.VolumePlugin interface.
|
||||||
|
@ -495,3 +495,12 @@ func AccessModesContainedInAll(indexedModes []v1.PersistentVolumeAccessMode, req
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetWindowsPath get a windows path
|
||||||
|
func GetWindowsPath(path string) string {
|
||||||
|
windowsPath := strings.Replace(path, "/", "\\", -1)
|
||||||
|
if strings.HasPrefix(windowsPath, "\\") {
|
||||||
|
windowsPath = "c:" + windowsPath
|
||||||
|
}
|
||||||
|
return windowsPath
|
||||||
|
}
|
||||||
|
@ -869,3 +869,34 @@ func TestValidateZone(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetWindowsPath(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
path string
|
||||||
|
expectedPath string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
path: `/var/lib/kubelet/pods/146f8428-83e7-11e7-8dd4-000d3a31dac4/volumes/kubernetes.io~disk`,
|
||||||
|
expectedPath: `c:\var\lib\kubelet\pods\146f8428-83e7-11e7-8dd4-000d3a31dac4\volumes\kubernetes.io~disk`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: `\var/lib/kubelet/pods/146f8428-83e7-11e7-8dd4-000d3a31dac4\volumes\kubernetes.io~disk`,
|
||||||
|
expectedPath: `c:\var\lib\kubelet\pods\146f8428-83e7-11e7-8dd4-000d3a31dac4\volumes\kubernetes.io~disk`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: `/`,
|
||||||
|
expectedPath: `c:\`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: ``,
|
||||||
|
expectedPath: ``,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
result := GetWindowsPath(test.path)
|
||||||
|
if result != test.expectedPath {
|
||||||
|
t.Errorf("GetWindowsPath(%v) returned (%v), want (%v)", test.path, result, test.expectedPath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user