Documentation
¶
Index ¶
- Constants
- Variables
- func AcquireMaintenanceBarrier(dataDir string) (func(), error)
- func AcquireMutationLock(dataDir string) (func(), error)
- func AcquireNodeUpgradeLifecycleExclusion() (func(), error)
- func AcquireNodeUpgradeLifecycleExclusionForDataDir(dataDir string) (func(), error)
- func AcquireOperationBarrier(dataDir string) (func(), error)
- func AcquireSnapshotLock(dataDir string) (func(), error)
- func EnsureNoActiveControllerOperation(dataDir string, controllerPublicKey ...string) error
- func ParseKey(encoded string) ([]byte, error)
- type Entry
- type Manifest
- type Result
- type Source
Constants ¶
View Source
const ( BundleKind = "TakoPlatformRecoveryBundle" BundleAPIVersion = "tako.io/v1" )
Variables ¶
View Source
var ErrNodeUpgradeLeaseActive = errors.New("node lifecycle mutation blocked by active node upgrade lease")
Functions ¶
func AcquireMutationLock ¶
func AcquireNodeUpgradeLifecycleExclusion ¶
func AcquireNodeUpgradeLifecycleExclusion() (func(), error)
AcquireNodeUpgradeLifecycleExclusion serializes controller-local membership mutations with the per-node upgrade transaction. The returned release keeps the same kernel guard held for the entire lifecycle mutation.
func AcquireNodeUpgradeLifecycleExclusionForDataDir ¶
AcquireNodeUpgradeLifecycleExclusionForDataDir derives the child node-upgrade lock from the takod data directory. It keeps production and isolated test roots on the same lock-ordering path.
func AcquireOperationBarrier ¶
func AcquireSnapshotLock ¶
func EnsureNoActiveControllerOperation ¶
EnsureNoActiveControllerOperation is called only while the caller holds the exclusive snapshot lock. New HTTP operations are then blocked, so observing no active durable authority is a race-free snapshot precondition.
Types ¶
type Manifest ¶
type Manifest struct {
APIVersion string `json:"apiVersion"`
Kind string `json:"kind"`
ClusterID string `json:"clusterId"`
CreatedAt time.Time `json:"createdAt"`
Roots []string `json:"roots"`
Entries []Entry `json:"entries"`
}
Click to show internal directories.
Click to hide internal directories.