Documentation ¶
Index ¶
- func CheckReadFromPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string, len int, seed int64)
- func CheckReadWriteToPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
- func CheckVolumeModeOfPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
- func CheckWriteToPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string, len int, seed int64)
- 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 TestKubeletRestartsAndRestoresMap(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
- func TestKubeletRestartsAndRestoresMount(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
- func TestVolumeUnmapsFromDeletedPod(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
- func TestVolumeUnmapsFromDeletedPodWithForceOption(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod, ...)
- func TestVolumeUnmapsFromForceDeletedPod(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 CheckReadFromPath ¶
func CheckReadFromPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string, len int, seed int64)
CheckReadFromPath validate that file can be properly read.
func CheckReadWriteToPath ¶
func CheckReadWriteToPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
CheckReadWriteToPath check that path can b e read and written
func CheckVolumeModeOfPath ¶
func CheckVolumeModeOfPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
CheckVolumeModeOfPath check mode of volume
func CheckWriteToPath ¶
func CheckWriteToPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string, len int, seed int64)
CheckWriteToPath that file can be properly written.
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 ¶
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.
func PrivilegedTestPSPClusterRoleBinding ¶
func PrivilegedTestPSPClusterRoleBinding(client clientset.Interface, namespace string, teardown bool, saNames []string)
PrivilegedTestPSPClusterRoleBinding test Pod Security Policy Role bindings
func RunInPodWithVolume ¶
RunInPodWithVolume runs a command in a pod with given claim mounted to /mnt directory.
func SIGDescribe ¶
SIGDescribe annotates the test with the SIG label.
func StartExternalProvisioner ¶
StartExternalProvisioner create external provisioner pod
func TestKubeletRestartsAndRestoresMap ¶
func TestKubeletRestartsAndRestoresMap(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
TestKubeletRestartsAndRestoresMap tests that a volume mapped to a pod remains mapped after a kubelet restarts
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 TestVolumeUnmapsFromDeletedPod ¶
func TestVolumeUnmapsFromDeletedPod(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
TestVolumeUnmapsFromDeletedPod tests that a volume unmaps if the client pod was deleted while the kubelet was down.
func TestVolumeUnmapsFromDeletedPodWithForceOption ¶
func TestVolumeUnmapsFromDeletedPodWithForceOption(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod, forceDelete bool)
TestVolumeUnmapsFromDeletedPodWithForceOption tests that a volume unmaps if the client pod was deleted while the kubelet was down. forceDelete is true indicating whether the pod is forcefully deleted.
func TestVolumeUnmapsFromForceDeletedPod ¶
func TestVolumeUnmapsFromForceDeletedPod(c clientset.Interface, f *framework.Framework, clientPod *v1.Pod)
TestVolumeUnmapsFromForceDeletedPod tests that a volume unmaps if the client pod was forcefully deleted while the kubelet was down.
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)
TestVolumeUnmountsFromDeletedPodWithForceOption 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)
TestVolumeUnmountsFromForceDeletedPod tests that a volume unmounts if the client pod was forcefully deleted while the kubelet was down.
func VerifyExecInPodFail ¶
VerifyExecInPodFail verifies bash cmd in target pod fail with certain exit code
func VerifyExecInPodSucceed ¶
VerifyExecInPodSucceed verifies bash cmd in target pod succeed
Types ¶
type HostExec ¶
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 ¶
NewHostExec returns a HostExec
type KubeletOpt ¶
type KubeletOpt string
KubeletOpt type definition
const ( // NodeStateTimeout defines Timeout NodeStateTimeout = 1 * time.Minute // KStart defines start value KStart KubeletOpt = "start" // KStop defines stop value KStop KubeletOpt = "stop" // KRestart defines restart value KRestart KubeletOpt = "restart" )
type LocalTestResource ¶
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 ¶
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 ¶
func NewLocalResourceManager(prefix string, hostExec HostExec, hostBase string) LocalTestResourceManager
NewLocalResourceManager returns a instance of LocalTestResourceManager
type LocalVolumeType ¶
type LocalVolumeType string
LocalVolumeType represents type of local volume, e.g. tmpfs, directory, block, etc.
const ( // LocalVolumeDirectory reprensents a simple directory as local volume LocalVolumeDirectory LocalVolumeType = "dir" // LocalVolumeDirectoryLink is like LocalVolumeDirectory but it's a symbolic link to directory LocalVolumeDirectoryLink LocalVolumeType = "dir-link" // LocalVolumeDirectoryBindMounted is like LocalVolumeDirectory but bind mounted LocalVolumeDirectoryBindMounted LocalVolumeType = "dir-bindmounted" // LocalVolumeDirectoryLinkBindMounted is 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" // LocalVolumeTmpfs represents a temporary filesystem to be used as local volume LocalVolumeTmpfs LocalVolumeType = "tmpfs" // LocalVolumeBlock represents a Block device, creates a local file, and maps it as a block device LocalVolumeBlock LocalVolumeType = "block" // LocalVolumeBlockFS represents a filesystem backed by a block device LocalVolumeBlockFS LocalVolumeType = "blockfs" // LocalVolumeGCELocalSSD represents a Filesystem backed by GCE Local SSD as local volume LocalVolumeGCELocalSSD LocalVolumeType = "gce-localssd-scsi-fs" )
type PatchCSIOptions ¶
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 // If non-empty, all pods are forced to run on this node. NodeName string // If not nil, the value to use for the CSIDriver.Spec.PodInfo // field *if* the driver deploys a CSIDriver object. Ignored // otherwise. PodInfo *bool // If not nil, the value to use for the CSIDriver.Spec.CanAttach // field *if* the driver deploys a CSIDriver object. Ignored // otherwise. CanAttach *bool // If not nil, the value to use for the CSIDriver.Spec.VolumeLifecycleModes // field *if* the driver deploys a CSIDriver object. Ignored // otherwise. VolumeLifecycleModes *[]storagev1beta1.VolumeLifecycleMode }
PatchCSIOptions controls how PatchCSIDeployment patches the objects.