internal/nodeprovider/interface.go (23 lines of code) (raw):
package nodeprovider
import (
"context"
"go.uber.org/zap"
"github.com/aws/eks-hybrid/internal/api"
"github.com/aws/eks-hybrid/internal/aws"
"github.com/aws/eks-hybrid/internal/configenricher"
"github.com/aws/eks-hybrid/internal/daemon"
"github.com/aws/eks-hybrid/internal/system"
)
// NodeProvider is an interface that defines functions that a nodeProvider should implement
type NodeProvider interface {
// GetNodeConfig gets the node config with which the node will be inited
GetNodeConfig() *api.NodeConfig
// PopulateNodeConfigDefaults populates the node config with default values.
// This doesn't require having aws Credentials or accessing any external services.
PopulateNodeConfigDefaults()
// ValidateConfig performs static validation of node config.
// This doesn't require having aws Credentials or accessing any external services.
ValidateConfig() error
// PreProcessDaemon runs a pre-init hook function if required by node provider. This could be SSM registration
// for hybrid nodes
PreProcessDaemon(ctx context.Context) error
// GetDaemons returns daemons to be run for the node provider
GetDaemons() ([]daemon.Daemon, error)
// GetAspects returns the aspects to be configured for node provider
GetAspects() []system.SystemAspect
// Logger defines the logger for the node provider
Logger() *zap.Logger
// Validate performs dynamic validations for the node. Requires calling ConfigureAws first.
Validate() error
// Cleanup runs post init cleanup if any are required by node provider.
Cleanup() error
configenricher.ConfigEnricher
aws.Config
}