leadership

package
v0.0.0-...-a002913 Latest Latest
Warning

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

Go to latest
Published: Oct 2, 2015 License: AGPL-3.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// FacadeName is the string-representation of this API used both
	// to register the service, and for the client to resolve the
	// service endpoint.
	FacadeName = "LeadershipService"

	// MinLeaseRequest is the shortest duration for which we will accept
	// a leadership claim.
	MinLeaseRequest = 5 * time.Second

	// MaxLeaseRequest is the longest duration for which we will accept
	// a leadership claim.
	MaxLeaseRequest = 5 * time.Minute
)

Variables

This section is empty.

Functions

This section is empty.

Types

type GetSettingsFn

type GetSettingsFn func(serviceId string) (map[string]string, error)

GetSettingsFn declares a function-type which will return leadership settings for the given service ID.

type LeaderCheckFn

type LeaderCheckFn func(serviceId, unitId string) leadership.Token

LeaderCheckFn returns a Token whose Check method will return an error if the unit is not leader of the service.

type LeadershipService

type LeadershipService interface {

	// ClaimLeadership makes a leadership claim with the given parameters.
	ClaimLeadership(params params.ClaimLeadershipBulkParams) (params.ClaimLeadershipBulkResults, error)

	// BlockUntilLeadershipReleased blocks the caller until leadership is
	// released for the given service.
	BlockUntilLeadershipReleased(serviceTag names.ServiceTag) (params.ErrorResult, error)
}

LeadershipService implements a variant of leadership.Claimer for consumption over the API.

func NewLeadershipService

func NewLeadershipService(
	claimer leadership.Claimer, authorizer common.Authorizer,
) (LeadershipService, error)

NewLeadershipService constructs a new LeadershipService.

func NewLeadershipServiceFacade

func NewLeadershipServiceFacade(
	state *state.State, resources *common.Resources, authorizer common.Authorizer,
) (LeadershipService, error)

NewLeadershipServiceFacade constructs a new LeadershipService and presents a signature that can be used with RegisterStandardFacade.

type LeadershipSettingsAccessor

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

LeadershipSettingsAccessor provides a type which can read, write, and watch leadership settings.

func NewLeadershipSettingsAccessor

func NewLeadershipSettingsAccessor(
	authorizer common.Authorizer,
	registerWatcherFn RegisterWatcherFn,
	getSettingsFn GetSettingsFn,
	leaderCheckFn LeaderCheckFn,
	mergeSettingsChunkFn MergeSettingsChunkFn,
) *LeadershipSettingsAccessor

NewLeadershipSettingsAccessor creates a new LeadershipSettingsAccessor.

func (*LeadershipSettingsAccessor) Merge

Merge merges in the provided leadership settings. Only leaders for the given service may perform this operation.

func (*LeadershipSettingsAccessor) Read

Read reads leadership settings for the provided service ID. Any unit of the service may perform this operation.

func (*LeadershipSettingsAccessor) WatchLeadershipSettings

func (lsa *LeadershipSettingsAccessor) WatchLeadershipSettings(bulkArgs params.Entities) (params.NotifyWatchResults, error)

WatchLeadershipSettings will block the caller until leadership settings for the given service ID change.

type MergeSettingsChunkFn

type MergeSettingsChunkFn func(token leadership.Token, serviceId string, settings map[string]string) error

MergeSettingsChunk declares a function-type which will write the provided settings chunk into the greater leadership settings for the provided service ID, so long as the supplied Token remains valid.

type RegisterWatcherFn

type RegisterWatcherFn func(serviceId string) (watcherId string, _ error)

SettingsChangeNotifierFn declares a function-type which will return a channel that can be blocked on to be notified of setting changes for the provided document key.

Jump to

Keyboard shortcuts

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