package main

import (
	"context"
	"fmt"

	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/eks"
)

func main() {
	cfg, err := config.LoadDefaultConfig(context.TODO())
	if err != nil {
		panic("configuration error, " + err.Error())
	}

	svc := eks.NewFromConfig(cfg)

	// Add-on name
	addonName := "kube-proxy"

	// Kubernetes version
	k8sVersion := "1.27"

	response, err := svc.DescribeAddonVersions(context.TODO(), &eks.DescribeAddonVersionsInput{
		AddonName:         &addonName,
		KubernetesVersion: &k8sVersion,
	})

	if err != nil {
		fmt.Println("Got an error retrieving Add-on version:")
		fmt.Println(err)
		return
	}

	for _, addon := range response.Addons {
		fmt.Println("AddonName: ", *addon.AddonName)
		for _, version := range addon.AddonVersions {
			fmt.Println("AddonVersion: ", *version.AddonVersion)
			fmt.Println("Architecture: ", version.Architecture)
			fmt.Println("Compatibilities: ", version.Compatibilities)
		}
	}
}
