utils

package
v1.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2019 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// FileHostName provides a deployment and service name for tests
	FileHostName = "cdi-file-host"
	// FileHostNs provides a deployment ans service namespace for tests
	FileHostNs = "kube-system"
	// FileHostS3Bucket provides an S3 bucket name for tests (e.g. http://<serviceIP:port>/FileHostS3Bucket/image)
	FileHostS3Bucket = "images"
	// AccessKeyValue provides a username to use for http and S3 (see hack/build/docker/cdi-func-test-file-host-http/htpasswd)
	AccessKeyValue = "admin"
	// SecretKeyValue provides a password to use for http and S3 (see hack/build/docker/cdi-func-test-file-host-http/htpasswd)
	SecretKeyValue = "password"
	// HttpAuthPort provides a cdi-file-host service auth port for tests
	HTTPAuthPort = 81
	// HttpNoAuthPort provides a cdi-file-host service no-auth port for tests, requires AccessKeyValue and SecretKeyValue
	HTTPNoAuthPort = 80
	// S3Port provides a cdi-file-host service S3 port, requires AccessKey and SecretKeyValue
	S3Port = 9000
)

cdi-file-host pod/service relative values

View Source
const (

	// DefaultPvcMountPath is the default mount path used
	DefaultPvcMountPath = "/pvc"

	// DefaultImagePath is the default destination for images created by CDI
	DefaultImagePath = DefaultPvcMountPath + "/disk.img"
)
View Source
const (
	// PodWaitForTime is the time to wait for Pod operations to complete
	PodWaitForTime = defaultPollPeriod
)
View Source
const (
	// TinyCoreIsoURL provides a test url for the tineyCore iso image
	TinyCoreIsoURL = "http://cdi-file-host.kube-system/tinyCore.iso"
)
View Source
const (
	// UploadFileMD5 is the expected MD5 of the uploaded file
	UploadFileMD5 = "2a7a52285c846314d1dbd79e9818270d"
)

Variables

This section is empty.

Functions

func ArchiveFiles added in v1.4.0

func ArchiveFiles(targetFile, tgtDir string, sourceFilesNames ...string) (string, error)

ArchiveFiles creates a tar file that archives the given source files.

func CreateDataVolumeFromDefinition

func CreateDataVolumeFromDefinition(clientSet *cdiclientset.Clientset, namespace string, def *cdiv1.DataVolume) (*cdiv1.DataVolume, error)

CreateDataVolumeFromDefinition is used by tests to create a testable Data Volume

func CreateExecutorPodWithPVC

func CreateExecutorPodWithPVC(clientSet *kubernetes.Clientset, podName, namespace string, pvc *k8sv1.PersistentVolumeClaim) (*k8sv1.Pod, error)

CreateExecutorPodWithPVC creates a Pod with the passed in PVC mounted under /pvc. You can then use the executor utilities to run commands against the PVC through this Pod.

func CreatePVCFromDefinition

func CreatePVCFromDefinition(clientSet *kubernetes.Clientset, namespace string, def *k8sv1.PersistentVolumeClaim) (*k8sv1.PersistentVolumeClaim, error)

CreatePVCFromDefinition creates a PVC in the passed in namespace from the passed in PersistentVolumeClaim definition. An example of creating a PVC without annotations looks like this: CreatePVCFromDefinition(client, namespace, NewPVCDefinition(name, size, nil, nil))

func CreatePod

func CreatePod(clientSet *kubernetes.Clientset, namespace string, podDef *k8sv1.Pod) (*k8sv1.Pod, error)

CreatePod calls the Kubernetes API to create a Pod

func CreateSecretFromDefinition

func CreateSecretFromDefinition(c *kubernetes.Clientset, secret *v1.Secret) (*v1.Secret, error)

CreateSecretFromDefinition creates and returns a pointer ot a v1.Secret using a provided v1.Secret

func DeleteDataVolume

func DeleteDataVolume(clientSet *cdiclientset.Clientset, namespace, name string) error

DeleteDataVolume deletes the DataVolume with the given name

func DeletePVC

func DeletePVC(clientSet *kubernetes.Clientset, namespace string, pvc *k8sv1.PersistentVolumeClaim) error

DeletePVC deletes the passed in PVC

func DeletePod

func DeletePod(clientSet *kubernetes.Clientset, pod *k8sv1.Pod, namespace string) error

DeletePod deletes the passed in Pod from the passed in Namespace

func DeleteSecret added in v1.4.0

func DeleteSecret(clientSet *kubernetes.Clientset, namespace string, secret v1.Secret) error

DeleteSecret ...

func DownloadImageToNode

func DownloadImageToNode(clientSet *kubernetes.Clientset, cliCommandPath string) error

DownloadImageToNode downloads an image file to node01 in the cluster

func FindPVC

func FindPVC(clientSet *kubernetes.Clientset, namespace, pvcName string) (*k8sv1.PersistentVolumeClaim, error)

FindPVC Finds the passed in PVC

func FindPodByPrefix

func FindPodByPrefix(clientSet *kubernetes.Clientset, namespace, prefix, labelSelector string) (*k8sv1.Pod, error)

FindPodByPrefix finds the first pod which has the passed in prefix. Returns error if multiple pods with the same prefix are found.

func FormatTestData

func FormatTestData(srcFile, tgtDir string, targetFormats ...string) (string, error)

FormatTestData accepts the path of a single file (srcFile) and attempts to generate an output file in the format defined by targetFormats (e.g. ".tar", ".gz" will produce a .tar.gz formatted file). The output file is written to the directory in `tgtDir`. returns:

(string) Path of output file
(error)  Errors that occur during formatting

func GetServiceInNamespace

func GetServiceInNamespace(c *kubernetes.Clientset, ns, name string) (*v1.Service, error)

GetServiceInNamespace retries get on service `name` in namespace `ns` until timeout or IsNotFound error. Ignores api errors that may be intermittent. Returns pointer to service (nil on error) or an error (nil on success)

func GetServiceInNamespaceOrDie

func GetServiceInNamespaceOrDie(c *kubernetes.Clientset, ns, name string) *v1.Service

GetServiceInNamespaceOrDie attempts to get the service in namespace `ns` by `name`. Returns pointer to service on success. Panics on error.

func GetServiceNodePortByName

func GetServiceNodePortByName(svc *v1.Service, name string) (int, error)

GetServiceNodePortByName scans a service's nodePorts for a name matching the `name` parameter and returns the associated port integer or an error if not match is found.

func GetServicePortByName

func GetServicePortByName(svc *v1.Service, name string) (int, error)

GetServicePortByName scans a service's ports for names matching `name`. Returns integer port value (0 on error) and error (nil on success).

func GetServicesInNamespaceByLabel

func GetServicesInNamespaceByLabel(c *kubernetes.Clientset, ns, labelSelector string) (*v1.ServiceList, error)

GetServicesInNamespaceByLabel retries get of services in namespace `ns` by `labelSelector` until timeout. Ignores api errors that may be intermittent. Returns pointer to ServiceList (nil on error) and an error (nil on success)

func NewDataVolumeWithHTTPImport added in v1.3.0

func NewDataVolumeWithHTTPImport(dataVolumeName string, size string, httpURL string) *cdiv1.DataVolume

NewDataVolumeWithHTTPImport initializes a DataVolume struct with HTTP annotations

func NewDataVolumeWithPVCImport

func NewDataVolumeWithPVCImport(dataVolumeName string, size string, targetPvc *k8sv1.PersistentVolumeClaim) *cdiv1.DataVolume

NewDataVolumeWithPVCImport initializes a DataVolume struct with PVC annotations

func NewPVCDefinition

func NewPVCDefinition(pvcName string, size string, annotations, labels map[string]string) *k8sv1.PersistentVolumeClaim

NewPVCDefinition creates a PVC definition using the passed in name and requested size. You can use the following annotation keys to request an import or clone. The values are defined in the controller package AnnEndpoint AnnSecret AnnCloneRequest You can also pass in any label you want.

func NewPodWithPVC

func NewPodWithPVC(podName, cmd string, pvc *k8sv1.PersistentVolumeClaim) *k8sv1.Pod

NewPodWithPVC creates a new pod that mounts the given PVC

func NewSecretDefinition

func NewSecretDefinition(labels, stringData map[string]string, data map[string][]byte, ns, prefix string) *v1.Secret

NewSecretDefinition provides a fucntion to initialize a Secret data type with the provided options

func PodGetNode

func PodGetNode(clientSet *kubernetes.Clientset, podName, namespace string) (string, error)

PodGetNode returns the node on which a given pod is executing

func RequestUploadToken

func RequestUploadToken(clientSet *cdiClientset.Clientset, pvc *k8sv1.PersistentVolumeClaim) (string, error)

RequestUploadToken sends an upload token request to the server

func RunGoCLICommand

func RunGoCLICommand(cliPath string, args ...string) ([]byte, error)

RunGoCLICommand egecutes gocli with given args

func UploadImageFromNode

func UploadImageFromNode(clientSet *kubernetes.Clientset, cliCommandPath, token string) error

UploadImageFromNode uploads the image to the upload proxy

func UploadPVCDefinition

func UploadPVCDefinition() *k8sv1.PersistentVolumeClaim

UploadPVCDefinition creates a PVC with the upload target annotation

func UploadPodName

func UploadPodName(pvc *k8sv1.PersistentVolumeClaim) string

UploadPodName returns the name of the upload server pod associated with a PVC

func WaitForDataVolumePhase

func WaitForDataVolumePhase(clientSet *cdiclientset.Clientset, namespace string, phase cdiv1.DataVolumePhase, dataVolumeName string) error

WaitForDataVolumePhase waits for DV's phase to be in a particular phase (Pending, Bound, or Lost)

func WaitForDeploymentReplicasReady

func WaitForDeploymentReplicasReady(c *kubernetes.Clientset, namespace, name string) error

WaitForDeploymentReplicasReady will wait for replicase to become ready and return an error if they do not

func WaitForDeploymentReplicasReadyOrDie

func WaitForDeploymentReplicasReadyOrDie(c *kubernetes.Clientset, namespace, name string)

WaitForDeploymentReplicasReadyOrDie adds the ability to fatal out if the replicas don't become ready

func WaitForPVCAnnotation

func WaitForPVCAnnotation(clientSet *kubernetes.Clientset, namespace string, pvc *k8sv1.PersistentVolumeClaim, annotation string) (string, bool, error)

WaitForPVCAnnotation waits for an anotation to appear on a PVC

func WaitForPVCAnnotationWithValue

func WaitForPVCAnnotationWithValue(clientSet *kubernetes.Clientset, namespace string, pvc *k8sv1.PersistentVolumeClaim, annotation, expected string) (bool, error)

WaitForPVCAnnotationWithValue waits for an annotation with a specific value on a PVC

func WaitForPersistentVolumeClaimPhase

func WaitForPersistentVolumeClaimPhase(clientSet *kubernetes.Clientset, namespace string, phase k8sv1.PersistentVolumeClaimPhase, pvcName string) error

WaitForPersistentVolumeClaimPhase waits for the PVC to be in a particular phase (Pending, Bound, or Lost)

func WaitPVCDeleted added in v1.4.0

func WaitPVCDeleted(clientSet *kubernetes.Clientset, pvcName, namespace string, timeout time.Duration) (bool, error)

WaitPVCDeleted polls the specified PVC until timeout or it's not found, returns true if deleted in the specified timeout period, and any errors

func WaitPVCUploadPodStatusRunning

func WaitPVCUploadPodStatusRunning(clientSet *kubernetes.Clientset, pvc *k8sv1.PersistentVolumeClaim) (bool, error)

WaitPVCUploadPodStatusRunning waits for the upload server pod status annotation to be Running

func WaitPodDeleted

func WaitPodDeleted(clientSet *kubernetes.Clientset, podName, namespace string, timeout time.Duration) (bool, error)

WaitPodDeleted waits fo a pod to no longer exist returns whether the pod is deleted along with any error

func WaitTimeoutForPodReady

func WaitTimeoutForPodReady(clientSet *kubernetes.Clientset, podName, namespace string, timeout time.Duration) error

WaitTimeoutForPodReady waits for the given pod to be created and ready

func WaitTimeoutForPodStatus

func WaitTimeoutForPodStatus(clientSet *kubernetes.Clientset, podName, namespace string, status k8sv1.PodPhase, timeout time.Duration) error

WaitTimeoutForPodStatus waits for the given pod to be created and have a expected status

func WaitTimeoutForPodSucceeded

func WaitTimeoutForPodSucceeded(clientSet *kubernetes.Clientset, podName, namespace string, timeout time.Duration) error

WaitTimeoutForPodSucceeded waits for pod to succeed

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL