election

package
v0.0.0-...-a7f0406 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2020 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package election provides interfaces used for master election.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Notify

func Notify(m MasterElector, path, id string, s Service, abort <-chan struct{})

Notify runs Elect() on m, and calls Start()/Stop() on s when the elected master starts/stops matching 'id'. Never returns.

Types

type Fake

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

Fake allows for testing of anything consuming a MasterElector.

func NewFake

func NewFake() *Fake

NewFake makes a new fake MasterElector.

func (*Fake) ChangeMaster

func (f *Fake) ChangeMaster(newMaster Master)

func (*Fake) Elect

func (f *Fake) Elect(path, id string) watch.Interface

type Master

type Master string

Master is used to announce the current elected master.

func (Master) GetObjectKind

func (obj Master) GetObjectKind() unversioned.ObjectKind

IsAnAPIObject is used solely so we can work with the watch package. TODO(k8s): Either fix watch so this isn't necessary, or make this a real API Object. TODO(k8s): when it becomes clear how this package will be used, move these declarations to to the proper place.

type MasterElector

type MasterElector interface {
	// Elect makes the caller represented by 'id' enter into a master election for the
	// distributed lock defined by 'path'
	// The returned watch.Interface provides a stream of Master objects which
	// contain the current master.
	// Calling Stop on the returned interface relinquishes ownership (if currently possesed)
	// and removes the caller from the election
	Elect(path, id string) watch.Interface
}

MasterElector is an interface for services that can elect masters. Important Note: MasterElectors are not inter-operable, all participants in the election need to be

using the same underlying implementation of this interface for correct behavior.

func NewEtcdMasterElector

func NewEtcdMasterElector(h etcd.Client) MasterElector

NewEtcdMasterElector returns an implementation of election.MasterElector backed by etcd.

type Service

type Service interface {
	Validate(desired, current Master)
	Start()
	Stop()
}

Service represents anything that can start and stop on demand.

Jump to

Keyboard shortcuts

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