Documentation ¶
Index ¶
- Constants
- func AnyJobNeedsState(jobs ...MachineJob) bool
- func ValidateBranchName(name string) error
- type BlockType
- type Generation
- type GenerationApplication
- type GenerationCommit
- type GenerationCommits
- type GenerationSummaries
- type GenerationUnits
- type Graph
- type MachineJob
- type Model
- type ModelType
- type UpgradeSeriesFSM
- type UpgradeSeriesStatus
Constants ¶
const GenerationMaster = "master"
GenerationMaster is used to indicate the main model configuration, i.e. that not dealing with in-flight branches.
Variables ¶
This section is empty.
Functions ¶
func AnyJobNeedsState ¶
func AnyJobNeedsState(jobs ...MachineJob) bool
AnyJobNeedsState returns true if any of the provided jobs require a state connection.
func ValidateBranchName ¶
ValidateBranchName returns an error if the input name is not suitable for identifying a new in-flight branch.
Types ¶
type Generation ¶
type Generation struct { // Created is the formatted time at generation creation. Created string `yaml:"created"` // Created is the user who created the generation. CreatedBy string `yaml:"created-by"` // Applications is a collection of applications with changes in this // generation including advanced units and modified configuration. Applications []GenerationApplication `yaml:"applications"` }
Generation represents detail of a model generation including config changes.
type GenerationApplication ¶
type GenerationApplication struct { // ApplicationsName is the name of the application. ApplicationName string `yaml:"application"` // UnitProgress is summary information about units tracking the branch. UnitProgress string `yaml:"progress,omitempty"` // UnitDetail specifies which units are and are not tracking the branch. UnitDetail *GenerationUnits `yaml:"units,omitempty"` // Config changes are the differing configuration values between this // generation and the current. // TODO (manadart 2018-02-22) This data-type will evolve as more aspects // of the application are made generational. ConfigChanges map[string]interface{} `yaml:"config"` }
GenerationApplication represents changes to an application made under a generation.
type GenerationCommit ¶
type GenerationCommit struct { // BranchName uniquely identifies a branch *amongst in-flight branches*. BranchName string `yaml:"branch"` // Created is the Unix timestamp at generation creation. Completed time.Time `yaml:"completed"` // Created is the user who created the generation. CompletedBy string `yaml:"completed-by"` // Created is the Unix timestamp at generation creation. Created time.Time `yaml:"created,omitempty"` // Created is the user who created the generation. CreatedBy string `yaml:"created-by,omitempty"` // GenerationId is the id . GenerationId int `yaml:"generation-id,omitempty"` // Applications holds the collection of application changes // made under this generation. Applications []GenerationApplication `yaml:"applications,omitempty"` }
GenerationCommit represents a model generation's commit details.
type GenerationCommits ¶
type GenerationCommits = []GenerationCommit
GenerationCommits is a type alias for a representation of each commit. Keyed by the generation id
type GenerationSummaries ¶
type GenerationSummaries = map[string]Generation
GenerationSummaries is a type alias for a representation of changes-by-generation.
type GenerationUnits ¶
type GenerationUnits struct { // UnitsTracking is the names of application units that have been set to // track the branch. UnitsTracking []string `yaml:"tracking,omitempty"` // UnitsPending is the names of application units that are still tracking // the master generation. UnitsPending []string `yaml:"incomplete,omitempty"` }
GenerationUnits indicates which units from an application are and are not tracking a model branch.
type Graph ¶
type Graph map[UpgradeSeriesStatus][]UpgradeSeriesStatus
Graph is a type for representing a Directed acyclic graph (DAG).
func UpgradeSeriesGraph ¶
func UpgradeSeriesGraph() Graph
UpgradeSeriesGraph defines a graph for moving between vertices of an upgrade series.
func (Graph) ValidState ¶
func (g Graph) ValidState(state UpgradeSeriesStatus) bool
ValidState checks that a state is a valid vertex, as graphs have to ensure that all edges to other vertices are also valid then this should be fine to do.
type MachineJob ¶
type MachineJob string
MachineJob values define responsibilities that machines may be expected to fulfil.
const ( JobHostUnits MachineJob = "JobHostUnits" JobManageModel MachineJob = "JobManageModel" )
func (MachineJob) NeedsState ¶
func (job MachineJob) NeedsState() bool
NeedsState returns true if the job requires a state connection.
type Model ¶
type Model struct { // Name returns the human friendly name of the model. Name string // UUID is the universally unique identifier of the model. UUID string // ModelType is the type of model. ModelType ModelType }
Model represents the state of a model.
type UpgradeSeriesFSM ¶
type UpgradeSeriesFSM struct {
// contains filtered or unexported fields
}
UpgradeSeriesFSM defines a finite state machine from a given graph of possible vertices to transition. The FSM can start in any position using the initial state and can move along the edges to the correct vertex.
func NewUpgradeSeriesFSM ¶
func NewUpgradeSeriesFSM(graph Graph, initial UpgradeSeriesStatus) (*UpgradeSeriesFSM, error)
NewUpgradeSeriesFSM creates a UpgradeSeriesFSM from a graph and an initial state.
func (*UpgradeSeriesFSM) State ¶
func (u *UpgradeSeriesFSM) State() UpgradeSeriesStatus
State returns the current state of the fsm.
func (*UpgradeSeriesFSM) TransitionTo ¶
func (u *UpgradeSeriesFSM) TransitionTo(state UpgradeSeriesStatus) bool
TransitionTo attempts to transition from the current state to the new given state. If the state is currently at the requested state, then that's classified as a no-op and no transition is required.
type UpgradeSeriesStatus ¶
type UpgradeSeriesStatus string
UpgradeSeriesStatus is the current status of a series upgrade for units
const ( UpgradeSeriesNotStarted UpgradeSeriesStatus = "not started" UpgradeSeriesValidate UpgradeSeriesStatus = "validate" UpgradeSeriesPrepareStarted UpgradeSeriesStatus = "prepare started" UpgradeSeriesPrepareRunning UpgradeSeriesStatus = "prepare running" UpgradeSeriesPrepareCompleted UpgradeSeriesStatus = "prepare completed" UpgradeSeriesCompleteStarted UpgradeSeriesStatus = "complete started" UpgradeSeriesCompleteRunning UpgradeSeriesStatus = "complete running" UpgradeSeriesCompleted UpgradeSeriesStatus = "completed" UpgradeSeriesError UpgradeSeriesStatus = "error" )
func (UpgradeSeriesStatus) String ¶
func (s UpgradeSeriesStatus) String() string