object

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Apr 6, 2019 License: Apache-2.0 Imports: 7 Imported by: 56

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

This section is empty.

Variables

This section is empty.

Functions

func EndpointsKey

func EndpointsKey(name, namespace string) string

EndpointsKey return a string using for the index.

func NewIndexerInformer

func NewIndexerInformer(lw cache.ListerWatcher, objType runtime.Object, resyncPeriod time.Duration, h cache.ResourceEventHandler, indexers cache.Indexers, convert ToFunc) (cache.Indexer, cache.Controller)

NewIndexerInformer is a copy of the cache.NewIndexInformer function, but allows Process to have a conversion function (ToFunc).

func ServiceKey

func ServiceKey(name, namespace string) string

ServiceKey return a string using for the index.

func ToEndpoints

func ToEndpoints(obj interface{}) interface{}

ToEndpoints converts an api.Service to a *Service.

func ToPod

func ToPod(obj interface{}) interface{}

ToPod converts an api.Pod to a *Pod.

func ToService

func ToService(obj interface{}) interface{}

ToService converts an api.Service to a *Service.

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) GetInitializers

func (e *Empty) GetInitializers() *v1.Initializers

GetInitializers implements the metav1.Object interface.

func (*Empty) GetLabels

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

GetLabels implements the metav1.Object interface.

func (*Empty) GetObjectKind

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

GetObjectKind implementss 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) SetInitializers

func (e *Empty) SetInitializers(initializers *v1.Initializers)

SetInitializers implements the metav1.Object interface.

func (*Empty) SetLabels

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

SetLabels 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 {
	Version   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 Pod

type Pod struct {
	Version   string
	PodIP     string
	Name      string
	Namespace string
	Deleting  bool

	*Empty
}

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

func (*Pod) DeepCopyObject

func (p *Pod) DeepCopyObject() runtime.Object

DeepCopyObject implements the ObjectKind interface.

func (*Pod) GetName

func (p *Pod) GetName() string

GetName implements the metav1.Object interface.

func (*Pod) GetNamespace

func (p *Pod) GetNamespace() string

GetNamespace implements the metav1.Object interface.

func (*Pod) GetResourceVersion

func (p *Pod) GetResourceVersion() string

GetResourceVersion implements the metav1.Object interface.

func (*Pod) SetName

func (p *Pod) SetName(name string)

SetName implements the metav1.Object interface.

func (*Pod) SetNamespace

func (p *Pod) SetNamespace(namespace string)

SetNamespace implements the metav1.Object interface.

func (*Pod) SetResourceVersion

func (p *Pod) SetResourceVersion(version string)

SetResourceVersion implements the metav1.Object interface.

type Service

type Service struct {
	Version      string
	Name         string
	Namespace    string
	Index        string
	ClusterIP    string
	Type         api.ServiceType
	ExternalName string
	Ports        []api.ServicePort

	// ExternalIPs we may want to export.
	ExternalIPs []string

	*Empty
}

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

func (*Service) DeepCopyObject

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

DeepCopyObject implements the ObjectKind interface.

func (*Service) GetName

func (s *Service) GetName() string

GetName implements the metav1.Object interface.

func (*Service) GetNamespace

func (s *Service) GetNamespace() string

GetNamespace implements the metav1.Object interface.

func (*Service) GetResourceVersion

func (s *Service) GetResourceVersion() string

GetResourceVersion implements the metav1.Object interface.

func (*Service) SetName

func (s *Service) SetName(name string)

SetName implements the metav1.Object interface.

func (*Service) SetNamespace

func (s *Service) SetNamespace(namespace string)

SetNamespace implements the metav1.Object interface.

func (*Service) SetResourceVersion

func (s *Service) SetResourceVersion(version string)

SetResourceVersion implements the metav1.Object interface.

type ToFunc

type ToFunc func(interface{}) interface{}

ToFunc converts one empty interface to another.

Jump to

Keyboard shortcuts

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