conf

package
v0.0.0-...-8ed27b0 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2025 License: Apache-2.0 Imports: 6 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetConfigOrDie

func GetConfigOrDie[C any]() C

Create a new configuration from the default config json file.

This will read two files:

  • /etc/config/conf.json
  • /etc/secrets/secrets.json

The values read from secrets.json will override the values in conf.json

Types

type APIConfig

type APIConfig struct {
	// The port to expose the API on.
	Port int `json:"port"`
}

Configuration for the api port.

type Config

type Config interface {
	GetLoggingConfig() LoggingConfig
	GetDBConfig() DBConfig
	GetMonitoringConfig() MonitoringConfig
	GetMQTTConfig() MQTTConfig
	GetAPIConfig() APIConfig
	GetKeystoneConfig() KeystoneConfig
	// Check if the configuration is valid.
	Validate() error
}

Configuration for the cortex service.

type DBConfig

type DBConfig struct {
	Host      string            `json:"host"`
	Port      int               `json:"port"`
	Database  string            `json:"database"`
	User      string            `json:"user"`
	Password  string            `json:"password"`
	Reconnect DBReconnectConfig `json:"reconnect"`
}

Database configuration.

type DBReconnectConfig

type DBReconnectConfig struct {
	// The interval between liveness pings to the database.
	LivenessPingIntervalSeconds int `json:"livenessPingIntervalSeconds"`
	// The interval between reconnection attempts on connection loss.
	RetryIntervalSeconds int `json:"retryIntervalSeconds"`
	// The maximum number of reconnection attempts on connection loss before panic.
	MaxRetries int `json:"maxRetries"`
}

type DependencyConfig

type DependencyConfig struct {
	Sync struct {
		OpenStack struct {
			Nova struct {
				ObjectTypes []string `json:"types,omitempty"`
			} `json:"nova,omitempty"`
			Placement struct {
				ObjectTypes []string `json:"types,omitempty"`
			} `json:"placement,omitempty"`
		} `json:"openstack,omitempty"`
		Prometheus struct {
			Metrics []struct {
				Alias string `json:"alias,omitempty"`
				Type  string `json:"type,omitempty"`
			} `json:"metrics,omitempty"`
		} `json:"prometheus,omitempty"`
	}
	Extractors []string `json:"extractors,omitempty"`
}

Configuration that is passed in the config file to specify dependencies.

type JsonOpts

type JsonOpts[Options any] struct {
	// Options loaded from a json config using the Load method.
	Options Options
}

Mixin that adds the ability to load options from a json map. Usage: type StructUsingOpts struct { conf.JsonOpts[MyOpts] }

func (*JsonOpts[Options]) Load

func (s *JsonOpts[Options]) Load(opts RawOpts) error

Set the options contained in the opts json map.

type KeystoneConfig

type KeystoneConfig struct {
	// The URL of the keystone service.
	URL string `json:"url"`
	// The SSO certificate to use. If none is given, we won't
	// use SSO to connect to the openstack services.
	SSO SSOConfig `json:"sso,omitempty"`
	// The OpenStack username (OS_USERNAME in openstack cli).
	OSUsername string `json:"username"`
	// The OpenStack password (OS_PASSWORD in openstack cli).
	OSPassword string `json:"password"`
	// The OpenStack project name (OS_PROJECT_NAME in openstack cli).
	OSProjectName string `json:"projectName"`
	// The OpenStack user domain name (OS_USER_DOMAIN_NAME in openstack cli).
	OSUserDomainName string `json:"userDomainName"`
	// The OpenStack project domain name (OS_PROJECT_DOMAIN_NAME in openstack cli).
	OSProjectDomainName string `json:"projectDomainName"`
}

Configuration for the keystone authentication.

type LoggingConfig

type LoggingConfig struct {
	// The log level to use (debug, info, warn, error).
	LevelStr string `json:"level"`
	// The log format to use (json, text).
	Format string `json:"format"`
}

Configuration for structured logging.

func (LoggingConfig) Level

func (c LoggingConfig) Level() slog.Level

Conform to the slog.Leveler interface.

func (LoggingConfig) SetDefaultLogger

func (c LoggingConfig) SetDefaultLogger()

Set the structured logger as given in the config.

type MQTTConfig

type MQTTConfig struct {
	// The URL of the MQTT broker to use for mqtt.
	URL string `json:"url"`
	// Credentials for the MQTT broker.
	Username  string              `json:"username"`
	Password  string              `json:"password"`
	Reconnect MQTTReconnectConfig `json:"reconnect"`
}

Configuration for the mqtt client.

type MQTTReconnectConfig

type MQTTReconnectConfig struct {
	// The interval between reconnection attempts on connection loss.
	RetryIntervalSeconds int `json:"retryIntervalSeconds"`

	// The maximum number of reconnection attempts on connection loss before panic.
	MaxRetries int `json:"maxRetries"`
}

type MonitoringConfig

type MonitoringConfig struct {
	// The labels to add to all metrics.
	Labels map[string]string `json:"labels"`

	// The port to expose the metrics on.
	Port int `json:"port"`
}

Configuration for the monitoring module.

type NovaHypervisorType

type NovaHypervisorType = string
const (
	NovaHypervisorTypeQEMU   NovaHypervisorType = "QEMU"
	NovaHypervisorTypeCH     NovaHypervisorType = "CH" // Cloud hypervisor
	NovaHypervisorTypeVMware NovaHypervisorType = "VMware vCenter Server"
	NovaHypervisorTypeIronic NovaHypervisorType = "ironic"
)

type RawOpts

type RawOpts struct {
	// contains filtered or unexported fields
}

Raw options that are not directly unmarshalled when loading from json. Usage: call Unmarshal to unmarshal the options into a struct.

func NewRawOpts

func NewRawOpts(rawJson string) RawOpts

Create a new RawOpts instance with the given json string.

func (*RawOpts) Unmarshal

func (msg *RawOpts) Unmarshal(v any) error

Call the postponed unmarshal function and unmarshal the options into a struct.

func (*RawOpts) UnmarshalJSON

func (msg *RawOpts) UnmarshalJSON(data []byte) error

Override the default json unmarshal behavior to postpone the unmarshal.

type SSOConfig

type SSOConfig struct {
	Cert    string `json:"cert,omitempty"`
	CertKey string `json:"certKey,omitempty"`

	// If the certificate is self-signed, we need to skip verification.
	SelfSigned bool `json:"selfSigned,omitempty"`
}

Configuration for single-sign-on (SSO).

type SchedulerAPIConfig

type SchedulerAPIConfig struct {
	// If request bodies should be logged out.
	// This feature is intended for debugging purposes only.
	LogRequestBodies bool `json:"logRequestBodies"`
}

Configuration for the scheduler API.

type SchedulerStepConfig

type SchedulerStepConfig[Extra any] struct {
	// The name of the step implementation.
	Name string `json:"name"`
	// The alias of this step, if any.
	//
	// The alias can be used to distinguish between different configurations
	// of the same step, or use a more specific name.
	Alias string `json:"alias,omitempty"`
	// Custom options for the step, as a raw yaml map.
	Options RawOpts `json:"options,omitempty"`
	// The dependencies this step needs.
	DependencyConfig `json:"dependencies,omitempty"`
	// The validations to use for this step.
	DisabledValidations SchedulerStepDisabledValidationsConfig `json:"disabledValidations,omitempty"`

	// Additional configuration for the step, if needed.
	Extra *Extra `json:"extra,omitempty"`
}

type SchedulerStepDisabledValidationsConfig

type SchedulerStepDisabledValidationsConfig struct {
	// Whether to validate that no subjects are removed or added from the scheduler
	// step. This should only be disabled for scheduler steps that remove subjects.
	// Thus, if no value is provided, the default is false.
	SameSubjectNumberInOut bool `json:"sameSubjectNumberInOut,omitempty"`
	// Whether to validate that, after running the step, there are remaining subjects.
	// This should only be disabled for scheduler steps that are expected to
	// remove all subjects.
	SomeSubjectsRemain bool `json:"someSubjectsRemain,omitempty"`
}

Config for which validations to disable for a scheduler step.

type SharedConfig

type SharedConfig struct {
	LoggingConfig    `json:"logging"`
	DBConfig         `json:"db"`
	MonitoringConfig `json:"monitoring"`
	MQTTConfig       `json:"mqtt"`
	APIConfig        `json:"api"`
	KeystoneConfig   `json:"keystone"`
}

func (*SharedConfig) GetAPIConfig

func (c *SharedConfig) GetAPIConfig() APIConfig

func (*SharedConfig) GetDBConfig

func (c *SharedConfig) GetDBConfig() DBConfig

func (*SharedConfig) GetKeystoneConfig

func (c *SharedConfig) GetKeystoneConfig() KeystoneConfig

func (*SharedConfig) GetLoggingConfig

func (c *SharedConfig) GetLoggingConfig() LoggingConfig

func (*SharedConfig) GetMQTTConfig

func (c *SharedConfig) GetMQTTConfig() MQTTConfig

func (*SharedConfig) GetMonitoringConfig

func (c *SharedConfig) GetMonitoringConfig() MonitoringConfig

func (*SharedConfig) Validate

func (c *SharedConfig) Validate() error

Check if all dependencies are satisfied.

Jump to

Keyboard shortcuts

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