utils

package
v1.31.0-rc.0 Latest Latest
Warning

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

Go to latest
Published: Jul 30, 2024 License: Apache-2.0 Imports: 65 Imported by: 653

Documentation

Index

Constants

This section is empty.

Variables

View Source
var LocalhostCert = []byte(`-----BEGIN CERTIFICATE-----
MIIDGDCCAgCgAwIBAgIQTKCKn99d5HhQVCLln2Q+eTANBgkqhkiG9w0BAQsFADAS
MRAwDgYDVQQKEwdBY21lIENvMCAXDTcwMDEwMTAwMDAwMFoYDzIwODQwMTI5MTYw
MDAwWjASMRAwDgYDVQQKEwdBY21lIENvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEA1Z5/aTwqY706M34tn60l8ZHkanWDl8mM1pYf4Q7qg3zA9XqWLX6S
4rTYDYCb4stEasC72lQnbEWHbthiQE76zubP8WOFHdvGR3mjAvHWz4FxvLOTheZ+
3iDUrl6Aj9UIsYqzmpBJAoY4+vGGf+xHvuukHrVcFqR9ZuBdZuJ/HbbjUyuNr3X9
erNIr5Ha17gVzf17SNbYgNrX9gbCeEB8Z9Ox7dVuJhLDkpF0T/B5Zld3BjyUVY/T
cukU4dTVp6isbWPvCMRCZCCOpb+qIhxEjJ0n6tnPt8nf9lvDl4SWMl6X1bH+2EFa
a8R06G0QI+XhwPyjXUyCR8QEOZPCR5wyqQIDAQABo2gwZjAOBgNVHQ8BAf8EBAMC
AqQwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zAuBgNVHREE
JzAlggtleGFtcGxlLmNvbYcEfwAAAYcQAAAAAAAAAAAAAAAAAAAAATANBgkqhkiG
9w0BAQsFAAOCAQEAThqgJ/AFqaANsOp48lojDZfZBFxJQ3A4zfR/MgggUoQ9cP3V
rxuKAFWQjze1EZc7J9iO1WvH98lOGVNRY/t2VIrVoSsBiALP86Eew9WucP60tbv2
8/zsBDSfEo9Wl+Q/gwdEh8dgciUKROvCm76EgAwPGicMAgRsxXgwXHhS5e8nnbIE
Ewaqvb5dY++6kh0Oz+adtNT5OqOwXTIRI67WuEe6/B3Z4LNVPQDIj7ZUJGNw8e6L
F4nkUthwlKx4yEJHZBRuFPnO7Z81jNKuwL276+mczRH7piI6z9uyMV/JbEsOIxyL
W6CzB7pZ9Nj1YLpgzc1r6oONHLokMJJIz/IvkQ==
-----END CERTIFICATE-----`)

LocalhostCert was generated from crypto/tls/generate_cert.go with the following command:

go run generate_cert.go  --rsa-bits 2048 --host 127.0.0.1,::1,example.com --ca --start-date "Jan 1 00:00:00 1970" --duration=1000000h
View Source
var LocalhostKey = []byte(`-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA1Z5/aTwqY706M34tn60l8ZHkanWDl8mM1pYf4Q7qg3zA9XqW
LX6S4rTYDYCb4stEasC72lQnbEWHbthiQE76zubP8WOFHdvGR3mjAvHWz4FxvLOT
heZ+3iDUrl6Aj9UIsYqzmpBJAoY4+vGGf+xHvuukHrVcFqR9ZuBdZuJ/HbbjUyuN
r3X9erNIr5Ha17gVzf17SNbYgNrX9gbCeEB8Z9Ox7dVuJhLDkpF0T/B5Zld3BjyU
VY/TcukU4dTVp6isbWPvCMRCZCCOpb+qIhxEjJ0n6tnPt8nf9lvDl4SWMl6X1bH+
2EFaa8R06G0QI+XhwPyjXUyCR8QEOZPCR5wyqQIDAQABAoIBAFAJmb1pMIy8OpFO
hnOcYWoYepe0vgBiIOXJy9n8R7vKQ1X2f0w+b3SHw6eTd1TLSjAhVIEiJL85cdwD
MRTdQrXA30qXOioMzUa8eWpCCHUpD99e/TgfO4uoi2dluw+pBx/WUyLnSqOqfLDx
S66kbeFH0u86jm1hZibki7pfxLbxvu7KQgPe0meO5/13Retztz7/xa/pWIY71Zqd
YC8UckuQdWUTxfuQf0470lAK34GZlDy9tvdVOG/PmNkG4j6OQjy0Kmz4Uk7rewKo
ZbdphaLPJ2A4Rdqfn4WCoyDnxlfV861T922/dEDZEbNWiQpB81G8OfLL+FLHxyIT
LKEu4R0CgYEA4RDj9jatJ/wGkMZBt+UF05mcJlRVMEijqdKgFwR2PP8b924Ka1mj
9zqWsfbxQbdPdwsCeVBZrSlTEmuFSQLeWtqBxBKBTps/tUP0qZf7HjfSmcVI89WE
3ab8LFjfh4PtK/LOq2D1GRZZkFliqi0gKwYdDoK6gxXWwrumXq4c2l8CgYEA8vrX
dMuGCNDjNQkGXx3sr8pyHCDrSNR4Z4FrSlVUkgAW1L7FrCM911BuGh86FcOu9O/1
Ggo0E8ge7qhQiXhB5vOo7hiVzSp0FxxCtGSlpdp4W6wx6ZWK8+Pc+6Moos03XdG7
MKsdPGDciUn9VMOP3r8huX/btFTh90C/L50sH/cCgYAd02wyW8qUqux/0RYydZJR
GWE9Hx3u+SFfRv9aLYgxyyj8oEOXOFjnUYdY7D3KlK1ePEJGq2RG81wD6+XM6Clp
Zt2di0pBjYdi0S+iLfbkaUdqg1+ImLoz2YY/pkNxJQWQNmw2//FbMsAJxh6yKKrD
qNq+6oonBwTf55hDodVHBwKBgEHgEBnyM9ygBXmTgM645jqiwF0v75pHQH2PcO8u
Q0dyDr6PGjiZNWLyw2cBoFXWP9DYXbM5oPTcBMbfizY6DGP5G4uxzqtZHzBE0TDn
OKHGoWr5PG7/xDRrSrZOfe3lhWVCP2XqfnqoKCJwlOYuPws89n+8UmyJttm6DBt0
mUnxAoGBAIvbR87ZFXkvqstLs4KrdqTz4TQIcpzB3wENukHODPA6C1gzWTqp+OEe
GMNltPfGCLO+YmoMQuTpb0kECYV3k4jR3gXO6YvlL9KbY+UOA6P0dDX4ROi2Rklj
yh+lxFLYa1vlzzi9r8B7nkR9hrOGMvkfXF42X89g7lx4uMtu2I4q
-----END RSA PRIVATE KEY-----`)

LocalhostKey is the private key for LocalhostCert.

Functions

func AddLabelsToNode added in v1.5.0

func AddLabelsToNode(c clientset.Interface, nodeName string, labels map[string]string) error

func AdmissionWebhookHandler added in v1.16.0

func AdmissionWebhookHandler(t *testing.T, admit func(*v1beta1.AdmissionReview) error) http.HandlerFunc

AdmissionWebhookHandler creates a HandlerFunc that decodes/encodes AdmissionReview and performs given admit function

func CheckDeploymentRevisionAndImage added in v1.9.0

func CheckDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName, revision, image string) error

CheckDeploymentRevisionAndImage checks if the input deployment's and its new replica set's revision and image are as expected.

func CreateDeploymentWithRetries added in v1.10.0

func CreateDeploymentWithRetries(c clientset.Interface, namespace string, obj *apps.Deployment) error

func CreatePersistentVolumeClaimWithRetries added in v1.16.0

func CreatePersistentVolumeClaimWithRetries(c clientset.Interface, namespace string, obj *v1.PersistentVolumeClaim) error

func CreatePersistentVolumeWithRetries added in v1.16.0

func CreatePersistentVolumeWithRetries(c clientset.Interface, obj *v1.PersistentVolume) error

func CreatePod added in v1.8.0

func CreatePod(ctx context.Context, client clientset.Interface, namespace string, podCount int, podTemplate PodTemplate) error

func CreatePodWithPersistentVolume added in v1.16.0

func CreatePodWithPersistentVolume(ctx context.Context, client clientset.Interface, namespace string, claimTemplate *v1.PersistentVolumeClaim, factory volumeFactory, podTemplate PodTemplate, count int, bindVolume bool) error

func CreatePodWithRetries added in v1.10.0

func CreatePodWithRetries(c clientset.Interface, namespace string, obj *v1.Pod) error

func CreateRCWithRetries added in v1.10.0

func CreateRCWithRetries(c clientset.Interface, namespace string, obj *v1.ReplicationController) error

func CreateReplicaSetWithRetries added in v1.10.0

func CreateReplicaSetWithRetries(c clientset.Interface, namespace string, obj *apps.ReplicaSet) error

func CreateServiceWithRetries added in v1.10.0

func CreateServiceWithRetries(c clientset.Interface, namespace string, obj *v1.Service) error

func DeleteResource added in v1.26.0

func DeleteResource(c clientset.Interface, kind schema.GroupKind, namespace, name string, options metav1.DeleteOptions) error

func DoPrepareNode added in v1.5.0

func DoPrepareNode(ctx context.Context, client clientset.Interface, node *v1.Node, strategy PrepareNodeStrategy) error

func EncodeCertPEM added in v1.15.0

func EncodeCertPEM(cert *x509.Certificate) []byte

EncodeCertPEM returns PEM-endcoded certificate data

func FailedContainers added in v1.4.5

func FailedContainers(pod *v1.Pod) map[string]ContainerFailures

FailedContainers inspects all containers in a pod and returns failure information for containers that have failed or been restarted. A map is returned where the key is the containerID and the value is a struct containing the restart and failure information

func GetAllReplicaSets added in v1.23.0

func GetAllReplicaSets(deployment *apps.Deployment, c clientset.Interface) ([]*apps.ReplicaSet, []*apps.ReplicaSet, *apps.ReplicaSet, error)

GetAllReplicaSets returns the old and new replica sets targeted by the given Deployment. It gets PodList and ReplicaSetList from client interface. Note that the first set of old replica sets doesn't include the ones with no pods, and the second set of old replica sets include all old replica sets. The third returned value is the new replica set, and it may be nil if it doesn't exist yet.

func GetCAdvisorRootDir added in v1.11.0

func GetCAdvisorRootDir() (string, error)

GetCAdvisorRootDir returns the root directory for cAdvisor, if present in the gopath.

func GetK8sBuildOutputDir added in v1.11.0

func GetK8sBuildOutputDir(isDockerizedBuild bool, targetArch string) (string, error)

GetK8sBuildOutputDir returns the build output directory for k8s For dockerized build, targetArch (eg: 'linux/arm64', 'linux/amd64') must be explicitly specified For non dockerized build, targetArch is ignored

func GetK8sRootDir added in v1.11.0

func GetK8sRootDir() (string, error)

GetK8sRootDir returns the root directory for kubernetes, if present in the gopath.

func GetNewReplicaSet added in v1.23.0

func GetNewReplicaSet(deployment *apps.Deployment, c clientset.Interface) (*apps.ReplicaSet, error)

GetNewReplicaSet returns a replica set that matches the intent of the given deployment; get ReplicaSetList from client interface. Returns nil if the new replica set doesn't exist yet.

func GetNodeCondition added in v1.14.0

func GetNodeCondition(status *v1.NodeStatus, conditionType v1.NodeConditionType) (int, *v1.NodeCondition)

GetNodeCondition extracts the provided condition from the given status and returns that. Returns nil and -1 if the condition is not present, and the index of the located condition.

func GetOldReplicaSets added in v1.23.0

func GetOldReplicaSets(deployment *apps.Deployment, c clientset.Interface) ([]*apps.ReplicaSet, []*apps.ReplicaSet, error)

GetOldReplicaSets returns the old replica sets targeted by the given Deployment; get PodList and ReplicaSetList from client interface. Note that the first set of old replica sets doesn't include the ones with no pods, and the second set of old replica sets include all old replica sets.

func LogPodsOfDeployment added in v1.7.0

func LogPodsOfDeployment(c clientset.Interface, deployment *apps.Deployment, rsList []*apps.ReplicaSet, logf LogfFn)

func LogReplicaSetsOfDeployment added in v1.7.0

func LogReplicaSetsOfDeployment(deployment *apps.Deployment, allOldRSs []*apps.ReplicaSet, newRS *apps.ReplicaSet, logf LogfFn)

func MakePodSpec added in v1.5.0

func MakePodSpec() v1.PodSpec

func MakeTempDirOrDie

func MakeTempDirOrDie(prefix string, baseDir string) string

func NewAdmissionWebhookServer added in v1.16.0

func NewAdmissionWebhookServer(handler http.Handler) (string, func(), error)

NewAdmissionWebhookServer sets up a webhook server with TLS enabled, returns URL and Close function for the server

func NewPrivateKey added in v1.15.0

func NewPrivateKey() (*rsa.PrivateKey, error)

NewPrivateKey creates an RSA private key

func NewSignedCert added in v1.15.0

func NewSignedCert(cfg *certutil.Config, key crypto.Signer, caCert *x509.Certificate, caKey crypto.Signer) (*x509.Certificate, error)

NewSignedCert creates a signed certificate using the given CA certificate and key

func PodRunningReady added in v1.4.5

func PodRunningReady(p *v1.Pod) (bool, error)

PodRunningReady checks whether pod p's phase is running and it has a ready condition of status true.

func PodRunningReadyOrSucceeded added in v1.4.5

func PodRunningReadyOrSucceeded(p *v1.Pod) (bool, error)

func PodSucceeded added in v1.26.0

func PodSucceeded(p *v1.Pod) (bool, error)

func RemoveLabelOffNode added in v1.5.0

func RemoveLabelOffNode(c clientset.Interface, nodeName string, labelKeys []string) error

RemoveLabelOffNode is for cleaning up labels temporarily added to node, won't fail if target label doesn't exist or has been removed.

func RetryErrorCondition added in v1.11.0

func RetryErrorCondition(condition wait.ConditionFunc) wait.ConditionFunc

func RetryWithExponentialBackOff added in v1.10.0

func RetryWithExponentialBackOff(fn wait.ConditionFunc) error

Utility for retrying the given function with exponential backoff.

func RootDir added in v1.11.0

func RootDir() (string, error)

RootDir gets the on-disk kubernetes source directory, returning an error is none is found

func RunDeployment added in v1.5.0

func RunDeployment(ctx context.Context, config DeploymentConfig) error

RunDeployment Launches (and verifies correctness) of a Deployment and will wait for all pods it spawns to become "Running". It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).

func RunPodAndGetNodeName added in v1.6.0

func RunPodAndGetNodeName(ctx context.Context, c clientset.Interface, pod *v1.Pod, timeout time.Duration) (string, error)

func RunRC added in v1.5.0

func RunRC(ctx context.Context, config RCConfig) error

RunRC Launches (and verifies correctness) of a Replication Controller and will wait for all pods it spawns to become "Running". It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).

func RunReplicaSet added in v1.5.0

func RunReplicaSet(ctx context.Context, config ReplicaSetConfig) error

RunReplicaSet launches (and verifies correctness) of a ReplicaSet and waits until all the pods it launches to reach the "Running" state. It's the caller's responsibility to clean up externally (i.e. use the namespace lifecycle for handling Cleanup).

func ScaleResourceWithRetries added in v1.10.0

func ScaleResourceWithRetries(scalesGetter scaleclient.ScalesGetter, namespace, name string, size uint, gvr schema.GroupVersionResource) error

func StartPods added in v1.5.0

func StartPods(c clientset.Interface, replicas int, namespace string, podNamePrefix string,
	pod v1.Pod, waitForRunning bool, logFunc func(fmt string, args ...interface{})) error

Simplified version of RunRC, that does not create RC, but creates plain Pods. Optionally waits for pods to start running (if waitForRunning == true). The number of replicas must be non-zero.

func TerminatedContainers added in v1.4.5

func TerminatedContainers(pod *v1.Pod) map[string]string

TerminatedContainers inspects all containers in a pod and returns a map of "container name: termination reason", for all currently terminated containers.

func UpdateDeploymentWithRetries added in v1.8.0

func UpdateDeploymentWithRetries(c clientset.Interface, namespace, name string, applyUpdate UpdateDeploymentFunc, logf LogfFn, pollInterval, pollTimeout time.Duration) (*apps.Deployment, error)

func UpdateReplicaSetWithRetries added in v1.9.0

func UpdateReplicaSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate UpdateReplicaSetFunc, logf LogfFn, pollInterval, pollTimeout time.Duration) (*apps.ReplicaSet, error)

func VerifyLabelsRemoved added in v1.5.0

func VerifyLabelsRemoved(c clientset.Interface, nodeName string, labelKeys []string) error

VerifyLabelsRemoved checks if Node for given nodeName does not have any of labels from labelKeys. Return non-nil error if it does.

func WaitForDeploymentComplete added in v1.9.0

func WaitForDeploymentComplete(c clientset.Interface, d *apps.Deployment, logf LogfFn, pollInterval, pollTimeout time.Duration) error

Waits for the deployment to complete, and don't check if rolling update strategy is broken. Rolling update strategy is used only during a rolling update, and can be violated in other situations, such as shortly after a scaling event or the deployment is just created.

func WaitForDeploymentCompleteAndCheckRolling added in v1.9.0

func WaitForDeploymentCompleteAndCheckRolling(c clientset.Interface, d *apps.Deployment, logf LogfFn, pollInterval, pollTimeout time.Duration) error

Waits for the deployment to complete, and check rolling update strategy isn't broken at any times. Rolling update strategy should not be broken during a rolling update.

func WaitForDeploymentRevisionAndImage added in v1.7.0

func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName string, revision, image string, logf LogfFn, pollInterval, pollTimeout time.Duration) error

WaitForDeploymentRevisionAndImage waits for the deployment's and its new RS's revision and container image to match the given revision and image. Note that deployment revision and its new RS revision should be updated shortly, so we only wait for 1 minute here to fail early.

func WaitForDeploymentUpdatedReplicasGTE added in v1.10.0

func WaitForDeploymentUpdatedReplicasGTE(c clientset.Interface, ns, deploymentName string, minUpdatedReplicas int32, desiredGeneration int64, pollInterval, pollTimeout time.Duration) error

WaitForDeploymentUpdatedReplicasGTE waits for given deployment to be observed by the controller and has at least a number of updatedReplicas

func WaitForDeploymentWithCondition added in v1.9.0

func WaitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, reason string, condType apps.DeploymentConditionType, logf LogfFn, pollInterval, pollTimeout time.Duration) error

func WaitForEnoughPodsWithLabelRunning added in v1.10.0

func WaitForEnoughPodsWithLabelRunning(c clientset.Interface, ns string, label labels.Selector, replicas int) error

Wait up to 10 minutes for at least 'replicas' many pods to be Running and at least one matching pod exists. If 'replicas' is < 0, wait for all matching pods running.

func WaitForObservedDeployment added in v1.8.0

func WaitForObservedDeployment(c clientset.Interface, ns, deploymentName string, desiredGeneration int64) error

func WaitForPodsWithLabelRunning added in v1.5.0

func WaitForPodsWithLabelRunning(c clientset.Interface, ns string, label labels.Selector) error

Wait up to 10 minutes for all matching pods to become Running and at least one matching pod exists.

func WaitRSStable added in v1.9.0

func WaitRSStable(t *testing.T, clientSet clientset.Interface, rs *apps.ReplicaSet, pollInterval, pollTimeout time.Duration) error

Verify .Status.Replicas is equal to .Spec.Replicas

Types

type AuditAnnotationsFilter added in v1.27.0

type AuditAnnotationsFilter func(key, val string) bool

type AuditEvent added in v1.12.0

type AuditEvent struct {
	ID                 types.UID
	Level              auditinternal.Level
	Stage              auditinternal.Stage
	RequestURI         string
	Verb               string
	Code               int32
	User               string
	ImpersonatedUser   string
	ImpersonatedGroups string
	Resource           string
	Namespace          string
	RequestObject      bool
	ResponseObject     bool
	AuthorizeDecision  string

	// The Check functions in this package takes ownerships of these maps. You should
	// not reference these maps after calling the Check functions.
	AdmissionWebhookMutationAnnotations map[string]string
	AdmissionWebhookPatchAnnotations    map[string]string

	// Only populated when a filter is provided to testEventFromInternalFiltered
	CustomAuditAnnotations map[string]string
}

AuditEvent is a simplified representation of an audit event for testing purposes

type ContainerFailures added in v1.4.5

type ContainerFailures struct {
	Restarts int
	// contains filtered or unexported fields
}

type CountToPodStrategy added in v1.5.0

type CountToPodStrategy struct {
	Count    int
	Strategy TestPodCreateStrategy
}

type CountToStrategy added in v1.5.0

type CountToStrategy struct {
	Count    int
	Strategy PrepareNodeStrategy
}

type DeploymentConfig added in v1.5.0

type DeploymentConfig struct {
	RCConfig
}

type JobConfig added in v1.6.0

type JobConfig struct {
	RCConfig
}

type LabelNodePrepareStrategy added in v1.5.0

type LabelNodePrepareStrategy struct {
	LabelKey    string
	LabelValues []string
	// contains filtered or unexported fields
}

func NewLabelNodePrepareStrategy added in v1.5.0

func NewLabelNodePrepareStrategy(labelKey string, labelValues ...string) *LabelNodePrepareStrategy

func (*LabelNodePrepareStrategy) CleanupDependentObjects added in v1.16.0

func (*LabelNodePrepareStrategy) CleanupDependentObjects(ctx context.Context, nodeName string, client clientset.Interface) error

func (*LabelNodePrepareStrategy) CleanupNode added in v1.5.0

func (s *LabelNodePrepareStrategy) CleanupNode(ctx context.Context, node *v1.Node) *v1.Node

func (*LabelNodePrepareStrategy) PrepareDependentObjects added in v1.16.0

func (*LabelNodePrepareStrategy) PrepareDependentObjects(ctx context.Context, node *v1.Node, client clientset.Interface) error

func (*LabelNodePrepareStrategy) PreparePatch added in v1.5.0

func (s *LabelNodePrepareStrategy) PreparePatch(*v1.Node) []byte

type LogfFn added in v1.7.0

type LogfFn func(format string, args ...interface{})

type MissingEventsReport added in v1.14.0

type MissingEventsReport struct {
	FirstEventChecked *auditinternal.Event
	LastEventChecked  *auditinternal.Event
	NumEventsChecked  int
	MissingEvents     []AuditEvent
	AllEvents         []AuditEvent
}

MissingEventsReport provides an analysis if any events are missing

func CheckAuditLines added in v1.12.0

func CheckAuditLines(stream io.Reader, expected []AuditEvent, version schema.GroupVersion) (missingReport *MissingEventsReport, err error)

CheckAuditLines searches the audit log for the expected audit lines.

func CheckAuditLinesFiltered added in v1.27.0

func CheckAuditLinesFiltered(stream io.Reader, expected []AuditEvent, version schema.GroupVersion, customAnnotationsFilter AuditAnnotationsFilter) (missingReport *MissingEventsReport, err error)

CheckAuditLinesFiltered searches the audit log for the expected audit lines, customAnnotationsFilter controls which audit annotations are added to AuditEvent.CustomAuditAnnotations. If the customAnnotationsFilter is nil, AuditEvent.CustomAuditAnnotations will be empty.

func (*MissingEventsReport) String added in v1.14.0

func (m *MissingEventsReport) String() string

String returns a human readable string representation of the report

type NodeAllocatableStrategy added in v1.16.0

type NodeAllocatableStrategy struct {
	// Node.status.allocatable to fill to all nodes.
	NodeAllocatable map[v1.ResourceName]string
	// Map <driver_name> -> VolumeNodeResources to fill into csiNode.spec.drivers[<driver_name>].
	CsiNodeAllocatable map[string]*storagev1.VolumeNodeResources
	// List of in-tree volume plugins migrated to CSI.
	MigratedPlugins []string
}

NodeAllocatableStrategy fills node.status.allocatable and csiNode.spec.drivers[*].allocatable. csiNode is created if it does not exist. On cleanup, any csiNode.spec.drivers[*].allocatable is set to nil.

func NewNodeAllocatableStrategy added in v1.16.0

func NewNodeAllocatableStrategy(nodeAllocatable map[v1.ResourceName]string, csiNodeAllocatable map[string]*storagev1.VolumeNodeResources, migratedPlugins []string) *NodeAllocatableStrategy

func (*NodeAllocatableStrategy) CleanupDependentObjects added in v1.16.0

func (s *NodeAllocatableStrategy) CleanupDependentObjects(ctx context.Context, nodeName string, client clientset.Interface) error

func (*NodeAllocatableStrategy) CleanupNode added in v1.16.0

func (s *NodeAllocatableStrategy) CleanupNode(ctx context.Context, node *v1.Node) *v1.Node

func (*NodeAllocatableStrategy) PrepareDependentObjects added in v1.16.0

func (s *NodeAllocatableStrategy) PrepareDependentObjects(ctx context.Context, node *v1.Node, client clientset.Interface) error

func (*NodeAllocatableStrategy) PreparePatch added in v1.16.0

func (s *NodeAllocatableStrategy) PreparePatch(node *v1.Node) []byte

type PodStore added in v1.5.0

type PodStore struct {
	cache.Store

	Reflector *cache.Reflector
	// contains filtered or unexported fields
}

Convenient wrapper around cache.Store that returns list of v1.Pod instead of interface{}.

func NewPodStore added in v1.5.0

func NewPodStore(c clientset.Interface, namespace string, label labels.Selector, field fields.Selector) (*PodStore, error)

func (*PodStore) List added in v1.5.0

func (s *PodStore) List() []*v1.Pod

func (*PodStore) Stop added in v1.5.0

func (s *PodStore) Stop()

type PodTemplate added in v1.31.0

type PodTemplate interface {
	// GetPodTemplate returns a pod template for one out of many different pods.
	// Pods with numbers in the range [index, index+count-1] will be created
	// based on what GetPodTemplate returns. It gets called multiple times
	// with a fixed index and increasing count parameters. This number can,
	// but doesn't have to be, used to modify parts of the pod spec like
	// for example a named reference to some other object.
	GetPodTemplate(index, count int) (*v1.Pod, error)
}

PodTemplate is responsible for creating a v1.Pod instance that is ready to be sent to the API server.

func StaticPodTemplate added in v1.31.0

func StaticPodTemplate(pod *v1.Pod) PodTemplate

StaticPodTemplate returns an implementation of PodTemplate for a fixed pod that is the same regardless of the index.

type PrepareNodeStrategy added in v1.5.0

type PrepareNodeStrategy interface {
	// Modify pre-created Node objects before the test starts.
	PreparePatch(node *v1.Node) []byte
	// Create or modify any objects that depend on the node before the test starts.
	// Caller will re-try when http.StatusConflict error is returned.
	PrepareDependentObjects(ctx context.Context, node *v1.Node, client clientset.Interface) error
	// Clean up any node modifications after the test finishes.
	CleanupNode(ctx context.Context, node *v1.Node) *v1.Node
	// Clean up any objects that depend on the node after the test finishes.
	// Caller will re-try when http.StatusConflict error is returned.
	CleanupDependentObjects(ctx context.Context, nodeName string, client clientset.Interface) error
}

type RCConfig added in v1.5.0

type RCConfig struct {
	Affinity                      *v1.Affinity
	Client                        clientset.Interface
	ScalesGetter                  scaleclient.ScalesGetter
	Image                         string
	Command                       []string
	Name                          string
	Namespace                     string
	PollInterval                  time.Duration
	Timeout                       time.Duration
	PodStatusFile                 *os.File
	Replicas                      int
	CpuRequest                    int64 // millicores
	CpuLimit                      int64 // millicores
	MemRequest                    int64 // bytes
	MemLimit                      int64 // bytes
	GpuLimit                      int64 // count
	ReadinessProbe                *v1.Probe
	DNSPolicy                     *v1.DNSPolicy
	PriorityClassName             string
	TerminationGracePeriodSeconds *int64
	Lifecycle                     *v1.Lifecycle
	SchedulerName                 string

	// Env vars, set the same for every pod.
	Env map[string]string

	// Extra labels and annotations added to every pod.
	Labels      map[string]string
	Annotations map[string]string

	// Node selector for pods in the RC.
	NodeSelector map[string]string

	// Tolerations for pods in the RC.
	Tolerations []v1.Toleration

	// Ports to declare in the container (map of name to containerPort).
	Ports map[string]int
	// Ports to declare in the container as host and container ports.
	HostPorts map[string]int

	Volumes      []v1.Volume
	VolumeMounts []v1.VolumeMount

	// Pointer to a list of pods; if non-nil, will be set to a list of pods
	// created by this RC by RunRC.
	CreatedPods *[]*v1.Pod

	// Maximum allowable container failures. If exceeded, RunRC returns an error.
	// Defaults to replicas*0.1 if unspecified.
	MaxContainerFailures *int
	// Maximum allowed pod deletions count. If exceeded, RunRC returns an error.
	// Defaults to 0.
	MaxAllowedPodDeletions int

	// If set to false starting RC will print progress, otherwise only errors will be printed.
	Silent bool

	// If set this function will be used to print log lines instead of klog.
	LogFunc func(fmt string, args ...interface{})
	// If set those functions will be used to gather data from Nodes - in integration tests where no
	// kubelets are running those variables should be nil.
	NodeDumpFunc      func(ctx context.Context, c clientset.Interface, nodeNames []string, logFunc func(fmt string, args ...interface{}))
	ContainerDumpFunc func(ctx context.Context, c clientset.Interface, ns string, logFunc func(ftm string, args ...interface{}))

	// Names of the secrets and configmaps to mount.
	SecretNames    []string
	ConfigMapNames []string

	ServiceAccountTokenProjections int

	// Additional containers to run in the pod
	AdditionalContainers []v1.Container

	// Security context for created pods
	SecurityContext *v1.SecurityContext
}

func (*RCConfig) RCConfigLog added in v1.5.0

func (rc *RCConfig) RCConfigLog(fmt string, args ...interface{})

type RCStartupStatus added in v1.5.0

type RCStartupStatus struct {
	Expected              int
	Terminating           int
	Running               int
	RunningButNotReady    int
	Waiting               int
	Pending               int
	Scheduled             int
	Unknown               int
	Inactive              int
	FailedContainers      int
	Created               []*v1.Pod
	ContainerRestartNodes sets.String
}

func (*RCStartupStatus) String added in v1.5.0

func (s *RCStartupStatus) String(name string) string

type ReplicaSetConfig added in v1.5.0

type ReplicaSetConfig struct {
	RCConfig
}

type RunObjectConfig added in v1.6.0

type RunObjectConfig interface {
	Run() error
	GetName() string
	GetNamespace() string
	GetKind() schema.GroupKind
	GetClient() clientset.Interface
	GetScalesGetter() scaleclient.ScalesGetter
	SetClient(clientset.Interface)
	SetScalesClient(scaleclient.ScalesGetter)
	GetReplicas() int
	GetLabelValue(string) (string, bool)
	GetGroupResource() schema.GroupResource
	GetGroupVersionResource() schema.GroupVersionResource
}

type TestNodePreparer added in v1.5.0

type TestNodePreparer interface {
	PrepareNodes(ctx context.Context, nextNodeIndex int) error
	CleanupNodes(ctx context.Context) error
}

type TestPodCreateStrategy added in v1.5.0

type TestPodCreateStrategy func(ctx context.Context, client clientset.Interface, namespace string, podCount int) error

func NewCreatePodWithPersistentVolumeStrategy added in v1.16.0

func NewCreatePodWithPersistentVolumeStrategy(claimTemplate *v1.PersistentVolumeClaim, factory volumeFactory, podTemplate PodTemplate) TestPodCreateStrategy

func NewCustomCreatePodStrategy added in v1.5.0

func NewCustomCreatePodStrategy(podTemplate PodTemplate) TestPodCreateStrategy

type TestPodCreator added in v1.5.0

type TestPodCreator struct {
	Client clientset.Interface
	// namespace -> count -> strategy
	Config *TestPodCreatorConfig
}

func NewTestPodCreator added in v1.5.0

func NewTestPodCreator(client clientset.Interface, config *TestPodCreatorConfig) *TestPodCreator

func (*TestPodCreator) CreatePods added in v1.5.0

func (c *TestPodCreator) CreatePods(ctx context.Context) error

type TestPodCreatorConfig added in v1.5.0

type TestPodCreatorConfig map[string][]CountToPodStrategy

func NewTestPodCreatorConfig added in v1.5.0

func NewTestPodCreatorConfig() *TestPodCreatorConfig

func (*TestPodCreatorConfig) AddStrategy added in v1.5.0

func (c *TestPodCreatorConfig) AddStrategy(
	namespace string, podCount int, strategy TestPodCreateStrategy)

type TrivialNodePrepareStrategy added in v1.5.0

type TrivialNodePrepareStrategy struct{}

func (*TrivialNodePrepareStrategy) CleanupDependentObjects added in v1.16.0

func (*TrivialNodePrepareStrategy) CleanupDependentObjects(ctx context.Context, nodeName string, client clientset.Interface) error

func (*TrivialNodePrepareStrategy) CleanupNode added in v1.5.0

func (*TrivialNodePrepareStrategy) CleanupNode(ctx context.Context, node *v1.Node) *v1.Node

func (*TrivialNodePrepareStrategy) PrepareDependentObjects added in v1.16.0

func (*TrivialNodePrepareStrategy) PrepareDependentObjects(ctx context.Context, node *v1.Node, client clientset.Interface) error

func (*TrivialNodePrepareStrategy) PreparePatch added in v1.5.0

func (*TrivialNodePrepareStrategy) PreparePatch(*v1.Node) []byte

type UniqueNodeLabelStrategy added in v1.18.0

type UniqueNodeLabelStrategy struct {
	LabelKey string
}

UniqueNodeLabelStrategy sets a unique label for each node.

func NewUniqueNodeLabelStrategy added in v1.18.0

func NewUniqueNodeLabelStrategy(labelKey string) *UniqueNodeLabelStrategy

func (*UniqueNodeLabelStrategy) CleanupDependentObjects added in v1.18.0

func (*UniqueNodeLabelStrategy) CleanupDependentObjects(ctx context.Context, nodeName string, client clientset.Interface) error

func (*UniqueNodeLabelStrategy) CleanupNode added in v1.18.0

func (s *UniqueNodeLabelStrategy) CleanupNode(ctx context.Context, node *v1.Node) *v1.Node

func (*UniqueNodeLabelStrategy) PrepareDependentObjects added in v1.18.0

func (*UniqueNodeLabelStrategy) PrepareDependentObjects(ctx context.Context, node *v1.Node, client clientset.Interface) error

func (*UniqueNodeLabelStrategy) PreparePatch added in v1.18.0

func (s *UniqueNodeLabelStrategy) PreparePatch(*v1.Node) []byte

type UpdateDeploymentFunc added in v1.8.0

type UpdateDeploymentFunc func(d *apps.Deployment)

type UpdateReplicaSetFunc added in v1.9.0

type UpdateReplicaSetFunc func(d *apps.ReplicaSet)

Directories

Path Synopsis
Package format is an extension of Gomega's format package which improves printing of objects that can be serialized well as YAML, like the structs in the Kubernetes API.
Package format is an extension of Gomega's format package which improves printing of objects that can be serialized well as YAML, like the structs in the Kubernetes API.
Package junit provides data structures to allow easy XML encoding and decoding of JUnit test results.
Package junit provides data structures to allow easy XML encoding and decoding of JUnit test results.
Package ktesting is a wrapper around k8s.io/klog/v2/ktesting.
Package ktesting is a wrapper around k8s.io/klog/v2/ktesting.
examples/gomega
The tests will fail and therefore are excluded from normal "make test" via the "example" build tag.
The tests will fail and therefore are excluded from normal "make test" via the "example" build tag.
examples/logging
The tests will fail and therefore are excluded from normal "make test" via the "example" build tag.
The tests will fail and therefore are excluded from normal "make test" via the "example" build tag.
examples/with_ktesting
The tests will fail and therefore are excluded from normal "make test" via the "example" build tag.
The tests will fail and therefore are excluded from normal "make test" via the "example" build tag.
examples/without_ktesting
The tests will fail and therefore are excluded from normal "make test" via the "example" build tag.
The tests will fail and therefore are excluded from normal "make test" via the "example" build tag.

Jump to

Keyboard shortcuts

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