synced

package
v1.15.5 Latest Latest
Warning

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

Go to latest
Published: May 10, 2024 License: Apache-2.0 Imports: 23 Imported by: 4

Documentation

Overview

Package synced provides tools for tracking if k8s resources have been initially sychronized with the k8s apiserver.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AgentCRDResourceNames

func AgentCRDResourceNames() []string

AgentCRDResourceNames returns a list of all CRD resource names the Cilium agent needs to wait to be registered before initializing any k8s watchers.

func AllCiliumCRDResourceNames

func AllCiliumCRDResourceNames() []string

AllCiliumCRDResourceNames returns a list of all Cilium CRD resource names that the cilium operator or testsuite may register.

func CRDResourceName

func CRDResourceName(crd string) string

func ClusterMeshAPIServerResourceNames

func ClusterMeshAPIServerResourceNames() []string

ClusterMeshAPIServerResourceNames returns a list of all CRD resource names the clustermesh-apiserver needs to wait to be registered before initializing any k8s watchers.

func SyncCRDs

func SyncCRDs(ctx context.Context, clientset client.Clientset, crdNames []string, rs *Resources, ag *APIGroups) error

SyncCRDs will sync Cilium CRDs to ensure that they have all been installed inside the K8s cluster. These CRDs are added by the Cilium Operator. This function will block until it finds all the CRDs or if a timeout occurs.

Types

type APIGroups

type APIGroups struct {
	lock.RWMutex
	// contains filtered or unexported fields
}

APIGroups is a lockable map to hold which k8s API Groups we have enabled/in-use Note: We can replace it with a Go 1.9 map once we require that version

func (*APIGroups) AddAPI

func (m *APIGroups) AddAPI(api string)

func (*APIGroups) GetGroups

func (m *APIGroups) GetGroups() []string

func (*APIGroups) RemoveAPI

func (m *APIGroups) RemoveAPI(api string)

type Resources

type Resources struct {
	lock.RWMutex
	// contains filtered or unexported fields
}

Resources maps resource names to channels that are closed upon initial sync with k8s.

func (*Resources) BlockWaitGroupToSyncResources

func (r *Resources) BlockWaitGroupToSyncResources(
	stop <-chan struct{},
	swg *lock.StoppableWaitGroup,
	hasSyncedFunc cache.InformerSynced,
	resourceName string,
)

BlockWaitGroupToSyncResources ensures that anything which waits on waitGroup waits until all objects of the specified resource stored in Kubernetes are received by the informer and processed by controller. Fatally exits if syncing these initial objects fails. If the given stop channel is closed, it does not fatal. Once the k8s caches are synced against k8s, k8sCacheSynced is also closed.

func (*Resources) CancelWaitGroupToSyncResources

func (r *Resources) CancelWaitGroupToSyncResources(resourceName string)

func (*Resources) SetEventTimestamp

func (r *Resources) SetEventTimestamp(resource string)

func (*Resources) WaitForCacheSync

func (r *Resources) WaitForCacheSync(resourceNames ...string)

WaitForCacheSync waits for all K8s resources represented by resourceNames to have their K8s caches synchronized.

func (*Resources) WaitForCacheSyncWithTimeout

func (r *Resources) WaitForCacheSyncWithTimeout(timeout time.Duration, resourceNames ...string) error

WaitForCacheSyncWithTimeout waits for K8s resources represented by resourceNames to be synced. For every resource type, if an event happens after starting the wait, the timeout will be pushed out to be the time of the last event plus the timeout duration.

Jump to

Keyboard shortcuts

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