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 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 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"`
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"`
}
Click to show internal directories.
Click to hide internal directories.