func extractAndPrepManifestTarball()

in projects/aws/image-builder/builder/manifests.go [173:224]


func extractAndPrepManifestTarball(tarballFile, privateEksDServerDomain, privateEksAServerDomain string) error {
	log.Println("Manifest tarball provided, extracting to directory")
	manifestDir, err := getManifestRoot()
	if err != nil {
		return fmt.Errorf("Error retrieving manifest root")
	}
	if err = extractTarball(tarballFile, manifestDir); err != nil {
		return fmt.Errorf("Error extracting tarball: %v", err)
	}

	// Replacing eks-a bundles manifest hostname
	// These endpoints are used for artifacts like containerd, crictl & etcdadm
	// Find all eks-a bundles manifest and replace hostname
	files, err := os.ReadDir(manifestDir)
	if err != nil {
		return err
	}
	for _, file := range files {
		if !file.IsDir() {
			// Find EKS-D Manifests and replace prod distro domain with private server's
			absFilePath := filepath.Join(manifestDir, file.Name())
			eksDManifestFilePattern := strings.ReplaceAll(eksDistroManifestFileNameFormat, "%s", "*")
			eksDMatch, err := filepath.Match(eksDManifestFilePattern, file.Name())
			if err != nil {
				return err
			}

			if eksDMatch {
				log.Printf("Replacing EKS-D domain name in file: %s\n", file.Name())
				if err = replaceStringInFile(absFilePath, fmt.Sprintf("https://%s", eksDistroProdDomain), privateEksDServerDomain); err != nil {
					return err
				}
			}

			// Find EKS-A Bundles Manifests and replace prod anywhere domain with private server's
			eksABundlesManifestFilePattern := strings.ReplaceAll(eksAnywhereBundlesFileNameFormat, "%s", "*")
			eksAMatch, err := filepath.Match(eksABundlesManifestFilePattern, file.Name())
			if err != nil {
				return err
			}

			fmt.Printf("File: %s, Match: %t, Pattern: %s\n", file.Name(), eksAMatch, eksABundlesManifestFilePattern)
			if eksAMatch {
				log.Printf("Replacing EKS-A domain name in file: %s\n", file.Name())
				if err = replaceStringInFile(absFilePath, fmt.Sprintf("https://%s", eksAnywhereAssetsProdDomain), privateEksAServerDomain); err != nil {
					return err
				}
			}
		}
	}
	return nil
}