cluster-api: Index | Files | Directories

package framework

import ""


Package Files

alltypes_helpers.go cluster_helpers.go cluster_proxy.go clusterresourceset_helpers.go control_plane.go controller_helpers.go controlplane_helpers.go convenience.go daemonset_helpers.go deployment_helpers.go docker_logcollector.go interfaces.go machine_helpers.go machinedeployment_helpers.go machinehealthcheck_helpers.go machinepool_helpers.go machines.go namespace_helpers.go pod_helpers.go suite_helpers.go

func AddDeploymentToWorkloadCluster Uses

func AddDeploymentToWorkloadCluster(ctx context.Context, input AddDeploymentToWorkloadClusterInput)

func AddPodDisruptionBudget Uses

func AddPodDisruptionBudget(ctx context.Context, input AddPodDisruptionBudgetInput)

func AssertControlPlaneFailureDomains Uses

func AssertControlPlaneFailureDomains(ctx context.Context, input AssertControlPlaneFailureDomainsInput)

AssertControlPlaneFailureDomains will look at all control plane machines and see what failure domains they were placed in. If machines were placed in unexpected or wrong failure domains the expectation will fail.

func CompleteCommand Uses

func CompleteCommand(cmd *exec.Cmd, desc string, privateArgs bool) *exec.Cmd

CompleteCommand prints a command before running it. Acts as a helper function. privateArgs when true will not print arguments.

func CreateCluster Uses

func CreateCluster(ctx context.Context, input CreateClusterInput, intervals ...interface{})

CreateCluster will create the Cluster and InfraCluster objects.

func CreateJUnitReporterForProw Uses

func CreateJUnitReporterForProw(artifactsDirectory string) *reporters.JUnitReporter

CreateJUnitReporterForProw sets up Ginkgo to create JUnit outputs compatible with Prow.

func CreateKubeadmControlPlane Uses

func CreateKubeadmControlPlane(ctx context.Context, input CreateKubeadmControlPlaneInput, intervals ...interface{})

CreateKubeadmControlPlane creates the control plane object and necessary dependencies.

func CreateMachineDeployment Uses

func CreateMachineDeployment(ctx context.Context, input CreateMachineDeploymentInput)

CreateMachineDeployment creates the machine deployment and dependencies.

func CreateNamespace Uses

func CreateNamespace(ctx context.Context, input CreateNamespaceInput, intervals ...interface{}) *corev1.Namespace

CreateNamespace is used to create a namespace object. If name is empty, a "test-" + util.RandomString(6) name will be generated.

func CreateNamespaceAndWatchEvents Uses

func CreateNamespaceAndWatchEvents(ctx context.Context, input CreateNamespaceAndWatchEventsInput) (*corev1.Namespace, context.CancelFunc)

CreateNamespaceAndWatchEvents creates a namespace and setups a watch for the namespace events.

func CreateRelatedResources Uses

func CreateRelatedResources(ctx context.Context, input CreateRelatedResourcesInput, intervals ...interface{})

CreateRelatedResources is used to create runtime.Objects.

func DeleteAllClustersAndWait Uses

func DeleteAllClustersAndWait(ctx context.Context, input DeleteAllClustersAndWaitInput, intervals ...interface{})

DeleteAllClustersAndWait deletes a cluster object and waits for it to be gone.

func DeleteCluster Uses

func DeleteCluster(ctx context.Context, input DeleteClusterInput)

DeleteCluster deletes the cluster and waits for everything the cluster owned to actually be gone.

func DeleteClusterAndWait Uses

func DeleteClusterAndWait(ctx context.Context, input DeleteClusterAndWaitInput, intervals ...interface{})

DeleteClusterAndWait deletes a cluster object and waits for it to be gone.

func DeleteNamespace Uses

func DeleteNamespace(ctx context.Context, input DeleteNamespaceInput, intervals ...interface{})

DeleteNamespace is used to delete namespace object.

func DeployUnevictablePod Uses

func DeployUnevictablePod(ctx context.Context, input DeployUnevictablePodInput)

func DescribeFailedDeployment Uses

func DescribeFailedDeployment(input WaitForDeploymentsAvailableInput, deployment *appsv1.Deployment) string

DescribeFailedDeployment returns detailed output to help debug a deployment failure in e2e.

func DiscoverClusterResourceSetAndWaitForSuccess Uses

func DiscoverClusterResourceSetAndWaitForSuccess(ctx context.Context, input DiscoverClusterResourceSetAndWaitForSuccessInput, intervals ...interface{})

DiscoverClusterResourceSetAndWaitForSuccess patches a ClusterResourceSet label to the cluster and waits for resources to be created in that cluster.

func DiscoverMachineHealthChecksAndWaitForRemediation Uses

func DiscoverMachineHealthChecksAndWaitForRemediation(ctx context.Context, input DiscoverMachineHealthCheckAndWaitForRemediationInput)

DiscoverMachineHealthCheckAndWaitForRemediation patches an unhealthy node condition to one node observed by the Machine Health Check and then wait for remediation.

func DiscoveryAndWaitForCluster Uses

func DiscoveryAndWaitForCluster(ctx context.Context, input DiscoveryAndWaitForClusterInput, intervals ...interface{}) *clusterv1.Cluster

DiscoveryAndWaitForCluster discovers a cluster object in a namespace and waits for the cluster infrastructure to be provisioned.

func DiscoveryAndWaitForControlPlaneInitialized Uses

func DiscoveryAndWaitForControlPlaneInitialized(ctx context.Context, input DiscoveryAndWaitForControlPlaneInitializedInput, intervals ...interface{}) *controlplanev1.KubeadmControlPlane

DiscoveryAndWaitForControlPlaneInitialized discovers the KubeadmControlPlane object attached to a cluster and waits for it to be initialized.

func DiscoveryAndWaitForMachineDeployments Uses

func DiscoveryAndWaitForMachineDeployments(ctx context.Context, input DiscoveryAndWaitForMachineDeploymentsInput, intervals ...interface{}) []*clusterv1.MachineDeployment

DiscoveryAndWaitForMachineDeployments discovers the MachineDeployments existing in a cluster and waits for them to be ready (all the machine provisioned).

func DiscoveryAndWaitForMachinePools Uses

func DiscoveryAndWaitForMachinePools(ctx context.Context, input DiscoveryAndWaitForMachinePoolsInput, intervals ...interface{}) []*clusterv1exp.MachinePool

DiscoveryAndWaitForMachinePools discovers the MachinePools existing in a cluster and waits for them to be ready (all the machine provisioned).

func DumpAllResources Uses

func DumpAllResources(ctx context.Context, input DumpAllResourcesInput)

DumpAllResources dumps Cluster API related resources to YAML This dump includes all the types belonging to CAPI providers.

func EnsureNamespace Uses

func EnsureNamespace(ctx context.Context, mgmt client.Client, namespace string)

EnsureNamespace verifies if a namespaces exists. If it doesn't it will create the namespace.

func EtcdImageTagCondition Uses

func EtcdImageTagCondition(expectedTag string, expectedCount int) podListCondition

EtcdImageTagCondition returns a podListCondition that ensures the pod image contains the specified image tag

func GatherJUnitReports Uses

func GatherJUnitReports(srcDir string, destDir string) error

GatherJUnitReports will move JUnit files from one directory to another, renaming them in a format expected by Prow.

func GetAllClustersByNamespace Uses

func GetAllClustersByNamespace(ctx context.Context, input GetAllClustersByNamespaceInput) []*clusterv1.Cluster

GetAllClustersByNamespace returns the list of Cluster object in a namespace

func GetCAPIResources Uses

func GetCAPIResources(ctx context.Context, input GetCAPIResourcesInput) []*unstructured.Unstructured

GetCAPIResources reads all the CAPI resources in a namespace. This list includes all the types belonging to CAPI providers.

func GetClusterByName Uses

func GetClusterByName(ctx context.Context, input GetClusterByNameInput) *clusterv1.Cluster

GetClusterByName returns a Cluster object given his name

func GetClusterResourceSetBindingByCluster Uses

func GetClusterResourceSetBindingByCluster(ctx context.Context, input GetClusterResourceSetBindingByClusterInput) *addonsv1.ClusterResourceSetBinding

GetClusterResourceSetBindingByCluster returns the ClusterResourceBinding objects for a cluster.

func GetClusterResourceSets Uses

func GetClusterResourceSets(ctx context.Context, input GetClusterResourceSetsInput) []*addonsv1.ClusterResourceSet

GetClusterResourceSets returns all ClusterResourceSet objects in a namespace.

func GetControlPlaneMachinesByCluster Uses

func GetControlPlaneMachinesByCluster(ctx context.Context, input GetControlPlaneMachinesByClusterInput) []clusterv1.Machine

GetControlPlaneMachinesByCluster returns the Machine objects for a cluster. Important! this method relies on labels that are created by the CAPI controllers during the first reconciliation, so it is necessary to ensure this is already happened before calling it.

func GetControllerDeployments Uses

func GetControllerDeployments(ctx context.Context, input GetControllerDeploymentsInput) []*appsv1.Deployment

GetControllerDeployments returns all the deployment for the cluster API controllers existing in a management cluster.

func GetKubeadmControlPlaneByCluster Uses

func GetKubeadmControlPlaneByCluster(ctx context.Context, input GetKubeadmControlPlaneByClusterInput) *controlplanev1.KubeadmControlPlane

GetKubeadmControlPlaneByCluster returns the KubeadmControlPlane objects for a cluster. Important! this method relies on labels that are created by the CAPI controllers during the first reconciliation, so it is necessary to ensure this is already happened before calling it.

func GetMachineDeploymentsByCluster Uses

func GetMachineDeploymentsByCluster(ctx context.Context, input GetMachineDeploymentsByClusterInput) []*clusterv1.MachineDeployment

GetMachineDeploymentsByCluster returns the MachineDeployments objects for a cluster. Important! this method relies on labels that are created by the CAPI controllers during the first reconciliation, so it is necessary to ensure this is already happened before calling it.

func GetMachineHealthChecksForCluster Uses

func GetMachineHealthChecksForCluster(ctx context.Context, input GetMachineHealthChecksForClusterInput) []*clusterv1.MachineHealthCheck

GetMachineHealthChecksForCluster returns the MachineHealthCheck objects for a cluster. Important! this method relies on labels that are created by the CAPI controllers during the first reconciliation, so it is necessary to ensure this is already happened before calling it.

func GetMachinePoolInstanceVersions Uses

func GetMachinePoolInstanceVersions(ctx context.Context, input GetMachinesPoolInstancesInput) []string

GetMachinePoolInstanceVersions returns the

func GetMachinePoolsByCluster Uses

func GetMachinePoolsByCluster(ctx context.Context, input GetMachinePoolsByClusterInput) []*clusterv1exp.MachinePool

GetMachinePoolsByCluster returns the MachinePools objects for a cluster. Important! this method relies on labels that are created by the CAPI controllers during the first reconciliation, so it is necessary to ensure this is already happened before calling it.

func GetMachinesByMachineDeployments Uses

func GetMachinesByMachineDeployments(ctx context.Context, input GetMachinesByMachineDeploymentsInput) []clusterv1.Machine

GetMachinesByMachineDeployments returns Machine objects for a cluster belonging to a machine deployment. Important! this method relies on labels that are created by the CAPI controllers during the first reconciliation, so it is necessary to ensure this is already happened before calling it.

func GetMachinesByMachineHealthCheck Uses

func GetMachinesByMachineHealthCheck(ctx context.Context, input GetMachinesByMachineHealthCheckInput) []clusterv1.Machine

GetMachinesByMachineHealthCheck returns Machine objects for a cluster that match with MachineHealthCheck selector.

func ObjectToKind Uses

func ObjectToKind(i runtime.Object) string

ObjectToKind returns the Kind without the package prefix. Pass in a pointer to a struct This will panic if used incorrectly.

func PatchClusterLabel Uses

func PatchClusterLabel(ctx context.Context, input PatchClusterLabelInput)

PatchClusterLabel patches labels to a cluster.

func PatchNodeCondition Uses

func PatchNodeCondition(ctx context.Context, input PatchNodeConditionInput)

PatchNodeCondition patches a node condition to any one of the machines with a node ref.

func PhasePodCondition Uses

func PhasePodCondition(expectedPhase corev1.PodPhase) podListCondition

PhasePodCondition is a podListCondition ensuring that pods are in the expected pod phase

func PrettyPrint Uses

func PrettyPrint(v interface{}) string

PrettyPrint returns a formatted JSON version of the object given.

func ResolveArtifactsDirectory Uses

func ResolveArtifactsDirectory(input string) string

ResolveArtifactsDirectory attempts to resolve a directory to store test outputs, using either that provided by Prow, or defaulting to _artifacts

func ScaleAndWaitControlPlane Uses

func ScaleAndWaitControlPlane(ctx context.Context, input ScaleAndWaitControlPlaneInput)

ScaleAndWaitControlPlane scales KCP and waits until all machines have node ref and equal to Replicas.

func ScaleAndWaitMachineDeployment Uses

func ScaleAndWaitMachineDeployment(ctx context.Context, input ScaleAndWaitMachineDeploymentInput)

ScaleAndWaitMachineDeployment scales MachineDeployment and waits until all machines have node ref and equal to Replicas.

func ScaleMachinePoolAndWait Uses

func ScaleMachinePoolAndWait(ctx context.Context, input ScaleMachinePoolAndWaitInput)

ScaleMachinePoolAndWait scales a machine pool and waits for its instances to scale up.

func TryAddDefaultSchemes Uses

func TryAddDefaultSchemes(scheme *runtime.Scheme)

TryAddDefaultSchemes tries to add the following schemes:

* Kubernetes corev1
* Kubernetes appsv1
* CAPI core
* Kubeadm Bootstrapper
* Kubeadm ControlPlane

Any error that occurs when trying to add the schemes is ignored.

func UpgradeControlPlaneAndWaitForUpgrade Uses

func UpgradeControlPlaneAndWaitForUpgrade(ctx context.Context, input UpgradeControlPlaneAndWaitForUpgradeInput)

UpgradeControlPlaneAndWaitForUpgrade upgrades a KubeadmControlPlane and waits for it to be upgraded.

func UpgradeMachineDeploymentInfrastructureRefAndWait Uses

func UpgradeMachineDeploymentInfrastructureRefAndWait(ctx context.Context, input UpgradeMachineDeploymentInfrastructureRefAndWaitInput)

UpgradeMachineDeploymentInfrastructureRefAndWait upgrades a machine deployment infrastructure ref and waits for its machines to be upgraded.

func UpgradeMachineDeploymentsAndWait Uses

func UpgradeMachineDeploymentsAndWait(ctx context.Context, input UpgradeMachineDeploymentsAndWaitInput)

UpgradeMachineDeploymentsAndWait upgrades a machine deployment and waits for its machines to be upgraded.

func UpgradeMachinePoolAndWait Uses

func UpgradeMachinePoolAndWait(ctx context.Context, input UpgradeMachinePoolAndWaitInput)

UpgradeMachinePoolAndWait upgrades a machine pool and waits for its instances to be upgraded.

func WaitForClusterDeleted Uses

func WaitForClusterDeleted(ctx context.Context, input WaitForClusterDeletedInput, intervals ...interface{})

WaitForClusterDeleted waits until the cluster object has been deleted.

func WaitForClusterMachineNodeRefs Uses

func WaitForClusterMachineNodeRefs(ctx context.Context, input WaitForClusterMachineNodeRefsInput, intervals ...interface{})

WaitForClusterMachineNodesRefs waits until all nodes associated with a machine deployment exist.

func WaitForClusterMachinesReady Uses

func WaitForClusterMachinesReady(ctx context.Context, input WaitForClusterMachinesReadyInput, intervals ...interface{})

func WaitForClusterResourceSetToApplyResources Uses

func WaitForClusterResourceSetToApplyResources(ctx context.Context, input WaitForClusterResourceSetToApplyResourcesInput, intervals ...interface{})

WaitForClusterResourceSetToApplyResources wait until all ClusterResourceSet resources are created in the matching cluster.

func WaitForClusterToProvision Uses

func WaitForClusterToProvision(ctx context.Context, input WaitForClusterToProvisionInput, intervals ...interface{})

WaitForClusterToProvision will wait for a cluster to have a phase status of provisioned.

func WaitForControlPlaneAndMachinesReady Uses

func WaitForControlPlaneAndMachinesReady(ctx context.Context, input WaitForControlPlaneAndMachinesReadyInput, intervals ...interface{})

WaitForControlPlaneAndMachinesReady waits for a KubeadmControlPlane object to be ready (all the machine provisioned and one node ready).

func WaitForControlPlaneMachinesToBeUpgraded Uses

func WaitForControlPlaneMachinesToBeUpgraded(ctx context.Context, input WaitForControlPlaneMachinesToBeUpgradedInput, intervals ...interface{})

WaitForControlPlaneMachinesToBeUpgraded waits until all machines are upgraded to the correct kubernetes version.

func WaitForControlPlaneToBeReady Uses

func WaitForControlPlaneToBeReady(ctx context.Context, input WaitForControlPlaneToBeReadyInput, intervals ...interface{})

WaitForControlPlaneToBeReady will wait for a control plane to be ready.

func WaitForControlPlaneToBeUpToDate Uses

func WaitForControlPlaneToBeUpToDate(ctx context.Context, input WaitForControlPlaneToBeUpToDateInput, intervals ...interface{})

WaitForControlPlaneToBeUpToDate will wait for a control plane to be fully up-to-date.

func WaitForDNSUpgrade Uses

func WaitForDNSUpgrade(ctx context.Context, input WaitForDNSUpgradeInput, intervals ...interface{})

WaitForDNSUpgrade waits until CoreDNS version matches with the CoreDNS upgrade version. This is called during KCP upgrade.

func WaitForDeploymentsAvailable Uses

func WaitForDeploymentsAvailable(ctx context.Context, input WaitForDeploymentsAvailableInput, intervals ...interface{})

WaitForDeploymentsAvailable waits until the Deployment has status.Available = True, that signals that all the desired replicas are in place. This can be used to check if Cluster API controllers installed in the management cluster are working.

func WaitForKubeProxyUpgrade Uses

func WaitForKubeProxyUpgrade(ctx context.Context, input WaitForKubeProxyUpgradeInput, intervals ...interface{})

WaitForKubeProxyUpgrade waits until kube-proxy version matches with the kubernetes version. This is called during KCP upgrade.

func WaitForKubeadmControlPlaneMachinesToExist Uses

func WaitForKubeadmControlPlaneMachinesToExist(ctx context.Context, input WaitForKubeadmControlPlaneMachinesToExistInput, intervals ...interface{})

WaitForKubeadmControlPlaneMachinesToExist will wait until all control plane machines have node refs.

func WaitForMachineDeploymentMachinesToBeUpgraded Uses

func WaitForMachineDeploymentMachinesToBeUpgraded(ctx context.Context, input WaitForMachineDeploymentMachinesToBeUpgradedInput, intervals ...interface{})

WaitForMachineDeploymentMachinesToBeUpgraded waits until all machines belonging to a MachineDeployment are upgraded to the correct kubernetes version.

func WaitForMachineDeploymentNodesToExist Uses

func WaitForMachineDeploymentNodesToExist(ctx context.Context, input WaitForMachineDeploymentNodesToExistInput, intervals ...interface{})

WaitForMachineDeploymentNodesToExist waits until all nodes associated with a machine deployment exist.

func WaitForMachineDeploymentRollingUpgradeToComplete Uses

func WaitForMachineDeploymentRollingUpgradeToComplete(ctx context.Context, input WaitForMachineDeploymentRollingUpgradeToCompleteInput, intervals ...interface{})

WaitForMachineDeploymentRollingUpgradeToComplete waits until rolling upgrade is complete.

func WaitForMachineDeploymentRollingUpgradeToStart Uses

func WaitForMachineDeploymentRollingUpgradeToStart(ctx context.Context, input WaitForMachineDeploymentRollingUpgradeToStartInput, intervals ...interface{})

WaitForMachineDeploymentRollingUpgradeToStart waits until rolling upgrade starts.

func WaitForMachineHealthCheckToRemediateUnhealthyNodeCondition Uses

func WaitForMachineHealthCheckToRemediateUnhealthyNodeCondition(ctx context.Context, input WaitForMachineHealthCheckToRemediateUnhealthyNodeConditionInput, intervals ...interface{})

WaitForMachineHealthCheckToRemediateUnhealthyNodeCondition patches a node condition to any one of the machines with a node ref.

func WaitForMachinePoolInstancesToBeUpgraded Uses

func WaitForMachinePoolInstancesToBeUpgraded(ctx context.Context, input WaitForMachinePoolInstancesToBeUpgradedInput, intervals ...interface{})

WaitForMachinePoolInstancesToBeUpgraded waits until all instances belonging to a MachinePool are upgraded to the correct kubernetes version.

func WaitForMachinePoolNodesToExist Uses

func WaitForMachinePoolNodesToExist(ctx context.Context, input WaitForMachinePoolNodesToExistInput, intervals ...interface{})

WaitForMachinePoolNodesToExist waits until all nodes associated with a machine pool exist.

func WaitForMachineStatusCheck Uses

func WaitForMachineStatusCheck(ctx context.Context, input WaitForMachineStatusCheckInput, intervals ...interface{})

WaitForMachineStatusCheck waits for the specified status to be true for the machine.

func WaitForOneKubeadmControlPlaneMachineToExist Uses

func WaitForOneKubeadmControlPlaneMachineToExist(ctx context.Context, input WaitForOneKubeadmControlPlaneMachineToExistInput, intervals ...interface{})

WaitForOneKubeadmControlPlaneMachineToExist will wait until all control plane machines have node refs.

func WaitForPodListCondition Uses

func WaitForPodListCondition(ctx context.Context, input WaitForPodListConditionInput, intervals ...interface{})

WaitForPodListCondition waits for the specified condition to be true for all pods returned from the list filter.

func WatchDeploymentLogs Uses

func WatchDeploymentLogs(ctx context.Context, input WatchDeploymentLogsInput)

WatchDeploymentLogs streams logs for all containers for all pods belonging to a deployment. Each container's logs are streamed in a separate goroutine so they can all be streamed concurrently. This only causes a test failure if there are errors retrieving the deployment, its pods, or setting up a log file. If there is an error with the log streaming itself, that does not cause the test to fail.

func WatchNamespaceEvents Uses

func WatchNamespaceEvents(ctx context.Context, input WatchNamespaceEventsInput)

WatchNamespaceEvents creates a watcher that streams namespace events into a file. Example usage:

ctx, cancelWatches := context.WithCancel(context.Background())
go func() {
	defer GinkgoRecover()
	framework.WatchNamespaceEvents(ctx, framework.WatchNamespaceEventsInput{
		ClientSet: clientSet,
		Name: namespace.Name,
		LogFolder:   logFolder,
defer cancelWatches()

func WatchPodMetrics Uses

func WatchPodMetrics(ctx context.Context, input WatchPodMetricsInput)

WatchPodMetrics captures metrics from all pods every 5s. It expects to find port 8080 open on the controller. Use replacements in an e2econfig to enable metrics scraping without kube-rbac-proxy, e.g:

- new: --metrics-bind-addr=:8080
  old: --metrics-addr=

type AddDeploymentToWorkloadClusterInput Uses

type AddDeploymentToWorkloadClusterInput struct {
    ClientSet  *kubernetes.Clientset
    Deployment *appsv1.Deployment
    Namespace  string

type AddPodDisruptionBudgetInput Uses

type AddPodDisruptionBudgetInput struct {
    ClientSet *kubernetes.Clientset
    Budget    *v1beta1.PodDisruptionBudget
    Namespace string

type AssertControlPlaneFailureDomainsInput Uses

type AssertControlPlaneFailureDomainsInput struct {
    GetLister  GetLister
    ClusterKey client.ObjectKey
    // ExpectedFailureDomains is required because this function cannot (easily) infer what success looks like.
    // In theory this field is not strictly necessary and could be replaced with enough clever logic/math.
    ExpectedFailureDomains map[string]int

AssertControlPlaneFailureDomainsInput is the input for AssertControlPlaneFailureDomains.

type ClusterLogCollector Uses

type ClusterLogCollector interface {
    // CollectMachineLog collects log from a machine.
    // TODO: describe output folder struct
    CollectMachineLog(ctx context.Context, managementClusterClient client.Client, m *clusterv1.Machine, outputPath string) error

ClusterLogCollector defines an object that can collect logs from a machine.

type ClusterProxy Uses

type ClusterProxy interface {
    // GetName returns the name of the cluster.
    GetName() string

    // GetKubeconfigPath returns the path to the kubeconfig file to be used to access the Kubernetes cluster.
    GetKubeconfigPath() string

    // GetScheme returns the scheme defining the types hosted in the Kubernetes cluster.
    // It is used when creating a controller-runtime client.
    GetScheme() *runtime.Scheme

    // GetClient returns a controller-runtime client to the Kubernetes cluster.
    GetClient() client.Client

    // GetClientSet returns a client-go client to the Kubernetes cluster.
    GetClientSet() *kubernetes.Clientset

    // GetRESTConfig returns the REST config for direct use with client-go if needed.
    GetRESTConfig() *rest.Config

    // Apply to apply YAML to the Kubernetes cluster, `kubectl apply`.
    Apply(context.Context, []byte) error

    // GetWorkloadCluster returns a proxy to a workload cluster defined in the Kubernetes cluster.
    GetWorkloadCluster(ctx context.Context, namespace, name string) ClusterProxy

    // CollectWorkloadClusterLogs collects machines logs from the workload cluster.
    CollectWorkloadClusterLogs(ctx context.Context, namespace, name, outputPath string)

    // Dispose proxy's internal resources (the operation does not affects the Kubernetes cluster).
    // This should be implemented as a synchronous function.

ClusterProxy defines the behavior of a type that acts as an intermediary with an existing Kubernetes cluster. It should work with any Kubernetes cluster, no matter if the Cluster was created by a bootstrap.ClusterProvider, by Cluster API (a workload cluster or a self-hosted cluster) or else.

func NewClusterProxy Uses

func NewClusterProxy(name string, kubeconfigPath string, scheme *runtime.Scheme, options ...Option) ClusterProxy

NewClusterProxy returns a clusterProxy given a KubeconfigPath and the scheme defining the types hosted in the cluster. If a kubeconfig file isn't provided, standard kubeconfig locations will be used (kubectl loading rules apply).

type ComponentGenerator Uses

type ComponentGenerator interface {
    // GetName returns the name of the component.
    GetName() string
    // Manifests return the YAML bundle.
    Manifests(context.Context) ([]byte, error)

ComponentGenerator is used to install components, generally any YAML bundle.

type CreateClusterInput Uses

type CreateClusterInput struct {
    Creator      Creator
    Cluster      *clusterv1.Cluster
    InfraCluster client.Object

CreateClusterInput is the input for CreateCluster.

type CreateKubeadmControlPlaneInput Uses

type CreateKubeadmControlPlaneInput struct {
    Creator         Creator
    ControlPlane    *controlplanev1.KubeadmControlPlane
    MachineTemplate client.Object

CreateKubeadmControlPlaneInput is the input for CreateKubeadmControlPlane.

type CreateMachineDeploymentInput Uses

type CreateMachineDeploymentInput struct {
    Creator                 Creator
    MachineDeployment       *clusterv1.MachineDeployment
    BootstrapConfigTemplate client.Object
    InfraMachineTemplate    client.Object

CreateMachineDeploymentInput is the input for CreateMachineDeployment.

type CreateNamespaceAndWatchEventsInput Uses

type CreateNamespaceAndWatchEventsInput struct {
    Creator   Creator
    ClientSet *kubernetes.Clientset
    Name      string
    LogFolder string

CreateNamespaceAndWatchEventsInput is the input type for CreateNamespaceAndWatchEvents.

type CreateNamespaceInput Uses

type CreateNamespaceInput struct {
    Creator Creator
    Name    string

CreateNamespaceInput is the input type for CreateNamespace.

type CreateRelatedResourcesInput Uses

type CreateRelatedResourcesInput struct {
    Creator          Creator
    RelatedResources []client.Object

CreateRelatedResourcesInput is the input type for CreateRelatedResources.

type Creator Uses

type Creator interface {
    Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error

Creator can creates resources.

type DeleteAllClustersAndWaitInput Uses

type DeleteAllClustersAndWaitInput struct {
    Client    client.Client
    Namespace string

DeleteAllClustersAndWaitInput is the input type for DeleteAllClustersAndWait.

type DeleteClusterAndWaitInput Uses

type DeleteClusterAndWaitInput struct {
    Client  client.Client
    Cluster *clusterv1.Cluster

DeleteClusterAndWaitInput is the input type for DeleteClusterAndWait.

type DeleteClusterInput Uses

type DeleteClusterInput struct {
    Deleter Deleter
    Cluster *clusterv1.Cluster

DeleteClusterInput is the input for DeleteCluster.

type DeleteNamespaceInput Uses

type DeleteNamespaceInput struct {
    Deleter Deleter
    Name    string

DeleteNamespaceInput is the input type for DeleteNamespace.

type Deleter Uses

type Deleter interface {
    Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error

Deleter can delete resources.

type DeployUnevictablePodInput Uses

type DeployUnevictablePodInput struct {
    WorkloadClusterProxy ClusterProxy
    ControlPlane         *controlplanev1.KubeadmControlPlane
    DeploymentName       string
    Namespace            string

    WaitForDeploymentAvailableInterval []interface{}

type DiscoverClusterResourceSetAndWaitForSuccessInput Uses

type DiscoverClusterResourceSetAndWaitForSuccessInput struct {
    ClusterProxy ClusterProxy
    Cluster      *clusterv1.Cluster

DiscoverClusterResourceSetAndWaitForSuccessInput is the input for DiscoverClusterResourceSetAndWaitForSuccess.

type DiscoverMachineHealthCheckAndWaitForRemediationInput Uses

type DiscoverMachineHealthCheckAndWaitForRemediationInput struct {
    ClusterProxy              ClusterProxy
    Cluster                   *clusterv1.Cluster
    WaitForMachineRemediation []interface{}

DiscoverMachineHealthCheckAndWaitForRemediationInput is the input for DiscoverMachineHealthCheckAndWait.

type DiscoveryAndWaitForClusterInput Uses

type DiscoveryAndWaitForClusterInput struct {
    Getter    Getter
    Namespace string
    Name      string

DiscoveryAndWaitForClusterInput is the input type for DiscoveryAndWaitForCluster.

type DiscoveryAndWaitForControlPlaneInitializedInput Uses

type DiscoveryAndWaitForControlPlaneInitializedInput struct {
    Lister  Lister
    Cluster *clusterv1.Cluster

DiscoveryAndWaitForControlPlaneInitializedInput is the input type for DiscoveryAndWaitForControlPlaneInitialized.

type DiscoveryAndWaitForMachineDeploymentsInput Uses

type DiscoveryAndWaitForMachineDeploymentsInput struct {
    Lister  Lister
    Cluster *clusterv1.Cluster

DiscoveryAndWaitForMachineDeploymentsInput is the input type for DiscoveryAndWaitForMachineDeployments.

type DiscoveryAndWaitForMachinePoolsInput Uses

type DiscoveryAndWaitForMachinePoolsInput struct {
    Getter  Getter
    Lister  Lister
    Cluster *clusterv1.Cluster

DiscoveryAndWaitForMachinePoolsInput is the input type for DiscoveryAndWaitForMachinePools.

type DockerLogCollector Uses

type DockerLogCollector struct{}

DockerLogCollector collect logs from a CAPD workload cluster.

func (DockerLogCollector) CollectMachineLog Uses

func (k DockerLogCollector) CollectMachineLog(ctx context.Context, managementClusterClient client.Client, m *clusterv1.Machine, outputPath string) error

type DumpAllResourcesInput Uses

type DumpAllResourcesInput struct {
    Lister    Lister
    Namespace string
    LogPath   string

DumpAllResourcesInput is the input for DumpAllResources.

type GetAllClustersByNamespaceInput Uses

type GetAllClustersByNamespaceInput struct {
    Lister    Lister
    Namespace string

GetAllClustersByNamespaceInput is the input for GetAllClustersByNamespace.

type GetCAPIResourcesInput Uses

type GetCAPIResourcesInput struct {
    Lister    Lister
    Namespace string

GetCAPIResourcesInput is the input for GetCAPIResources.

type GetClusterByNameInput Uses

type GetClusterByNameInput struct {
    Getter    Getter
    Name      string
    Namespace string

GetClusterByNameInput is the input for GetClusterByName.

type GetClusterResourceSetBindingByClusterInput Uses

type GetClusterResourceSetBindingByClusterInput struct {
    Getter      Getter
    ClusterName string
    Namespace   string

GetClusterResourceSetBindingByClusterInput is the input for GetClusterResourceSetBindingByCluster.

type GetClusterResourceSetsInput Uses

type GetClusterResourceSetsInput struct {
    Lister    Lister
    Namespace string

GetClusterResourceSetsInput is the input for GetClusterResourceSets.

type GetControlPlaneMachinesByClusterInput Uses

type GetControlPlaneMachinesByClusterInput struct {
    Lister      Lister
    ClusterName string
    Namespace   string

GetControlPlaneMachinesByClusterInput is the input for GetControlPlaneMachinesByCluster.

type GetControllerDeploymentsInput Uses

type GetControllerDeploymentsInput struct {
    Lister Lister

GetControllerDeploymentsInput is the input for GetControllerDeployments.

type GetKubeadmControlPlaneByClusterInput Uses

type GetKubeadmControlPlaneByClusterInput struct {
    Lister      Lister
    ClusterName string
    Namespace   string

GetKubeadmControlPlaneByClusterInput is the input for GetKubeadmControlPlaneByCluster.

type GetLister Uses

type GetLister interface {

GetLister can get and list resources.

type GetMachineDeploymentsByClusterInput Uses

type GetMachineDeploymentsByClusterInput struct {
    Lister      Lister
    ClusterName string
    Namespace   string

GetMachineDeploymentsByClusterInput is the input for GetMachineDeploymentsByCluster

type GetMachineHealthChecksForClusterInput Uses

type GetMachineHealthChecksForClusterInput struct {
    Lister      Lister
    ClusterName string
    Namespace   string

GetMachineHealthChecksForClusterInput is the input for GetMachineHealthChecksForCluster.

type GetMachinePoolsByClusterInput Uses

type GetMachinePoolsByClusterInput struct {
    Lister      Lister
    ClusterName string
    Namespace   string

GetMachinePoolsByClusterInput is the input for GetMachinePoolsByCluster

type GetMachinesByMachineDeploymentsInput Uses

type GetMachinesByMachineDeploymentsInput struct {
    Lister            Lister
    ClusterName       string
    Namespace         string
    MachineDeployment clusterv1.MachineDeployment

GetMachinesByMachineDeploymentsInput is the input for GetMachinesByMachineDeployments.

type GetMachinesByMachineHealthCheckInput Uses

type GetMachinesByMachineHealthCheckInput struct {
    Lister             Lister
    ClusterName        string
    MachineHealthCheck *clusterv1.MachineHealthCheck

GetMachinesByMachineHealthCheckInput is the input for GetMachinesByMachineHealthCheck.

type GetMachinesPoolInstancesInput Uses

type GetMachinesPoolInstancesInput struct {
    Getter      Getter
    Namespace   string
    MachinePool clusterv1exp.MachinePool

GetMachinesPoolInstancesInput is the input for GetMachinesPoolInstances.

type Getter Uses

type Getter interface {
    Get(ctx context.Context, key client.ObjectKey, obj client.Object) error

Getter can get resources.

type Lister Uses

type Lister interface {
    List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error

Lister can lists resources.

type MachineStatusCheck Uses

type MachineStatusCheck func(p *clusterv1.Machine) error

MachineStatusCheck is a type that operates a status check on a Machine

func MachineNodeRefCheck Uses

func MachineNodeRefCheck() MachineStatusCheck

MachineNodeRefCheck is a MachineStatusCheck ensuring that a NodeRef is assigned to the machine

func MachinePhaseCheck Uses

func MachinePhaseCheck(expectedPhase string) MachineStatusCheck

MachinePhaseCheck is a MachineStatusCheck ensuring that a machines is in the expected phase

type Option Uses

type Option func(*clusterProxy)

Option is a configuration option supplied to NewClusterProxy

func WithMachineLogCollector Uses

func WithMachineLogCollector(logCollector ClusterLogCollector) Option

WithMachineLogCollector allows to define the machine log collector to be used with this Cluster.

type PatchClusterLabelInput Uses

type PatchClusterLabelInput struct {
    ClusterProxy ClusterProxy
    Cluster      *clusterv1.Cluster
    Labels       map[string]string

PatchClusterLabelInput is the input for PatchClusterLabel.

type PatchNodeConditionInput Uses

type PatchNodeConditionInput struct {
    ClusterProxy  ClusterProxy
    Cluster       *clusterv1.Cluster
    NodeCondition corev1.NodeCondition
    Machine       clusterv1.Machine

PatchNodeConditionInput is the input for PatchNodeCondition.

type ScaleAndWaitControlPlaneInput Uses

type ScaleAndWaitControlPlaneInput struct {
    ClusterProxy        ClusterProxy
    Cluster             *clusterv1.Cluster
    ControlPlane        *controlplanev1.KubeadmControlPlane
    Replicas            int32
    WaitForControlPlane []interface{}

type ScaleAndWaitMachineDeploymentInput Uses

type ScaleAndWaitMachineDeploymentInput struct {
    ClusterProxy              ClusterProxy
    Cluster                   *clusterv1.Cluster
    MachineDeployment         *clusterv1.MachineDeployment
    Replicas                  int32
    WaitForMachineDeployments []interface{}

ScaleAndWaitMachineDeploymentInput is the input for ScaleAndWaitMachineDeployment.

type ScaleMachinePoolAndWaitInput Uses

type ScaleMachinePoolAndWaitInput struct {
    ClusterProxy              ClusterProxy
    Cluster                   *clusterv1.Cluster
    Replicas                  int32
    MachinePools              []*clusterv1exp.MachinePool
    WaitForMachinePoolToScale []interface{}

type UpgradeControlPlaneAndWaitForUpgradeInput Uses

type UpgradeControlPlaneAndWaitForUpgradeInput struct {
    ClusterProxy                ClusterProxy
    Cluster                     *clusterv1.Cluster
    ControlPlane                *controlplanev1.KubeadmControlPlane
    KubernetesUpgradeVersion    string
    EtcdImageTag                string
    DNSImageTag                 string
    WaitForMachinesToBeUpgraded []interface{}
    WaitForDNSUpgrade           []interface{}
    WaitForEtcdUpgrade          []interface{}

UpgradeControlPlaneAndWaitForUpgradeInput is the input type for UpgradeControlPlaneAndWaitForUpgrade.

type UpgradeMachineDeploymentInfrastructureRefAndWaitInput Uses

type UpgradeMachineDeploymentInfrastructureRefAndWaitInput struct {
    ClusterProxy                ClusterProxy
    Cluster                     *clusterv1.Cluster
    MachineDeployments          []*clusterv1.MachineDeployment
    WaitForMachinesToBeUpgraded []interface{}

UpgradeMachineDeploymentInfrastructureRefAndWaitInput is the input type for UpgradeMachineDeploymentInfrastructureRefAndWait.

type UpgradeMachineDeploymentsAndWaitInput Uses

type UpgradeMachineDeploymentsAndWaitInput struct {
    ClusterProxy                ClusterProxy
    Cluster                     *clusterv1.Cluster
    UpgradeVersion              string
    MachineDeployments          []*clusterv1.MachineDeployment
    WaitForMachinesToBeUpgraded []interface{}

UpgradeMachineDeploymentsAndWaitInput is the input type for UpgradeMachineDeploymentsAndWait.

type UpgradeMachinePoolAndWaitInput Uses

type UpgradeMachinePoolAndWaitInput struct {
    ClusterProxy                   ClusterProxy
    Cluster                        *clusterv1.Cluster
    UpgradeVersion                 string
    MachinePools                   []*clusterv1exp.MachinePool
    WaitForMachinePoolToBeUpgraded []interface{}

type WaitForClusterDeletedInput Uses

type WaitForClusterDeletedInput struct {
    Getter  Getter
    Cluster *clusterv1.Cluster

WaitForClusterDeletedInput is the input for WaitForClusterDeleted.

type WaitForClusterMachineNodeRefsInput Uses

type WaitForClusterMachineNodeRefsInput struct {
    GetLister GetLister
    Cluster   *clusterv1.Cluster

WaitForClusterMachineNodesRefsInput is the input for WaitForClusterMachineNodesRefs.

type WaitForClusterMachinesReadyInput Uses

type WaitForClusterMachinesReadyInput struct {
    GetLister  GetLister
    NodeGetter Getter
    Cluster    *clusterv1.Cluster

type WaitForClusterResourceSetToApplyResourcesInput Uses

type WaitForClusterResourceSetToApplyResourcesInput struct {
    ClusterProxy       ClusterProxy
    Cluster            *clusterv1.Cluster
    ClusterResourceSet *addonsv1.ClusterResourceSet

WaitForClusterResourceSetToApplyResourcesInput is the input for WaitForClusterResourceSetToApplyResources.

type WaitForClusterToProvisionInput Uses

type WaitForClusterToProvisionInput struct {
    Getter  Getter
    Cluster *clusterv1.Cluster

WaitForClusterToProvisionInput is the input for WaitForClusterToProvision.

type WaitForControlPlaneAndMachinesReadyInput Uses

type WaitForControlPlaneAndMachinesReadyInput struct {
    GetLister    GetLister
    Cluster      *clusterv1.Cluster
    ControlPlane *controlplanev1.KubeadmControlPlane

WaitForControlPlaneAndMachinesReadyInput is the input type for WaitForControlPlaneAndMachinesReady.

type WaitForControlPlaneMachinesToBeUpgradedInput Uses

type WaitForControlPlaneMachinesToBeUpgradedInput struct {
    Lister                   Lister
    Cluster                  *clusterv1.Cluster
    KubernetesUpgradeVersion string
    MachineCount             int

WaitForControlPlaneMachinesToBeUpgradedInput is the input for WaitForControlPlaneMachinesToBeUpgraded.

type WaitForControlPlaneToBeReadyInput Uses

type WaitForControlPlaneToBeReadyInput struct {
    Getter       Getter
    ControlPlane *controlplanev1.KubeadmControlPlane

WaitForControlPlaneToBeReadyInput is the input for WaitForControlPlaneToBeReady.

type WaitForControlPlaneToBeUpToDateInput Uses

type WaitForControlPlaneToBeUpToDateInput struct {
    Getter       Getter
    ControlPlane *controlplanev1.KubeadmControlPlane

WaitForControlPlaneToBeUpToDateInput is the input for WaitForControlPlaneToBeUpToDate.

type WaitForDNSUpgradeInput Uses

type WaitForDNSUpgradeInput struct {
    Getter     Getter
    DNSVersion string

WaitForDNSUpgradeInput is the input for WaitForDNSUpgrade.

type WaitForDeploymentsAvailableInput Uses

type WaitForDeploymentsAvailableInput struct {
    Getter     Getter
    Deployment *appsv1.Deployment

WaitForDeploymentsAvailableInput is the input for WaitForDeploymentsAvailable.

type WaitForKubeProxyUpgradeInput Uses

type WaitForKubeProxyUpgradeInput struct {
    Getter            Getter
    KubernetesVersion string

WaitForKubeProxyUpgradeInput is the input for WaitForKubeProxyUpgradeInput.

type WaitForKubeadmControlPlaneMachinesToExistInput Uses

type WaitForKubeadmControlPlaneMachinesToExistInput struct {
    Lister       Lister
    Cluster      *clusterv1.Cluster
    ControlPlane *controlplanev1.KubeadmControlPlane

WaitForKubeadmControlPlaneMachinesToExistInput is the input for WaitForKubeadmControlPlaneMachinesToExist.

type WaitForMachineDeploymentMachinesToBeUpgradedInput Uses

type WaitForMachineDeploymentMachinesToBeUpgradedInput struct {
    Lister                   Lister
    Cluster                  *clusterv1.Cluster
    KubernetesUpgradeVersion string
    MachineCount             int
    MachineDeployment        clusterv1.MachineDeployment

WaitForMachineDeploymentMachinesToBeUpgradedInput is the input for WaitForMachineDeploymentMachinesToBeUpgraded.

type WaitForMachineDeploymentNodesToExistInput Uses

type WaitForMachineDeploymentNodesToExistInput struct {
    Lister            Lister
    Cluster           *clusterv1.Cluster
    MachineDeployment *clusterv1.MachineDeployment

WaitForMachineDeploymentNodesToExistInput is the input for WaitForMachineDeploymentNodesToExist.

type WaitForMachineDeploymentRollingUpgradeToCompleteInput Uses

type WaitForMachineDeploymentRollingUpgradeToCompleteInput struct {
    Getter            Getter
    MachineDeployment *clusterv1.MachineDeployment

WaitForMachineDeploymentRollingUpgradeToCompleteInput is the input for WaitForMachineDeploymentRollingUpgradeToComplete.

type WaitForMachineDeploymentRollingUpgradeToStartInput Uses

type WaitForMachineDeploymentRollingUpgradeToStartInput struct {
    Getter            Getter
    MachineDeployment *clusterv1.MachineDeployment

WaitForMachineDeploymentRollingUpgradeToStartInput is the input for WaitForMachineDeploymentRollingUpgradeToStart.

type WaitForMachineHealthCheckToRemediateUnhealthyNodeConditionInput Uses

type WaitForMachineHealthCheckToRemediateUnhealthyNodeConditionInput struct {
    ClusterProxy        ClusterProxy
    Cluster             *clusterv1.Cluster
    MachineHealthChecks []*clusterv1.MachineHealthCheck

WaitForMachineHealthCheckToRemediateUnhealthyNodeConditionInput is the input for WaitForMachineHealthCheckToRemediateUnhealthyNodeCondition.

type WaitForMachinePoolInstancesToBeUpgradedInput Uses

type WaitForMachinePoolInstancesToBeUpgradedInput struct {
    Getter                   Getter
    Cluster                  *clusterv1.Cluster
    KubernetesUpgradeVersion string
    MachineCount             int
    MachinePool              clusterv1exp.MachinePool

WaitForMachinePoolInstancesToBeUpgradedInput is the input for WaitForMachinePoolInstancesToBeUpgraded.

type WaitForMachinePoolNodesToExistInput Uses

type WaitForMachinePoolNodesToExistInput struct {
    Getter      Getter
    MachinePool *clusterv1exp.MachinePool

WaitForMachinePoolNodesToExistInput is the input for WaitForMachinePoolNodesToExist.

type WaitForMachineStatusCheckInput Uses

type WaitForMachineStatusCheckInput struct {
    Getter       Getter
    Machine      *clusterv1.Machine
    StatusChecks []MachineStatusCheck

WaitForMachineStatusCheckInput is the input for WaitForMachineStatusCheck.

type WaitForOneKubeadmControlPlaneMachineToExistInput Uses

type WaitForOneKubeadmControlPlaneMachineToExistInput struct {
    Lister       Lister
    Cluster      *clusterv1.Cluster
    ControlPlane *controlplanev1.KubeadmControlPlane

WaitForOneKubeadmControlPlaneMachinesToExistInput is the input for WaitForKubeadmControlPlaneMachinesToExist.

type WaitForPodListConditionInput Uses

type WaitForPodListConditionInput struct {
    Lister      Lister
    ListOptions *client.ListOptions
    Condition   podListCondition

WaitForPodListConditionInput is the input args for WaitForPodListCondition

type WatchDeploymentLogsInput Uses

type WatchDeploymentLogsInput struct {
    GetLister  GetLister
    ClientSet  *kubernetes.Clientset
    Deployment *appsv1.Deployment
    LogPath    string

WatchDeploymentLogsInput is the input for WatchDeploymentLogs.

type WatchNamespaceEventsInput Uses

type WatchNamespaceEventsInput struct {
    ClientSet *kubernetes.Clientset
    Name      string
    LogFolder string

WatchNamespaceEventsInput is the input type for WatchNamespaceEvents.

type WatchPodMetricsInput Uses

type WatchPodMetricsInput struct {
    GetLister   GetLister
    ClientSet   *kubernetes.Clientset
    Deployment  *appsv1.Deployment
    MetricsPath string


kubernetesversionsCode generated for package kubernetesversions by go-bindata DO NOT EDIT.

Package framework imports 57 packages (graph) and is imported by 5 packages. Updated 2021-01-24. Refresh now. Tools for package owners.