mirror of https://github.com/k3s-io/k3s
replace pkg/util/file with k8s.io/utils/path
parent
d340dc53d6
commit
84191eb99b
|
@ -41,6 +41,7 @@
|
||||||
"AllowedPrefixes": [
|
"AllowedPrefixes": [
|
||||||
"k8s.io/utils/exec",
|
"k8s.io/utils/exec",
|
||||||
"k8s.io/utils/integer",
|
"k8s.io/utils/integer",
|
||||||
|
"k8s.io/utils/path",
|
||||||
"k8s.io/utils/pointer"
|
"k8s.io/utils/pointer"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -77,7 +78,6 @@
|
||||||
"k8s.io/kubernetes/pkg/scheduler/util",
|
"k8s.io/kubernetes/pkg/scheduler/util",
|
||||||
"k8s.io/kubernetes/pkg/security/apparmor",
|
"k8s.io/kubernetes/pkg/security/apparmor",
|
||||||
"k8s.io/kubernetes/pkg/serviceaccount",
|
"k8s.io/kubernetes/pkg/serviceaccount",
|
||||||
"k8s.io/kubernetes/pkg/util/file",
|
|
||||||
"k8s.io/kubernetes/pkg/util/hash",
|
"k8s.io/kubernetes/pkg/util/hash",
|
||||||
"k8s.io/kubernetes/pkg/util/initsystem",
|
"k8s.io/kubernetes/pkg/util/initsystem",
|
||||||
"k8s.io/kubernetes/pkg/util/ipvs",
|
"k8s.io/kubernetes/pkg/util/ipvs",
|
||||||
|
|
|
@ -355,7 +355,6 @@ pkg/util/bandwidth
|
||||||
pkg/util/config
|
pkg/util/config
|
||||||
pkg/util/ebtables
|
pkg/util/ebtables
|
||||||
pkg/util/env
|
pkg/util/env
|
||||||
pkg/util/file
|
|
||||||
pkg/util/goroutinemap/exponentialbackoff
|
pkg/util/goroutinemap/exponentialbackoff
|
||||||
pkg/util/initsystem
|
pkg/util/initsystem
|
||||||
pkg/util/iptables
|
pkg/util/iptables
|
||||||
|
|
|
@ -307,7 +307,6 @@
|
||||||
"k8s.io/kubernetes/pkg/scheduler/api",
|
"k8s.io/kubernetes/pkg/scheduler/api",
|
||||||
"k8s.io/kubernetes/pkg/scheduler/util",
|
"k8s.io/kubernetes/pkg/scheduler/util",
|
||||||
"k8s.io/kubernetes/pkg/security/apparmor",
|
"k8s.io/kubernetes/pkg/security/apparmor",
|
||||||
"k8s.io/kubernetes/pkg/util/file",
|
|
||||||
"k8s.io/kubernetes/pkg/util/net/sets",
|
"k8s.io/kubernetes/pkg/util/net/sets",
|
||||||
"k8s.io/kubernetes/pkg/util/parsers",
|
"k8s.io/kubernetes/pkg/util/parsers",
|
||||||
"k8s.io/kubernetes/pkg/fieldpath",
|
"k8s.io/kubernetes/pkg/fieldpath",
|
||||||
|
@ -340,6 +339,7 @@
|
||||||
"k8s.io/utils/nsenter",
|
"k8s.io/utils/nsenter",
|
||||||
"k8s.io/utils/integer",
|
"k8s.io/utils/integer",
|
||||||
"k8s.io/utils/io",
|
"k8s.io/utils/io",
|
||||||
|
"k8s.io/utils/path",
|
||||||
"k8s.io/utils/pointer",
|
"k8s.io/utils/pointer",
|
||||||
"k8s.io/utils/exec"
|
"k8s.io/utils/exec"
|
||||||
]
|
]
|
||||||
|
|
|
@ -126,7 +126,6 @@
|
||||||
"k8s.io/kubernetes/pkg/scheduler/volumebinder",
|
"k8s.io/kubernetes/pkg/scheduler/volumebinder",
|
||||||
"k8s.io/kubernetes/pkg/security/apparmor",
|
"k8s.io/kubernetes/pkg/security/apparmor",
|
||||||
"k8s.io/kubernetes/pkg/serviceaccount",
|
"k8s.io/kubernetes/pkg/serviceaccount",
|
||||||
"k8s.io/kubernetes/pkg/util/file",
|
|
||||||
"k8s.io/kubernetes/pkg/util/goroutinemap",
|
"k8s.io/kubernetes/pkg/util/goroutinemap",
|
||||||
"k8s.io/kubernetes/pkg/util/hash",
|
"k8s.io/kubernetes/pkg/util/hash",
|
||||||
"k8s.io/kubernetes/pkg/util/interrupt",
|
"k8s.io/kubernetes/pkg/util/interrupt",
|
||||||
|
@ -144,6 +143,7 @@
|
||||||
"k8s.io/kubernetes/pkg/volume/util",
|
"k8s.io/kubernetes/pkg/volume/util",
|
||||||
"k8s.io/utils/nsenter",
|
"k8s.io/utils/nsenter",
|
||||||
"k8s.io/utils/io",
|
"k8s.io/utils/io",
|
||||||
|
"k8s.io/utils/path",
|
||||||
"k8s.io/utils/pointer"
|
"k8s.io/utils/pointer"
|
||||||
],
|
],
|
||||||
"ForbiddenPrefixes": []
|
"ForbiddenPrefixes": []
|
||||||
|
|
|
@ -103,7 +103,6 @@ go_library(
|
||||||
"//pkg/security/podsecuritypolicy/sysctl:go_default_library",
|
"//pkg/security/podsecuritypolicy/sysctl:go_default_library",
|
||||||
"//pkg/securitycontext:go_default_library",
|
"//pkg/securitycontext:go_default_library",
|
||||||
"//pkg/util/dbus:go_default_library",
|
"//pkg/util/dbus:go_default_library",
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//pkg/util/iptables:go_default_library",
|
"//pkg/util/iptables:go_default_library",
|
||||||
"//pkg/util/mount:go_default_library",
|
"//pkg/util/mount:go_default_library",
|
||||||
"//pkg/util/node:go_default_library",
|
"//pkg/util/node:go_default_library",
|
||||||
|
@ -150,6 +149,7 @@ go_library(
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
"//vendor/k8s.io/utils/exec:go_default_library",
|
"//vendor/k8s.io/utils/exec:go_default_library",
|
||||||
"//vendor/k8s.io/utils/integer:go_default_library",
|
"//vendor/k8s.io/utils/integer:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,6 @@ go_library(
|
||||||
"//pkg/kubelet/metrics:go_default_library",
|
"//pkg/kubelet/metrics:go_default_library",
|
||||||
"//pkg/kubelet/qos:go_default_library",
|
"//pkg/kubelet/qos:go_default_library",
|
||||||
"//pkg/kubelet/types:go_default_library",
|
"//pkg/kubelet/types:go_default_library",
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//pkg/util/mount:go_default_library",
|
"//pkg/util/mount:go_default_library",
|
||||||
"//pkg/util/oom:go_default_library",
|
"//pkg/util/oom:go_default_library",
|
||||||
"//pkg/util/procfs:go_default_library",
|
"//pkg/util/procfs:go_default_library",
|
||||||
|
@ -88,6 +87,7 @@ go_library(
|
||||||
"//vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs:go_default_library",
|
"//vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs:go_default_library",
|
||||||
"//vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd:go_default_library",
|
"//vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd:go_default_library",
|
||||||
"//vendor/github.com/opencontainers/runc/libcontainer/configs:go_default_library",
|
"//vendor/github.com/opencontainers/runc/libcontainer/configs:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
"@io_bazel_rules_go//go/platform:nacl": [
|
"@io_bazel_rules_go//go/platform:nacl": [
|
||||||
"//pkg/kubelet/cadvisor:go_default_library",
|
"//pkg/kubelet/cadvisor:go_default_library",
|
||||||
|
|
|
@ -56,11 +56,11 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/kubelet/status"
|
"k8s.io/kubernetes/pkg/kubelet/status"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher"
|
"k8s.io/kubernetes/pkg/kubelet/util/pluginwatcher"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
|
||||||
"k8s.io/kubernetes/pkg/util/mount"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/util/oom"
|
"k8s.io/kubernetes/pkg/util/oom"
|
||||||
"k8s.io/kubernetes/pkg/util/procfs"
|
"k8s.io/kubernetes/pkg/util/procfs"
|
||||||
utilsysctl "k8s.io/kubernetes/pkg/util/sysctl"
|
utilsysctl "k8s.io/kubernetes/pkg/util/sysctl"
|
||||||
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -179,11 +179,11 @@ func validateSystemRequirements(mountUtil mount.Interface) (features, error) {
|
||||||
|
|
||||||
// Check if cpu quota is available.
|
// Check if cpu quota is available.
|
||||||
// CPU cgroup is required and so it expected to be mounted at this point.
|
// CPU cgroup is required and so it expected to be mounted at this point.
|
||||||
periodExists, err := utilfile.FileExists(path.Join(cpuMountPoint, "cpu.cfs_period_us"))
|
periodExists, err := utilpath.Exists(utilpath.CheckFollowSymlink, path.Join(cpuMountPoint, "cpu.cfs_period_us"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("failed to detect if CPU cgroup cpu.cfs_period_us is available - %v", err)
|
klog.Errorf("failed to detect if CPU cgroup cpu.cfs_period_us is available - %v", err)
|
||||||
}
|
}
|
||||||
quotaExists, err := utilfile.FileExists(path.Join(cpuMountPoint, "cpu.cfs_quota_us"))
|
quotaExists, err := utilpath.Exists(utilpath.CheckFollowSymlink, path.Join(cpuMountPoint, "cpu.cfs_quota_us"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("failed to detect if CPU cgroup cpu.cfs_quota_us is available - %v", err)
|
klog.Errorf("failed to detect if CPU cgroup cpu.cfs_quota_us is available - %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,9 +30,9 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/config"
|
"k8s.io/kubernetes/pkg/kubelet/config"
|
||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
|
||||||
"k8s.io/kubernetes/pkg/util/mount"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
utilnode "k8s.io/kubernetes/pkg/util/node"
|
utilnode "k8s.io/kubernetes/pkg/util/node"
|
||||||
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
// getRootDir returns the full path to the directory under which kubelet can
|
// getRootDir returns the full path to the directory under which kubelet can
|
||||||
|
@ -293,7 +293,7 @@ func (kl *Kubelet) getPodVolumePathListFromDisk(podUID types.UID) ([]string, err
|
||||||
for _, volumePluginDir := range volumePluginDirs {
|
for _, volumePluginDir := range volumePluginDirs {
|
||||||
volumePluginName := volumePluginDir.Name()
|
volumePluginName := volumePluginDir.Name()
|
||||||
volumePluginPath := filepath.Join(podVolDir, volumePluginName)
|
volumePluginPath := filepath.Join(podVolDir, volumePluginName)
|
||||||
volumeDirs, err := utilfile.ReadDirNoStat(volumePluginPath)
|
volumeDirs, err := utilpath.ReadDirNoStat(volumePluginPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return volumes, fmt.Errorf("Could not read directory %s: %v", volumePluginPath, err)
|
return volumes, fmt.Errorf("Could not read directory %s: %v", volumePluginPath, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ go_library(
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/kubelet/config:go_default_library",
|
"//pkg/kubelet/config:go_default_library",
|
||||||
"//pkg/kubelet/volumemanager/cache:go_default_library",
|
"//pkg/kubelet/volumemanager/cache:go_default_library",
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//pkg/util/goroutinemap/exponentialbackoff:go_default_library",
|
"//pkg/util/goroutinemap/exponentialbackoff:go_default_library",
|
||||||
"//pkg/util/mount:go_default_library",
|
"//pkg/util/mount:go_default_library",
|
||||||
"//pkg/util/strings:go_default_library",
|
"//pkg/util/strings:go_default_library",
|
||||||
|
@ -30,6 +29,7 @@ go_library(
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/config"
|
"k8s.io/kubernetes/pkg/kubelet/config"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/volumemanager/cache"
|
"k8s.io/kubernetes/pkg/kubelet/volumemanager/cache"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
|
||||||
"k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff"
|
"k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff"
|
||||||
"k8s.io/kubernetes/pkg/util/mount"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
utilstrings "k8s.io/kubernetes/pkg/util/strings"
|
utilstrings "k8s.io/kubernetes/pkg/util/strings"
|
||||||
|
@ -45,6 +44,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations"
|
"k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations"
|
||||||
"k8s.io/kubernetes/pkg/volume/util/operationexecutor"
|
"k8s.io/kubernetes/pkg/volume/util/operationexecutor"
|
||||||
volumetypes "k8s.io/kubernetes/pkg/volume/util/types"
|
volumetypes "k8s.io/kubernetes/pkg/volume/util/types"
|
||||||
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Reconciler runs a periodic loop to reconcile the desired state of the world
|
// Reconciler runs a periodic loop to reconcile the desired state of the world
|
||||||
|
@ -673,7 +673,7 @@ func getVolumesFromPodDir(podDir string) ([]podVolume, error) {
|
||||||
for _, volumeDir := range volumesDirInfo {
|
for _, volumeDir := range volumesDirInfo {
|
||||||
pluginName := volumeDir.Name()
|
pluginName := volumeDir.Name()
|
||||||
volumePluginPath := path.Join(volumesDir, pluginName)
|
volumePluginPath := path.Join(volumesDir, pluginName)
|
||||||
volumePluginDirs, err := utilfile.ReadDirNoStat(volumePluginPath)
|
volumePluginDirs, err := utilpath.ReadDirNoStat(volumePluginPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Could not read volume plugin directory %q: %v", volumePluginPath, err)
|
klog.Errorf("Could not read volume plugin directory %q: %v", volumePluginPath, err)
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -22,10 +22,10 @@ go_library(
|
||||||
importpath = "k8s.io/kubernetes/pkg/master/tunneler",
|
importpath = "k8s.io/kubernetes/pkg/master/tunneler",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/ssh:go_default_library",
|
"//pkg/ssh:go_default_library",
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubernetes/pkg/ssh"
|
"k8s.io/kubernetes/pkg/ssh"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
type InstallSSHKey func(ctx context.Context, user string, data []byte) error
|
type InstallSSHKey func(ctx context.Context, user string, data []byte) error
|
||||||
|
@ -119,7 +119,7 @@ func (c *SSHTunneler) Run(getAddresses AddressFunc) {
|
||||||
|
|
||||||
// public keyfile is written last, so check for that.
|
// public keyfile is written last, so check for that.
|
||||||
publicKeyFile := c.SSHKeyfile + ".pub"
|
publicKeyFile := c.SSHKeyfile + ".pub"
|
||||||
exists, err := utilfile.FileExists(publicKeyFile)
|
exists, err := utilpath.Exists(utilpath.CheckFollowSymlink, publicKeyFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Error detecting if key exists: %v", err)
|
klog.Errorf("Error detecting if key exists: %v", err)
|
||||||
} else if !exists {
|
} else if !exists {
|
||||||
|
@ -208,7 +208,7 @@ func generateSSHKey(privateKeyfile, publicKeyfile string) error {
|
||||||
}
|
}
|
||||||
// If private keyfile already exists, we must have only made it halfway
|
// If private keyfile already exists, we must have only made it halfway
|
||||||
// through last time, so delete it.
|
// through last time, so delete it.
|
||||||
exists, err := utilfile.FileExists(privateKeyfile)
|
exists, err := utilpath.Exists(utilpath.CheckFollowSymlink, privateKeyfile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Error detecting if private key exists: %v", err)
|
klog.Errorf("Error detecting if private key exists: %v", err)
|
||||||
} else if exists {
|
} else if exists {
|
||||||
|
|
|
@ -17,9 +17,9 @@ go_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/kubelet/types:go_default_library",
|
"//pkg/kubelet/types:go_default_library",
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ import (
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Whether AppArmor should be disabled by default.
|
// Whether AppArmor should be disabled by default.
|
||||||
|
@ -195,7 +195,7 @@ func getAppArmorFS() (string, error) {
|
||||||
}
|
}
|
||||||
if fields[2] == "securityfs" {
|
if fields[2] == "securityfs" {
|
||||||
appArmorFS := path.Join(fields[1], "apparmor")
|
appArmorFS := path.Join(fields[1], "apparmor")
|
||||||
if ok, err := utilfile.FileExists(appArmorFS); !ok {
|
if ok, err := utilpath.Exists(utilpath.CheckFollowSymlink, appArmorFS); !ok {
|
||||||
msg := fmt.Sprintf("path %s does not exist", appArmorFS)
|
msg := fmt.Sprintf("path %s does not exist", appArmorFS)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("%s: %v", msg, err)
|
return "", fmt.Errorf("%s: %v", msg, err)
|
||||||
|
|
|
@ -20,7 +20,6 @@ filegroup(
|
||||||
"//pkg/util/dbus:all-srcs",
|
"//pkg/util/dbus:all-srcs",
|
||||||
"//pkg/util/ebtables:all-srcs",
|
"//pkg/util/ebtables:all-srcs",
|
||||||
"//pkg/util/env:all-srcs",
|
"//pkg/util/env:all-srcs",
|
||||||
"//pkg/util/file:all-srcs",
|
|
||||||
"//pkg/util/filesystem:all-srcs",
|
"//pkg/util/filesystem:all-srcs",
|
||||||
"//pkg/util/flag:all-srcs",
|
"//pkg/util/flag:all-srcs",
|
||||||
"//pkg/util/flock:all-srcs",
|
"//pkg/util/flock:all-srcs",
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
"go_test",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = ["file.go"],
|
|
||||||
importpath = "k8s.io/kubernetes/pkg/util/file",
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [":package-srcs"],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
)
|
|
||||||
|
|
||||||
go_test(
|
|
||||||
name = "go_default_test",
|
|
||||||
srcs = ["file_test.go"],
|
|
||||||
embed = [":go_default_library"],
|
|
||||||
deps = [
|
|
||||||
"//vendor/github.com/spf13/afero:go_default_library",
|
|
||||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
|
||||||
],
|
|
||||||
)
|
|
|
@ -1,57 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2017 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package file
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
)
|
|
||||||
|
|
||||||
// FileExists checks if specified file exists.
|
|
||||||
func FileExists(filename string) (bool, error) {
|
|
||||||
if _, err := os.Stat(filename); os.IsNotExist(err) {
|
|
||||||
return false, nil
|
|
||||||
} else if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
return true, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// FileOrSymlinkExists checks if specified file or symlink exists.
|
|
||||||
func FileOrSymlinkExists(filename string) (bool, error) {
|
|
||||||
if _, err := os.Lstat(filename); os.IsNotExist(err) {
|
|
||||||
return false, nil
|
|
||||||
} else if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
return true, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadDirNoStat returns a string of files/directories contained
|
|
||||||
// in dirname without calling lstat on them.
|
|
||||||
func ReadDirNoStat(dirname string) ([]string, error) {
|
|
||||||
if dirname == "" {
|
|
||||||
dirname = "."
|
|
||||||
}
|
|
||||||
|
|
||||||
f, err := os.Open(dirname)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
return f.Readdirnames(-1)
|
|
||||||
}
|
|
|
@ -1,149 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2017 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package file
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"sort"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/spf13/afero"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func RecoverEnv(wd, tmpDir string) {
|
|
||||||
os.Chdir(wd)
|
|
||||||
os.RemoveAll(tmpDir)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFileUtils(t *testing.T) {
|
|
||||||
fs := &afero.Afero{Fs: afero.NewOsFs()}
|
|
||||||
// Create tmp dir
|
|
||||||
tmpDir, err := fs.TempDir(os.TempDir(), "util_file_test_")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Failed to test: failed to create temp dir.")
|
|
||||||
}
|
|
||||||
|
|
||||||
// create tmp file
|
|
||||||
tmpFile, err := fs.TempFile(tmpDir, "test_file_exists_")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Failed to test: failed to create temp file.")
|
|
||||||
}
|
|
||||||
|
|
||||||
// create tmp sym link
|
|
||||||
tmpSymlinkName := filepath.Join(tmpDir, "test_file_exists_sym_link")
|
|
||||||
err = os.Symlink(tmpFile.Name(), tmpSymlinkName)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Failed to test: failed to create sym link.")
|
|
||||||
}
|
|
||||||
|
|
||||||
// create tmp sub dir
|
|
||||||
tmpSubDir, err := fs.TempDir(tmpDir, "sub_")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Failed to test: failed to create temp sub dir.")
|
|
||||||
}
|
|
||||||
|
|
||||||
// record the current dir
|
|
||||||
currentDir, err := os.Getwd()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Failed to test: failed to get current dir.")
|
|
||||||
}
|
|
||||||
|
|
||||||
// change the work dir to temp dir
|
|
||||||
err = os.Chdir(tmpDir)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Failed to test: failed to change work dir.")
|
|
||||||
}
|
|
||||||
|
|
||||||
// recover test environment
|
|
||||||
defer RecoverEnv(currentDir, tmpDir)
|
|
||||||
|
|
||||||
t.Run("TestFileExists", func(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
fileName string
|
|
||||||
expectedError bool
|
|
||||||
expectedValue bool
|
|
||||||
}{
|
|
||||||
{"file_not_exists", filepath.Join(tmpDir, "file_not_exist_case"), false, false},
|
|
||||||
{"file_exists", tmpFile.Name(), false, true},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
realValued, realError := FileExists(test.fileName)
|
|
||||||
if test.expectedError {
|
|
||||||
assert.Errorf(t, realError, "Failed to test with '%s': %s", test.fileName, test.name)
|
|
||||||
} else {
|
|
||||||
assert.EqualValuesf(t, test.expectedValue, realValued, "Failed to test with '%s': %s", test.fileName, test.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("TestFileOrSymlinkExists", func(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
fileName string
|
|
||||||
expectedError bool
|
|
||||||
expectedValue bool
|
|
||||||
}{
|
|
||||||
{"file_not_exists", filepath.Join(tmpDir, "file_not_exist_case"), false, false},
|
|
||||||
{"file_exists", tmpFile.Name(), false, true},
|
|
||||||
{"symlink_exists", tmpSymlinkName, false, true},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
realValued, realError := FileOrSymlinkExists(test.fileName)
|
|
||||||
if test.expectedError {
|
|
||||||
assert.Errorf(t, realError, "Failed to test with '%s': %s", test.fileName, test.name)
|
|
||||||
} else {
|
|
||||||
assert.EqualValuesf(t, test.expectedValue, realValued, "Failed to test with '%s': %s", test.fileName, test.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("TestReadDirNoStat", func(t *testing.T) {
|
|
||||||
_, tmpFileSimpleName := filepath.Split(tmpFile.Name())
|
|
||||||
_, tmpSymlinkSimpleName := filepath.Split(tmpSymlinkName)
|
|
||||||
_, tmpSubDirSimpleName := filepath.Split(tmpSubDir)
|
|
||||||
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
dirName string
|
|
||||||
expectedError bool
|
|
||||||
expectedValue []string
|
|
||||||
}{
|
|
||||||
{"dir_not_exists", filepath.Join(tmpDir, "file_not_exist_case"), true, []string{}},
|
|
||||||
{"dir_is_empty", "", false, []string{tmpFileSimpleName, tmpSymlinkSimpleName, tmpSubDirSimpleName}},
|
|
||||||
{"dir_exists", tmpDir, false, []string{tmpFileSimpleName, tmpSymlinkSimpleName, tmpSubDirSimpleName}},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
realValued, realError := ReadDirNoStat(test.dirName)
|
|
||||||
|
|
||||||
// execute sort action before compare
|
|
||||||
sort.Strings(realValued)
|
|
||||||
sort.Strings(test.expectedValue)
|
|
||||||
|
|
||||||
if test.expectedError {
|
|
||||||
assert.Errorf(t, realError, "Failed to test with '%s': %s", test.dirName, test.name)
|
|
||||||
} else {
|
|
||||||
assert.EqualValuesf(t, test.expectedValue, realValued, "Failed to test with '%s': %s", test.dirName, test.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -35,11 +35,11 @@ go_library(
|
||||||
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
||||||
],
|
],
|
||||||
"@io_bazel_rules_go//go/platform:linux": [
|
"@io_bazel_rules_go//go/platform:linux": [
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
"//vendor/golang.org/x/sys/unix:go_default_library",
|
"//vendor/golang.org/x/sys/unix:go_default_library",
|
||||||
"//vendor/k8s.io/utils/io:go_default_library",
|
"//vendor/k8s.io/utils/io:go_default_library",
|
||||||
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
"@io_bazel_rules_go//go/platform:nacl": [
|
"@io_bazel_rules_go//go/platform:nacl": [
|
||||||
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
||||||
|
@ -57,8 +57,8 @@ go_library(
|
||||||
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
||||||
],
|
],
|
||||||
"@io_bazel_rules_go//go/platform:windows": [
|
"@io_bazel_rules_go//go/platform:windows": [
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
"//vendor/k8s.io/utils/nsenter:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
"//conditions:default": [],
|
"//conditions:default": [],
|
||||||
}),
|
}),
|
||||||
|
|
|
@ -33,9 +33,9 @@ import (
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
|
||||||
utilexec "k8s.io/utils/exec"
|
utilexec "k8s.io/utils/exec"
|
||||||
utilio "k8s.io/utils/io"
|
utilio "k8s.io/utils/io"
|
||||||
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -417,7 +417,7 @@ func (mounter *Mounter) MakeFile(pathname string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mounter *Mounter) ExistsPath(pathname string) (bool, error) {
|
func (mounter *Mounter) ExistsPath(pathname string) (bool, error) {
|
||||||
return utilfile.FileExists(pathname)
|
return utilpath.Exists(utilpath.CheckFollowSymlink, pathname)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mounter *Mounter) EvalHostSymlinks(pathname string) (string, error) {
|
func (mounter *Mounter) EvalHostSymlinks(pathname string) (string, error) {
|
||||||
|
|
|
@ -30,7 +30,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Mounter provides the default implementation of mount.Interface
|
// Mounter provides the default implementation of mount.Interface
|
||||||
|
@ -235,7 +235,7 @@ func (mounter *Mounter) MakeFile(pathname string) error {
|
||||||
|
|
||||||
// ExistsPath checks whether the path exists
|
// ExistsPath checks whether the path exists
|
||||||
func (mounter *Mounter) ExistsPath(pathname string) (bool, error) {
|
func (mounter *Mounter) ExistsPath(pathname string) (bool, error) {
|
||||||
return utilfile.FileExists(pathname)
|
return utilpath.Exists(utilpath.CheckFollowSymlink, pathname)
|
||||||
}
|
}
|
||||||
|
|
||||||
// EvalHostSymlinks returns the path name after evaluating symlinks
|
// EvalHostSymlinks returns the path name after evaluating symlinks
|
||||||
|
|
|
@ -27,8 +27,8 @@ import (
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
|
||||||
"k8s.io/utils/nsenter"
|
"k8s.io/utils/nsenter"
|
||||||
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -291,7 +291,7 @@ func (mounter *NsenterMounter) ExistsPath(pathname string) (bool, error) {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
kubeletpath := mounter.ne.KubeletPath(hostPath)
|
kubeletpath := mounter.ne.KubeletPath(hostPath)
|
||||||
return utilfile.FileExists(kubeletpath)
|
return utilpath.Exists(utilpath.CheckFollowSymlink, kubeletpath)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mounter *NsenterMounter) EvalHostSymlinks(pathname string) (string, error) {
|
func (mounter *NsenterMounter) EvalHostSymlinks(pathname string) (string, error) {
|
||||||
|
|
|
@ -20,7 +20,6 @@ go_library(
|
||||||
"//pkg/cloudprovider/providers/gce:go_default_library",
|
"//pkg/cloudprovider/providers/gce:go_default_library",
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/kubelet/apis:go_default_library",
|
"//pkg/kubelet/apis:go_default_library",
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//pkg/util/mount:go_default_library",
|
"//pkg/util/mount:go_default_library",
|
||||||
"//pkg/util/strings:go_default_library",
|
"//pkg/util/strings:go_default_library",
|
||||||
"//pkg/volume:go_default_library",
|
"//pkg/volume:go_default_library",
|
||||||
|
@ -35,6 +34,7 @@ go_library(
|
||||||
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
"//vendor/k8s.io/utils/exec:go_default_library",
|
"//vendor/k8s.io/utils/exec:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -32,11 +32,11 @@ import (
|
||||||
gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
|
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
|
||||||
"k8s.io/kubernetes/pkg/util/mount"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
"k8s.io/utils/exec"
|
"k8s.io/utils/exec"
|
||||||
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -236,7 +236,7 @@ func verifyDevicePath(devicePaths []string, sdBeforeSet sets.String, diskName st
|
||||||
|
|
||||||
// Calls scsi_id on the given devicePath to get the serial number reported by that device.
|
// Calls scsi_id on the given devicePath to get the serial number reported by that device.
|
||||||
func getScsiSerial(devicePath, diskName string) (string, error) {
|
func getScsiSerial(devicePath, diskName string) (string, error) {
|
||||||
exists, err := utilfile.FileExists("/lib/udev/scsi_id")
|
exists, err := utilpath.Exists(utilpath.CheckFollowSymlink, "/lib/udev/scsi_id")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("failed to check scsi_id existence: %v", err)
|
return "", fmt.Errorf("failed to check scsi_id existence: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,6 @@ go_test(
|
||||||
srcs = ["host_path_test.go"],
|
srcs = ["host_path_test.go"],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//pkg/util/mount:go_default_library",
|
"//pkg/util/mount:go_default_library",
|
||||||
"//pkg/volume:go_default_library",
|
"//pkg/volume:go_default_library",
|
||||||
"//pkg/volume/testing:go_default_library",
|
"//pkg/volume/testing:go_default_library",
|
||||||
|
@ -41,6 +40,7 @@ go_test(
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -27,10 +27,10 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/util/uuid"
|
"k8s.io/apimachinery/pkg/util/uuid"
|
||||||
"k8s.io/client-go/kubernetes/fake"
|
"k8s.io/client-go/kubernetes/fake"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
|
||||||
utilmount "k8s.io/kubernetes/pkg/util/mount"
|
utilmount "k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
||||||
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newHostPathType(pathType string) *v1.HostPathType {
|
func newHostPathType(pathType string) *v1.HostPathType {
|
||||||
|
@ -122,7 +122,7 @@ func TestDeleter(t *testing.T) {
|
||||||
if err := deleter.Delete(); err != nil {
|
if err := deleter.Delete(); err != nil {
|
||||||
t.Errorf("Mock Recycler expected to return nil but got %s", err)
|
t.Errorf("Mock Recycler expected to return nil but got %s", err)
|
||||||
}
|
}
|
||||||
if exists, _ := utilfile.FileExists(tempPath); exists {
|
if exists, _ := utilpath.Exists(utilpath.CheckFollowSymlink, tempPath); exists {
|
||||||
t.Errorf("Temp path expected to be deleted, but was found at %s", tempPath)
|
t.Errorf("Temp path expected to be deleted, but was found at %s", tempPath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ go_library(
|
||||||
importpath = "k8s.io/kubernetes/pkg/volume/rbd",
|
importpath = "k8s.io/kubernetes/pkg/volume/rbd",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/util/file:go_default_library",
|
|
||||||
"//pkg/util/mount:go_default_library",
|
"//pkg/util/mount:go_default_library",
|
||||||
"//pkg/util/node:go_default_library",
|
"//pkg/util/node:go_default_library",
|
||||||
"//pkg/util/strings:go_default_library",
|
"//pkg/util/strings:go_default_library",
|
||||||
|
@ -36,6 +35,7 @@ go_library(
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
|
"//vendor/k8s.io/utils/path:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -37,11 +37,11 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/errors"
|
"k8s.io/apimachinery/pkg/util/errors"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
fileutil "k8s.io/kubernetes/pkg/util/file"
|
|
||||||
"k8s.io/kubernetes/pkg/util/mount"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/util/node"
|
"k8s.io/kubernetes/pkg/util/node"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volutil "k8s.io/kubernetes/pkg/volume/util"
|
volutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
|
utilpath "k8s.io/utils/path"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -486,7 +486,7 @@ func (util *RBDUtil) DetachDisk(plugin *rbdPlugin, deviceMountPath string, devic
|
||||||
// Currently, we don't persist rbd info on the disk, but for backward
|
// Currently, we don't persist rbd info on the disk, but for backward
|
||||||
// compatbility, we need to clean it if found.
|
// compatbility, we need to clean it if found.
|
||||||
rbdFile := path.Join(deviceMountPath, "rbd.json")
|
rbdFile := path.Join(deviceMountPath, "rbd.json")
|
||||||
exists, err := fileutil.FileExists(rbdFile)
|
exists, err := utilpath.Exists(utilpath.CheckFollowSymlink, rbdFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue