orchestrator

package
v1.9.64 Latest Latest
Warning

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

Go to latest
Published: Apr 15, 2024 License: Apache-2.0 Imports: 8 Imported by: 11

Documentation

Index

Constants

View Source
const ArtifactDirectory = "/var/vcap/store/bbr-backup"

Variables

This section is empty.

Functions

func BuildExitCode

func BuildExitCode(errs Error) int

func ConvertErrors

func ConvertErrors(errs []error) error

func NewJobPostFailedBackupUnlockExecutable

func NewJobPostFailedBackupUnlockExecutable(job Job) executor.Executable

func NewJobPostRestoreUnlockExecutable

func NewJobPostRestoreUnlockExecutable(job Job) executor.Executable

func NewJobPostSuccessfulBackupUnlockExecutable

func NewJobPostSuccessfulBackupUnlockExecutable(job Job) executor.Executable

func NewJobPreBackupLockExecutable

func NewJobPreBackupLockExecutable(job Job) executor.Executable

func NewJobPreRestoreLockExecutable

func NewJobPreRestoreLockExecutable(job Job) executor.Executable

func Reverse

func Reverse(jobsSliceOfSlices [][]Job) [][]Job

Types

type AddFinishTimeStep

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

func (*AddFinishTimeStep) Run

func (s *AddFinishTimeStep) Run(session *Session) error

type ArtifactCopier

type ArtifactCopier interface {
	DownloadBackupFromDeployment(Backup, Deployment) error
	UploadBackupToDeployment(Backup, Deployment) error
}

func NewArtifactCopier

func NewArtifactCopier(executor executor.Executor, logger Logger) ArtifactCopier

type ArtifactDirError

type ArtifactDirError customError

func NewArtifactDirError

func NewArtifactDirError(errorMessage string) ArtifactDirError

type ArtifactIdentifier

type ArtifactIdentifier interface {
	InstanceName() string
	InstanceIndex() string
	InstanceID() string
	Name() string
	HasCustomName() bool
}

type AuthInfo

type AuthInfo struct {
	Type   string
	UaaUrl string
}

type Backup

type Backup interface {
	GetArtifactSize(ArtifactIdentifier) (string, error)
	GetArtifactByteSize(ArtifactIdentifier) (int, error)
	CreateArtifact(ArtifactIdentifier) (io.WriteCloser, error)
	ReadArtifact(ArtifactIdentifier) (io.ReadCloser, error)
	AddChecksum(ArtifactIdentifier, BackupChecksum) error
	CreateMetadataFileWithStartTime(time.Time) error
	AddFinishTime(time.Time) error
	FetchChecksum(ArtifactIdentifier) (BackupChecksum, error)
	CalculateChecksum(ArtifactIdentifier) (BackupChecksum, error)
	DeploymentMatches(string, []Instance) (bool, error)
	SaveManifest(manifest string) error
	Valid() (bool, error)
}

type BackupArtifact

type BackupArtifact interface {
	ArtifactIdentifier
	Size() (string, error)
	SizeInBytes() (int, error)
	Checksum() (BackupChecksum, error)
	StreamFromRemote(io.Writer) error
	Delete() error
	StreamToRemote(io.Reader) error
}

type BackupChecker

type BackupChecker struct {
	*Workflow
}

func NewBackupChecker

func NewBackupChecker(logger Logger, deploymentManager DeploymentManager, lockOrderer LockOrderer) *BackupChecker

func (BackupChecker) Check

func (b BackupChecker) Check(deploymentName string) Error

type BackupChecksum

type BackupChecksum map[string]string

func (BackupChecksum) Match

func (b BackupChecksum) Match(other BackupChecksum) (bool, []string)

type BackupCleaner

type BackupCleaner struct {
	Logger
	*Workflow
}

func NewBackupCleaner

func NewBackupCleaner(logger Logger, deploymentManager DeploymentManager, lockOrderer LockOrderer,
	executor executor.Executor) *BackupCleaner

func (BackupCleaner) Cleanup

func (c BackupCleaner) Cleanup(deploymentName string) Error

type BackupDownloadExecutable

type BackupDownloadExecutable struct {
	Logger
	// contains filtered or unexported fields
}

func NewBackupDownloadExecutable

func NewBackupDownloadExecutable(localBackup Backup, remoteArtifact BackupArtifact, logger Logger) BackupDownloadExecutable

func (BackupDownloadExecutable) Execute

func (e BackupDownloadExecutable) Execute() error

type BackupError

type BackupError customError

func NewBackupError

func NewBackupError(errorMessage string) BackupError

type BackupExecutable

type BackupExecutable struct {
	Job
}

func NewBackupExecutable

func NewBackupExecutable(j Job) BackupExecutable

func (BackupExecutable) Execute

func (e BackupExecutable) Execute() error

type BackupManager

type BackupManager interface {
	Create(string, string, Logger) (Backup, error)
	Open(string, Logger) (Backup, error)
}

type BackupStep

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

func (*BackupStep) Run

func (s *BackupStep) Run(session *Session) error

type BackupUploadExecutable

type BackupUploadExecutable struct {
	Logger
	// contains filtered or unexported fields
}

func NewBackupUploadExecutable

func NewBackupUploadExecutable(localBackup Backup, remoteArtifact BackupArtifact, instance Instance, logger Logger) BackupUploadExecutable

func (BackupUploadExecutable) Execute

func (e BackupUploadExecutable) Execute() error

type BackupableStep

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

func (*BackupableStep) Run

func (s *BackupableStep) Run(session *Session) error

type Backuper

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

func NewBackuper

func NewBackuper(backupManager BackupManager, logger Logger, deploymentManager DeploymentManager, lockOrderer LockOrderer,
	executor exe.Executor, nowFunc func() time.Time, artifactCopier ArtifactCopier, unsafeLockFree bool, timestamp string) *Backuper

func (Backuper) Backup

func (b Backuper) Backup(deploymentName, artifactPath string) Error

Backup checks if a deployment has backupable instances and backs them up.

type CleanupError

type CleanupError customError

func NewCleanupError

func NewCleanupError(errorMessage string) CleanupError

type CleanupPreviousStep

type CleanupPreviousStep struct{}

func (*CleanupPreviousStep) Run

func (s *CleanupPreviousStep) Run(session *Session) error

type CleanupStep

type CleanupStep struct{}

func (*CleanupStep) Run

func (s *CleanupStep) Run(session *Session) error

type CopyToRemoteStep

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

func (*CopyToRemoteStep) Run

func (s *CopyToRemoteStep) Run(session *Session) error

type CreateArtifactStep

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

func (*CreateArtifactStep) Run

func (s *CreateArtifactStep) Run(session *Session) error

type Deployment

type Deployment interface {
	IsBackupable() bool
	BackupableInstances() []Instance
	CheckArtifactDir() error
	IsRestorable() bool
	RestorableInstances() []Instance
	PreBackupLock(LockOrderer, executor.Executor) error
	Backup(executor.Executor) error
	PostBackupUnlock(bool, LockOrderer, executor.Executor) error
	Restore() error
	Cleanup() error
	CleanupPrevious() error
	Instances() []Instance
	PreRestoreLock(LockOrderer, executor.Executor) error
	PostRestoreUnlock(LockOrderer, executor.Executor) error
	ValidateLockingDependencies(orderer LockOrderer) error
}

func NewDeployment

func NewDeployment(logger Logger, instancesArray []Instance) Deployment

type DeploymentManager

type DeploymentManager interface {
	Find(deploymentName string) (Deployment, error)
	SaveManifest(deploymentName string, artifact Backup) error
}

type DrainError added in v1.7.2

type DrainError customError

func NewDrainError added in v1.7.2

func NewDrainError(errorMessage string) DrainError

type DrainStep

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

func (*DrainStep) Run

func (s *DrainStep) Run(session *Session) error

type Error

type Error []error

func NewError

func NewError(errs ...error) Error

func (Error) ContainsArtifactDirError

func (err Error) ContainsArtifactDirError() bool

func (Error) ContainsUnlockOrCleanupOrArtifactDirExists

func (err Error) ContainsUnlockOrCleanupOrArtifactDirExists() bool

func (Error) Error

func (err Error) Error() string

func (Error) IsCleanup

func (err Error) IsCleanup() bool

func (Error) IsFatal

func (err Error) IsFatal() bool

func (Error) IsNil

func (err Error) IsNil() bool

func (Error) IsPostBackup

func (err Error) IsPostBackup() bool

func (Error) PrettyError

func (err Error) PrettyError(includeStacktrace bool) string

type FindDeploymentStep

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

func (*FindDeploymentStep) Run

func (s *FindDeploymentStep) Run(session *Session) error

type Instance

type Instance interface {
	InstanceIdentifer
	IsBackupable() bool
	ArtifactDirExists() (bool, error)
	ArtifactDirCreated() bool
	MarkArtifactDirCreated()
	IsRestorable() bool
	Backup() error
	Restore() error
	Cleanup() error
	CleanupPrevious() error
	ArtifactsToBackup() []BackupArtifact
	ArtifactsToRestore() []BackupArtifact
	HasMetadataRestoreNames() bool
	Jobs() []Job
}

type InstanceIdentifer

type InstanceIdentifer interface {
	Name() string
	Index() string
	ID() string
}

type Job

type Job interface {
	HasBackup() bool
	HasRestore() bool
	HasNamedBackupArtifact() bool
	HasNamedRestoreArtifact() bool
	BackupArtifactName() string
	RestoreArtifactName() string
	HasMetadataRestoreName() bool
	Backup() error
	PreBackupLock() error
	PostBackupUnlock(afterSuccessfulBackup bool) error
	PreRestoreLock() error
	Restore() error
	PostRestoreUnlock() error
	Name() string
	Release() string
	InstanceIdentifier() string
	BackupArtifactDirectory() string
	RestoreArtifactDirectory() string
	BackupShouldBeLockedBefore() []JobSpecifier
	RestoreShouldBeLockedBefore() []JobSpecifier
}

type JobPostBackupUnlockExecutor

type JobPostBackupUnlockExecutor struct {
	Job
	// contains filtered or unexported fields
}

func (JobPostBackupUnlockExecutor) Execute

func (j JobPostBackupUnlockExecutor) Execute() error

type JobPostRestoreUnlockExecutor

type JobPostRestoreUnlockExecutor struct {
	Job
}

func (JobPostRestoreUnlockExecutor) Execute

func (j JobPostRestoreUnlockExecutor) Execute() error

type JobPreBackupLockExecutor

type JobPreBackupLockExecutor struct {
	Job
}

func (JobPreBackupLockExecutor) Execute

func (j JobPreBackupLockExecutor) Execute() error

type JobPreRestoreLockExecutor

type JobPreRestoreLockExecutor struct {
	Job
}

func (JobPreRestoreLockExecutor) Execute

func (j JobPreRestoreLockExecutor) Execute() error

type JobSpecifier

type JobSpecifier struct {
	Name    string
	Release string
}

type Jobs

type Jobs []Job

func (Jobs) AnyAreBackupable

func (jobs Jobs) AnyAreBackupable() bool

func (Jobs) AnyAreRestorable

func (jobs Jobs) AnyAreRestorable() bool

func (Jobs) Backupable

func (jobs Jobs) Backupable() Jobs

func (Jobs) CustomRestoreArtifactNames

func (jobs Jobs) CustomRestoreArtifactNames() []string

func (Jobs) HasMetadataRestoreNames

func (jobs Jobs) HasMetadataRestoreNames() bool

func (Jobs) Restorable

func (jobs Jobs) Restorable() Jobs

type LockError

type LockError customError

func NewLockError

func NewLockError(errorMessage string) LockError

type LockOrderer

type LockOrderer interface {
	Order(jobs []Job) ([][]Job, error)
}

type LockStep

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

func (*LockStep) Run

func (s *LockStep) Run(session *Session) error

type Logger

type Logger interface {
	Debug(tag, msg string, args ...interface{})
	Info(tag, msg string, args ...interface{})
	Warn(tag, msg string, args ...interface{})
	Error(tag, msg string, args ...interface{})
}

type Node

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

func NewNode

func NewNode(step Step) *Node

func (*Node) OnFailure

func (node *Node) OnFailure(failStep Step) *Node

func (*Node) OnSuccess

func (node *Node) OnSuccess(successStep Step) *Node

func (*Node) OnSuccessOrFailure

func (node *Node) OnSuccessOrFailure(step Step) *Node

type PostBackupUnlockStep

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

func (*PostBackupUnlockStep) Run

func (s *PostBackupUnlockStep) Run(session *Session) error

type PostRestoreUnlockStep

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

func (*PostRestoreUnlockStep) Run

func (s *PostRestoreUnlockStep) Run(session *Session) error

type PreRestoreLockStep

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

func (*PreRestoreLockStep) Run

func (s *PreRestoreLockStep) Run(session *Session) error

type RestorableStep

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

func (*RestorableStep) Run

func (s *RestorableStep) Run(session *Session) error

type RestoreCleaner

type RestoreCleaner struct {
	Logger
	*Workflow
}

func NewRestoreCleaner

func NewRestoreCleaner(logger Logger, deploymentManager DeploymentManager, lockOrderer LockOrderer, executor executor.Executor) *RestoreCleaner

func (RestoreCleaner) Cleanup

func (c RestoreCleaner) Cleanup(deploymentName string) Error

type RestoreStep

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

func (*RestoreStep) Run

func (s *RestoreStep) Run(session *Session) error

type Restorer

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

func NewRestorer

func NewRestorer(backupManager BackupManager, logger Logger, deploymentManager DeploymentManager,
	lockOrderer LockOrderer, executor executor.Executor, artifactCopier ArtifactCopier) *Restorer

func (Restorer) Restore

func (r Restorer) Restore(deploymentName, backupPath string) Error

type Session

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

func NewSession

func NewSession(deploymentName string) *Session

func (*Session) CurrentArtifact

func (session *Session) CurrentArtifact() Backup

func (*Session) CurrentArtifactPath

func (session *Session) CurrentArtifactPath() string

func (*Session) CurrentDeployment

func (session *Session) CurrentDeployment() Deployment

func (*Session) DeploymentName

func (session *Session) DeploymentName() string

func (*Session) SetCurrentArtifact

func (session *Session) SetCurrentArtifact(artifact Backup)

func (*Session) SetCurrentArtifactPath

func (session *Session) SetCurrentArtifactPath(artifactPath string)

func (*Session) SetCurrentDeployment

func (session *Session) SetCurrentDeployment(deployment Deployment)

type SkipStep added in v1.9.1

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

func NewSkipStep added in v1.9.1

func NewSkipStep(logger Logger, name string) *SkipStep

func (*SkipStep) Run added in v1.9.1

func (s *SkipStep) Run(session *Session) error

type Step

type Step interface {
	Run(*Session) error
}

func NewAddFinishTimeStep

func NewAddFinishTimeStep(nowFunc func() time.Time) Step

func NewBackupStep

func NewBackupStep(executor executor.Executor) Step

func NewBackupableStep

func NewBackupableStep(lockOrderer LockOrderer, logger Logger) Step

func NewCleanupPreviousStep

func NewCleanupPreviousStep() Step

func NewCleanupStep

func NewCleanupStep() Step

func NewCopyToRemoteStep

func NewCopyToRemoteStep(artifactCopier ArtifactCopier) Step

func NewCreateArtifactStep

func NewCreateArtifactStep(logger Logger, backupManager BackupManager, deploymentManager DeploymentManager, nowFunc func() time.Time, timeStamp string) Step

func NewDrainStep

func NewDrainStep(logger Logger, artifactCopier ArtifactCopier) Step

func NewFindDeploymentStep

func NewFindDeploymentStep(deploymentManager DeploymentManager, logger Logger) Step

func NewLockStep

func NewLockStep(lockOrderer LockOrderer, executor executor.Executor) Step

func NewPostBackupUnlockStep

func NewPostBackupUnlockStep(afterSuccessfulBackup bool, lockOrderer LockOrderer, executor executor.Executor) Step

func NewPostRestoreUnlockStep

func NewPostRestoreUnlockStep(lockOrderer LockOrderer, executor executor.Executor) Step

func NewPreRestoreLockStep

func NewPreRestoreLockStep(lockOrderer LockOrderer, executor executor.Executor) Step

func NewRestorableStep

func NewRestorableStep(lockOrderer LockOrderer, logger Logger) Step

func NewRestoreStep

func NewRestoreStep(logger Logger) Step

func NewValidateArtifactStep

func NewValidateArtifactStep(logger Logger, backupManager BackupManager) Step

type UnlockError

type UnlockError customError

func NewPostUnlockError

func NewPostUnlockError(errorMessage string) UnlockError

type ValidateArtifactStep

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

func (*ValidateArtifactStep) Run

func (s *ValidateArtifactStep) Run(session *Session) error

type Workflow

type Workflow struct {
	StartingNode *Node
	Nodes        []*Node
}

func NewWorkflow

func NewWorkflow() *Workflow

func (*Workflow) Add

func (workflow *Workflow) Add(step Step) *Node

func (*Workflow) Run

func (workflow *Workflow) Run(session *Session) Error

func (*Workflow) StartWith

func (workflow *Workflow) StartWith(step Step) *Node

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

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