Documentation
¶
Index ¶
- Variables
- func ConfigEqual(a, b *Config) bool
- func DropNode(nodename string)
- func InitData()
- func InstanceString(p naming.Path, nodename string) string
- func ResourceFlagsString(rid string, mon Monitor, status Status, rstatus resource.Status) string
- type ActorConfig
- type Config
- type Data
- func (c *Data[T]) DropNode(nodename string)
- 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]) GetByPathAndNode(p naming.Path, nodename 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 EncapMap
- type EncapStatus
- type FlexConfig
- 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 ResourceStatuses
- type States
- type StatesList
- type Status
- type SubsetConfig
- type SubsetConfigs
- type VolConfig
Constants ¶
This section is empty.
Variables ¶
var ( 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") )
var ( MonitorGlobalExpectStrings map[MonitorGlobalExpect]string MonitorGlobalExpectValues map[string]MonitorGlobalExpect )
var ( MonitorStateToString map[MonitorState]string StringToMonitorState map[string]MonitorState MonitorStatesFailure = []MonitorState{ MonitorStateDeleteFailure, MonitorStateFreezeFailure, MonitorStateProvisionFailure, MonitorStateShutdownFailure, MonitorStateStartFailure, MonitorStateStopFailure, MonitorStateUnfreezeFailure, MonitorStateUnprovisionFailure, } )
Functions ¶
func ConfigEqual ¶
ConfigEqual returns a boolean reporting whether a == b
Nodename and Path are not compared
func ResourceFlagsString ¶
ResourceFlagsString formats resource flags as a vector of characters.
R Running M Monitored D Disabled O Optional E Encap P Provisioned S Standby <n> Restart remaining, + More than 9 remaining, X UserStopped
Types ¶
type ActorConfig ¶
type ActorConfig struct {
App string `json:"app,omitempty"`
Children naming.Relations `json:"children,omitempty"`
DRP bool `json:"drp,omitempty"`
Env string `json:"env,omitempty"`
MonitorAction []MonitorAction `json:"monitor_action,omitempty"`
PreMonitorAction string `json:"pre_monitor_action,omitempty"`
Orchestrate string `json:"orchestrate"`
Parents naming.Relations `json:"parents,omitempty"`
PlacementPolicy placement.Policy `json:"placement_policy"`
Resources ResourceConfigs `json:"resources"`
Schedules []schedule.Config `json:"schedules"`
Stonith bool `json:"stonith"`
Subsets SubsetConfigs `json:"subsets"`
Topology topology.T `json:"topology,omitempty"`
Flex *FlexConfig `json:"flex,omitempty"`
// IsDisabled is true when DEFAULT.disable is true
IsDisabled bool `json:"is_disabled"`
}
func (*ActorConfig) DeepCopy ¶
func (cfg *ActorConfig) DeepCopy() *ActorConfig
type Config ¶
type Config struct {
Path naming.Path `json:"-"`
Checksum string `json:"csum"`
Priority priority.T `json:"priority"`
Scope []string `json:"scope"`
UpdatedAt time.Time `json:"updated_at"`
*ActorConfig
*VolConfig
}
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
func (*Data[T]) GetByPathAndNode ¶
GetByPathAndNode returns an instance data or nil if data is not found
type EncapMap ¶
type EncapMap map[string]EncapStatus
type EncapStatus ¶
func (EncapStatus) DeepCopy ¶
func (t EncapStatus) DeepCopy() *EncapStatus
func (EncapStatus) Unstructured ¶
func (t EncapStatus) Unstructured() map[string]any
type FlexConfig ¶
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.
// It is used to clear orchestration and orchestration id 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) UnmarshalJSON ¶
func (Monitor) Unstructured ¶
type MonitorAction ¶
type MonitorAction string
var ( // MonitorActionNone: represents the no-operation monitor action MonitorActionNone MonitorAction = "none" // MonitorActionCrash represents the monitor action that will try system crash/panic MonitorActionCrash MonitorAction = "crash" // MonitorActionFreezeStop represents the monitor action that will try freeze and subsequently stop // the monitored instance. MonitorActionFreezeStop MonitorAction = "freezestop" // MonitorActionReboot represents the monitor action that will reboot the system. MonitorActionReboot MonitorAction = "reboot" // MonitorActionSwitch represents the monitor action that will stop instance stop to allow // any other cluster nodes to takeover instance. MonitorActionSwitch MonitorAction = "switch" )
type MonitorGlobalExpect ¶
type MonitorGlobalExpect int
const ( MonitorGlobalExpectInit MonitorGlobalExpect = iota MonitorGlobalExpectAborted MonitorGlobalExpectDeleted MonitorGlobalExpectFrozen MonitorGlobalExpectNone MonitorGlobalExpectPlaced MonitorGlobalExpectPlacedAt MonitorGlobalExpectProvisioned MonitorGlobalExpectPurged MonitorGlobalExpectRestarted MonitorGlobalExpectStarted MonitorGlobalExpectStopped MonitorGlobalExpectUnfrozen 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 MonitorGlobalExpectOptionsRestarted ¶
type MonitorGlobalExpectOptionsRestarted struct {
Force bool `json:"force"`
}
type MonitorLocalExpect ¶
type MonitorLocalExpect int
const ( MonitorLocalExpectInit MonitorLocalExpect = iota MonitorLocalExpectNone MonitorLocalExpectStarted MonitorLocalExpectShutdown MonitorLocalExpectEvicted )
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 ( // General States MonitorStateInit MonitorState = iota MonitorStateIdle MonitorStateBootSuccess MonitorStateBootFailed MonitorStateBootProgress MonitorStateShutdownProgress MonitorStateShutdownFailure MonitorStateShutdownSuccess MonitorStateStartProgress MonitorStateStartFailure MonitorStateStartSuccess MonitorStateStopProgress MonitorStateStopFailure MonitorStateStopSuccess MonitorStateFreezeProgress MonitorStateFreezeFailure MonitorStateFreezeSuccess MonitorStateUnfreezeProgress MonitorStateUnfreezeFailure MonitorStateUnfreezeSuccess MonitorStateProvisionProgress MonitorStateProvisionFailure MonitorStateProvisionSuccess MonitorStateUnprovisionProgress MonitorStateUnprovisionFailure MonitorStateUnprovisionSuccess MonitorStateDeleteProgress MonitorStateDeleteFailure MonitorStateDeleteSuccess // wait states MonitorStateWaitChildren MonitorStateWaitParents MonitorStateWaitPriors MonitorStateWaitLeader MonitorStateWaitNonLeader // Miscellaneous MonitorStateRunning MonitorStateSyncing MonitorStatePurgeFailed MonitorStateReady MonitorStateRestarted )
func (MonitorState) IsDoing ¶
func (t MonitorState) IsDoing() bool
func (MonitorState) IsOneOf ¶
func (t MonitorState) IsOneOf(states ...MonitorState) 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) Unstructured ¶
func (t ResourceMonitor) Unstructured() map[string]any
type ResourceMonitorRestart ¶
type ResourceMonitorRestart struct {
Remaining int `json:"remaining"`
LastAt time.Time `json:"last_at"`
}
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 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"`
Encap EncapMap `json:"encap,omitempty"`
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 resource.RunningInfoList `json:"running,omitempty"`
UpdatedAt time.Time `json:"updated_at"`
}
Status describes the instance status.
func (Status) IsUnfrozen ¶
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