Documentation ¶
Index ¶
- Variables
- func Action(ctx context.Context, r Driver) error
- func Boot(ctx context.Context, r Driver) error
- func EvalStatus(ctx context.Context, r Driver) status.T
- func Full(ctx context.Context, r Driver) error
- func ImportDevices(r Driver) error
- func NewResourceFunc(drvID driver.ID) func() Driver
- func PRStart(ctx context.Context, r Driver) error
- func PRStop(ctx context.Context, r Driver) error
- func Provision(ctx context.Context, r Driver, leader bool) error
- func Provisioned(t Driver) (provisioned.T, error)
- func Resync(ctx context.Context, r Driver) error
- func Run(ctx context.Context, r Driver) error
- func SCSIPersistentReservationStart(ctx context.Context, r Driver) error
- func SCSIPersistentReservationStatus(r Driver) status.T
- func SCSIPersistentReservationStop(ctx context.Context, r Driver) error
- func SetProvisioned(ctx context.Context, r Driver) error
- func SetUnprovisioned(ctx context.Context, r Driver) error
- func Setenv(r Driver)
- func Shutdown(ctx context.Context, r Driver) error
- func Start(ctx context.Context, r Driver) error
- func StartStandby(ctx context.Context, r Driver) error
- func StatusCheckRequires(ctx context.Context, r Driver) error
- func Stop(ctx context.Context, r Driver) error
- func Unprovision(ctx context.Context, r Driver, leader bool) error
- func Update(ctx context.Context, r Driver) error
- type Aborter
- type ActionResourceDepser
- type Configurer
- type DisableFlag
- type Driver
- type Drivers
- func (t Drivers) Add(r Driver) Drivers
- func (t Drivers) GetRID(rid string) Driver
- func (t Drivers) Has(d Driver) bool
- func (t Drivers) HasRID(rid string) bool
- func (t Drivers) Intersection(other Drivers) Drivers
- func (t Drivers) Len() int
- func (t Drivers) Less(i, j int) bool
- func (t Drivers) Linkers(names []string) Drivers
- func (t Drivers) LinkersRID(names []string) []string
- func (t Drivers) ResolveLink(to string) (Driver, bool)
- func (t Drivers) Reverse()
- func (t Drivers) Sort()
- func (t Drivers) Swap(i, j int)
- func (t Drivers) Truncate(rid string) (Drivers, bool)
- func (t Drivers) Union(other Drivers) Drivers
- type EncapFlag
- type Hook
- type Info
- type InfoKey
- type InfoKeys
- type Infos
- type IsRunninger
- type Level
- type LinkNameser
- type LinkToer
- type Loader
- type MonitorFlag
- type NetNSPathCtxer
- type NetNSPather
- type ObjectDriver
- type OptionalFlag
- type PIDer
- type ProvisionLeadeder
- type ProvisionLeaderer
- type ProvisionStarter
- type ProvisionStatus
- type RestartFlag
- type Runner
- type SCSIPersistentReservation
- type ScheduleOptions
- type Scheduler
- type Setenver
- type StandbyFlag
- type Status
- type StatusInfoSchedAction
- type StatusInfoer
- type StatusLog
- type StatusLogEntry
- type StatusLogger
- type SubDeviceser
- type T
- func (t *T) ApplyPGChain(ctx context.Context) error
- func (t T) GetObject() any
- func (t *T) GetObjectDriver() ObjectDriver
- func (t *T) GetPG() *pg.Config
- func (t *T) GetPGID() string
- func (t T) GetRestartDelay() time.Duration
- func (t T) ID() *resourceid.T
- func (t T) IsActionDisabled() bool
- func (t T) IsDisabled() bool
- func (t T) IsEncap() bool
- func (t T) IsMonitored() bool
- func (t T) IsOptional() bool
- func (t T) IsProvisionDisabled() bool
- func (t T) IsShared() bool
- func (t T) IsStandby() bool
- func (t T) IsStatusDisabled() bool
- func (t T) IsUnprovisionDisabled() bool
- func (t *T) Lock(disable bool, timeout time.Duration, intent string) (func(), error)
- func (t *T) Log() *plog.Logger
- func (t T) MatchRID(s string) bool
- func (t T) MatchSubset(s string) bool
- func (t T) MatchTag(s string) bool
- func (t *T) Progress(ctx context.Context, cols ...any)
- func (t *T) ProgressKey() []string
- func (t T) RID() string
- func (t T) RSubset() string
- func (t T) Requires(action string) *resourcereqs.T
- func (t T) RestartCount() int
- func (t *T) SetLoggerForTest(l *plog.Logger)
- func (t *T) SetObject(o any)
- func (t *T) SetPG(v *pg.Config)
- func (t *T) SetRID(v string) error
- func (t *T) StatusLog() StatusLogger
- func (t T) TagSet() TagSet
- func (t T) Trigger(ctx context.Context, blocking trigger.Blocking, hook trigger.Hook, ...) error
- func (t T) VarDir() string
- type TagSet
- type UnprovisionLeadeder
- type UnprovisionLeaderer
- type UnprovisionStoper
Constants ¶
This section is empty.
Variables ¶
var ( ErrActionNotSupported = errors.New("the resource action is not supported on resource") ErrActionPostponedToLinker = errors.New("the resource action is postponed to its linker") ErrDisabled = errors.New("the resource is disabled") ErrActionReqNotMet = errors.New("the resource action requirements are not met") )
Functions ¶
func EvalStatus ¶
EvalStatus evaluates the status of a resource interfacer
func ImportDevices ¶
ImportDevices execute the Driver ImportDevices() function if defined. Some drivers need to import devices before they can list the reservable devices to register. So use this in the start codepath.
func NewResourceFunc ¶
func Provisioned ¶
func Provisioned(t Driver) (provisioned.T, error)
func SetProvisioned ¶
SetProvisioned creates a flag file in the resource var dir to remember that the provision is done.
func SetUnprovisioned ¶
SetUnprovisioned removes the flag file in the resource var dir to forget that the provision is done.
func StartStandby ¶
StartStandby activates a resource interfacer
func Unprovision ¶
Unprovision handles triggers around unprovision() and resource dependencies
Types ¶
type Aborter ¶
Aborter implements the Abort func, which can return true to block a start action before any resource has entered Start().
type ActionResourceDepser ¶
type ActionResourceDepser interface {
ActionResourceDeps() []actionresdeps.Dep
}
ActionResourceDepser implements the ActionResourceDeps func, which return a list of {action, rid depending on, rid depended on} tuples.
type Configurer ¶
type Configurer interface {
Configure() error
}
Configurer is an optional interface resource drivers can implement if they want to configure the resource after the manifest data has been loaded. For example, tuning the logger.
type DisableFlag ¶
type DisableFlag bool
DisableFlag hints the resource ignores all state transition actions
func (DisableFlag) FlagString ¶
func (t DisableFlag) FlagString() string
FlagString returns a one character representation of the type instance.
type Driver ¶
type Driver interface { Provisioned() (provisioned.T, error) Provision(context.Context) error Unprovision(context.Context) error // common ApplyPGChain(context.Context) error GetObject() any GetPG() *pg.Config GetPGID() string GetRestartDelay() time.Duration ID() *resourceid.T IsActionDisabled() bool IsDisabled() bool IsEncap() bool IsMonitored() bool IsOptional() bool IsProvisionDisabled() bool IsUnprovisionDisabled() bool IsStandby() bool IsStatusDisabled() bool Label() string Log() *plog.Logger Manifest() *manifest.T MatchRID(string) bool MatchSubset(string) bool MatchTag(string) bool Progress(context.Context, ...any) ProgressKey() []string Requires(string) *resourcereqs.T RestartCount() int RID() string RSubset() string SetObject(any) SetPG(*pg.Config) SetRID(string) error Status(context.Context) status.T StatusLog() StatusLogger TagSet() TagSet Trigger(context.Context, trigger.Blocking, trigger.Hook, trigger.Action) error VarDir() string }
Driver exposes what can be done with a resource
type Drivers ¶
type Drivers []Driver
func (Drivers) Intersection ¶
Intersection returns a list of drivers ordered like t and purged from drivers in other.
func (Drivers) LinkersRID ¶
func (Drivers) ResolveLink ¶
ResolveLink returns the driver intstance targeted by <to>
type EncapFlag ¶
type EncapFlag bool
EncapFlag indicates that the resource is handled by the encapsulated agents, and ignored at the hypervisor level.
func (EncapFlag) FlagString ¶
FlagString returns a one character representation of the type instance.
type IsRunninger ¶
type IsRunninger interface {
IsRunning() bool
}
IsRunninger implements the IsRunning func, which the core calls when evaluating an object instance status to build the "running" rid list.
type LinkNameser ¶
type LinkNameser interface {
LinkNames() []string
}
type Loader ¶
type Loader struct {
// contains filtered or unexported fields
}
Loader uses a Reader to load a JSON Resource configuration into the resource struct.
type MonitorFlag ¶
type MonitorFlag bool
MonitorFlag tells the daemon if it should trigger a monitor action when the resource is not up.
func (MonitorFlag) FlagString ¶
func (t MonitorFlag) FlagString() string
FlagString returns a one character representation of the type instance.
type NetNSPathCtxer ¶
type NetNSPather ¶
NetNSPather exposes a NetNSPath method a resource can call to get the string identifying the network namespace for libs like netlink. For example, the container.docker driver's NetNSPath() would return the SandboxKey
type ObjectDriver ¶
type OptionalFlag ¶
type OptionalFlag bool
OptionalFlag makes this resource status aggregated into Overall instead of Avail instance status. Errors in optional resource don't stop a state transition action.
func (OptionalFlag) FlagString ¶
func (t OptionalFlag) FlagString() string
FlagString returns a one character representation of the type instance.
type PIDer ¶
type PIDer interface {
PID() int
}
PIDer exposes a PID method a resource can call to get the head pid of the head process started by the resource. Typically a container resource PID() returns the pid of the first process of the container. PID() must return 0 when no process is running.
type ProvisionLeadeder ¶
type ProvisionLeaderer ¶
type ProvisionStarter ¶
type ProvisionStatus ¶
type ProvisionStatus struct { Mtime time.Time `json:"mtime,omitempty"` State provisioned.T `json:"state"` }
ProvisionStatus define if and when the resource became provisioned.
type RestartFlag ¶
type RestartFlag int
RestartFlag is the number of times the monitor will try restarting a resource gone down in a well-known started instance.
func (RestartFlag) FlagString ¶
func (t RestartFlag) FlagString(retries int) string
FlagString returns a one character representation of the type instance.
type Runner ¶
Runner implements the Run func, which runs a one-shot process Implemented by the resource. The object "run" action causes selected Runners to call Run().
type SCSIPersistentReservation ¶
func (SCSIPersistentReservation) IsSCSIPersistentReservationEnabled ¶
func (t SCSIPersistentReservation) IsSCSIPersistentReservationEnabled() bool
func (SCSIPersistentReservation) IsSCSIPersistentReservationPreemptAbortDisabled ¶
func (t SCSIPersistentReservation) IsSCSIPersistentReservationPreemptAbortDisabled() bool
func (SCSIPersistentReservation) PersistentReservationKey ¶
func (t SCSIPersistentReservation) PersistentReservationKey() string
type ScheduleOptions ¶
type ScheduleOptions struct { Action string Option string Base string RequireCollector bool RequireProvisioned bool RequireConfirmation bool }
ScheduleOptions contains the information needed by the object to create a schedule.Entry to append to the object's schedule.Table.
type Scheduler ¶
Scheduler implements the Schedules func, which returns the list of schedulable job definition on behalf of the resource.
type StandbyFlag ¶
type StandbyFlag bool
StandbyFlag tells the daemon this resource should always be up, even after a stop state transition action.
func (StandbyFlag) FlagString ¶
func (t StandbyFlag) FlagString() string
FlagString returns a one character representation of the type instance.
type Status ¶
type Status struct { ResourceID *resourceid.T `json:"-"` Label string `json:"label"` Log []*StatusLogEntry `json:"log,omitempty"` Status status.T `json:"status"` Type string `json:"type"` Provisioned ProvisionStatus `json:"provisioned,omitempty"` Monitor MonitorFlag `json:"monitor,omitempty"` Disable DisableFlag `json:"disable,omitempty"` Optional OptionalFlag `json:"optional,omitempty"` Encap EncapFlag `json:"encap,omitempty"` Standby StandbyFlag `json:"standby,omitempty"` // Subset is the name of the subset this resource is assigned to. Subset string `json:"subset,omitempty"` // Info is a list of key-value pairs providing interesting information to // collect site-wide about this resource. Info map[string]any `json:"info,omitempty"` // Restart is the number of restart to be tried before giving up. Restart RestartFlag `json:"restart,omitempty"` // Tags is a set of words attached to the resource. Tags TagSet `json:"tags,omitempty"` }
Status is the structure representing the resource status, which is embedded in the instance status.
func (Status) Unstructured ¶
type StatusInfoSchedAction ¶
type StatusInfoer ¶
type StatusInfoer interface {
StatusInfo() map[string]interface{}
}
StatusInfoer implements the StatusInfo func, which returns a resource specific key-val mapping pushed to the collector on "pushinfo" action.
type StatusLog ¶
type StatusLog struct {
// contains filtered or unexported fields
}
StatusLog holds the information, warning and alerts of a Resource
type StatusLogEntry ¶
StatusLogEntry is an element of LogType.Log
func (StatusLogEntry) String ¶
func (t StatusLogEntry) String() string
func (*StatusLogEntry) UnmarshalJSON ¶
func (t *StatusLogEntry) UnmarshalJSON(data []byte) error
type StatusLogger ¶
type SubDeviceser ¶
type T ¶
type T struct { Driver ResourceID *resourceid.T Subset string Disable bool Monitor bool Optional bool Standby bool Encap bool Restart int RestartDelay *time.Duration Tags *set.Set BlockingPreStart string BlockingPreStop string BlockingPreRun string BlockingPreProvision string BlockingPreUnprovision string PreStart string PreStop string PreRun string PreProvision string PreUnprovision string BlockingPostStart string BlockingPostStop string BlockingPostRun string BlockingPostProvision string BlockingPostUnprovision string PostStart string PostStop string PostRun string PostProvision string PostUnprovision string StartRequires string StopRequires string ProvisionRequires string UnprovisionRequires string SyncRequires string RunRequires string EnableProvision bool EnableUnprovision bool // contains filtered or unexported fields }
T is the resource type, embedded in each drivers type
func (*T) ApplyPGChain ¶
ApplyPGChain fetches the pg manager from the action context and apply the pg configuration to all unconfigured pg on the pg id hierarchy (resource=>subset=>object).
The pg manager remembers which pg have been configured to avoid doing the config twice.
func (*T) GetObjectDriver ¶
func (t *T) GetObjectDriver() ObjectDriver
GetObjectDriver returns the object driver interface of the object set by SetObject upon configure.
func (T) GetRestartDelay ¶
GetRestartDelay returns the duration between 2 restarts
func (T) IsActionDisabled ¶
IsActionDisabled returns true if the resource definition contains tag=noaction ... In this case, the resource actions like stop and start are skipped.
func (T) IsDisabled ¶
IsDisabled returns true if the resource definition contains disable=true.
func (T) IsMonitored ¶
IsMonitored returns true if the resource definition contains monitor=true.
func (T) IsOptional ¶
IsOptional returns true if the resource definition contains optional=true. An optional resource does not break an object action on error.
Resource having actions disabled are always considered optional, because there is nothing we can do to change the state, which would cause orchestration loops.
func (T) IsProvisionDisabled ¶
IsProvisionDisabled returns true if the resource definition contains provision=false.
func (T) IsStatusDisabled ¶
IsStatusDisabled returns true if the resource definition contains tag=nostatus ... In this case, the resource status is always n/a
func (T) IsUnprovisionDisabled ¶
IsUnprovisionDisabled returns true if the resource definition contains unprovision=false.
func (T) MatchRID ¶
MatchRID returns true if:
- the pattern is a just a drivergroup name and this name matches this resource's drivergroup ex: fs#1 matches fs
- the pattern is a fully qualified resourceid, and its string representation equals the pattern. ex: fs#1 matches fs#1
func (T) MatchSubset ¶
MatchSubset returns true if the resource subset equals the pattern.
func (*T) ProgressKey ¶
func (T) RestartCount ¶
RestartCount returns the value of the Restart field
func (*T) SetLoggerForTest ¶
SetLoggerForTest can be used to set resource log for testing purpose
func (*T) StatusLog ¶
func (t *T) StatusLog() StatusLogger
StatusLog returns a reference to the resource log
type TagSet ¶
type TagSet []string
TagSet is the list of unique tag names found in the resource definition.