providerapi

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: 7 Imported by: 0

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

Constants

This section is empty.

Variables

View Source
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

func DecodeYAMLStrict(raw yaml.Node, out any) error

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.

func GetTyped

func GetTyped[T Provider](pr *ProviderRegistry, name string) (T, error)

GetTyped retrieves a provider by name and casts it to the expected type. Returns an error if the provider is not found or cannot be cast to the expected type.

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

type InvalidProviderConfigError struct {
	Provider string
	Err      error
}

InvalidProviderConfigError wraps provider-specific YAML decode errors.

func (InvalidProviderConfigError) Error

func (InvalidProviderConfigError) Is

func (e InvalidProviderConfigError) Is(target error) bool

func (InvalidProviderConfigError) Unwrap

func (e InvalidProviderConfigError) Unwrap() error

type InvalidProviderConfigFieldError

type InvalidProviderConfigFieldError struct {
	Provider string
	Field    string
	Err      error
}

InvalidProviderConfigFieldError wraps invalid provider config field values.

func (InvalidProviderConfigFieldError) Error

func (InvalidProviderConfigFieldError) Is

func (InvalidProviderConfigFieldError) Unwrap

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 (ProviderConfigDecoderAlreadyRegisteredError) Is

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

Get retrieves a provider config decoder by name. A nil registry behaves like an empty registry.

func (*ProviderConfigDecoderRegistry) List

List returns the names of all registered provider config decoders. A nil registry behaves like an empty registry.

func (*ProviderConfigDecoderRegistry) Register

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

type ProviderConfigNameMismatchError struct {
	Name       string
	ConfigName string
}

ProviderConfigNameMismatchError includes the provider config map key and the name returned by the config.

func (ProviderConfigNameMismatchError) Error

func (ProviderConfigNameMismatchError) Is

type ProviderNameMismatchError

type ProviderNameMismatchError struct {
	Name         string
	ProviderName string
}

ProviderNameMismatchError includes the expected provider name and the name returned by the created provider.

func (ProviderNameMismatchError) Error

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 (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 (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

Jump to

Keyboard shortcuts

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