Help us shape the future of Go! Take the 2026 Go Developer Survey

backupplan

package
v0.55.9 Latest Latest
Warning

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

Go to latest
Published: Nov 2, 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