logic

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Apr 6, 2019 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithLogger

func WithLogger(ctx context.Context, l Logger) context.Context

Types

type Endpoint

type Endpoint interface {
	// Does not include placeholder filesystems
	ListFilesystems(ctx context.Context, req *pdu.ListFilesystemReq) (*pdu.ListFilesystemRes, error)
	ListFilesystemVersions(ctx context.Context, req *pdu.ListFilesystemVersionsReq) (*pdu.ListFilesystemVersionsRes, error)
	DestroySnapshots(ctx context.Context, req *pdu.DestroySnapshotsReq) (*pdu.DestroySnapshotsRes, error)
	WaitForConnectivity(ctx context.Context) error
}

Endpoint represents one side of the replication.

An endpoint is either in Sender or Receiver mode, represented by the correspondingly named interfaces defined in this package.

type Filesystem

type Filesystem struct {
	Path string // compat
	// contains filtered or unexported fields
}

func (*Filesystem) EqualToPreviousAttempt

func (f *Filesystem) EqualToPreviousAttempt(other driver.FS) bool

func (*Filesystem) PlanFS

func (f *Filesystem) PlanFS(ctx context.Context) ([]driver.Step, error)

func (*Filesystem) ReportInfo

func (f *Filesystem) ReportInfo() *report.FilesystemInfo

type Logger

type Logger = logger.Logger

type Planner

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

func NewPlanner

func NewPlanner(secsPerState *prometheus.HistogramVec, bytesReplicated *prometheus.CounterVec, sender Sender, receiver Receiver) *Planner

func (*Planner) Plan

func (p *Planner) Plan(ctx context.Context) ([]driver.FS, error)

func (*Planner) WaitForConnectivity

func (p *Planner) WaitForConnectivity(ctx context.Context) error

type Receiver

type Receiver interface {
	Endpoint
	// Receive sends r and sendStream (the latter containing a ZFS send stream)
	// to the parent github.com/zrepl/zrepl/replication.Endpoint.
	Receive(ctx context.Context, req *pdu.ReceiveReq, receive zfs.StreamCopier) (*pdu.ReceiveRes, error)
}

type Sender

type Sender interface {
	Endpoint
	// If a non-nil io.ReadCloser is returned, it is guaranteed to be closed before
	// any next call to the parent github.com/zrepl/zrepl/replication.Endpoint.
	// If the send request is for dry run the io.ReadCloser will be nil
	Send(ctx context.Context, r *pdu.SendReq) (*pdu.SendRes, zfs.StreamCopier, error)
	ReplicationCursor(ctx context.Context, req *pdu.ReplicationCursorReq) (*pdu.ReplicationCursorRes, error)
}

type Step

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

func (*Step) ReportInfo

func (s *Step) ReportInfo() *report.StepInfo

func (*Step) Step

func (s *Step) Step(ctx context.Context) error

func (*Step) String

func (s *Step) String() string

func (*Step) TargetDate

func (s *Step) TargetDate() time.Time

func (*Step) TargetEquals

func (s *Step) TargetEquals(other driver.Step) bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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