Documentation
¶
Index ¶
- Constants
- func AnyJobNeedsState(jobs ...MachineJob) bool
- func DisambiguateResourceName(modelUUID string, name string, maxLength uint) (string, error)
- func DisambiguateResourceNameWithSuffixLength(modelUUID string, name string, maxNameLength, suffixLength uint) (string, error)
- 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 ( // DefaultSuffixDigits defines how many of the uuid digits to use. // Since the suffix function asserts that the modelUUID is valid, we know // it follows the UUID string format that ends with eight hex digits. DefaultSuffixDigits = uint(6) )
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 DisambiguateResourceName ¶
DisambiguateResourceName creates a unique resource name from the supplied name by appending a suffix derived from the model UUID. The maximum length of the entire resulting resource name is maxLength. To achieve maxLength, the name is right trimmed. The default suffix length DefaultSuffixDigits is used.
func DisambiguateResourceNameWithSuffixLength ¶
func DisambiguateResourceNameWithSuffixLength(modelUUID string, name string, maxNameLength, suffixLength uint) (string, error)
DisambiguateResourceNameWithSuffixLength creates a unique resource name from the supplied name by appending a suffix derived from the model UUID, using the specified suffix length. The maximum length of the entire resulting resource name is maxLength. To achieve maxLength, the name is right trimmed. The default suffix length DefaultSuffixDigits is used.
func ValidateBranchName ¶
ValidateBranchName returns an error if the input name is not suitable for identifying a new in-flight branch.
Types ¶
type BlockType ¶
type BlockType string
BlockType values define model block type, which can be used to prevent accidental damage to Juju deployments.
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