in release/pkg/generate_spec.go [76:214]
func (r *ReleaseConfig) GetVersionsBundles(imageDigests map[string]string) ([]anywherev1alpha1.VersionsBundle, error) {
versionsBundles := []anywherev1alpha1.VersionsBundle{}
certManagerBundle, err := r.GetCertManagerBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for cert-manager")
}
coreClusterApiBundle, err := r.GetCoreClusterAPIBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for core cluster-api")
}
kubeadmBootstrapBundle, err := r.GetKubeadmBootstrapBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for cluster-api kubeadm-bootstrap")
}
kubeadmControlPlaneBundle, err := r.GetKubeadmControlPlaneBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for cluster-api kubeadm-control-plane")
}
awsBundle, err := r.GetAwsBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for AWS infrastructure provider")
}
dockerBundle, err := r.GetDockerBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for Docker infrastructure provider")
}
eksaBundle, err := r.GetEksaBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for eks-a tools component")
}
ciliumBundle, err := r.GetCiliumBundle()
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for Cilium")
}
kindnetdBundle, err := r.GetKindnetdBundle()
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for Kindnetd")
}
fluxBundle, err := r.GetFluxBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for Flux controllers")
}
etcdadmBootstrapBundle, err := r.GetEtcdadmBootstrapBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for external Etcdadm bootstrap")
}
etcdadmControllerBundle, err := r.GetEtcdadmControllerBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for external Etcdadm controller")
}
bottlerocketAdminBundle, err := r.GetBottlerocketAdminBundle()
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for Bottlerocket admin container")
}
var tinkerbellBundle anywherev1alpha1.TinkerbellBundle
if r.DevRelease && r.BuildRepoBranchName == "main" {
tinkerbellBundle, err = r.GetTinkerbellBundle(imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for Tinkerbell infrastructure provider")
}
}
eksDReleaseMap, err := readEksDReleases(r)
if err != nil {
return nil, err
}
bottlerocketSupportedK8sVersions, err := getBottlerocketSupportedK8sVersions(r)
if err != nil {
return nil, errors.Wrapf(err, "Error getting supported Kubernetes versions for bottlerocket")
}
for channel, release := range eksDReleaseMap {
if channel == "latest" || !utils.SliceContains(bottlerocketSupportedK8sVersions, channel) {
continue
}
releaseNumber := release.(map[interface{}]interface{})["number"]
releaseNumberInt := releaseNumber.(int)
releaseNumberStr := strconv.Itoa(releaseNumberInt)
kubeVersion, err := getEksDKubeVersion(channel, releaseNumberStr)
if err != nil {
return nil, errors.Wrapf(err, "Error getting kubeversion for eks-d %s-%s release", channel, releaseNumberStr)
}
shortKubeVersion := kubeVersion[1:strings.LastIndex(kubeVersion, ".")]
eksDReleaseBundle, err := r.GetEksDReleaseBundle(channel, kubeVersion, releaseNumberStr, imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for eks-d %s-%s release bundle", channel, releaseNumberStr)
}
vsphereBundle, err := r.GetVsphereBundle(channel, imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for vSphere infrastructure provider")
}
bottlerocketBootstrapBundle, err := r.GetBottlerocketBootstrapBundle(channel, releaseNumberStr, imageDigests)
if err != nil {
return nil, errors.Wrapf(err, "Error getting bundle for bottlerocket bootstrap")
}
versionsBundle := anywherev1alpha1.VersionsBundle{
KubeVersion: shortKubeVersion,
EksD: eksDReleaseBundle,
CertManager: certManagerBundle,
ClusterAPI: coreClusterApiBundle,
Bootstrap: kubeadmBootstrapBundle,
ControlPlane: kubeadmControlPlaneBundle,
Aws: awsBundle,
VSphere: vsphereBundle,
Docker: dockerBundle,
Eksa: eksaBundle,
Cilium: ciliumBundle,
Kindnetd: kindnetdBundle,
Flux: fluxBundle,
ExternalEtcdBootstrap: etcdadmBootstrapBundle,
ExternalEtcdController: etcdadmControllerBundle,
BottleRocketBootstrap: bottlerocketBootstrapBundle,
BottleRocketAdmin: bottlerocketAdminBundle,
Tinkerbell: tinkerbellBundle,
}
versionsBundles = append(versionsBundles, versionsBundle)
}
return versionsBundles, nil
}