Documentation
¶
Index ¶
- func CheckReadWriteToPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
- func CheckVolumeModeOfPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
- func KubeletCommand(kOp KubeletOpt, c clientset.Interface, pod *v1.Pod)
- func PatchCSIDeployment(f *framework.Framework, o PatchCSIOptions, object interface{}) error
- func PodExec(pod *v1.Pod, bashExec string) (string, error)
- func PrivilegedTestPSPClusterRoleBinding(client clientset.Interface, namespace string, teardown bool, saNames []string)
- func RunInPodWithVolume(c clientset.Interface, ns, claimName, command string)
- func SIGDescribe(text string, body func()) bool
- func StartExternalProvisioner(c clientset.Interface, ns string, externalPluginName string) *v1.Pod
- func TestKubeletRestartsAndRestoresMount(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
- func TestVolumeUnmountsFromDeletedPod(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
- func TestVolumeUnmountsFromDeletedPodWithForceOption(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod, ...)
- func TestVolumeUnmountsFromForceDeletedPod(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
- func VerifyExecInPodFail(pod *v1.Pod, bashExec string, exitCode int)
- func VerifyExecInPodSucceed(pod *v1.Pod, bashExec string)
- type HostExec
- type KubeletOpt
- type LocalTestResource
- type LocalTestResourceManager
- type LocalVolumeType
- type PatchCSIOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckReadWriteToPath ¶ added in v1.12.10
func CheckReadWriteToPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
func CheckVolumeModeOfPath ¶ added in v1.12.10
func CheckVolumeModeOfPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
func KubeletCommand ¶
func KubeletCommand(kOp KubeletOpt, c clientset.Interface, pod *v1.Pod)
KubeletCommand performs `start`, `restart`, or `stop` on the kubelet running on the node of the target pod and waits for the desired statues.. - First issues the command via `systemctl` - If `systemctl` returns stderr "command not found, issues the command via `service` - If `service` also returns stderr "command not found", the test is aborted. Allowed kubeletOps are `KStart`, `KStop`, and `KRestart`
func PatchCSIDeployment ¶ added in v1.13.1
func PatchCSIDeployment(f *framework.Framework, o PatchCSIOptions, object interface{}) error
PatchCSIDeployment modifies the CSI driver deployment: - replaces the provisioner name - forces pods onto a specific host
All of that is optional, see PatchCSIOptions. Just beware that not renaming the CSI driver deployment can be problematic:
- when multiple tests deploy the driver, they need to run sequentially
- might conflict with manual deployments
This function is written so that it works for CSI driver deployments that follow these conventions:
- driver and provisioner names are identical
- the driver binary accepts a --drivername parameter
- the provisioner binary accepts a --provisioner parameter
- the paths inside the container are either fixed and don't need to be patch (for example, --csi-address=/csi/csi.sock is okay) or are specified directly in a parameter (for example, --kubelet-registration-path=/var/lib/kubelet/plugins/csi-hostpath/csi.sock)
Driver deployments that are different will have to do the patching without this function, or skip patching entirely.
TODO (?): the storage.csi.image.version and storage.csi.image.registry settings are ignored. We could patch the image definitions or deprecate those options.
func PodExec ¶
func PodExec(pod *v1.Pod, bashExec string) (string, error)
PodExec wraps RunKubectl to execute a bash cmd in target pod
func PrivilegedTestPSPClusterRoleBinding ¶ added in v1.10.10
func PrivilegedTestPSPClusterRoleBinding(client clientset.Interface,
namespace string,
teardown bool,
saNames []string)
func RunInPodWithVolume ¶
func RunInPodWithVolume(c clientset.Interface, ns, claimName, command string)
RunInPodWithVolume runs a command in a pod with given claim mounted to /mnt directory.
func SIGDescribe ¶
func SIGDescribe(text string, body func()) bool
func StartExternalProvisioner ¶ added in v1.12.0
func StartExternalProvisioner(c clientset.Interface, ns string, externalPluginName string) *v1.Pod
func TestKubeletRestartsAndRestoresMount ¶
func TestKubeletRestartsAndRestoresMount(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
TestKubeletRestartsAndRestoresMount tests that a volume mounted to a pod remains mounted after a kubelet restarts
func TestVolumeUnmountsFromDeletedPod ¶
func TestVolumeUnmountsFromDeletedPod(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
TestVolumeUnmountsFromDeletedPod tests that a volume unmounts if the client pod was deleted while the kubelet was down.
func TestVolumeUnmountsFromDeletedPodWithForceOption ¶
func TestVolumeUnmountsFromDeletedPodWithForceOption(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod, forceDelete bool, checkSubpath bool)
TestVolumeUnmountsFromDeletedPod tests that a volume unmounts if the client pod was deleted while the kubelet was down. forceDelete is true indicating whether the pod is forcefully deleted.
func TestVolumeUnmountsFromForceDeletedPod ¶
func TestVolumeUnmountsFromForceDeletedPod(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
TestVolumeUnmountsFromFoceDeletedPod tests that a volume unmounts if the client pod was forcefully deleted while the kubelet was down.
func VerifyExecInPodFail ¶ added in v1.12.0
func VerifyExecInPodFail(pod *v1.Pod, bashExec string, exitCode int)
VerifyExecInPodFail verifies bash cmd in target pod fail with certain exit code
func VerifyExecInPodSucceed ¶ added in v1.12.0
func VerifyExecInPodSucceed(pod *v1.Pod, bashExec string)
VerifyExecInPodSucceed verifies bash cmd in target pod succeed
Types ¶
type HostExec ¶ added in v1.14.0
type HostExec interface {
IssueCommandWithResult(cmd string, node *v1.Node) (string, error)
IssueCommand(cmd string, node *v1.Node) error
Cleanup()
}
HostExec represents interface we require to execute commands on remote host.
func NewHostExec ¶ added in v1.14.0
func NewHostExec(framework *framework.Framework) HostExec
NewHostExec returns a HostExec
type KubeletOpt ¶
type KubeletOpt string
const (
NodeStateTimeout = 1 * time.Minute
KStart KubeletOpt = "start"
KStop KubeletOpt = "stop"
KRestart KubeletOpt = "restart"
)
type LocalTestResource ¶ added in v1.14.0
type LocalTestResource struct {
VolumeType LocalVolumeType
Node *v1.Node
// Volume path, path to filesystem or block device on the node
Path string
// contains filtered or unexported fields
}
LocalTestResource represents test resource of a local volume.
type LocalTestResourceManager ¶ added in v1.14.0
type LocalTestResourceManager interface {
Create(node *v1.Node, volumeType LocalVolumeType, parameters map[string]string) *LocalTestResource
Remove(ltr *LocalTestResource)
}
LocalTestResourceManager represents interface to create/destroy local test resources on node
func NewLocalResourceManager ¶ added in v1.14.0
func NewLocalResourceManager(prefix string, hostExec HostExec, hostBase string) LocalTestResourceManager
NewLocalResourceManager returns a instance of LocalTestResourceManager
type LocalVolumeType ¶ added in v1.14.0
type LocalVolumeType string
LocalVolumeType represents type of local volume, e.g. tmpfs, directory, block, etc.
const (
// A simple directory as local volume
LocalVolumeDirectory LocalVolumeType = "dir"
// Like LocalVolumeDirectory but it's a symbolic link to directory
LocalVolumeDirectoryLink LocalVolumeType = "dir-link"
// Like LocalVolumeDirectory but bind mounted
LocalVolumeDirectoryBindMounted LocalVolumeType = "dir-bindmounted"
// Like LocalVolumeDirectory but it's a symbolic link to self bind mounted directory
// Note that bind mounting at symbolic link actually mounts at directory it
// links to
LocalVolumeDirectoryLinkBindMounted LocalVolumeType = "dir-link-bindmounted"
// Use temporary filesystem as local volume
LocalVolumeTmpfs LocalVolumeType = "tmpfs"
// Block device, creates a local file, and maps it as a block device
LocalVolumeBlock LocalVolumeType = "block"
// Filesystem backed by a block device
LocalVolumeBlockFS LocalVolumeType = "blockfs"
// Use GCE Local SSD as local volume, this is a filesystem
LocalVolumeGCELocalSSD LocalVolumeType = "gce-localssd-scsi-fs"
)
type PatchCSIOptions ¶ added in v1.13.1
type PatchCSIOptions struct {
// The original driver name.
OldDriverName string
// The driver name that replaces the original name.
// Can be empty (not used at all) or equal to OldDriverName
// (then it will be added were appropriate without renaming
// in existing fields).
NewDriverName string
// The name of the container which has the CSI driver binary.
// If non-empty, DriverContainerArguments are added to argument
// list in container with that name.
DriverContainerName string
// List of arguments to add to container with
// DriverContainerName.
DriverContainerArguments []string
// The name of the container which has the provisioner binary.
// If non-empty, --provisioner with new name will be appended
// to the argument list.
ProvisionerContainerName string
// The name of the container which has the snapshotter binary.
// If non-empty, --snapshotter with new name will be appended
// to the argument list.
SnapshotterContainerName string
// The name of the container which has the cluster-driver-registrar
// binary.
ClusterRegistrarContainerName string
// If non-empty, all pods are forced to run on this node.
NodeName string
// If not nil, the argument to pass to the cluster-driver-registrar's
// pod-info-mount argument.
PodInfo *bool
}
PatchCSIOptions controls how PatchCSIDeployment patches the objects.