internal/node/ec2/configenricher.go (38 lines of code) (raw):
package ec2
import (
"context"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/feature/ec2/imds"
"github.com/aws/aws-sdk-go-v2/service/ec2"
"go.uber.org/zap"
"github.com/aws/eks-hybrid/internal/api"
"github.com/aws/eks-hybrid/internal/aws/ecr"
)
func (enp *ec2NodeProvider) Enrich(ctx context.Context) error {
enp.logger.Info("Fetching instance details..")
imdsClient := imds.New(imds.Options{})
awsConfig, err := config.LoadDefaultConfig(ctx, config.WithClientLogMode(aws.LogRetries), config.WithEC2IMDSRegion(func(o *config.UseEC2IMDSRegion) {
o.Client = imdsClient
}))
if err != nil {
return err
}
instanceDetails, err := api.GetInstanceDetails(ctx, imdsClient, ec2.NewFromConfig(awsConfig))
if err != nil {
return err
}
enp.nodeConfig.Status.Instance = *instanceDetails
enp.logger.Info("Instance details populated", zap.Reflect("details", instanceDetails))
region := instanceDetails.Region
enp.logger.Info("Fetching default options...")
eksRegistry, err := ecr.GetEKSRegistry(region)
if err != nil {
return err
}
enp.nodeConfig.Status.Defaults = api.DefaultOptions{
SandboxImage: eksRegistry.GetSandboxImage(),
}
enp.logger.Info("Default options populated", zap.Reflect("defaults", enp.nodeConfig.Status.Defaults))
return nil
}