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 ¶
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 (e ComponentManagerImplementationNameEmptyError) Error() string
func (ComponentManagerImplementationNameEmptyError) Is ¶
func (e ComponentManagerImplementationNameEmptyError) Is(target error) bool
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 ¶
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 (e DuplicateProviderConfigError) Error() string
func (DuplicateProviderConfigError) Is ¶
func (e DuplicateProviderConfigError) Is(target error) bool
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 (e ProviderConfigDecoderNotRegisteredError) Error() string
func (ProviderConfigDecoderNotRegisteredError) Is ¶
func (e ProviderConfigDecoderNotRegisteredError) Is(target error) bool
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 (e UnknownComponentTypeError) Error() string
func (UnknownComponentTypeError) Is ¶
func (e UnknownComponentTypeError) Is(target error) bool