config

package
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: May 14, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package config loads, normalizes, and validates component manager configuration.

Config can be built from YAML through LoadConfig or ParseConfig, or from embedded defaults through New. All constructor paths normalize component manager implementation names, decode explicit provider config overrides, and complete missing provider configs from registered provider defaults.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrConfigNotConfigured reports that a nil component manager config was
	// provided where a Config value is required.
	ErrConfigNotConfigured = errors.New("component manager config is not configured")

	// ErrUnknownComponentType reports an unrecognized component type in config.
	ErrUnknownComponentType = errors.New("unknown component type")

	// ErrComponentManagerImplementationNameEmpty reports that a component type
	// was configured without an implementation name.
	ErrComponentManagerImplementationNameEmpty = errors.New("component manager implementation name is empty")

	// ErrComponentManagersNotConfigured reports that the service config has no
	// component manager entries.
	ErrComponentManagersNotConfigured = errors.New("component managers are not configured")

	// ErrDuplicateProviderConfig reports duplicate provider configuration after
	// provider names are normalized.
	ErrDuplicateProviderConfig = errors.New("duplicate provider config")

	// ErrProviderConfigDecoderNotRegistered reports that a provider is required
	// but no config decoder is registered for it.
	ErrProviderConfigDecoderNotRegistered = errors.New("provider config decoder is not registered")

	// ErrProviderConfigDecoderRegistryRequired reports that a config operation
	// requires a provider config decoder registry argument.
	ErrProviderConfigDecoderRegistryRequired = errors.New("provider config decoder registry is required")
)

Functions

This section is empty.

Types

type ComponentManagerImplementationNameEmptyError

type ComponentManagerImplementationNameEmptyError struct {
	// ComponentType is the component type with an empty implementation name.
	ComponentType devicetypes.ComponentType
}

ComponentManagerImplementationNameEmptyError includes the component type whose configured implementation name is empty.

func (ComponentManagerImplementationNameEmptyError) Error

func (ComponentManagerImplementationNameEmptyError) Is

type Config

type Config struct {
	// ComponentManagers maps each component type to the component manager
	// implementation responsible for managing that type. Each component manager
	// implementation can use a provider to talk to its external service.
	ComponentManagers map[devicetypes.ComponentType]string

	// ProviderConfigs holds provider-specific typed configs keyed by provider
	// name. Explicit provider configs override defaults; missing providers
	// required by configured component manager implementations are completed
	// with provider defaults. Providers are configured once and can be shared
	// by multiple component manager implementations.
	ProviderConfigs map[string]providerapi.ProviderConfig
}

Config holds the component manager configuration.

Config values returned by ParseConfig, LoadConfig, and NewConfig are normalized: component manager implementation names are trimmed, unknown component types are rejected, explicit provider names are trimmed, duplicate provider names are rejected after trimming, and missing provider configs required by configured component managers are completed from provider defaults.

func LoadConfig

func LoadConfig(
	path string,
	decoders *providerapi.ProviderConfigDecoderRegistry,
) (Config, error)

LoadConfig loads the component manager configuration from a YAML file using the supplied provider config decoders.

func New

func New(
	componentManagers map[devicetypes.ComponentType]string,
	decoders *providerapi.ProviderConfigDecoderRegistry,
) (Config, error)

New builds a component manager config from a component-manager implementation map and derives default provider configs for implementations backed by a registered provider decoder.

func ParseConfig

func ParseConfig(
	data []byte,
	decoders *providerapi.ProviderConfigDecoderRegistry,
) (Config, error)

ParseConfig parses the component manager configuration from YAML data using the supplied provider config decoders.

func (*Config) HasProvider

func (c *Config) HasProvider(name string) bool

HasProvider checks if a provider is enabled in the configuration.

func (*Config) Validate

func (c *Config) Validate(
	decoders *providerapi.ProviderConfigDecoderRegistry,
) error

Validate verifies the generic component manager config contract.

type DuplicateProviderConfigError

type DuplicateProviderConfigError struct {
	// Name is the duplicate provider name after trimming whitespace.
	Name string
}

DuplicateProviderConfigError includes the normalized duplicate provider name.

func (DuplicateProviderConfigError) Error

func (DuplicateProviderConfigError) Is

type ProviderConfigDecoderNotRegisteredError

type ProviderConfigDecoderNotRegisteredError struct {
	// Name is the provider name that has no registered config decoder.
	Name string
}

ProviderConfigDecoderNotRegisteredError includes the provider name with no registered config decoder.

func (ProviderConfigDecoderNotRegisteredError) Error

func (ProviderConfigDecoderNotRegisteredError) Is

type UnknownComponentTypeError

type UnknownComponentTypeError struct {
	// Name is the component type name read from config.
	Name string
}

UnknownComponentTypeError includes the unrecognized component type string.

func (UnknownComponentTypeError) Error

func (UnknownComponentTypeError) Is

func (e UnknownComponentTypeError) Is(target error) bool

Jump to

Keyboard shortcuts

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