backupplan

package
v0.40.0 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package backupplan builds the non-secret recovery plan emitted by `stackkit generate`.

Index

Constants

View Source
const (
	SchemaVersion       = "stackkit.backup-recovery.v1"
	PlanFileName        = "backup-recovery-plan.json"
	MaterializerPending = "pending"
	// MaterializerManagedOffsitePending marks a plan whose managed offsite
	// target (kombify-r2) is provisioned control-plane-side but the node has
	// not connected the Kopia repository yet.
	MaterializerManagedOffsitePending = "managed-offsite-pending"
	// MaterializerMaterialized marks a plan whose backup engine is connected
	// to its configured targets and has produced at least one snapshot.
	MaterializerMaterialized = "materialized"
)

Variables

This section is empty.

Functions

func Write

func Write(dir string, plan RecoveryPlan) error

Write persists the CUE-derived recovery plan as generate metadata. It is secret-free: destinations and class names only, never keys.

Types

type EmergencyExportManifestPlan

type EmergencyExportManifestPlan struct {
	Enabled               bool `json:"enabled"`
	IncludeRestoreRunbook bool `json:"includeRestoreRunbook"`
	IncludeChecksums      bool `json:"includeChecksums"`
}

type EmergencyExportPlan

type EmergencyExportPlan struct {
	Enabled        bool                          `json:"enabled"`
	Mode           string                        `json:"mode"`
	Format         string                        `json:"format"`
	Schedule       string                        `json:"schedule,omitempty"`
	IncludeClasses []string                      `json:"includeClasses,omitempty"`
	LargeMediaMode string                        `json:"largeMediaMode"`
	Target         *models.BackupDestinationSpec `json:"target,omitempty"`
	Manifest       EmergencyExportManifestPlan   `json:"manifest"`
}

type ManagedServerlessPlan

type ManagedServerlessPlan struct {
	Enabled                    bool     `json:"enabled"`
	NoServerDependency         bool     `json:"noServerDependency"`
	Authority                  string   `json:"authority"`
	ProtectedClasses           []string `json:"protectedClasses,omitempty"`
	ControlPlaneSnapshot       bool     `json:"controlPlaneSnapshot"`
	ProviderNativeBackups      bool     `json:"providerNativeBackups"`
	RequireProviderDataHandles bool     `json:"requireProviderDataHandles"`
	RequireRebuildIntent       bool     `json:"requireRebuildIntent"`
	PortableManifest           bool     `json:"portableManifest"`
	PreChangeSnapshot          bool     `json:"preChangeSnapshot"`
	Schedule                   string   `json:"schedule,omitempty"`
}

type MultiServerMediaPlan

type MultiServerMediaPlan struct {
	DocumentsMode           string `json:"documentsMode"`
	PhotosMode              string `json:"photosMode"`
	LargeMediaMode          string `json:"largeMediaMode"`
	ExcludeGeneratedCaches  bool   `json:"excludeGeneratedCaches"`
	RequireExternalMediaMap bool   `json:"requireExternalMediaMap"`
}

type MultiServerPerformancePlan

type MultiServerPerformancePlan struct {
	Profile                    string `json:"profile"`
	AvoidPrimaryOnlySnapshots  bool   `json:"avoidPrimaryOnlySnapshots"`
	StaggerNodeSnapshots       bool   `json:"staggerNodeSnapshots"`
	MaxConcurrentNodeSnapshots int    `json:"maxConcurrentNodeSnapshots"`
	PreferRepoServerFanIn      bool   `json:"preferRepoServerFanIn"`
}

type MultiServerPlan

type MultiServerPlan struct {
	Enabled                      bool                       `json:"enabled"`
	Topology                     string                     `json:"topology"`
	MinServers                   int                        `json:"minServers"`
	MinManagers                  int                        `json:"minManagers"`
	QuorumSize                   int                        `json:"quorumSize"`
	ToleratedManagerFailures     int                        `json:"toleratedManagerFailures"`
	CapacityHeadroomNodes        int                        `json:"capacityHeadroomNodes"`
	ReleaseReadyHA               bool                       `json:"releaseReadyHa"`
	CoordinationMode             string                     `json:"coordinationMode"`
	RequireOffsiteRepo           bool                       `json:"requireOffsiteRepo"`
	RequireEmergencyExport       bool                       `json:"requireEmergencyExport"`
	RequireRestoreDrill          bool                       `json:"requireRestoreDrill"`
	RequireSharedVolumeInventory bool                       `json:"requireSharedVolumeInventory"`
	RequirePlacementSpread       bool                       `json:"requirePlacementSpread"`
	RequireManagedServerlessPlan bool                       `json:"requireManagedServerlessPlan"`
	Media                        MultiServerMediaPlan       `json:"media"`
	Performance                  MultiServerPerformancePlan `json:"performance"`
}

type RecoveryPlan

type RecoveryPlan struct {
	SchemaVersion      string                         `json:"schemaVersion"`
	Source             string                         `json:"source"`
	StackKit           string                         `json:"stackkit,omitempty"`
	InstallMode        string                         `json:"installMode,omitempty"`
	PlacementMode      string                         `json:"placementMode,omitempty"`
	NodeCount          int                            `json:"nodeCount"`
	Enabled            bool                           `json:"enabled"`
	PrimaryEngine      string                         `json:"primaryEngine"`
	DataClasses        []string                       `json:"dataClasses,omitempty"`
	SingleServer       SingleServerPlan               `json:"singleServer"`
	MultiServer        MultiServerPlan                `json:"multiServer"`
	EmergencyExport    EmergencyExportPlan            `json:"emergencyExport"`
	ManagedServerless  ManagedServerlessPlan          `json:"managedServerless"`
	MaterializerStatus string                         `json:"materializerStatus"`
	FollowUps          []string                       `json:"followUps,omitempty"`
	Destinations       []models.BackupDestinationSpec `json:"destinations,omitempty"`
}

func Build

func Build(spec *models.StackSpec) RecoveryPlan

func Read

func Read(dir string) (RecoveryPlan, error)

Read loads a previously generated recovery plan.

func (RecoveryPlan) MarshalIndent

func (p RecoveryPlan) MarshalIndent() ([]byte, error)

MarshalIndent renders the generated recovery plan with the same trailing newline used by backup-hooks.json.

type SingleServerPlan

type SingleServerPlan struct {
	Enabled                  bool   `json:"enabled"`
	MinimumRecoveryCopies    int    `json:"minimumRecoveryCopies"`
	RequireLocalRepo         bool   `json:"requireLocalRepo"`
	RequireEmergencyExport   bool   `json:"requireEmergencyExport"`
	RequireRestoreDrill      bool   `json:"requireRestoreDrill"`
	RequireOffHostCopy       bool   `json:"requireOffHostCopy"`
	RecommendOffsite         bool   `json:"recommendOffsite"`
	RecommendImmutableCopy   bool   `json:"recommendImmutableCopy"`
	KopiaIndependentFallback string `json:"kopiaIndependentFallback"`
}

Jump to

Keyboard shortcuts

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