func()

in projects/aws/image-builder/builder/artifacts.go [89:149]


func (b *BuildOptions) downloadEKSDArtifacts(outputPath, manifestUrl string) error {
	releases := &eksDreleasev1.Release{}
	manifestData, err := readFileFromURL(manifestUrl)
	if err != nil {
		return fmt.Errorf("failed to read manifest file from url: %v", err)
	}
	if err = k8syaml.Unmarshal(manifestData, releases); err != nil {
		return err
	}

	var fullKubeVersion, eksDBaseUrl string
	for _, component := range releases.Status.Components {
		if component.Name == "kubernetes" {
			fullKubeVersion = component.GitTag
			log.Printf("Full Kube Version: %s\n", fullKubeVersion)

			for _, asset := range component.Assets {
				if asset.Name == fmt.Sprintf("bin/linux/%s/kube-apiserver.tar", b.Arch) {
					apiServerUrl := asset.Archive.URI
					eksDBaseUrl = strings.ReplaceAll(apiServerUrl, "/kube-apiserver.tar", "")
				}
			}
		}

		if component.Name == "etcd" || component.Name == "cni-plugins" {
			for _, asset := range component.Assets {
				if asset.Name == fmt.Sprintf("%s-linux-%s-%s.tar.gz", component.Name, b.Arch, component.GitTag) {
					log.Printf("Downloading EKS-D Artifact: %s", component.Name)
					if err = downloadArtifact(outputPath, asset.Archive.URI); err != nil {
						return err
					}
				}
			}
		}
	}
	log.Printf("EKS-D Kubernetes Base Url: %s\n", eksDBaseUrl)

	eksDKubeArtifacts := []string{
		"kube-apiserver.tar",
		"kube-scheduler.tar",
		"kube-controller-manager.tar",
		"kube-proxy.tar",
		"pause.tar",
		"coredns.tar",
		"etcd.tar",
		"kubeadm",
		"kubelet",
		"kubectl",
	}
	for _, artifact := range eksDKubeArtifacts {
		artifactUrl, err := url.JoinPath(eksDBaseUrl, artifact)
		if err != nil {
			return fmt.Errorf("failed to construct url for artifact %s: %v", artifact, err)
		}
		log.Printf("Downloading EKS-D Kubernetes Artifact: %s\n", artifact)
		if err := downloadArtifact(outputPath, artifactUrl); err != nil {
			return err
		}
	}
	return nil
}