kubecontroller

package
v1.1.6 Latest Latest
Warning

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

Go to latest
Published: Jul 24, 2020 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CNSToCRDSpec

func CNSToCRDSpec() (*nnc.NodeNetworkConfigSpec, error)

CNSToCRDSpec translates CNS's list of Ips to be released and requested ip count into a CRD Spec

func CRDStatusToNCRequest

func CRDStatusToNCRequest(crdStatus *nnc.NodeNetworkConfigStatus) (*cns.CreateNetworkContainerRequest, error)

CRDStatusToNCRequest translates a crd status to network container request

func GetKubeConfig

func GetKubeConfig() (*rest.Config, error)

GetKubeConfig precedence * --kubeconfig flag pointing at a file at this cmd line * KUBECONFIG environment variable pointing at a file * In-cluster config if running in cluster * $HOME/.kube/config if exists

func NewCrdRequestController

func NewCrdRequestController(restService *restserver.HTTPRestService, kubeconfig *rest.Config) (*crdRequestController, error)

NewCrdRequestController given a reference to CNS's HTTPRestService state, returns a crdRequestController struct

func SetupSignalHandler

func SetupSignalHandler(exitChan chan<- bool) (stopCh <-chan struct{})

SetupSignalHandler registers for SIGTERM and SIGINT. A stop channel is returned which is closed on one of these signals. If a second signal is caught, the program is terminated with exit code 1. exitChan is notified when a SIGINT or SIGTERM signal is received.

Types

type APIDirectClient added in v1.1.6

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

APIDirectClient is a direct client to a kubernetes API server

func NewAPIDirectClient added in v1.1.6

func NewAPIDirectClient(kubeconfig *rest.Config) (*APIDirectClient, error)

NewAPIDirectClient creates a new APIDirectClient

func (*APIDirectClient) ListPods added in v1.1.6

func (apiClient *APIDirectClient) ListPods(cntxt context.Context, namespace, node string) (*corev1.PodList, error)

ListPods lists all pods in the given namespace and node

type CRDDirectClient added in v1.1.6

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

CRDDirectClient is a direct client to CRDs in the API Server.

func NewCRDDirectClient added in v1.1.6

func NewCRDDirectClient(kubeconfig *rest.Config, groupVersion *schema.GroupVersion) (*CRDDirectClient, error)

NewCRDDirectClient creates a new direct crd client to the api server

func (*CRDDirectClient) Get added in v1.1.6

func (crdClient *CRDDirectClient) Get(cntxt context.Context, name, namespace, typeName string) (*nnc.NodeNetworkConfig, error)

Get gets a crd

type CrdReconciler

type CrdReconciler struct {
	KubeClient KubeClient
	NodeName   string
	CNSClient  cnsclient.APIClient
}

CrdReconciler watches for CRD status changes

func (*CrdReconciler) Reconcile

func (r *CrdReconciler) Reconcile(request reconcile.Request) (reconcile.Result, error)

Reconcile is called on CRD status changes

func (*CrdReconciler) SetupWithManager

func (r *CrdReconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager Sets up the reconciler with a new manager, filtering using NodeNetworkConfigFilter

type DirectAPIClient added in v1.1.6

type DirectAPIClient interface {
	ListPods(cntxt context.Context, namespace, node string) (*corev1.PodList, error)
}

DirectAPIClient is an interface to talk directly with API Server without cache

type DirectCRDClient added in v1.1.6

type DirectCRDClient interface {
	Get(cntxt context.Context, name, namespace, typeName string) (*nnc.NodeNetworkConfig, error)
}

DirectCRDClient is an interface to get CRDs directly, without cache

type KubeClient

type KubeClient interface {
	Get(ctx context.Context, key client.ObjectKey, obj runtime.Object) error
	Update(ctx context.Context, obj runtime.Object, opts ...client.UpdateOption) error
}

KubeClient is an interface that talks to the API server

type NodeNetworkConfigFilter

type NodeNetworkConfigFilter struct {
	predicate.Funcs
	// contains filtered or unexported fields
}

func (NodeNetworkConfigFilter) Create

Only process create events if CRD name equals this host's name

func (NodeNetworkConfigFilter) Delete

TODO: Decide what deleteing crd means with DNC Ignore all for now

func (NodeNetworkConfigFilter) Update

Returns true if request is to be processed by Reconciler Checks that old generation equals new generation because status changes don't change generation number

Jump to

Keyboard shortcuts

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