add_kubernetes_metadata

package
v6.0.0-beta1+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2017 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PodNameIndexerName   = "pod_name"
	FieldMatcherName     = "fields"
	ContainerIndexerName = "container"
)

Names of indexers and matchers that have been defined.

Variables

View Source
var Indexing = NewRegister()

Indexing is the singleton Register instance where all Indexers and Matchers are stored

Functions

func IndexerPlugin

func IndexerPlugin(name string, c IndexerConstructor) map[string][]interface{}

func MatcherPlugin

func MatcherPlugin(name string, m MatcherConstructor) map[string][]interface{}

Types

type Container

type Container struct {
	Image                  string          `json:"image"`
	ImagePullPolicy        string          `json:"imagePullPolicy"`
	Name                   string          `json:"name"`
	Ports                  []ContainerPort `json:"ports"`
	Resources              struct{}        `json:"resources"`
	TerminationMessagePath string          `json:"terminationMessagePath"`
	VolumeMounts           []struct {
		MountPath string `json:"mountPath"`
		Name      string `json:"name"`
		ReadOnly  bool   `json:"readOnly"`
	} `json:"volumeMounts"`
}

type ContainerIndexer

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

ContainerIndexer indexes pods based on all their containers IDs

func (*ContainerIndexer) GetIndexes

func (c *ContainerIndexer) GetIndexes(pod *Pod) []string

func (*ContainerIndexer) GetMetadata

func (c *ContainerIndexer) GetMetadata(pod *Pod) []MetadataIndex

type ContainerPort

type ContainerPort struct {
	Name          string `json:"name"`
	ContainerPort int64  `json:"containerPort"`
	Protocol      string `json:"protocol"`
}

type Enabled

type Enabled struct {
	Enabled bool `config:"enabled"`
}

type FieldMatcher

type FieldMatcher struct {
	MatchFields []string
}

func (*FieldMatcher) MetadataIndex

func (f *FieldMatcher) MetadataIndex(event common.MapStr) string

type GenDefaultMeta

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

func (*GenDefaultMeta) GenerateMetaData

func (g *GenDefaultMeta) GenerateMetaData(pod *Pod) common.MapStr

GenerateMetaData generates default metadata for the given pod taking to account certain filters

type GenMeta

type GenMeta interface {
	//GenerateMetaData generates metadata by taking in a pod as an input
	GenerateMetaData(pod *Pod) common.MapStr
}

GenMeta takes in pods to generate metadata for them

type Indexer

type Indexer interface {
	// GetMetadata generates event metadata for the given pod, then returns the
	// list of indexes to create, with the metadata to put on them
	GetMetadata(pod *Pod) []MetadataIndex

	// GetIndexes return the list of indexes the given pod belongs to. This function
	// must return the same indexes than GetMetadata
	GetIndexes(pod *Pod) []string
}

Indexer take known pods and generate all the metadata we need to enrich events in a efficient way. By preindexing the metadata in the way it will be checked when matching events

func NewContainerIndexer

func NewContainerIndexer(_ common.Config, genMeta GenMeta) (Indexer, error)

func NewPodNameIndexer

func NewPodNameIndexer(_ common.Config, genMeta GenMeta) (Indexer, error)

type IndexerConstructor

type IndexerConstructor func(config common.Config, genMeta GenMeta) (Indexer, error)

type Indexers

type Indexers struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*Indexers) GetIndexes

func (i *Indexers) GetIndexes(pod *Pod) []string

GetIndexes returns the composed index list from all registered indexers

func (*Indexers) GetMetadata

func (i *Indexers) GetMetadata(pod *Pod) []MetadataIndex

GetMetadata returns the composed metadata list from all registered indexers

type Matcher

type Matcher interface {
	// MetadataIndex returns the index string to use in annotation lookups for the given
	// event. A previous indexer should have generated that index for this to work
	// This function can return "" if the event doesn't match
	MetadataIndex(event common.MapStr) string
}

Matcher takes a new event and returns the index

func NewFieldMatcher

func NewFieldMatcher(cfg common.Config) (Matcher, error)

type MatcherConstructor

type MatcherConstructor func(config common.Config) (Matcher, error)

type Matchers

type Matchers struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func (*Matchers) MetadataIndex

func (m *Matchers) MetadataIndex(event common.MapStr) string

MetadataIndex returns the index string for the first matcher from the Registry returning one

type MetadataIndex

type MetadataIndex struct {
	Index string
	Data  common.MapStr
}

MetadataIndex holds a pair of index -> metadata info

type NodeOption

type NodeOption struct{}

type ObjectMeta

type ObjectMeta struct {
	Annotations       map[string]string `json:"annotations"`
	CreationTimestamp string            `json:"creationTimestamp"`
	DeletionTimestamp string            `json:"deletionTimestamp"`
	GenerateName      string            `json:"generateName"`
	Labels            map[string]string `json:"labels"`
	Name              string            `json:"name"`
	Namespace         string            `json:"namespace"`
	OwnerReferences   []struct {
		APIVersion string `json:"apiVersion"`
		Controller bool   `json:"controller"`
		Kind       string `json:"kind"`
		Name       string `json:"name"`
		UID        string `json:"uid"`
	} `json:"ownerReferences"`
	ResourceVersion string `json:"resourceVersion"`
	SelfLink        string `json:"selfLink"`
	UID             string `json:"uid"`
}

type PluginConfig

type PluginConfig []map[string]common.Config

type Pod

type Pod struct {
	APIVersion string     `json:"apiVersion"`
	Kind       string     `json:"kind"`
	Metadata   ObjectMeta `json:"metadata"`
	Spec       PodSpec    `json:"spec"`
	Status     PodStatus  `json:"status"`
}

type PodContainerStatus

type PodContainerStatus struct {
	ContainerID string `json:"containerID"`
	Image       string `json:"image"`
	ImageID     string `json:"imageID"`
	LastState   struct {
		Terminated struct {
			ContainerID string `json:"containerID"`
			ExitCode    int64  `json:"exitCode"`
			FinishedAt  string `json:"finishedAt"`
			Reason      string `json:"reason"`
			StartedAt   string `json:"startedAt"`
		} `json:"terminated"`
	} `json:"lastState"`
	Name         string `json:"name"`
	Ready        bool   `json:"ready"`
	RestartCount int64  `json:"restartCount"`
	State        struct {
		Running struct {
			StartedAt string `json:"startedAt"`
		} `json:"running"`
	} `json:"state"`
}

type PodNameIndexer

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

PodNameIndexer implements default indexer based on pod name

func (*PodNameIndexer) GetIndexes

func (p *PodNameIndexer) GetIndexes(pod *Pod) []string

func (*PodNameIndexer) GetMetadata

func (p *PodNameIndexer) GetMetadata(pod *Pod) []MetadataIndex

type PodSpec

type PodSpec struct {
	Containers                    []Container `json:"containers"`
	DNSPolicy                     string      `json:"dnsPolicy"`
	NodeName                      string      `json:"nodeName"`
	RestartPolicy                 string      `json:"restartPolicy"`
	SecurityContext               struct{}    `json:"securityContext"`
	ServiceAccount                string      `json:"serviceAccount"`
	ServiceAccountName            string      `json:"serviceAccountName"`
	TerminationGracePeriodSeconds int64       `json:"terminationGracePeriodSeconds"`
}

type PodStatus

type PodStatus struct {
	Conditions        []PodStatusCondition `json:"conditions"`
	ContainerStatuses []PodContainerStatus `json:"containerStatuses"`
	HostIP            string               `json:"hostIP"`
	Phase             string               `json:"phase"`
	PodIP             string               `json:"podIP"`
	StartTime         string               `json:"startTime"`
}

type PodStatusCondition

type PodStatusCondition struct {
	LastProbeTime      interface{} `json:"lastProbeTime"`
	LastTransitionTime string      `json:"lastTransitionTime"`
	Status             string      `json:"status"`
	Type               string      `json:"type"`
}

type PodWatcher

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

PodWatcher is a controller that synchronizes Pods.

func NewPodWatcher

func NewPodWatcher(kubeClient *k8s.Client, indexers *Indexers, syncPeriod time.Duration, host string) *PodWatcher

NewPodWatcher initializes the watcher client to provide a local state of pods from the cluster (filtered to the given host)

func (*PodWatcher) GetMetaData

func (p *PodWatcher) GetMetaData(arg string) common.MapStr

func (*PodWatcher) GetPod

func (p *PodWatcher) GetPod(uid string) *Pod

func (*PodWatcher) Run

func (p *PodWatcher) Run() bool

func (*PodWatcher) Stop

func (p *PodWatcher) Stop()

type Register

type Register struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

Register contains Indexer and Matchers to use on pod indexing and event matching

func NewRegister

func NewRegister() *Register

NewRegister creates and returns a new Register.

func (*Register) AddDefaultIndexerConfig

func (r *Register) AddDefaultIndexerConfig(name string, config common.Config)

AddIndexer to the register

func (*Register) AddDefaultMatcherConfig

func (r *Register) AddDefaultMatcherConfig(name string, config common.Config)

AddMatcher to the register

func (*Register) AddIndexer

func (r *Register) AddIndexer(name string, indexer IndexerConstructor)

AddIndexer to the register

func (*Register) AddMatcher

func (r *Register) AddMatcher(name string, matcher MatcherConstructor)

AddMatcher to the register

func (*Register) GetIndexer

func (r *Register) GetIndexer(name string) IndexerConstructor

AddIndexer to the register

func (*Register) GetMatcher

func (r *Register) GetMatcher(name string) MatcherConstructor

AddMatcher to the register

Jump to

Keyboard shortcuts

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