cache

package
v0.14.2 Latest Latest
Warning

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

Go to latest
Published: Jun 17, 2015 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package cache implements a cache for time series data.

Index

Constants

View Source
const NodeContainerName = "machine"

NodeContainerName is the container name assigned to node level metrics.

Variables

This section is empty.

Functions

This section is empty.

Types

type Cache

type Cache interface {
	StorePods([]source_api.Pod) error
	StoreContainers([]source_api.Container) error
	// TODO: Handle events.
	// GetPods returns a list of pod elements in the cache between 'start' and 'end'.
	// If 'start' is zero, it returns all the elements up until 'end'.
	// If 'end' is zero, it returns all the elements from 'start'.
	// If both 'start' and 'end' are zero, it returns all the elements in the cache.
	GetPods(start, end time.Time) []*PodElement

	// GetNodes returns a list of pod elements in the cache between 'start' and 'end'.
	// If 'start' is zero, it returns all the elements up until 'end'.
	// If 'end' is zero, it returns all the elements from 'start'.
	// If both 'start' and 'end' are zero, it returns all the elements in the cache.
	GetNodes(start, end time.Time) []*ContainerElement

	// GetFreeContainers returns a list of pod elements in the cache between 'start' and 'end'.
	// If 'start' is zero, it returns all the elements up until 'end'.
	// If 'end' is zero, it returns all the elements from 'start'.
	// If both 'start' and 'end' are zero, it returns all the elements in the cache.
	GetFreeContainers(start, end time.Time) []*ContainerElement
}

func NewCache

func NewCache(bufferDuration time.Duration) Cache

type ContainerElement

type ContainerElement struct {
	Metadata
	Metrics []*ContainerMetricElement
}

type ContainerMetricElement

type ContainerMetricElement struct {
	Spec  *cadvisor_api.ContainerSpec
	Stats *cadvisor_api.ContainerStats
}

type Metadata

type Metadata struct {
	Name         string
	Namespace    string
	NamespaceUID string
	UID          string
	Hostname     string
	Labels       map[string]string
	ExternalID   string
}

type PodElement

type PodElement struct {
	Metadata
	// map of container name to container element.
	Containers []*ContainerElement
}

type TimeStore

type TimeStore interface {
	// Put stores 'data' with 'timestamp'. Returns error upon failure.
	// Ignores zero timestamps.
	Put(timestamp time.Time, data interface{}) error
	// Get returns a slice of elements that were previously stored with timestamps
	// between 'start' and 'end'. 'start' is expected to be before 'end'.
	// If 'start' is zero, it returns all the elements up until 'end'.
	// If 'end' is zero, it returns all the elements from 'start'.
	// If both 'start' and 'end' are zero, it returns all the elements in the cache.
	Get(start, end time.Time) []interface{}
	// Delete removes all elements that were previously stored with timestamps
	// between 'start' and 'end'.
	Delete(start, end time.Time) error
}

TimeStore represents a timeseries storage. Implementations are expected to be thread safe.

func NewGCStore

func NewGCStore(store TimeStore, bufferDuration time.Duration) TimeStore

func NewTimeStore

func NewTimeStore() TimeStore

Jump to

Keyboard shortcuts

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