Documentation ¶
Overview ¶
Package config provides interfaces and utilities for different Cluster components to register, read, write and validate configuration sections stored in a central configuration file.
Index ¶
- Constants
- Variables
- func DefaultJSONMarshal(v interface{}) ([]byte, error)
- func DisplayJSON(cfg interface{}) ([]byte, error)
- func GetClusterConfig(configPath string) ([]byte, error)
- func IsErrFetchingSource(err error) bool
- func ParseDurations(component string, args ...*DurationOpt) error
- func SetIfNotDefault(src interface{}, dest interface{})
- type ComponentConfig
- type DurationOpt
- type Identity
- func (ident *Identity) ApplyEnvVars() error
- func (ident *Identity) ConfigKey() string
- func (ident *Identity) Default() error
- func (ident *Identity) Equals(i *Identity) bool
- func (ident *Identity) LoadJSON(raw []byte) error
- func (ident *Identity) LoadJSONFromFile(path string) error
- func (ident *Identity) SaveJSON(path string) error
- func (ident *Identity) ToJSON() (raw []byte, err error)
- func (ident *Identity) Validate() error
- type Manager
- func (cfg *Manager) ApplyEnvVars() error
- func (cfg *Manager) Default() error
- func (cfg *Manager) IsLoadedFromJSON(t SectionType, name string) bool
- func (cfg *Manager) LoadJSON(bs []byte) error
- func (cfg *Manager) LoadJSONFileAndEnv(path string) error
- func (cfg *Manager) LoadJSONFromFile(path string) error
- func (cfg *Manager) LoadJSONFromHTTPSource(url string) error
- func (cfg *Manager) RegisterComponent(t SectionType, ccfg ComponentConfig)
- func (cfg *Manager) SaveJSON(path string) error
- func (cfg *Manager) Shutdown()
- func (cfg *Manager) ToDisplayJSON() ([]byte, error)
- func (cfg *Manager) ToJSON() ([]byte, error)
- func (cfg *Manager) Validate() error
- type Saver
- type Section
- type SectionType
- type Strings
Constants ¶
const ( DefaultConfigCrypto = crypto.Ed25519 DefaultConfigKeyLength = -1 )
Identity defaults
Variables ¶
var ConfigSaveInterval = time.Second
ConfigSaveInterval specifies how often to save the configuration file if it needs saving.
Functions ¶
func DefaultJSONMarshal ¶
DefaultJSONMarshal produces pretty JSON with 2-space indentation
func DisplayJSON ¶ added in v1.0.2
DisplayJSON takes pointer to a JSON-friendly configuration struct and returns the JSON-encoded representation of it filtering out any struct fields marked with the tag `hidden:"true"`, but keeping fields marked with `"json:omitempty"`.
func GetClusterConfig ¶ added in v1.0.2
GetClusterConfig extracts cluster config from the configuration file and returns bytes of it
func IsErrFetchingSource ¶ added in v1.0.2
IsErrFetchingSource reports whether this error happened when trying to fetch a remote configuration source (as opposed to an error parsing the config).
func ParseDurations ¶ added in v0.3.5
func ParseDurations(component string, args ...*DurationOpt) error
ParseDurations takes a time.Duration src and saves it to the given dst.
func SetIfNotDefault ¶
func SetIfNotDefault(src interface{}, dest interface{})
SetIfNotDefault sets dest to the value of src if src is not the default value of the type. dest must be a pointer.
Types ¶
type ComponentConfig ¶
type ComponentConfig interface { // Returns a string identifying the section name for this configuration ConfigKey() string // Parses a JSON representation of this configuration LoadJSON([]byte) error // Provides a JSON representation of this configuration ToJSON() ([]byte, error) // Sets default working values Default() error // Sets values from environment variables ApplyEnvVars() error // Allows this component to work under a subfolder SetBaseDir(string) // Checks that the configuration is valid Validate() error // Provides a channel to signal the Manager that the configuration // should be persisted. SaveCh() <-chan struct{} // ToDisplayJSON returns a string representing the config excluding hidden fields. ToDisplayJSON() ([]byte, error) }
The ComponentConfig interface allows components to define configurations which can be managed as part of the ipfs-cluster configuration file by the Manager.
type DurationOpt ¶ added in v0.3.5
type DurationOpt struct { // The duration we need to parse Duration string // Where to store the result Dst *time.Duration // A variable name associated to it for helpful errors. Name string }
DurationOpt provides a datatype to use with ParseDurations
type Identity ¶ added in v1.0.2
Identity represents identity of a cluster peer for communication, including the Consensus component.
func NewIdentity ¶ added in v1.0.2
NewIdentity returns a new random identity.
func (*Identity) ApplyEnvVars ¶ added in v1.0.2
ApplyEnvVars fills in any Config fields found as environment variables.
func (*Identity) ConfigKey ¶ added in v1.0.2
ConfigKey returns a human-readable string to identify a cluster Identity.
func (*Identity) LoadJSON ¶ added in v1.0.2
LoadJSON receives a raw json-formatted identity and sets the Config fields from it. Note that it should be JSON as generated by ToJSON().
func (*Identity) LoadJSONFromFile ¶ added in v1.0.2
LoadJSONFromFile reads an Identity file from disk and parses it and return Identity.
func (*Identity) SaveJSON ¶ added in v1.0.2
SaveJSON saves the JSON representation of the Identity to the given path.
type Manager ¶
type Manager struct { // stores original source if any Source string // contains filtered or unexported fields }
Manager represents an ipfs-cluster configuration which bundles different ComponentConfigs object together. Use RegisterComponent() to add a component configurations to the object. Once registered, configurations will be parsed from the central configuration file when doing LoadJSON(), and saved to it when doing SaveJSON().
func NewManager ¶
func NewManager() *Manager
NewManager returns a correctly initialized Manager which is ready to accept component configurations.
func (*Manager) ApplyEnvVars ¶ added in v0.10.0
ApplyEnvVars overrides configuration fields with any values found in environment variables.
func (*Manager) Default ¶
Default generates a default configuration by generating defaults for all registered components.
func (*Manager) IsLoadedFromJSON ¶ added in v1.0.2
func (cfg *Manager) IsLoadedFromJSON(t SectionType, name string) bool
IsLoadedFromJSON tells whether the given component belonging to the given section type is present in the cluster JSON config or not.
func (*Manager) LoadJSON ¶
LoadJSON parses configurations for all registered components, In order to work, component configurations must have been registered beforehand with RegisterComponent.
func (*Manager) LoadJSONFileAndEnv ¶ added in v0.10.0
LoadJSONFileAndEnv calls LoadJSONFromFile followed by ApplyEnvVars, reading and parsing a Configuration file and then overriding fields with any values found in environment variables.
func (*Manager) LoadJSONFromFile ¶
LoadJSONFromFile reads a Configuration file from disk and parses it. See LoadJSON too.
func (*Manager) LoadJSONFromHTTPSource ¶ added in v1.0.2
LoadJSONFromHTTPSource reads a Configuration file from a URL and parses it.
func (*Manager) RegisterComponent ¶
func (cfg *Manager) RegisterComponent(t SectionType, ccfg ComponentConfig)
RegisterComponent lets the Manager load and save component configurations
func (*Manager) Shutdown ¶ added in v0.3.0
func (cfg *Manager) Shutdown()
Shutdown makes sure all configuration save operations are finished before returning.
func (*Manager) ToDisplayJSON ¶ added in v1.0.2
ToDisplayJSON returns a printable cluster configuration.
type Saver ¶
type Saver struct { BaseDir string // contains filtered or unexported fields }
Saver implements common functionality useful for ComponentConfigs
func (*Saver) NotifySave ¶
func (sv *Saver) NotifySave()
NotifySave signals the SaveCh() channel in a non-blocking fashion.
func (*Saver) SaveCh ¶
func (sv *Saver) SaveCh() <-chan struct{}
SaveCh returns a channel which is signaled when a component wants to persist its configuration
func (*Saver) SetBaseDir ¶
SetBaseDir is a setter for BaseDir and implements part of the ComponentConfig interface.
type Section ¶
type Section map[string]ComponentConfig
Section is a section of which stores component-specific configurations.
type SectionType ¶
type SectionType int
SectionType specifies to which section a component configuration belongs.
const ( Cluster SectionType = iota Consensus API IPFSConn State PinTracker Monitor Allocator Informer Observations Datastore )
These are the component configuration types supported by the Manager.
func SectionTypes ¶ added in v0.8.0
func SectionTypes() []SectionType
SectionTypes returns the list of supported SectionTypes
type Strings ¶ added in v1.0.3
type Strings []string
Strings is a helper type that (un)marshals a single string to/from a single JSON string and a slice of strings to/from a JSON array of strings.
func (Strings) MarshalJSON ¶ added in v1.0.3
MarshalJSON conforms to the json.Marshaler interface.
func (*Strings) UnmarshalJSON ¶ added in v1.0.3
UnmarshalJSON conforms to the json.Unmarshaler interface.