config

package
v14.6.4 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2022 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	AllowLegacyElectors  bool              `toml:"i_understand_my_election_strategy_is_unsupported_and_will_be_removed_without_warning,omitempty"`
	Reconciliation       Reconciliation    `toml:"reconciliation,omitempty"`
	Replication          Replication       `toml:"replication,omitempty"`
	ListenAddr           string            `toml:"listen_addr,omitempty"`
	TLSListenAddr        string            `toml:"tls_listen_addr,omitempty"`
	SocketPath           string            `toml:"socket_path,omitempty"`
	VirtualStorages      []*VirtualStorage `toml:"virtual_storage,omitempty"`
	Logging              log.Config        `toml:"logging,omitempty"`
	Sentry               sentry.Config     `toml:"sentry,omitempty"`
	PrometheusListenAddr string            `toml:"prometheus_listen_addr,omitempty"`
	Prometheus           prometheus.Config `toml:"prometheus,omitempty"`
	// PrometheusExcludeDatabaseFromDefaultMetrics excludes database-related metrics from the
	// default metrics. If set to `false`, then database metrics will be available both via
	// `/metrics` and `/db_metrics`. Otherwise, they will only be accessible via `/db_metrics`.
	// Defaults to `false`. This is used as a transitory configuration key: eventually, database
	// metrics will always be removed from the standard metrics endpoint.
	PrometheusExcludeDatabaseFromDefaultMetrics bool        `toml:"prometheus_exclude_database_from_default_metrics,omitempty"`
	Auth                                        auth.Config `toml:"auth,omitempty"`
	TLS                                         config.TLS  `toml:"tls,omitempty"`
	DB                                          `toml:"database,omitempty"`
	Failover                                    Failover `toml:"failover,omitempty"`
	// Keep for legacy reasons: remove after Omnibus has switched
	FailoverEnabled     bool                `toml:"failover_enabled,omitempty"`
	MemoryQueueEnabled  bool                `toml:"memory_queue_enabled,omitempty"`
	GracefulStopTimeout config.Duration     `toml:"graceful_stop_timeout,omitempty"`
	RepositoriesCleanup RepositoriesCleanup `toml:"repositories_cleanup,omitempty"`
	// ForceCreateRepositories will enable force-creation of repositories in the
	// coordinator when routing repository-scoped mutators. This must never be used
	// outside of tests.
	ForceCreateRepositories bool `toml:"force_create_repositories_for_testing_purposes,omitempty"`
}

Config is a container for everything found in the TOML config file

func FromFile

func FromFile(filePath string) (Config, error)

FromFile loads the config for the passed file path

func (Config) ConfigureLogger

func (c Config) ConfigureLogger() *logrus.Entry

ConfigureLogger applies the settings from the configuration file to the logger, setting the log level and format.

func (Config) DefaultReplicationFactors

func (c Config) DefaultReplicationFactors() map[string]int

DefaultReplicationFactors returns a map with the default replication factors of the virtual storages.

func (*Config) NeedsSQL

func (c *Config) NeedsSQL() bool

NeedsSQL returns true if the driver for SQL needs to be initialized

func (*Config) StorageNames

func (c *Config) StorageNames() map[string][]string

StorageNames returns storage names by virtual storage.

func (*Config) Validate

func (c *Config) Validate() error

Validate establishes if the config is valid

func (*Config) VirtualStorageNames

func (c *Config) VirtualStorageNames() []string

VirtualStorageNames returns names of all virtual storages configured.

type DB

type DB struct {
	Host        string `toml:"host,omitempty"`
	Port        int    `toml:"port,omitempty"`
	User        string `toml:"user,omitempty"`
	Password    string `toml:"password,omitempty"`
	DBName      string `toml:"dbname,omitempty"`
	SSLMode     string `toml:"sslmode,omitempty"`
	SSLCert     string `toml:"sslcert,omitempty"`
	SSLKey      string `toml:"sslkey,omitempty"`
	SSLRootCert string `toml:"sslrootcert,omitempty"`

	SessionPooled DBConnection `toml:"session_pooled,omitempty"`

	// The following configuration keys are deprecated and
	// will be removed. Use Host and Port attributes of
	// SessionPooled instead.
	HostNoProxy string `toml:"host_no_proxy,omitempty"`
	PortNoProxy int    `toml:"port_no_proxy,omitempty"`
}

DB holds database configuration data.

type DBConnection

type DBConnection struct {
	Host        string `toml:"host,omitempty"`
	Port        int    `toml:"port,omitempty"`
	User        string `toml:"user,omitempty"`
	Password    string `toml:"password,omitempty"`
	DBName      string `toml:"dbname,omitempty"`
	SSLMode     string `toml:"sslmode,omitempty"`
	SSLCert     string `toml:"sslcert,omitempty"`
	SSLKey      string `toml:"sslkey,omitempty"`
	SSLRootCert string `toml:"sslrootcert,omitempty"`
}

DBConnection holds Postgres client configuration data.

type ElectionStrategy

type ElectionStrategy string

ElectionStrategy is a Praefect primary election strategy.

const (
	// ElectionStrategyLocal configures a single node, in-memory election strategy.
	ElectionStrategyLocal ElectionStrategy = "local"
	// ElectionStrategySQL configures an SQL based strategy that elects a primary for a virtual storage.
	ElectionStrategySQL ElectionStrategy = "sql"
	// ElectionStrategyPerRepository configures an SQL based strategy that elects different primaries per repository.
	ElectionStrategyPerRepository ElectionStrategy = "per_repository"
)

type Failover

type Failover struct {
	Enabled bool `toml:"enabled,omitempty"`
	// ElectionStrategy is the strategy to use for electing primaries nodes.
	ElectionStrategy         ElectionStrategy `toml:"election_strategy,omitempty"`
	ErrorThresholdWindow     config.Duration  `toml:"error_threshold_window,omitempty"`
	WriteErrorThresholdCount uint32           `toml:"write_error_threshold_count,omitempty"`
	ReadErrorThresholdCount  uint32           `toml:"read_error_threshold_count,omitempty"`
	// BootstrapInterval allows set a time duration that would be used on startup to make initial health check.
	// The default value is 1s.
	BootstrapInterval config.Duration `toml:"bootstrap_interval,omitempty"`
	// MonitorInterval allows set a time duration that would be used after bootstrap is completed to execute health checks.
	// The default value is 3s.
	MonitorInterval config.Duration `toml:"monitor_interval,omitempty"`
}

nolint: revive,stylecheck // This is unintentionally missing documentation.

func (Failover) ErrorThresholdsConfigured

func (f Failover) ErrorThresholdsConfigured() (bool, error)

ErrorThresholdsConfigured checks whether returns whether the errors thresholds are configured. If they are configured but in an invalid way, an error is returned.

type Node

type Node struct {
	Storage string `toml:"storage,omitempty"`
	Address string `toml:"address,omitempty"`
	Token   string `toml:"token,omitempty"`
}

Node describes an address that serves a storage

func (Node) MarshalJSON

func (n Node) MarshalJSON() ([]byte, error)

nolint: revive,stylecheck // This is unintentionally missing documentation.

func (Node) String

func (n Node) String() string

String prints out the node attributes but hiding the token

type Reconciliation

type Reconciliation struct {
	// SchedulingInterval the interval between each automatic reconciliation run. If set to 0,
	// automatic reconciliation is disabled.
	SchedulingInterval config.Duration `toml:"scheduling_interval,omitempty"`
	// HistogramBuckets configures the reconciliation scheduling duration histogram's buckets.
	HistogramBuckets []float64 `toml:"histogram_buckets,omitempty"`
}

Reconciliation contains reconciliation specific configuration options.

func DefaultReconciliationConfig

func DefaultReconciliationConfig() Reconciliation

DefaultReconciliationConfig returns the default values for reconciliation configuration.

type Replication

type Replication struct {
	// BatchSize controls how many replication jobs to dequeue and lock
	// in a single call to the database.
	BatchSize uint `toml:"batch_size,omitempty"`
	// ParallelStorageProcessingWorkers is a number of workers used to process replication
	// events per virtual storage (how many storages would be processed in parallel).
	ParallelStorageProcessingWorkers uint `toml:"parallel_storage_processing_workers,omitempty"`
}

Replication contains replication specific configuration options.

func DefaultReplicationConfig

func DefaultReplicationConfig() Replication

DefaultReplicationConfig returns the default values for replication configuration.

type RepositoriesCleanup added in v14.4.0

type RepositoriesCleanup struct {
	// CheckInterval is a time period used to check if operation should be executed.
	// It is recommended to keep it less than run_interval configuration as some
	// nodes may be out of service, so they can be stale for too long.
	CheckInterval config.Duration `toml:"check_interval,omitempty"`
	// RunInterval: the check runs if the previous operation was done at least RunInterval before.
	RunInterval config.Duration `toml:"run_interval,omitempty"`
	// RepositoriesInBatch is the number of repositories to pass as a batch for processing.
	RepositoriesInBatch int `toml:"repositories_in_batch,omitempty"`
}

RepositoriesCleanup configures repository synchronisation.

func DefaultRepositoriesCleanup added in v14.4.0

func DefaultRepositoriesCleanup() RepositoriesCleanup

DefaultRepositoriesCleanup contains default configuration values for the RepositoriesCleanup.

type VirtualStorage

type VirtualStorage struct {
	Name  string  `toml:"name,omitempty"`
	Nodes []*Node `toml:"node,omitempty"`
	// DefaultReplicationFactor is the replication factor set for new repositories.
	// A valid value is inclusive between 1 and the number of configured storages in the
	// virtual storage. Setting the value to 0 or below causes Praefect to not store any
	// host assignments, falling back to the behavior of replicating to every configured
	// storage
	DefaultReplicationFactor int `toml:"default_replication_factor,omitempty"`
}

VirtualStorage represents a set of nodes for a storage

Jump to

Keyboard shortcuts

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