Documentation ¶
Index ¶
- Variables
- func ConfigEqual(a, b *Config) bool
- func DropNode(nodename string)
- func InitData()
- func InstanceString(p naming.Path, nodename string) string
- type Config
- type Data
- func (c *Data[T]) DropNode(nodename string)
- func (c *Data[T]) Get(p naming.Path, nodename string) *T
- func (c *Data[T]) GetAll() []DataElement[T]
- func (c *Data[T]) GetByNode(nodename string) map[naming.Path]*T
- func (c *Data[T]) GetByPath(p naming.Path) map[string]*T
- func (c *Data[T]) Set(p naming.Path, nodename string, v *T)
- func (c *Data[T]) Unset(p naming.Path, nodename string)
- type DataElement
- type Dataer
- type Instance
- type Monitor
- type MonitorAction
- type MonitorGlobalExpect
- type MonitorGlobalExpectOptionsPlacedAt
- type MonitorGlobalExpectOptionsRestarted
- type MonitorLocalExpect
- type MonitorState
- type MonitorUpdate
- type Node
- type ResourceConfig
- type ResourceConfigs
- type ResourceMonitor
- type ResourceMonitorRestart
- type ResourceMonitors
- type ResourceOrder
- type ResourceRunningSet
- type ResourceStatuses
- type States
- type StatesList
- type Status
- type SubsetConfig
- type SubsetConfigs
Constants ¶
This section is empty.
Variables ¶
var ( MonitorStateStrings = map[MonitorState]string{ MonitorStateBooted: "booted", MonitorStateBootFailed: "boot failed", MonitorStateBooting: "booting", MonitorStateDeleted: "deleted", MonitorStateDeleteFailed: "delete failed", MonitorStateDeleting: "deleting", MonitorStateFreezeFailed: "freeze failed", MonitorStateFreezing: "freezing", MonitorStateFrozen: "frozen", MonitorStateIdle: "idle", MonitorStateProvisioned: "provisioned", MonitorStateProvisioning: "provisioning", MonitorStateProvisionFailed: "provision failed", MonitorStatePurgeFailed: "purge failed", MonitorStateReady: "ready", MonitorStateRestarted: "restarted", MonitorStateRunning: "running", MonitorStateShutdown: "shutdown", MonitorStateShutdownFailed: "shutdown failed", MonitorStateShutting: "shutting", MonitorStateStarted: "started", MonitorStateStartFailed: "start failed", MonitorStateStarting: "starting", MonitorStateStopFailed: "stop failed", MonitorStateStopped: "stopped", MonitorStateStopping: "stopping", MonitorStateThawed: "thawed", MonitorStateThawedFailed: "unfreeze failed", MonitorStateThawing: "thawing", MonitorStateUnprovisioned: "unprovisioned", MonitorStateUnprovisionFailed: "unprovision failed", MonitorStateUnprovisioning: "unprovisioning", MonitorStateWaitChildren: "wait children", MonitorStateWaitLeader: "wait leader", MonitorStateWaitNonLeader: "wait non-leader", MonitorStateWaitParents: "wait parents", MonitorStateWaitPriors: "wait priors", MonitorStateInit: "init", } MonitorStateValues = map[string]MonitorState{ "init": MonitorStateInit, "booted": MonitorStateBooted, "boot failed": MonitorStateBootFailed, "booting": MonitorStateBooting, "idle": MonitorStateIdle, "deleted": MonitorStateDeleted, "deleting": MonitorStateDeleting, "freeze failed": MonitorStateFreezeFailed, "freezing": MonitorStateFreezing, "frozen": MonitorStateFrozen, "provisioned": MonitorStateProvisioned, "provisioning": MonitorStateProvisioning, "provision failed": MonitorStateProvisionFailed, "purge failed": MonitorStatePurgeFailed, "ready": MonitorStateReady, "restarted": MonitorStateRestarted, "running": MonitorStateRunning, "shutdown": MonitorStateShutdown, "shutdown failed": MonitorStateShutdownFailed, "shutting": MonitorStateShutting, "started": MonitorStateStarted, "start failed": MonitorStateStartFailed, "starting": MonitorStateStarting, "stop failed": MonitorStateStopFailed, "stopped": MonitorStateStopped, "stopping": MonitorStateStopping, "thawed": MonitorStateThawed, "unfreeze failed": MonitorStateThawedFailed, "thawing": MonitorStateThawing, "unprovisioned": MonitorStateUnprovisioned, "unprovision failed": MonitorStateUnprovisionFailed, "unprovisioning": MonitorStateUnprovisioning, "wait children": MonitorStateWaitChildren, "wait leader": MonitorStateWaitLeader, "wait non-leader": MonitorStateWaitNonLeader, "wait parents": MonitorStateWaitParents, "wait priors": MonitorStateWaitPriors, } MonitorLocalExpectStrings = map[MonitorLocalExpect]string{ MonitorLocalExpectStarted: "started", MonitorLocalExpectShutdown: "shutdown", MonitorLocalExpectNone: "none", MonitorLocalExpectInit: "init", } MonitorLocalExpectValues = map[string]MonitorLocalExpect{ "shutdown": MonitorLocalExpectShutdown, "started": MonitorLocalExpectStarted, "none": MonitorLocalExpectNone, "init": MonitorLocalExpectInit, } MonitorGlobalExpectStrings = map[MonitorGlobalExpect]string{ MonitorGlobalExpectAborted: "aborted", MonitorGlobalExpectDeleted: "deleted", MonitorGlobalExpectInit: "init", MonitorGlobalExpectFrozen: "frozen", MonitorGlobalExpectNone: "none", MonitorGlobalExpectPlaced: "placed", MonitorGlobalExpectPlacedAt: "placed@", MonitorGlobalExpectProvisioned: "provisioned", MonitorGlobalExpectPurged: "purged", MonitorGlobalExpectRestarted: "restarted", MonitorGlobalExpectStarted: "started", MonitorGlobalExpectStopped: "stopped", MonitorGlobalExpectThawed: "thawed", MonitorGlobalExpectUnprovisioned: "unprovisioned", } MonitorGlobalExpectValues = map[string]MonitorGlobalExpect{ "aborted": MonitorGlobalExpectAborted, "deleted": MonitorGlobalExpectDeleted, "init": MonitorGlobalExpectInit, "frozen": MonitorGlobalExpectFrozen, "placed": MonitorGlobalExpectPlaced, "placed@": MonitorGlobalExpectPlacedAt, "provisioned": MonitorGlobalExpectProvisioned, "purged": MonitorGlobalExpectPurged, "restarted": MonitorGlobalExpectRestarted, "started": MonitorGlobalExpectStarted, "stopped": MonitorGlobalExpectStopped, "thawed": MonitorGlobalExpectThawed, "unprovisioned": MonitorGlobalExpectUnprovisioned, "none": MonitorGlobalExpectNone, } ErrInvalidGlobalExpect = errors.New("invalid instance monitor global expect") ErrInvalidLocalExpect = errors.New("invalid instance monitor local expect") ErrInvalidState = errors.New("invalid instance monitor state") ErrSameGlobalExpect = errors.New("instance monitor global expect is already set to the same value") ErrSameLocalExpect = errors.New("instance monitor local expect is already set to the same value") ErrSameState = errors.New("instance monitor state is already set to the same value") MonitorActionNone MonitorAction = "none" MonitorActionCrash MonitorAction = "crash" MonitorActionFreezeStop MonitorAction = "freeze_stop" MonitorActionReboot MonitorAction = "reboot" MonitorActionSwitch MonitorAction = "switch" )
Functions ¶
func ConfigEqual ¶
ConfigEqual returns a boolean reporting whether a == b
Nodename and Path are not compared
Types ¶
type Config ¶
type Config struct { App string `json:"app,omitempty"` Checksum string `json:"csum"` Children naming.Relations `json:"children,omitempty"` DRP bool `json:"drp,omitempty"` Env string `json:"env,omitempty"` FlexMax int `json:"flex_max,omitempty"` FlexMin int `json:"flex_min,omitempty"` FlexTarget int `json:"flex_target,omitempty"` MonitorAction MonitorAction `json:"monitor_action,omitempty"` PreMonitorAction string `json:"pre_monitor_action,omitempty"` Orchestrate string `json:"orchestrate"` Path naming.Path `json:"-"` Parents naming.Relations `json:"parents,omitempty"` PlacementPolicy placement.Policy `json:"placement_policy"` Priority priority.T `json:"priority,omitempty"` Resources ResourceConfigs `json:"resources"` Scope []string `json:"scope"` Subsets SubsetConfigs `json:"subsets"` Topology topology.T `json:"topology"` UpdatedAt time.Time `json:"updated_at"` // Volume specific Pool *string `json:"pool,omitempty"` Size *int64 `json:"size,omitempty"` }
Config describes a configuration file content checksum, timestamp of last change and the nodes it should be installed on.
func (Config) Unstructured ¶
type Data ¶
Data defines a shared holder for all instances Dataer
func (*Data[T]) DropNode ¶
func (c *Data[T]) DropNode(nodename string)
DropNode removes node instances
func (*Data[T]) GetAll ¶
func (c *Data[T]) GetAll() []DataElement[T]
GetAll returns all instance data as a list of DataElements
func (*Data[T]) GetByPath ¶
GetByPath returns a map (indexed by nodename) of instance data for path p
type Monitor ¶
type Monitor struct { GlobalExpect MonitorGlobalExpect `json:"global_expect"` GlobalExpectUpdatedAt time.Time `json:"global_expect_updated_at"` GlobalExpectOptions any `json:"global_expect_options"` // IsLeader flags the instance as the one where to provision as leader. // The provisioning leader is responsible for preparing the shared resources. // There can be only one leader, whatever the topology. IsLeader bool `json:"is_leader"` // IsHALeader flags the instances to start automatically if orchestrate=ha // or when the admin posted a start orchestration. // There can be one leader on a failover object, or many leaders with a flex topology. IsHALeader bool `json:"is_ha_leader"` LocalExpect MonitorLocalExpect `json:"local_expect"` LocalExpectUpdatedAt time.Time `json:"local_expect_updated_at"` // OrchestrationID is the accepted orchestration id that will be unset // when orchestration is reached on local node OrchestrationID uuid.UUID `json:"orchestration_id"` // OrchestrationIsDone is set by the orchestration when it decides the instance state has reached its target. // A orchestration is cleaned up when all instance monitors have OrchestrationIsDone set. OrchestrationIsDone bool `json:"orchestration_is_done"` SessionID uuid.UUID `json:"session_id"` State MonitorState `json:"state"` StateUpdatedAt time.Time `json:"state_updated_at"` MonitorActionExecutedAt time.Time `json:"monitor_action_executed_at"` IsPreserved bool `json:"preserved"` Resources ResourceMonitors `json:"resources,omitempty"` UpdatedAt time.Time `json:"updated_at"` Parents map[string]status.T `json:"parents,omitempty"` Children map[string]status.T `json:"children,omitempty"` }
Monitor describes the in-daemon states of an instance
func (Monitor) ResourceFlagRestartString ¶
func (*Monitor) UnmarshalJSON ¶
func (Monitor) Unstructured ¶
type MonitorAction ¶
type MonitorAction string
type MonitorGlobalExpect ¶
type MonitorGlobalExpect int
const ( MonitorGlobalExpectInit MonitorGlobalExpect = iota MonitorGlobalExpectAborted MonitorGlobalExpectDeleted MonitorGlobalExpectFrozen MonitorGlobalExpectNone MonitorGlobalExpectPlaced MonitorGlobalExpectPlacedAt MonitorGlobalExpectProvisioned MonitorGlobalExpectPurged MonitorGlobalExpectRestarted MonitorGlobalExpectStarted MonitorGlobalExpectStopped MonitorGlobalExpectThawed MonitorGlobalExpectUnprovisioned )
func (MonitorGlobalExpect) MarshalText ¶
func (t MonitorGlobalExpect) MarshalText() ([]byte, error)
func (MonitorGlobalExpect) String ¶
func (t MonitorGlobalExpect) String() string
func (*MonitorGlobalExpect) UnmarshalText ¶
func (t *MonitorGlobalExpect) UnmarshalText(b []byte) error
type MonitorGlobalExpectOptionsPlacedAt ¶
type MonitorGlobalExpectOptionsPlacedAt struct {
Destination []string `json:"destination"`
}
type MonitorGlobalExpectOptionsRestarted ¶
type MonitorGlobalExpectOptionsRestarted struct {
Force bool `json:"force"`
}
type MonitorLocalExpect ¶
type MonitorLocalExpect int
const ( MonitorLocalExpectInit MonitorLocalExpect = iota MonitorLocalExpectNone MonitorLocalExpectStarted MonitorLocalExpectShutdown )
func (MonitorLocalExpect) MarshalText ¶
func (t MonitorLocalExpect) MarshalText() ([]byte, error)
func (MonitorLocalExpect) String ¶
func (t MonitorLocalExpect) String() string
func (*MonitorLocalExpect) UnmarshalText ¶
func (t *MonitorLocalExpect) UnmarshalText(b []byte) error
type MonitorState ¶
type MonitorState int
const ( MonitorStateInit MonitorState = iota MonitorStateBooted MonitorStateBootFailed MonitorStateBooting MonitorStateIdle MonitorStateDeleted MonitorStateDeleteFailed MonitorStateDeleting MonitorStateFreezeFailed MonitorStateFreezing MonitorStateFrozen MonitorStateProvisioned MonitorStateProvisioning MonitorStateProvisionFailed MonitorStatePurgeFailed MonitorStateReady MonitorStateRestarted MonitorStateRunning MonitorStateShutdownFailed MonitorStateShutdown MonitorStateShutting MonitorStateStarted MonitorStateStartFailed MonitorStateStarting MonitorStateStopFailed MonitorStateStopped MonitorStateStopping MonitorStateThawed MonitorStateThawedFailed MonitorStateThawing MonitorStateUnprovisioned MonitorStateUnprovisionFailed MonitorStateUnprovisioning MonitorStateWaitChildren MonitorStateWaitLeader MonitorStateWaitNonLeader MonitorStateWaitParents MonitorStateWaitPriors )
func (MonitorState) Is ¶
func (t MonitorState) Is(states ...MonitorState) bool
func (MonitorState) IsDoing ¶
func (t MonitorState) IsDoing() bool
func (MonitorState) MarshalText ¶
func (t MonitorState) MarshalText() ([]byte, error)
func (MonitorState) String ¶
func (t MonitorState) String() string
func (*MonitorState) UnmarshalText ¶
func (t *MonitorState) UnmarshalText(b []byte) error
type MonitorUpdate ¶
type MonitorUpdate struct { GlobalExpect *MonitorGlobalExpect `json:"global_expect"` GlobalExpectOptions any `json:"global_expect_options"` LocalExpect *MonitorLocalExpect `json:"local_expect"` State *MonitorState `json:"state"` // CandidateOrchestrationID is a candidate orchestration id for a new imon orchestration. CandidateOrchestrationID uuid.UUID `json:"orchestration_id"` }
MonitorUpdate is embedded in the SetInstanceMonitor message to change some Monitor values. A nil value does not change the current value.
func (MonitorUpdate) String ¶
func (t MonitorUpdate) String() string
type ResourceConfig ¶
type ResourceConfig struct { IsDisabled bool `json:"is_disabled"` IsMonitored bool `json:"is_monitored"` IsStandby bool `json:"is_standby"` Restart int `json:"restart"` RestartDelay *time.Duration `json:"restart_delay"` }
func (ResourceConfig) Unstructured ¶
func (t ResourceConfig) Unstructured() map[string]any
type ResourceConfigs ¶
type ResourceConfigs map[string]ResourceConfig
func (ResourceConfigs) DeepCopy ¶
func (m ResourceConfigs) DeepCopy() ResourceConfigs
func (ResourceConfigs) Get ¶
func (rcfgs ResourceConfigs) Get(rid string) *ResourceConfig
func (ResourceConfigs) Unstructured ¶
func (t ResourceConfigs) Unstructured() map[string]map[string]any
type ResourceMonitor ¶
type ResourceMonitor struct {
Restart ResourceMonitorRestart `json:"restart"`
}
ResourceMonitor describes the restart states maintained by the daemon for an object instance.
func (*ResourceMonitor) DecRestartRemaining ¶
func (rmon *ResourceMonitor) DecRestartRemaining()
func (*ResourceMonitor) StopRestartTimer ¶
func (rmon *ResourceMonitor) StopRestartTimer() bool
func (ResourceMonitor) Unstructured ¶
func (t ResourceMonitor) Unstructured() map[string]any
type ResourceMonitorRestart ¶
type ResourceMonitorRestart struct { Remaining int `json:"remaining"` LastAt time.Time `json:"last_at"` Timer *time.Timer `json:"-"` }
func (ResourceMonitorRestart) Unstructured ¶
func (t ResourceMonitorRestart) Unstructured() map[string]any
type ResourceMonitors ¶
type ResourceMonitors map[string]ResourceMonitor
func (ResourceMonitors) DeepCopy ¶
func (m ResourceMonitors) DeepCopy() ResourceMonitors
func (ResourceMonitors) Get ¶
func (m ResourceMonitors) Get(rid string) *ResourceMonitor
func (ResourceMonitors) Set ¶
func (m ResourceMonitors) Set(rid string, rmon ResourceMonitor)
func (ResourceMonitors) Unstructured ¶
func (t ResourceMonitors) Unstructured() map[string]map[string]any
type ResourceOrder ¶
ResourceOrder is a sortable list representation of the instance status resources map.
func (ResourceOrder) Len ¶
func (a ResourceOrder) Len() int
func (ResourceOrder) Less ¶
func (a ResourceOrder) Less(i, j int) bool
func (ResourceOrder) Swap ¶
func (a ResourceOrder) Swap(i, j int)
type ResourceRunningSet ¶
type ResourceRunningSet []string
ResourceRunningSet is the list of resource currently running (sync and task).
func (ResourceRunningSet) Has ¶
func (t ResourceRunningSet) Has(rid string) bool
Has is true if the rid is found running in the Instance Monitor data sent by the daemon.
type ResourceStatuses ¶
func (ResourceStatuses) DeepCopy ¶
func (m ResourceStatuses) DeepCopy() ResourceStatuses
func (ResourceStatuses) Unstructured ¶
func (t ResourceStatuses) Unstructured() map[string]map[string]any
type States ¶
type States struct { Path naming.Path `json:"path"` Node Node `json:"node,omitempty"` Config Config `json:"config,omitempty"` Status Status `json:"status,omitempty"` Monitor Monitor `json:"monitor,omitempty"` }
States groups config and status of the object instance as seen by the daemon.
func (States) LoadTreeNode ¶
LoadTreeNode add the tree nodes representing the type instance into another tree, at the specified node.
func (States) LoadTreeNodeFolded ¶
LoadTreeNodeFolded add the tree nodes representing the type instance into another tree, at the specified node. TODO: probable bug, LoadTreeNodeFolded duplicate code of LoadTreeNode
type StatesList ¶
type StatesList []States
func (StatesList) ByNode ¶
func (t StatesList) ByNode() map[string]States
type Status ¶
type Status struct { Avail status.T `json:"avail"` FrozenAt time.Time `json:"frozen_at,omitempty"` LastStartedAt time.Time `json:"last_started_at"` Optional status.T `json:"optional,omitempty"` Overall status.T `json:"overall"` Provisioned provisioned.T `json:"provisioned"` Resources ResourceStatuses `json:"resources,omitempty"` Running ResourceRunningSet `json:"running,omitempty"` UpdatedAt time.Time `json:"updated_at"` }
Status describes the instance status.
func (Status) ResourceFlagsString ¶
ResourceFlagsString formats resource flags as a vector of characters.
R Running M Monitored D Disabled O Optional E Encap P Provisioned S Standby
func (*Status) SortedResources ¶
SortedResources returns a list of resource identifiers sorted by: 1/ driver group 2/ subset 3/ resource name
func (Status) Unstructured ¶
type SubsetConfig ¶
type SubsetConfig struct {
Parallel bool `json:"parallel,omitempty"`
}
func (SubsetConfig) Unstructured ¶
func (t SubsetConfig) Unstructured() map[string]any
type SubsetConfigs ¶
type SubsetConfigs map[string]SubsetConfig
func (SubsetConfigs) DeepCopy ¶
func (m SubsetConfigs) DeepCopy() SubsetConfigs
func (SubsetConfigs) Unstructured ¶
func (t SubsetConfigs) Unstructured() map[string]map[string]any