object

package
v0.0.0-...-a56f14f Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package object holds functions that convert the objects from the k8s API in to a more memory efficient structures.

Adding new fields to any of the structures defined in pod.go, endpoint.go and service.go should not be done lightly as this increases the memory use and will leads to OOMs in the k8s scale test.

We can do some optimizations here as well. We store IP addresses as strings, this might be moved to uint32 (for v4) for instance, but then we need to convert those again.

Also the msg.Service use in this plugin may be deprecated at some point, as we don't use most of those features anyway and would free us from the *etcd* dependency, where msg.Service is defined. And should save some mem/cpu as we convert to and from msg.Services.

Index

Constants

View Source
const (
	LabelClusterId = "multicluster.kubernetes.io/source-cluster"
)

Variables

This section is empty.

Functions

func EndpointSliceToEndpoints

func EndpointSliceToEndpoints(obj meta.Object) (meta.Object, error)

EndpointSliceToEndpoints converts a *discovery.EndpointSlice to a *Endpoints.

func EndpointSliceV1beta1ToEndpoints

func EndpointSliceV1beta1ToEndpoints(obj meta.Object) (meta.Object, error)

EndpointSliceV1beta1ToEndpoints converts a v1beta1 *discovery.EndpointSlice to a *Endpoints.

func EndpointsKey

func EndpointsKey(name, namespace string) string

EndpointsKey returns a string using for the index.

func ServiceKey

func ServiceKey(name, namespace string) string

ServiceKey returns a string using for the index.

func ToNamespace

func ToNamespace(obj meta.Object) (meta.Object, error)

ToNamespace returns a function that converts an api.Namespace to a *Namespace.

func ToServiceImport

func ToServiceImport(obj meta.Object) (meta.Object, error)

ToServiceImport converts an v1alpha1.ServiceImport to a *ServiceImport.

Types

type Empty

type Empty struct{}

Empty is an empty struct.

func (*Empty) GetAnnotations

func (e *Empty) GetAnnotations() map[string]string

GetAnnotations implements the metav1.Object interface.

func (*Empty) GetClusterName

func (e *Empty) GetClusterName() string

GetClusterName implements the metav1.Object interface.

func (*Empty) GetCreationTimestamp

func (e *Empty) GetCreationTimestamp() v1.Time

GetCreationTimestamp implements the metav1.Object interface.

func (*Empty) GetDeletionGracePeriodSeconds

func (e *Empty) GetDeletionGracePeriodSeconds() *int64

GetDeletionGracePeriodSeconds implements the metav1.Object interface.

func (*Empty) GetDeletionTimestamp

func (e *Empty) GetDeletionTimestamp() *v1.Time

GetDeletionTimestamp implements the metav1.Object interface.

func (*Empty) GetFinalizers

func (e *Empty) GetFinalizers() []string

GetFinalizers implements the metav1.Object interface.

func (*Empty) GetGenerateName

func (e *Empty) GetGenerateName() string

GetGenerateName implements the metav1.Object interface.

func (*Empty) GetGeneration

func (e *Empty) GetGeneration() int64

GetGeneration implements the metav1.Object interface.

func (*Empty) GetLabels

func (e *Empty) GetLabels() map[string]string

GetLabels implements the metav1.Object interface.

func (*Empty) GetManagedFields

func (e *Empty) GetManagedFields() []v1.ManagedFieldsEntry

GetManagedFields implements the metav1.Object interface.

func (*Empty) GetObjectKind

func (e *Empty) GetObjectKind() schema.ObjectKind

GetObjectKind implements the ObjectKind interface as a noop.

func (*Empty) GetOwnerReferences

func (e *Empty) GetOwnerReferences() []v1.OwnerReference

GetOwnerReferences implements the metav1.Object interface.

func (e *Empty) GetSelfLink() string

GetSelfLink implements the metav1.Object interface.

func (*Empty) GetUID

func (e *Empty) GetUID() types.UID

GetUID implements the metav1.Object interface.

func (*Empty) SetAnnotations

func (e *Empty) SetAnnotations(annotations map[string]string)

SetAnnotations implements the metav1.Object interface.

func (*Empty) SetClusterName

func (e *Empty) SetClusterName(clusterName string)

SetClusterName implements the metav1.Object interface.

func (*Empty) SetCreationTimestamp

func (e *Empty) SetCreationTimestamp(timestamp v1.Time)

SetCreationTimestamp implements the metav1.Object interface.

func (*Empty) SetDeletionGracePeriodSeconds

func (e *Empty) SetDeletionGracePeriodSeconds(*int64)

SetDeletionGracePeriodSeconds implements the metav1.Object interface.

func (*Empty) SetDeletionTimestamp

func (e *Empty) SetDeletionTimestamp(timestamp *v1.Time)

SetDeletionTimestamp implements the metav1.Object interface.

func (*Empty) SetFinalizers

func (e *Empty) SetFinalizers(finalizers []string)

SetFinalizers implements the metav1.Object interface.

func (*Empty) SetGenerateName

func (e *Empty) SetGenerateName(name string)

SetGenerateName implements the metav1.Object interface.

func (*Empty) SetGeneration

func (e *Empty) SetGeneration(generation int64)

SetGeneration implements the metav1.Object interface.

func (*Empty) SetLabels

func (e *Empty) SetLabels(labels map[string]string)

SetLabels implements the metav1.Object interface.

func (*Empty) SetManagedFields

func (e *Empty) SetManagedFields(managedFields []v1.ManagedFieldsEntry)

SetManagedFields implements the metav1.Object interface.

func (*Empty) SetOwnerReferences

func (e *Empty) SetOwnerReferences([]v1.OwnerReference)

SetOwnerReferences implements the metav1.Object interface.

func (e *Empty) SetSelfLink(selfLink string)

SetSelfLink implements the metav1.Object interface.

func (*Empty) SetUID

func (e *Empty) SetUID(uid types.UID)

SetUID implements the metav1.Object interface.

type EndpointAddress

type EndpointAddress struct {
	IP            string
	Hostname      string
	NodeName      string
	TargetRefName string
}

EndpointAddress is a tuple that describes single IP address.

type EndpointPort

type EndpointPort struct {
	Port     int32
	Name     string
	Protocol string
}

EndpointPort is a tuple that describes a single port.

type EndpointSubset

type EndpointSubset struct {
	Addresses []EndpointAddress
	Ports     []EndpointPort
}

EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports.

type Endpoints

type Endpoints struct {
	// Don't add new fields to this struct without talking to the CoreDNS maintainers.
	Version   string
	ClusterId string
	Name      string
	Namespace string
	Index     string
	IndexIP   []string
	Subsets   []EndpointSubset

	*Empty
}

Endpoints is a stripped down api.Endpoints with only the items we need for CoreDNS.

func (*Endpoints) CopyWithoutSubsets

func (e *Endpoints) CopyWithoutSubsets() *Endpoints

CopyWithoutSubsets copies e, without the subsets.

func (*Endpoints) DeepCopyObject

func (e *Endpoints) DeepCopyObject() runtime.Object

DeepCopyObject implements the ObjectKind interface.

func (*Endpoints) GetName

func (e *Endpoints) GetName() string

GetName implements the metav1.Object interface.

func (*Endpoints) GetNamespace

func (e *Endpoints) GetNamespace() string

GetNamespace implements the metav1.Object interface.

func (*Endpoints) GetResourceVersion

func (e *Endpoints) GetResourceVersion() string

GetResourceVersion implements the metav1.Object interface.

func (*Endpoints) SetName

func (e *Endpoints) SetName(name string)

SetName implements the metav1.Object interface.

func (*Endpoints) SetNamespace

func (e *Endpoints) SetNamespace(namespace string)

SetNamespace implements the metav1.Object interface.

func (*Endpoints) SetResourceVersion

func (e *Endpoints) SetResourceVersion(version string)

SetResourceVersion implements the metav1.Object interface.

type Namespace

type Namespace struct {
	// Don't add new fields to this struct without talking to the CoreDNS maintainers.
	Version string
	Name    string

	*Empty
}

Namespace is a stripped down api.Namespace with only the items we need for CoreDNS.

func (*Namespace) DeepCopyObject

func (n *Namespace) DeepCopyObject() runtime.Object

DeepCopyObject implements the ObjectKind interface.

func (*Namespace) GetName

func (n *Namespace) GetName() string

GetName implements the metav1.Object interface.

func (*Namespace) GetNamespace

func (n *Namespace) GetNamespace() string

GetNamespace implements the metav1.Object interface.

func (*Namespace) GetResourceVersion

func (n *Namespace) GetResourceVersion() string

GetResourceVersion implements the metav1.Object interface.

func (*Namespace) SetName

func (n *Namespace) SetName(name string)

SetName implements the metav1.Object interface.

func (*Namespace) SetNamespace

func (n *Namespace) SetNamespace(namespace string)

SetNamespace implements the metav1.Object interface.

func (*Namespace) SetResourceVersion

func (n *Namespace) SetResourceVersion(version string)

SetResourceVersion implements the metav1.Object interface.

type ProcessorBuilder

type ProcessorBuilder func(cache.Indexer, cache.ResourceEventHandler) cache.ProcessFunc

ProcessorBuilder returns function to process cache events.

type ServiceImport

type ServiceImport struct {
	Version    string
	Name       string
	Namespace  string
	Index      string
	ClusterIPs []string
	Type       v1alpha1.ServiceImportType
	Ports      []v1alpha1.ServicePort

	*object.Empty
}

ServiceImport is a stripped down api.ServiceImport with only the items we need for CoreDNS.

func (*ServiceImport) DeepCopyObject

func (s *ServiceImport) DeepCopyObject() runtime.Object

DeepCopyObject implements the ObjectKind interface.

func (*ServiceImport) GetName

func (s *ServiceImport) GetName() string

GetName implements the metav1.Object interface.

func (*ServiceImport) GetNamespace

func (s *ServiceImport) GetNamespace() string

GetNamespace implements the metav1.Object interface.

func (*ServiceImport) GetResourceVersion

func (s *ServiceImport) GetResourceVersion() string

GetResourceVersion implements the metav1.Object interface.

func (*ServiceImport) SetName

func (s *ServiceImport) SetName(name string)

SetName implements the metav1.Object interface.

func (*ServiceImport) SetNamespace

func (s *ServiceImport) SetNamespace(namespace string)

SetNamespace implements the metav1.Object interface.

func (*ServiceImport) SetResourceVersion

func (s *ServiceImport) SetResourceVersion(version string)

SetResourceVersion implements the metav1.Object interface.

type ToFunc

type ToFunc func(v1.Object) (v1.Object, error)

ToFunc converts one v1.Object to another v1.Object.

Jump to

Keyboard shortcuts

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