config

package
v0.11.0-rc4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 14, 2019 License: Apache-2.0, MIT Imports: 13 Imported by: 0

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

View Source
const (
	DefaultConfigCrypto    = crypto.Ed25519
	DefaultConfigKeyLength = -1
)

Identity defaults

Variables

View Source
var ConfigSaveInterval = time.Second

ConfigSaveInterval specifies how often to save the configuration file if it needs saving.

Functions

func DefaultJSONMarshal

func DefaultJSONMarshal(v interface{}) ([]byte, error)

DefaultJSONMarshal produces pretty JSON with 2-space indentation

func GetClusterConfig added in v0.11.0

func GetClusterConfig(configPath string) ([]byte, error)

GetClusterConfig extracts cluster config from the configuration file and returns bytes of it

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{}
}

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 v0.11.0

type Identity struct {
	ID         peer.ID
	PrivateKey crypto.PrivKey
}

Identity represents identity of a cluster peer for communication, including the Consensus component.

func NewIdentity added in v0.11.0

func NewIdentity() (*Identity, error)

NewIdentity generate a public-private keypair and returns a new Identity.

func (*Identity) ApplyEnvVars added in v0.11.0

func (ident *Identity) ApplyEnvVars() error

ApplyEnvVars fills in any Config fields found as environment variables.

func (*Identity) ConfigKey added in v0.11.0

func (ident *Identity) ConfigKey() string

ConfigKey returns a human-readable string to identify a cluster Identity.

func (*Identity) Equals added in v0.11.0

func (ident *Identity) Equals(i *Identity) bool

Equals returns true if equal to provided identity.

func (*Identity) LoadJSON added in v0.11.0

func (ident *Identity) LoadJSON(raw []byte) error

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 v0.11.0

func (ident *Identity) LoadJSONFromFile(path string) error

LoadJSONFromFile reads an Identity file from disk and parses it and return Identity.

func (*Identity) SaveJSON added in v0.11.0

func (ident *Identity) SaveJSON(path string) error

SaveJSON saves the JSON representation of the Identity to the given path.

func (*Identity) ToJSON added in v0.11.0

func (ident *Identity) ToJSON() (raw []byte, err error)

ToJSON generates a human-friendly version of Identity.

func (*Identity) Validate added in v0.11.0

func (ident *Identity) Validate() error

Validate will check that the values of this identity seem to be working ones.

type Manager

type Manager struct {
	// 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

func (cfg *Manager) ApplyEnvVars() error

ApplyEnvVars overrides configuration fields with any values found in environment variables.

func (*Manager) Default

func (cfg *Manager) Default() error

Default generates a default configuration by generating defaults for all registered components.

func (*Manager) LoadJSON

func (cfg *Manager) LoadJSON(bs []byte) error

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

func (cfg *Manager) LoadJSONFileAndEnv(path string) error

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

func (cfg *Manager) LoadJSONFromFile(path string) error

LoadJSONFromFile reads a Configuration file from disk and parses it. See LoadJSON too.

func (*Manager) RegisterComponent

func (cfg *Manager) RegisterComponent(t SectionType, ccfg ComponentConfig)

RegisterComponent lets the Manager load and save component configurations

func (*Manager) SaveJSON

func (cfg *Manager) SaveJSON(path string) error

SaveJSON saves the JSON representation of the Config to the given path.

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) ToJSON

func (cfg *Manager) ToJSON() ([]byte, error)

ToJSON provides a JSON representation of the configuration by generating JSON for all componenents registered.

func (*Manager) Validate

func (cfg *Manager) Validate() error

Validate checks that all the registered components in this Manager have valid configurations. It also makes sure that the main Cluster compoenent exists.

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

func (sv *Saver) SetBaseDir(dir string)

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL