config

package
v0.0.22 Latest Latest
Warning

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

Go to latest
Published: Dec 21, 2023 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package config contains a centralized structure for all configuration options.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BindConfigFlag added in v0.0.22

func BindConfigFlag[V any](
	v *viper.Viper,
	flags *pflag.FlagSet,
	viperPath string,
	cmdLineArg string,
	defaultValue V,
	help string,
	binder FlagInst[V],
) error

BindConfigFlag is a helper function that binds a configuration value to a flag.

Parameters: - v: The viper.Viper object used to retrieve the configuration value. - flags: The pflag.FlagSet object used to retrieve the flag value. - viperPath: The path used to retrieve the configuration value from Viper. - cmdLineArg: The flag name used to check if the flag has been set and to retrieve its value. - help: The help text for the flag. - defaultValue: A default value used to determine the type of the flag (string, int, etc.). - binder: A function that creates a flag and returns a pointer to the value.

func BindConfigFlagWithShort added in v0.0.22

func BindConfigFlagWithShort[V any](
	v *viper.Viper,
	flags *pflag.FlagSet,
	viperPath string,
	cmdLineArg string,
	short string,
	defaultValue V,
	help string,
	binder FlagInstShort[V],
) error

BindConfigFlagWithShort is a helper function that binds a configuration value to a flag.

Parameters: - v: The viper.Viper object used to retrieve the configuration value. - flags: The pflag.FlagSet object used to retrieve the flag value. - viperPath: The path used to retrieve the configuration value from Viper. - cmdLineArg: The flag name used to check if the flag has been set and to retrieve its value. - short: The short name for the flag. - help: The help text for the flag. - defaultValue: A default value used to determine the type of the flag (string, int, etc.). - binder: A function that creates a flag and returns a pointer to the value.

func RegisterDatabaseFlags

func RegisterDatabaseFlags(v *viper.Viper, flags *pflag.FlagSet) error

RegisterDatabaseFlags registers the flags for the database configuration

func RegisterServerFlags

func RegisterServerFlags(v *viper.Viper, flags *pflag.FlagSet) error

RegisterServerFlags registers the flags for the Minder server

func SetViperDefaults

func SetViperDefaults(v *viper.Viper)

SetViperDefaults sets the default values for the configuration to be picked up by viper

Types

type AggregatorConfig added in v0.0.17

type AggregatorConfig struct {
	// LockInterval is the interval for locking events in seconds.
	// This is the threshold between rule evaluations + actions.
	LockInterval int64 `mapstructure:"lock_interval" default:"30"`
}

AggregatorConfig is the configuration for the event aggregator middleware

type AuthConfig

type AuthConfig struct {
	// NoncePeriod is the period in seconds for which a nonce is valid
	NoncePeriod int64 `mapstructure:"nonce_period" default:"3600"`
	// TokenKey is the key used to store the provider's token in the database
	TokenKey string `mapstructure:"token_key" default:"./.ssh/token_key_passphrase"`
}

AuthConfig is the configuration for the auth package

func (*AuthConfig) GetTokenKey

func (acfg *AuthConfig) GetTokenKey() ([]byte, error)

GetTokenKey returns a key used to encrypt the provider's token in the database

type Config

type Config struct {
	HTTPServer    HTTPServerConfig   `mapstructure:"http_server"`
	GRPCServer    GRPCServerConfig   `mapstructure:"grpc_server"`
	MetricServer  MetricServerConfig `mapstructure:"metric_server"`
	LoggingConfig LoggingConfig      `mapstructure:"logging"`
	Tracing       TracingConfig      `mapstructure:"tracing"`
	Metrics       MetricsConfig      `mapstructure:"metrics"`
	Database      DatabaseConfig     `mapstructure:"database"`
	Identity      IdentityConfig     `mapstructure:"identity"`
	Auth          AuthConfig         `mapstructure:"auth"`
	WebhookConfig WebhookConfig      `mapstructure:"webhook-config"`
	Events        EventConfig        `mapstructure:"events"`
}

Config is the top-level configuration structure.

func DefaultConfigForTest

func DefaultConfigForTest() *Config

DefaultConfigForTest returns a configuration with all the struct defaults set, but no other changes.

func ReadConfigFromViper

func ReadConfigFromViper(v *viper.Viper) (*Config, error)

ReadConfigFromViper reads the configuration from the given Viper instance. This will return the already-parsed and validated configuration, or an error.

type DatabaseConfig

type DatabaseConfig struct {
	Host     string `mapstructure:"dbhost" default:"localhost"`
	Port     int    `mapstructure:"dbport" default:"5432"`
	User     string `mapstructure:"dbuser" default:"postgres"`
	Password string `mapstructure:"dbpass" default:"postgres"`
	Name     string `mapstructure:"dbname" default:"minder"`
	SSLMode  string `mapstructure:"sslmode" default:"disable"`
}

DatabaseConfig is the configuration for the database

func (*DatabaseConfig) GetDBConnection

func (c *DatabaseConfig) GetDBConnection(ctx context.Context) (*sql.DB, string, error)

GetDBConnection returns a connection to the database

type EventConfig

type EventConfig struct {
	// Driver is the driver used to store events
	Driver string `mapstructure:"driver" default:"go-channel"`
	// RouterCloseTimeout is the timeout for closing the router in seconds
	RouterCloseTimeout int64 `mapstructure:"router_close_timeout" default:"10"`
	// GoChannel is the configuration for the go channel event driver
	GoChannel GoChannelEventConfig `mapstructure:"go-channel" default:"{}"`
	// SQLPubSub is the configuration for the database event driver
	SQLPubSub SQLEventConfig `mapstructure:"sql" default:"{}"`
	// Aggregator is the configuration for the event aggregator middleware
	Aggregator AggregatorConfig `mapstructure:"aggregator" default:"{}"`
}

EventConfig is the configuration for minder's eventing system.

type FlagInst added in v0.0.22

type FlagInst[V any] func(name string, value V, usage string) *V

FlagInst is a function that creates a flag and returns a pointer to the value

type FlagInstShort added in v0.0.22

type FlagInstShort[V any] func(name, shorthand string, value V, usage string) *V

FlagInstShort is a function that creates a flag and returns a pointer to the value

type GRPCServerConfig

type GRPCServerConfig struct {
	// Host is the host to bind to
	Host string `mapstructure:"host" default:"127.0.0.1"`
	// Port is the port to bind to
	Port int `mapstructure:"port" default:"8090"`
}

GRPCServerConfig is the configuration for the gRPC server

func (*GRPCServerConfig) GetAddress

func (s *GRPCServerConfig) GetAddress() string

GetAddress returns the address to bind to

type GoChannelEventConfig

type GoChannelEventConfig struct {
	// BufferSize is the size of the buffer for the go channel
	BufferSize int64 `mapstructure:"buffer_size" default:"0"`
	// PersistEvents is whether or not to persist events to the channel
	PersistEvents bool `mapstructure:"persist_events" default:"false"`
	// BlockPublishUntilSubscriberAck is whether or not to block publishing until
	// the subscriber acks the message. This is useful for testing.
	BlockPublishUntilSubscriberAck bool `mapstructure:"block_publish_until_subscriber_ack" default:"false"`
}

GoChannelEventConfig is the configuration for the go channel event driver for minder's eventing system.

type HTTPServerConfig

type HTTPServerConfig struct {
	// Host is the host to bind to
	Host string `mapstructure:"host" default:"127.0.0.1"`
	// Port is the port to bind to
	Port int `mapstructure:"port" default:"8080"`
}

HTTPServerConfig is the configuration for the HTTP server

func (*HTTPServerConfig) GetAddress

func (s *HTTPServerConfig) GetAddress() string

GetAddress returns the address to bind to

type IdentityConfig

type IdentityConfig struct {
	Server ServerIdentityConfig `mapstructure:"server"`
}

IdentityConfig is the configuration for the identity provider

type LoggingConfig

type LoggingConfig struct {
	Level   string `mapstructure:"level" default:"debug"`
	Format  string `mapstructure:"format" default:"json"`
	LogFile string `mapstructure:"logFile" default:""`
}

LoggingConfig is the configuration for the logging package

type MetricServerConfig

type MetricServerConfig struct {
	// Host is the host to bind to
	Host string `mapstructure:"host" default:"127.0.0.1"`
	// Port is the port to bind to
	Port int `mapstructure:"port" default:"9090"`
}

MetricServerConfig is the configuration for the metric server

func (*MetricServerConfig) GetAddress

func (s *MetricServerConfig) GetAddress() string

GetAddress returns the address to bind to

type MetricsConfig

type MetricsConfig struct {
	Enabled bool `mapstructure:"enabled" default:"true"`
}

MetricsConfig is the configuration for the metrics

type SQLEventConfig added in v0.0.19

type SQLEventConfig struct {
	// InitSchema is whether or not to initialize the schema
	InitSchema bool           `mapstructure:"init_schema" default:"true"`
	Connection DatabaseConfig `mapstructure:"connection" default:"{}"`
}

SQLEventConfig is the configuration for the database event driver

type ServerIdentityConfig

type ServerIdentityConfig struct {
	// IssuerUrl is the base URL where the identity server is running
	IssuerUrl string `mapstructure:"issuer_url" default:"http://localhost:8081"`
	// ClientId is the client ID that identifies the minder server
	ClientId string `mapstructure:"client_id" default:"minder-server"`
	// ClientSecret is the client secret for the minder server
	ClientSecret string `mapstructure:"client_secret" default:"secret"`
	// ClientSecretFile is the location of a file containing the client secret for the minder server (optional)
	ClientSecretFile string `mapstructure:"client_secret_file"`
}

ServerIdentityConfig is the configuration for the identity provider in minder server

func (*ServerIdentityConfig) GetClientSecret

func (sic *ServerIdentityConfig) GetClientSecret() (string, error)

GetClientSecret returns the minder-server client secret

type TracingConfig

type TracingConfig struct {
	Enabled bool `mapstructure:"enabled" default:"false"`
	// for the demonstration, we use AlwaysSmaple sampler to take all spans.
	// do not use this option in production.
	SampleRatio float64 `mapstructure:"sample_ratio" default:"0.1"`
}

TracingConfig is the configuration for our tracing capabilities

type WebhookConfig

type WebhookConfig struct {
	// ExternalWebhookURL is the URL that we will send our webhook to
	ExternalWebhookURL string `mapstructure:"external_webhook_url"`
	// ExternalPingURL is the URL that we will send our ping to
	ExternalPingURL string `mapstructure:"external_ping_url"`
	// WebhookSecret is the secret that we will use to sign our webhook
	// TODO: Check if this is actually used and needed
	WebhookSecret string `mapstructure:"webhook_secret"`
}

WebhookConfig is the configuration for our webhook capabilities

Jump to

Keyboard shortcuts

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