github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/tests/release/quay.go (about)

     1  package common
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"strings"
     7  
     8  	quay "github.com/konflux-ci/image-controller/pkg/quay"
     9  	"github.com/redhat-appstudio/e2e-tests/pkg/utils"
    10  )
    11  
    12  var (
    13  	quayApiUrl = "https://quay.io/api/v1"
    14  	// quayOrg    = utils.GetEnv("IMAGE_CONTROLLER_QUAY_ORG", "hacbs-release-tests")
    15  	quayToken  = utils.GetEnv("IMAGE_CONTROLLER_QUAY_ORG_TOKEN", "")
    16  	quayClient = quay.NewQuayClient(&http.Client{Transport: &http.Transport{}}, quayToken, quayApiUrl)
    17  )
    18  
    19  // repoURL format example: quay.io/redhat-appstudio-qe/dcmetromap
    20  func DoesDigestExistInQuay(repoURL string, digest string) (bool, error) {
    21  	repoParts := strings.Split(repoURL, "/")
    22  	if len(repoParts) <= 2 {
    23  		return false, fmt.Errorf("repo URL %s is not complete", repoURL)
    24  	}
    25  
    26  	repoName := strings.Join(repoParts[2:], "/")
    27  	tagList, _, err := quayClient.GetTagsFromPage(repoParts[1], repoName, 0)
    28  	if err != nil {
    29  		return false, err
    30  	}
    31  
    32  	for _, tag := range tagList {
    33  		if tag.ManifestDigest == digest {
    34  			return true, nil
    35  		}
    36  	}
    37  
    38  	return false, fmt.Errorf("no image is found")
    39  }