Documentation
¶
Overview ¶
Package providerapi contains provider abstractions that must be shared between the componentmanager package and provider implementation packages without creating an import cycle.
Index ¶
- Variables
- func DecodeYAMLStrict(raw yaml.Node, out any) error
- func GetTyped[T Provider](pr *ProviderRegistry, name string) (T, error)
- type DuplicateProviderError
- type InvalidProviderConfigError
- type InvalidProviderConfigFieldError
- type Provider
- type ProviderConfig
- type ProviderConfigDecoder
- type ProviderConfigDecoderAlreadyRegisteredError
- type ProviderConfigDecoderRegistry
- type ProviderConfigNameMismatchError
- type ProviderNameMismatchError
- type ProviderNotConfiguredError
- type ProviderRegistry
- type ProviderTypeMismatchError
- type UnknownProviderError
Constants ¶
This section is empty.
Variables ¶
var ( // ErrProviderConfigDecoderRegistryNotConfigured reports that a decoder // registry was required but not configured. ErrProviderConfigDecoderRegistryNotConfigured = errors.New("provider config decoder registry is not configured") // ErrProviderConfigDecoderNotConfigured reports that a nil decoder was // provided for registration. ErrProviderConfigDecoderNotConfigured = errors.New("provider config decoder is not configured") // ErrProviderConfigDecoderNameEmpty reports that a decoder returned an empty // provider name. ErrProviderConfigDecoderNameEmpty = errors.New("provider config decoder name is empty") // ErrProviderConfigDecoderAlreadyRegistered reports a duplicate decoder // registration. ErrProviderConfigDecoderAlreadyRegistered = errors.New("provider config decoder already registered") // ErrInvalidProviderConfig reports that provider-specific YAML was invalid. ErrInvalidProviderConfig = errors.New("invalid provider config") // ErrInvalidProviderConfigField reports that a provider config field value // was invalid. ErrInvalidProviderConfigField = errors.New("invalid provider config field") // ErrProviderRegistryNotConfigured reports that the provider registry is not // available. ErrProviderRegistryNotConfigured = errors.New("provider registry is not configured") // ErrProviderNotConfigured reports that a provider or provider config is not // available. ErrProviderNotConfigured = errors.New("provider is not configured") // ErrUnknownProvider reports that a provider name is not known in the // current provider context. ErrUnknownProvider = errors.New("unknown provider") // ErrProviderTypeMismatch reports that a provider exists but has a different // concrete type than the caller requested. ErrProviderTypeMismatch = errors.New("provider type mismatch") // ErrProviderNameEmpty reports an empty provider name. ErrProviderNameEmpty = errors.New("provider name is empty") // ErrDuplicateProvider reports that a provider is already registered. ErrDuplicateProvider = errors.New("duplicate provider") // ErrProviderConfigNameMismatch reports that a provider config's name does // not match the name it was registered under. ErrProviderConfigNameMismatch = errors.New("provider config name mismatch") // ErrProviderNameMismatch reports that a created provider's name does not // match the provider config name. ErrProviderNameMismatch = errors.New("provider name mismatch") )
Functions ¶
func DecodeYAMLStrict ¶
DecodeYAMLStrict decodes a YAML node into out and rejects unknown fields. An empty node is treated as "no provider-specific YAML"; callers keep their default config values in that case.
Types ¶
type DuplicateProviderError ¶
type DuplicateProviderError struct {
Name string
}
DuplicateProviderError includes the duplicate provider name.
func (DuplicateProviderError) Error ¶
func (e DuplicateProviderError) Error() string
func (DuplicateProviderError) Is ¶
func (e DuplicateProviderError) Is(target error) bool
type InvalidProviderConfigError ¶
InvalidProviderConfigError wraps provider-specific YAML decode errors.
func (InvalidProviderConfigError) Error ¶
func (e InvalidProviderConfigError) Error() string
func (InvalidProviderConfigError) Is ¶
func (e InvalidProviderConfigError) Is(target error) bool
func (InvalidProviderConfigError) Unwrap ¶
func (e InvalidProviderConfigError) Unwrap() error
type InvalidProviderConfigFieldError ¶
InvalidProviderConfigFieldError wraps invalid provider config field values.
func (InvalidProviderConfigFieldError) Error ¶
func (e InvalidProviderConfigFieldError) Error() string
func (InvalidProviderConfigFieldError) Is ¶
func (e InvalidProviderConfigFieldError) Is(target error) bool
func (InvalidProviderConfigFieldError) Unwrap ¶
func (e InvalidProviderConfigFieldError) Unwrap() error
type Provider ¶
type Provider interface {
// Name returns the unique identifier for this provider type.
Name() string
}
Provider is a marker interface for API client providers. Each provider wraps an API client and exposes it to component manager implementations.
type ProviderConfig ¶
type ProviderConfig interface {
// Name returns the provider name for this config.
Name() string
// NewProvider creates a provider using this config.
NewProvider(context.Context) (Provider, error)
}
ProviderConfig is a decoded provider-specific configuration that can create its provider.
type ProviderConfigDecoder ¶
type ProviderConfigDecoder interface {
// Name returns the provider name handled by this decoder.
Name() string
// DefaultConfig returns a typed default config for this provider.
DefaultConfig() ProviderConfig
// DecodeYAML decodes a provider-specific YAML node into a typed config.
DecodeYAML(raw yaml.Node) (ProviderConfig, error)
}
ProviderConfigDecoder owns provider-specific config defaults and YAML decoding. Provider construction belongs to the decoded ProviderConfig.
type ProviderConfigDecoderAlreadyRegisteredError ¶
type ProviderConfigDecoderAlreadyRegisteredError struct {
Name string
}
ProviderConfigDecoderAlreadyRegisteredError includes the duplicate provider decoder name.
func (ProviderConfigDecoderAlreadyRegisteredError) Error ¶
func (e ProviderConfigDecoderAlreadyRegisteredError) Error() string
func (ProviderConfigDecoderAlreadyRegisteredError) Is ¶
func (e ProviderConfigDecoderAlreadyRegisteredError) Is(target error) bool
type ProviderConfigDecoderRegistry ¶
type ProviderConfigDecoderRegistry struct {
// contains filtered or unexported fields
}
ProviderConfigDecoderRegistry manages provider config decoders by provider name.
func NewProviderConfigDecoderRegistry ¶
func NewProviderConfigDecoderRegistry() *ProviderConfigDecoderRegistry
NewProviderConfigDecoderRegistry creates a new ProviderConfigDecoderRegistry instance.
func (*ProviderConfigDecoderRegistry) Get ¶
func (r *ProviderConfigDecoderRegistry) Get(name string) (ProviderConfigDecoder, bool)
Get retrieves a provider config decoder by name. A nil registry behaves like an empty registry.
func (*ProviderConfigDecoderRegistry) List ¶
func (r *ProviderConfigDecoderRegistry) List() []string
List returns the names of all registered provider config decoders. A nil registry behaves like an empty registry.
func (*ProviderConfigDecoderRegistry) Register ¶
func (r *ProviderConfigDecoderRegistry) Register(decoder ProviderConfigDecoder) error
Register adds a provider config decoder to the registry. It returns an error when the decoder cannot be registered so bootstrap code can fail fast instead of losing the failure in logs.
type ProviderConfigNameMismatchError ¶
ProviderConfigNameMismatchError includes the provider config map key and the name returned by the config.
func (ProviderConfigNameMismatchError) Error ¶
func (e ProviderConfigNameMismatchError) Error() string
func (ProviderConfigNameMismatchError) Is ¶
func (e ProviderConfigNameMismatchError) Is(target error) bool
type ProviderNameMismatchError ¶
ProviderNameMismatchError includes the expected provider name and the name returned by the created provider.
func (ProviderNameMismatchError) Error ¶
func (e ProviderNameMismatchError) Error() string
func (ProviderNameMismatchError) Is ¶
func (e ProviderNameMismatchError) Is(target error) bool
type ProviderNotConfiguredError ¶
type ProviderNotConfiguredError struct {
Name string
}
ProviderNotConfiguredError includes the provider name that is required but not configured.
func (ProviderNotConfiguredError) Error ¶
func (e ProviderNotConfiguredError) Error() string
func (ProviderNotConfiguredError) Is ¶
func (e ProviderNotConfiguredError) Is(target error) bool
type ProviderRegistry ¶
type ProviderRegistry struct {
// contains filtered or unexported fields
}
ProviderRegistry manages API providers for component manager implementations. It allows implementations to request their required providers by name.
func NewProviderRegistry ¶
func NewProviderRegistry() *ProviderRegistry
NewProviderRegistry creates a new ProviderRegistry instance.
func (*ProviderRegistry) Get ¶
func (pr *ProviderRegistry) Get(name string) Provider
Get retrieves a provider by name. It returns nil if the provider is not found or the registry is nil.
func (*ProviderRegistry) Has ¶
func (pr *ProviderRegistry) Has(name string) bool
Has checks if a provider with the given name is registered. A nil registry behaves like an empty registry.
func (*ProviderRegistry) List ¶
func (pr *ProviderRegistry) List() []string
List returns the names of all registered providers. A nil registry behaves like an empty registry.
func (*ProviderRegistry) Register ¶
func (pr *ProviderRegistry) Register(provider Provider) error
Register adds a provider to the registry. It returns an error when the provider cannot be registered.
type ProviderTypeMismatchError ¶
type ProviderTypeMismatchError struct {
Name string
}
ProviderTypeMismatchError includes the provider name with the unexpected concrete type.
func (ProviderTypeMismatchError) Error ¶
func (e ProviderTypeMismatchError) Error() string
func (ProviderTypeMismatchError) Is ¶
func (e ProviderTypeMismatchError) Is(target error) bool
type UnknownProviderError ¶
type UnknownProviderError struct {
Name string
}
UnknownProviderError includes the unknown provider name.
func (UnknownProviderError) Error ¶
func (e UnknownProviderError) Error() string
func (UnknownProviderError) Is ¶
func (e UnknownProviderError) Is(target error) bool