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 ¶
func CheckReadWriteToPath(pod *v1.Pod, volMode v1.PersistentVolumeMode, path string)
func CheckVolumeModeOfPath ¶
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 ¶
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 RunInPodWithVolume ¶
RunInPodWithVolume runs a command in a pod with given claim mounted to /mnt directory.
func SIGDescribe ¶
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 ¶
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
const ( NodeStateTimeout = 1 * time.Minute KStart KubeletOpt = "start" KStop KubeletOpt = "stop" 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 ( // 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 ¶
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.