Skip to content

Commit 7f47958

Browse files
committed
list tags for OCI charts
1 parent a90a483 commit 7f47958

File tree

3 files changed

+31
-12
lines changed

3 files changed

+31
-12
lines changed

cyclops-ctrl/internal/controller/templates.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,17 +212,23 @@ func (c *Templates) GetTemplateRevisions(ctx *gin.Context) {
212212
ctx.Header("Access-Control-Allow-Origin", "*")
213213

214214
repo := ctx.Query("repo")
215+
path := ctx.Query("path")
215216

216217
if repo == "" {
217218
ctx.JSON(http.StatusOK, []string{})
218219
return
219220
}
220221

221-
revisions, err := c.templatesRepo.GetTemplateRevisions(repo)
222+
revisions, err := c.templatesRepo.GetTemplateRevisions(repo, path)
222223
if err != nil {
223224
ctx.JSON(http.StatusBadRequest, dto.NewError("Error loading template", err.Error()))
224225
return
225226
}
226227

228+
if revisions == nil {
229+
ctx.JSON(http.StatusOK, []string{})
230+
return
231+
}
232+
227233
ctx.JSON(http.StatusOK, revisions)
228234
}

cyclops-ctrl/pkg/template/oci.go

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -226,22 +226,31 @@ func fetchDigest(repo, chart, version, token string) (string, error) {
226226
}
227227

228228
func getOCIStrictVersion(repo, chart, version string) (string, error) {
229-
token, err := authorizeOCITags(repo, chart)
229+
allTags, err := GetOCIChartTags(repo, chart)
230230
if err != nil {
231231
return "", err
232232
}
233233

234+
return resolveSemver(version, allTags)
235+
}
236+
237+
func GetOCIChartTags(repo, chart string) ([]string, error) {
238+
token, err := authorizeOCITags(repo, chart)
239+
if err != nil {
240+
return nil, err
241+
}
242+
234243
tURL, err := tagsURL(repo, chart)
235244
if err != nil {
236-
return "", err
245+
return nil, err
237246
}
238247

239248
client := &http.Client{}
240249
var allTags []string
241250
for {
242251
req, err := http.NewRequest(http.MethodGet, tURL.String(), nil)
243252
if err != nil {
244-
return "", err
253+
return nil, err
245254
}
246255

247256
req.Header.Set("User-Agent", "Helm/3.13.3")
@@ -251,21 +260,21 @@ func getOCIStrictVersion(repo, chart, version string) (string, error) {
251260

252261
resp, err := client.Do(req)
253262
if err != nil {
254-
return "", err
263+
return nil, err
255264
}
256265
defer resp.Body.Close()
257266

258267
responseBody, err := ioutil.ReadAll(resp.Body)
259268
if err != nil {
260-
return "", err
269+
return nil, err
261270
}
262271

263272
var tagsResp struct {
264273
Tags []string `json:"tags"`
265274
}
266275

267276
if err := json.Unmarshal(responseBody, &tagsResp); err != nil {
268-
return "", err
277+
return nil, err
269278
}
270279

271280
allTags = append(allTags, tagsResp.Tags...)
@@ -278,7 +287,7 @@ func getOCIStrictVersion(repo, chart, version string) (string, error) {
278287

279288
nextURL, err := parseNextLink(linkHeader)
280289
if err != nil {
281-
return "", err
290+
return nil, err
282291
}
283292

284293
if nextURL == "" {
@@ -287,11 +296,11 @@ func getOCIStrictVersion(repo, chart, version string) (string, error) {
287296

288297
tURL, err = resolveRelativeURL(tURL, nextURL)
289298
if err != nil {
290-
return "", err
299+
return nil, err
291300
}
292301
}
293302

294-
return resolveSemver(version, allTags)
303+
return allTags, err
295304
}
296305

297306
func authorizeOCI(repo, chart, version string) (string, error) {

cyclops-ctrl/pkg/template/template.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type ITemplateRepo interface {
3030
version string,
3131
source cyclopsv1alpha1.TemplateSourceType,
3232
) (map[string]interface{}, error)
33-
GetTemplateRevisions(repo string) ([]string, error)
33+
GetTemplateRevisions(repo, path string) ([]string, error)
3434
ReturnCache() *ristretto.Cache
3535
}
3636

@@ -181,7 +181,11 @@ func (r Repo) assumeTemplateSourceType(repo string) (cyclopsv1alpha1.TemplateSou
181181
return cyclopsv1alpha1.TemplateSourceTypeGit, nil
182182
}
183183

184-
func (r Repo) GetTemplateRevisions(repo string) ([]string, error) {
184+
func (r Repo) GetTemplateRevisions(repo, path string) ([]string, error) {
185+
if registry.IsOCI(repo) {
186+
return GetOCIChartTags(repo, path)
187+
}
188+
185189
if !gitproviders2.IsGitHubSource(repo) {
186190
return nil, nil
187191
}

0 commit comments

Comments
 (0)