etcd

package
v0.0.0-...-8fcca98 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2016 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	V1SchemaRoot          = "/v1/"
	VersionKey            = "/version"
	EncryptionKeyLabelKey = "/encryption-key"

	DomainSchemaRoot = V1SchemaRoot + "domain"

	ActualLRPSchemaRoot    = V1SchemaRoot + "actual"
	ActualLRPInstanceKey   = "instance"
	ActualLRPEvacuatingKey = "evacuating"

	DesiredLRPComponentsSchemaRoot     = V1SchemaRoot + "desired_lrp"
	DesiredLRPSchedulingInfoKey        = "schedule"
	DesiredLRPSchedulingInfoSchemaRoot = DesiredLRPComponentsSchemaRoot + "/" + DesiredLRPSchedulingInfoKey
	DesiredLRPRunInfoKey               = "run"
	DesiredLRPRunInfoSchemaRoot        = DesiredLRPComponentsSchemaRoot + "/" + DesiredLRPRunInfoKey

	TaskSchemaRoot = V1SchemaRoot + "task"
)
View Source
const (
	ETCDErrKeyNotFound           = 100
	ETCDErrIndexComparisonFailed = 101
	ETCDErrKeyExists             = 105
	ETCDErrIndexCleared          = 401
)
View Source
const NO_TTL = 0

Variables

This section is empty.

Functions

func ActualLRPIndexDir

func ActualLRPIndexDir(processGuid string, index int32) string

func ActualLRPProcessDir

func ActualLRPProcessDir(processGuid string) string

func ActualLRPSchemaPath

func ActualLRPSchemaPath(processGuid string, index int32) string

func CalculateConvergence

func CalculateConvergence(
	logger lager.Logger,
	clock clock.Clock,
	restartCalculator models.RestartCalculator,
	input *models.ConvergenceInput,
) *models.ConvergenceChanges

func DesiredLRPRunInfoSchemaPath

func DesiredLRPRunInfoSchemaPath(processGuid string) string

func DesiredLRPSchedulingInfoSchemaPath

func DesiredLRPSchedulingInfoSchemaPath(processGuid string) string

func DomainSchemaPath

func DomainSchemaPath(domain string) string

func ErrorFromEtcdError

func ErrorFromEtcdError(logger lager.Logger, err error) error

func EvacuatingActualLRPSchemaPath

func EvacuatingActualLRPSchemaPath(processGuid string, index int32) string

func TaskSchemaPath

func TaskSchemaPath(task *models.Task) string

func TaskSchemaPathByGuid

func TaskSchemaPathByGuid(taskGuid string) string

Types

type DesiredComponents

type DesiredComponents struct {
	*models.DesiredLRPSchedulingInfo
	*models.DesiredLRPRunInfo
}

type DesiredEventCache

type DesiredEventCache map[string]DesiredComponents

func NewDesiredEventCache

func NewDesiredEventCache() DesiredEventCache

func (DesiredEventCache) AddRunInfo

func (d DesiredEventCache) AddRunInfo(logger lager.Logger, runInfo *models.DesiredLRPRunInfo) (*models.DesiredLRP, bool)

func (DesiredEventCache) AddSchedulingInfo

func (d DesiredEventCache) AddSchedulingInfo(logger lager.Logger, schedulingInfo *models.DesiredLRPSchedulingInfo) (*models.DesiredLRP, bool)

type ETCDDB

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

func NewETCD

func NewETCD(
	serializationFormat *format.Format,
	convergenceWorkersSize int,
	updateWorkersSize int,
	desiredLRPCreationTimeout time.Duration,
	cryptor encryption.Cryptor,
	storeClient StoreClient,
	auctioneerClient auctioneer.Client,
	serviceClient bbs.ServiceClient,
	clock clock.Clock,
	repClientFactory rep.ClientFactory,
	taskCC taskworkpool.TaskCompletionClient,
) *ETCDDB

func (*ETCDDB) ActualLRPGroupByProcessGuidAndIndex

func (db *ETCDDB) ActualLRPGroupByProcessGuidAndIndex(logger lager.Logger, processGuid string, index int32) (*models.ActualLRPGroup, error)

func (*ETCDDB) ActualLRPGroups

func (db *ETCDDB) ActualLRPGroups(logger lager.Logger, filter models.ActualLRPFilter) ([]*models.ActualLRPGroup, error)

func (*ETCDDB) ActualLRPGroupsByProcessGuid

func (db *ETCDDB) ActualLRPGroupsByProcessGuid(logger lager.Logger, processGuid string) ([]*models.ActualLRPGroup, error)

func (*ETCDDB) CancelTask

func (db *ETCDDB) CancelTask(logger lager.Logger, taskGuid string) error

The cell calls this when the user requested to cancel the task stagerTaskBBS will retry this repeatedly if it gets a StoreTimeout error (up to N seconds?) Will fail if the task has already been cancelled or completed normally

func (*ETCDDB) ClaimActualLRP

func (db *ETCDDB) ClaimActualLRP(logger lager.Logger, processGuid string, index int32, instanceKey *models.ActualLRPInstanceKey) error

func (*ETCDDB) CompleteTask

func (db *ETCDDB) CompleteTask(logger lager.Logger, taskGuid, cellId string, failed bool, failureReason, result string) error

The cell calls this when it has finished running the task (be it success or failure) stagerTaskBBS will retry this repeatedly if it gets a StoreTimeout error (up to N seconds?) This really really shouldn't fail. If it does, blog about it and walk away. If it failed in a consistent way (i.e. key already exists), there's probably a flaw in our design.

func (*ETCDDB) ConvergeLRPs

func (db *ETCDDB) ConvergeLRPs(logger lager.Logger)

func (*ETCDDB) ConvergeTasks

func (db *ETCDDB) ConvergeTasks(
	logger lager.Logger,
	kickTaskDuration, expirePendingTaskDuration, expireCompletedTaskDuration time.Duration,
)

func (*ETCDDB) CrashActualLRP

func (db *ETCDDB) CrashActualLRP(logger lager.Logger, key *models.ActualLRPKey, instanceKey *models.ActualLRPInstanceKey, errorMessage string) error

func (*ETCDDB) DeleteTask

func (db *ETCDDB) DeleteTask(logger lager.Logger, taskGuid string) error

The stager calls this when it wants to signal that it has received a completion and is handling it stagerTaskBBS will retry this repeatedly if it gets a StoreTimeout error (up to N seconds?) If this fails, the stager should assume that someone else is handling the completion and should bail

func (*ETCDDB) DesireLRP

func (db *ETCDDB) DesireLRP(logger lager.Logger, desiredLRP *models.DesiredLRP) error

DesireLRP creates a DesiredLRPSchedulingInfo and a DesiredLRPRunInfo. In order to ensure that the complete model is available and there are no races in Desired Watches, DesiredLRPRunInfo is created before DesiredLRPSchedulingInfo.

func (*ETCDDB) DesireTask

func (db *ETCDDB) DesireTask(logger lager.Logger, taskDef *models.TaskDefinition, taskGuid, domain string) error

func (*ETCDDB) DesiredLRPByProcessGuid

func (db *ETCDDB) DesiredLRPByProcessGuid(logger lager.Logger, processGuid string) (*models.DesiredLRP, error)

func (*ETCDDB) DesiredLRPSchedulingInfos

func (db *ETCDDB) DesiredLRPSchedulingInfos(logger lager.Logger, filter models.DesiredLRPFilter) ([]*models.DesiredLRPSchedulingInfo, error)

func (*ETCDDB) DesiredLRPs

func (db *ETCDDB) DesiredLRPs(logger lager.Logger, filter models.DesiredLRPFilter) ([]*models.DesiredLRP, error)

func (*ETCDDB) Domains

func (db *ETCDDB) Domains(logger lager.Logger) ([]string, error)

func (*ETCDDB) EncryptionKeyLabel

func (db *ETCDDB) EncryptionKeyLabel(logger lager.Logger) (string, error)

func (*ETCDDB) EvacuateClaimedActualLRP

func (db *ETCDDB) EvacuateClaimedActualLRP(logger lager.Logger, key *models.ActualLRPKey, instanceKey *models.ActualLRPInstanceKey) (keepContainer bool, modelErr error)

func (*ETCDDB) EvacuateCrashedActualLRP

func (db *ETCDDB) EvacuateCrashedActualLRP(logger lager.Logger, key *models.ActualLRPKey, instanceKey *models.ActualLRPInstanceKey, errorMessage string) (bool, error)

func (*ETCDDB) EvacuateRunningActualLRP

func (db *ETCDDB) EvacuateRunningActualLRP(logger lager.Logger, key *models.ActualLRPKey, instanceKey *models.ActualLRPInstanceKey, netInfo *models.ActualLRPNetInfo, ttl uint64) (keepContainer bool, modelErr error)

func (*ETCDDB) EvacuateStoppedActualLRP

func (db *ETCDDB) EvacuateStoppedActualLRP(logger lager.Logger, key *models.ActualLRPKey, instanceKey *models.ActualLRPInstanceKey) (bool, error)

func (*ETCDDB) FailActualLRP

func (db *ETCDDB) FailActualLRP(logger lager.Logger, key *models.ActualLRPKey, errorMessage string) error

func (*ETCDDB) FailTask

func (db *ETCDDB) FailTask(logger lager.Logger, taskGuid, failureReason string) error

func (*ETCDDB) GatherActualLRPs

func (db *ETCDDB) GatherActualLRPs(logger lager.Logger, guids map[string]struct{}, lmc *LRPMetricCounter) (map[string]map[int32]*models.ActualLRP, error)

func (*ETCDDB) GatherAndPruneDesiredLRPs

func (db *ETCDDB) GatherAndPruneDesiredLRPs(logger lager.Logger, guids map[string]struct{}, lmc *LRPMetricCounter) (map[string]*models.DesiredLRP, error)

func (*ETCDDB) GatherAndPruneLRPs

func (db *ETCDDB) GatherAndPruneLRPs(logger lager.Logger) (*models.ConvergenceInput, error)

func (*ETCDDB) RemoveActualLRP

func (db *ETCDDB) RemoveActualLRP(logger lager.Logger, processGuid string, index int32) error

func (*ETCDDB) RemoveDesiredLRP

func (db *ETCDDB) RemoveDesiredLRP(logger lager.Logger, processGuid string) error

RemoveDesiredLRP deletes the DesiredLRPSchedulingInfo and the DesiredLRPRunInfo from the database. We delete DesiredLRPSchedulingInfo first because the system uses it to determine wheter the lrp is present. In the event that only the RunInfo fails to delete, the orphaned DesiredLRPRunInfo will be garbage collected later by convergence.

func (*ETCDDB) RemoveEvacuatingActualLRP

func (db *ETCDDB) RemoveEvacuatingActualLRP(logger lager.Logger, key *models.ActualLRPKey, instanceKey *models.ActualLRPInstanceKey) error

func (*ETCDDB) ResolveConvergence

func (db *ETCDDB) ResolveConvergence(logger lager.Logger, desiredLRPs map[string]*models.DesiredLRP, changes *models.ConvergenceChanges)

func (*ETCDDB) ResolvingTask

func (db *ETCDDB) ResolvingTask(logger lager.Logger, taskGuid string) error

The stager calls this when it wants to claim a completed task. This ensures that only one stager ever attempts to handle a completed task

func (*ETCDDB) RetireActualLRP

func (db *ETCDDB) RetireActualLRP(logger lager.Logger, key *models.ActualLRPKey) error

func (*ETCDDB) SetEncryptionKeyLabel

func (db *ETCDDB) SetEncryptionKeyLabel(logger lager.Logger, keyLabel string) error

func (*ETCDDB) SetVersion

func (db *ETCDDB) SetVersion(logger lager.Logger, version *models.Version) error

func (*ETCDDB) StartActualLRP

func (db *ETCDDB) StartActualLRP(logger lager.Logger, key *models.ActualLRPKey, instanceKey *models.ActualLRPInstanceKey, netInfo *models.ActualLRPNetInfo) error

func (*ETCDDB) StartTask

func (db *ETCDDB) StartTask(logger lager.Logger, taskGuid, cellID string) (bool, error)

func (*ETCDDB) TaskByGuid

func (db *ETCDDB) TaskByGuid(logger lager.Logger, taskGuid string) (*models.Task, error)

func (*ETCDDB) Tasks

func (db *ETCDDB) Tasks(logger lager.Logger, filter models.TaskFilter) ([]*models.Task, error)

func (*ETCDDB) UpdateDesiredLRP

func (db *ETCDDB) UpdateDesiredLRP(logger lager.Logger, processGuid string, update *models.DesiredLRPUpdate) error

func (*ETCDDB) UpsertDomain

func (db *ETCDDB) UpsertDomain(logger lager.Logger, domain string, ttl uint32) error

func (*ETCDDB) Version

func (db *ETCDDB) Version(logger lager.Logger) (*models.Version, error)

func (*ETCDDB) WatchForActualLRPChanges

func (db *ETCDDB) WatchForActualLRPChanges(logger lager.Logger,
	created func(*models.ActualLRPGroup),
	changed func(*models.ActualLRPChange),
	deleted func(*models.ActualLRPGroup),
) (chan<- bool, <-chan error)

func (*ETCDDB) WatchForDesiredLRPChanges

func (db *ETCDDB) WatchForDesiredLRPChanges(logger lager.Logger,
	created func(*models.DesiredLRP),
	changed func(*models.DesiredLRPChange),
	deleted func(*models.DesiredLRP),
) (chan<- bool, <-chan error)

type ETCDMetrics

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

func NewETCDMetrics

func NewETCDMetrics(logger lager.Logger, etcdOptions *ETCDOptions) (*ETCDMetrics, error)

func (*ETCDMetrics) Send

func (t *ETCDMetrics) Send()

type ETCDOptions

type ETCDOptions struct {
	CertFile               string
	KeyFile                string
	CAFile                 string
	ClusterUrls            []string
	IsSSL                  bool
	ClientSessionCacheSize int
	MaxIdleConnsPerHost    int
}

type LRPMetricCounter

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

func (LRPMetricCounter) Send

func (lmc LRPMetricCounter) Send()

type StoreClient

type StoreClient interface {
	Get(key string, sort bool, recursive bool) (*etcd.Response, error)
	Set(key string, value []byte, ttl uint64) (*etcd.Response, error)
	Create(key string, value []byte, ttl uint64) (*etcd.Response, error)
	Delete(key string, recursive bool) (*etcd.Response, error)
	DeleteDir(key string) (*etcd.Response, error)
	CompareAndSwap(key string, value []byte, ttl uint64, prevIndex uint64) (*etcd.Response, error)
	CompareAndDelete(key string, prevIndex uint64) (*etcd.Response, error)
	Watch(prefix string, waitIndex uint64, recursive bool, receiver chan *etcd.Response, stop chan bool) (*etcd.Response, error)
}

func NewStoreClient

func NewStoreClient(client *etcd.Client) StoreClient

Directories

Path Synopsis
This file was generated by counterfeiter
This file was generated by counterfeiter
test

Jump to

Keyboard shortcuts

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