Documentation
¶
Overview ¶
Package state describes a service's migration state: the modules a migration moves, the IO each performs, and how far each has got.
Index ¶
Constants ¶
const Library = "library"
Library is the node type of shared code that performs no IO.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Catalog ¶ added in v0.40.0
type Catalog struct {
// contains filtered or unexported fields
}
Catalog is every kind of IO that the protocol servers in one binary support.
func NewCatalog ¶ added in v0.40.0
NewCatalog collects what protocol servers support, grouped by protocol with ingress first, so listings are stable. A kind supported twice is an error.
type Config ¶ added in v0.36.0
type Config struct {
// StateFile is the path to the migration state TOML file.
StateFile string `default:"spectre/state.toml" type:"path" help:"Path to the migration state TOML file."`
}
Config locates the migration state file.
type InvalidError ¶ added in v0.36.0
type InvalidError struct {
Problems []Problem
}
InvalidError lists every problem that makes a migration state invalid.
func (*InvalidError) Error ¶ added in v0.36.0
func (e *InvalidError) Error() string
Error returns the first problem and how many more there are.
type Node ¶ added in v0.36.0
type Node struct {
ID string
DependsOn []string
Status Status
// IO holds the settings of each IO kind the node has. A library has none.
IO map[model.IOKind]map[string]any
// Line is where the node's table starts in the file, or 0 when unknown.
Line int
}
Node is one module of the service.
type NodeType ¶
type NodeType struct {
// Name is how the type is referred to, e.g. "library" or "ingress[http]".
Name string `json:"name"`
// Description says what code has the type and how to recognise it.
Description string `json:"description"`
// Table is where a node of an IO kind holds its settings, or empty for library.
Table string `json:"table,omitzero"`
// Settings are the fields the table can hold.
Settings []Setting `json:"settings,omitzero"`
}
NodeType is a type that a node in the migration state can have.
type Problem ¶ added in v0.36.0
type Problem struct {
// Line is where the problem is in the file, or 0 when unknown.
Line int
Message string
}
Problem is one thing wrong with a migration state.
type Setting ¶ added in v0.40.0
type Setting struct {
Name string `json:"name"`
Required bool `json:"required"`
Description string `json:"description"`
// Key describes what keys the entries, or is empty for a plain value.
Key string `json:"key,omitzero"`
// Unique keyed entries may belong to only one node, such as a route.
Unique bool `json:"unique,omitzero"`
// Entry lists the settings that each entry takes.
Entry []Setting `json:"entry,omitzero"`
}
Setting is one field that a node's table for a kind of IO can hold. With a Key, it is a table of entries, each holding the Entry settings.
type State ¶ added in v0.36.0
type State struct {
// Nodes are the service's modules, sorted by ID.
Nodes []Node
}
State is a service's migration state.