apiclient

package
v1.22.2-rc.0 Latest Latest
Warning

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

Go to latest
Published: Aug 19, 2021 License: Apache-2.0 Imports: 34 Imported by: 402

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateOrMutateConfigMap added in v1.15.0

func CreateOrMutateConfigMap(client clientset.Interface, cm *v1.ConfigMap, mutator ConfigMapMutator) error

CreateOrMutateConfigMap tries to create the ConfigMap provided as cm. If the resource exists already, the latest version will be fetched from the cluster and mutator callback will be called on it, then an Update of the mutated ConfigMap will be performed. This function is resilient to conflicts, and a retry will be issued if the ConfigMap was modified on the server between the refresh and the update (while the mutation was taking place)

func CreateOrRetainConfigMap added in v1.11.0

func CreateOrRetainConfigMap(client clientset.Interface, cm *v1.ConfigMap, configMapName string) error

CreateOrRetainConfigMap creates a ConfigMap if the target resource doesn't exist. If the resource exists already, this function will retain the resource instead.

func CreateOrRetainDeployment added in v1.16.4

func CreateOrRetainDeployment(client clientset.Interface, deploy *apps.Deployment, deployName string) error

CreateOrRetainDeployment creates a Deployment if the target resource doesn't exist. If the resource exists already, this function will retain the resource instead.

func CreateOrUpdateClusterRole

func CreateOrUpdateClusterRole(client clientset.Interface, clusterRole *rbac.ClusterRole) error

CreateOrUpdateClusterRole creates a ClusterRole if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func CreateOrUpdateClusterRoleBinding

func CreateOrUpdateClusterRoleBinding(client clientset.Interface, clusterRoleBinding *rbac.ClusterRoleBinding) error

CreateOrUpdateClusterRoleBinding creates a ClusterRoleBinding if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func CreateOrUpdateConfigMap

func CreateOrUpdateConfigMap(client clientset.Interface, cm *v1.ConfigMap) error

CreateOrUpdateConfigMap creates a ConfigMap if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func CreateOrUpdateDaemonSet

func CreateOrUpdateDaemonSet(client clientset.Interface, ds *apps.DaemonSet) error

CreateOrUpdateDaemonSet creates a DaemonSet if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func CreateOrUpdateDeployment

func CreateOrUpdateDeployment(client clientset.Interface, deploy *apps.Deployment) error

CreateOrUpdateDeployment creates a Deployment if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func CreateOrUpdateRole

func CreateOrUpdateRole(client clientset.Interface, role *rbac.Role) error

CreateOrUpdateRole creates a Role if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func CreateOrUpdateRoleBinding

func CreateOrUpdateRoleBinding(client clientset.Interface, roleBinding *rbac.RoleBinding) error

CreateOrUpdateRoleBinding creates a RoleBinding if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func CreateOrUpdateSecret

func CreateOrUpdateSecret(client clientset.Interface, secret *v1.Secret) error

CreateOrUpdateSecret creates a Secret if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func CreateOrUpdateServiceAccount

func CreateOrUpdateServiceAccount(client clientset.Interface, sa *v1.ServiceAccount) error

CreateOrUpdateServiceAccount creates a ServiceAccount if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.

func DefaultMarshalFunc

func DefaultMarshalFunc(obj runtime.Object, gv schema.GroupVersion) ([]byte, error)

DefaultMarshalFunc is the default MarshalFunc used; uses YAML to print objects to the user

func DeleteDaemonSetForeground

func DeleteDaemonSetForeground(client clientset.Interface, namespace, name string) error

DeleteDaemonSetForeground deletes the specified DaemonSet in foreground mode; i.e. it blocks until/makes sure all the managed Pods are deleted

func DeleteDeploymentForeground added in v1.9.0

func DeleteDeploymentForeground(client clientset.Interface, namespace, name string) error

DeleteDeploymentForeground deletes the specified Deployment in foreground mode; i.e. it blocks until/makes sure all the managed Pods are deleted

func GetConfigMapWithRetry added in v1.15.0

func GetConfigMapWithRetry(client clientset.Interface, namespace, name string) (*v1.ConfigMap, error)

GetConfigMapWithRetry tries to retrieve a ConfigMap using the given client, retrying if we get an unexpected error.

TODO: evaluate if this can be done better. Potentially remove the retry if feasible.

func MutateConfigMap added in v1.15.0

func MutateConfigMap(client clientset.Interface, meta metav1.ObjectMeta, mutator ConfigMapMutator) error

MutateConfigMap takes a ConfigMap Object Meta (namespace and name), retrieves the resource from the server and tries to mutate it by calling to the mutator callback, then an Update of the mutated ConfigMap will be performed. This function is resilient to conflicts, and a retry will be issued if the ConfigMap was modified on the server between the refresh and the update (while the mutation was taking place).

func NewDryRunClient

func NewDryRunClient(drg DryRunGetter, w io.Writer) clientset.Interface

NewDryRunClient is a wrapper for NewDryRunClientWithOpts using some default values

func NewDryRunClientWithOpts

func NewDryRunClientWithOpts(opts DryRunClientOptions) clientset.Interface

NewDryRunClientWithOpts returns a clientset.Interface that can be used normally for talking to the Kubernetes API. This client doesn't apply changes to the backend. The client gets GET/LIST values from the DryRunGetter implementation. This client logs all I/O to the writer w in YAML format

func PatchNode added in v1.11.0

func PatchNode(client clientset.Interface, nodeName string, patchFn func(*v1.Node)) error

PatchNode tries to patch a node using patchFn for the actual mutating logic. Retries are provided by the wait package.

func PatchNodeOnce added in v1.13.0

func PatchNodeOnce(client clientset.Interface, nodeName string, patchFn func(*v1.Node)) func() (bool, error)

PatchNodeOnce executes patchFn on the node object found by the node name. This is a condition function meant to be used with wait.Poll. false, nil implies it is safe to try again, an error indicates no more tries should be made and true indicates success.

func PrintBytesWithLinePrefix

func PrintBytesWithLinePrefix(w io.Writer, objBytes []byte, linePrefix string)

PrintBytesWithLinePrefix prints objBytes to writer w with linePrefix in the beginning of every line

func TryRunCommand

func TryRunCommand(f func() error, failureThreshold int) error

TryRunCommand runs a function a maximum of failureThreshold times, and retries on error. If failureThreshold is hit; the last error is returned

Types

type ClientBackedDryRunGetter

type ClientBackedDryRunGetter struct {
	// contains filtered or unexported fields
}

ClientBackedDryRunGetter implements the DryRunGetter interface for use in NewDryRunClient() and proxies all GET and LIST requests to the backing API server reachable via rest.Config

func NewClientBackedDryRunGetter

func NewClientBackedDryRunGetter(config *rest.Config) (*ClientBackedDryRunGetter, error)

NewClientBackedDryRunGetter creates a new ClientBackedDryRunGetter instance based on the rest.Config object

func NewClientBackedDryRunGetterFromKubeconfig

func NewClientBackedDryRunGetterFromKubeconfig(file string) (*ClientBackedDryRunGetter, error)

NewClientBackedDryRunGetterFromKubeconfig creates a new ClientBackedDryRunGetter instance from the given KubeConfig file

func (*ClientBackedDryRunGetter) Client

Client gets the backing clientset.Interface

func (*ClientBackedDryRunGetter) HandleGetAction

func (clg *ClientBackedDryRunGetter) HandleGetAction(action core.GetAction) (bool, runtime.Object, error)

HandleGetAction handles GET actions to the dryrun clientset this interface supports

func (*ClientBackedDryRunGetter) HandleListAction

func (clg *ClientBackedDryRunGetter) HandleListAction(action core.ListAction) (bool, runtime.Object, error)

HandleListAction handles LIST actions to the dryrun clientset this interface supports

type ConfigMapMutator added in v1.15.0

type ConfigMapMutator func(*v1.ConfigMap) error

ConfigMapMutator is a function that mutates the given ConfigMap and optionally returns an error

type DryRunClientOptions

type DryRunClientOptions struct {
	Writer          io.Writer
	Getter          DryRunGetter
	PrependReactors []core.Reactor
	AppendReactors  []core.Reactor
	MarshalFunc     MarshalFunc
	PrintGETAndLIST bool
}

DryRunClientOptions specifies options to pass to NewDryRunClientWithOpts in order to get a dryrun clientset

func GetDefaultDryRunClientOptions added in v1.11.0

func GetDefaultDryRunClientOptions(drg DryRunGetter, w io.Writer) DryRunClientOptions

GetDefaultDryRunClientOptions returns the default DryRunClientOptions values

type DryRunGetter

type DryRunGetter interface {
	HandleGetAction(core.GetAction) (bool, runtime.Object, error)
	HandleListAction(core.ListAction) (bool, runtime.Object, error)
}

DryRunGetter is an interface that must be supplied to the NewDryRunClient function in order to construct a fully functional fake dryrun clientset

type InitDryRunGetter

type InitDryRunGetter struct {
	// contains filtered or unexported fields
}

InitDryRunGetter implements the DryRunGetter interface and can be used to GET/LIST values in the dryrun fake clientset Need to handle these routes in a special manner: - GET /default/services/kubernetes -- must return a valid Service - GET /clusterrolebindings/system:nodes -- can safely return a NotFound error - GET /kube-system/secrets/bootstrap-token-* -- can safely return a NotFound error - GET /nodes/<node-name> -- must return a valid Node - ...all other, unknown GETs/LISTs will be logged

func NewInitDryRunGetter

func NewInitDryRunGetter(controlPlaneName string, serviceSubnet string) *InitDryRunGetter

NewInitDryRunGetter creates a new instance of the InitDryRunGetter struct

func (*InitDryRunGetter) HandleGetAction

func (idr *InitDryRunGetter) HandleGetAction(action core.GetAction) (bool, runtime.Object, error)

HandleGetAction handles GET actions to the dryrun clientset this interface supports

func (*InitDryRunGetter) HandleListAction

func (idr *InitDryRunGetter) HandleListAction(action core.ListAction) (bool, runtime.Object, error)

HandleListAction handles GET actions to the dryrun clientset this interface supports. Currently there are no known LIST calls during kubeadm init this code has to take care of.

type KubeWaiter

type KubeWaiter struct {
	// contains filtered or unexported fields
}

KubeWaiter is an implementation of Waiter that is backed by a Kubernetes client

func (*KubeWaiter) SetTimeout

func (w *KubeWaiter) SetTimeout(timeout time.Duration)

SetTimeout adjusts the timeout to the specified duration

func (*KubeWaiter) WaitForAPI

func (w *KubeWaiter) WaitForAPI() error

WaitForAPI waits for the API Server's /healthz endpoint to report "ok"

func (*KubeWaiter) WaitForHealthyKubelet

func (w *KubeWaiter) WaitForHealthyKubelet(initialTimeout time.Duration, healthzEndpoint string) error

WaitForHealthyKubelet blocks until the kubelet /healthz endpoint returns 'ok'

func (*KubeWaiter) WaitForKubeletAndFunc added in v1.13.0

func (w *KubeWaiter) WaitForKubeletAndFunc(f func() error) error

WaitForKubeletAndFunc waits primarily for the function f to execute, even though it might take some time. If that takes a long time, and the kubelet /healthz continuously are unhealthy, kubeadm will error out after a period of exponential backoff

func (*KubeWaiter) WaitForPodToDisappear

func (w *KubeWaiter) WaitForPodToDisappear(podName string) error

WaitForPodToDisappear blocks until it timeouts or gets a "NotFound" response from the API Server when getting the Static Pod in question

func (*KubeWaiter) WaitForPodsWithLabel

func (w *KubeWaiter) WaitForPodsWithLabel(kvLabel string) error

WaitForPodsWithLabel will lookup pods with the given label and wait until they are all reporting status as running.

func (*KubeWaiter) WaitForStaticPodControlPlaneHashes

func (w *KubeWaiter) WaitForStaticPodControlPlaneHashes(nodeName string) (map[string]string, error)

WaitForStaticPodControlPlaneHashes blocks until it timeouts or gets a hash map for all components and their Static Pods

func (*KubeWaiter) WaitForStaticPodHashChange added in v1.10.2

func (w *KubeWaiter) WaitForStaticPodHashChange(nodeName, component, previousHash string) error

WaitForStaticPodHashChange blocks until it timeouts or notices that the Mirror Pod (for the Static Pod, respectively) has changed This implicitly means this function blocks until the kubelet has restarted the Static Pod in question

func (*KubeWaiter) WaitForStaticPodSingleHash added in v1.9.0

func (w *KubeWaiter) WaitForStaticPodSingleHash(nodeName string, component string) (string, error)

WaitForStaticPodSingleHash blocks until it timeouts or gets a hash for a single component and its Static Pod

type MarshalFunc

type MarshalFunc func(runtime.Object, schema.GroupVersion) ([]byte, error)

MarshalFunc takes care of converting any object to a byte array for displaying the object to the user

type Waiter

type Waiter interface {
	// WaitForAPI waits for the API Server's /healthz endpoint to become "ok"
	WaitForAPI() error
	// WaitForPodsWithLabel waits for Pods in the kube-system namespace to become Ready
	WaitForPodsWithLabel(kvLabel string) error
	// WaitForPodToDisappear waits for the given Pod in the kube-system namespace to be deleted
	WaitForPodToDisappear(staticPodName string) error
	// WaitForStaticPodSingleHash fetches sha256 hash for the control plane static pod
	WaitForStaticPodSingleHash(nodeName string, component string) (string, error)
	// WaitForStaticPodHashChange waits for the given static pod component's static pod hash to get updated.
	// By doing that we can be sure that the kubelet has restarted the given Static Pod
	WaitForStaticPodHashChange(nodeName, component, previousHash string) error
	// WaitForStaticPodControlPlaneHashes fetches sha256 hashes for the control plane static pods
	WaitForStaticPodControlPlaneHashes(nodeName string) (map[string]string, error)
	// WaitForHealthyKubelet blocks until the kubelet /healthz endpoint returns 'ok'
	WaitForHealthyKubelet(initialTimeout time.Duration, healthzEndpoint string) error
	// WaitForKubeletAndFunc is a wrapper for WaitForHealthyKubelet that also blocks for a function
	WaitForKubeletAndFunc(f func() error) error
	// SetTimeout adjusts the timeout to the specified duration
	SetTimeout(timeout time.Duration)
}

Waiter is an interface for waiting for criteria in Kubernetes to happen

func NewKubeWaiter

func NewKubeWaiter(client clientset.Interface, timeout time.Duration, writer io.Writer) Waiter

NewKubeWaiter returns a new Waiter object that talks to the given Kubernetes cluster

Jump to

Keyboard shortcuts

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