Skip to content

Commit 526cead

Browse files
authored
suggest tags on oci chart template creation #853
Suggest tags on oci chart
2 parents a90a483 + c9344bf commit 526cead

File tree

5 files changed

+59
-31
lines changed

5 files changed

+59
-31
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/mocks/ITemplateRepo.go

Lines changed: 15 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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
}

cyclops-ui/src/components/pages/TemplateStore/TemplateStore.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -350,21 +350,29 @@ const TemplateStore = () => {
350350
);
351351
};
352352

353-
const fetchRepoRevisions = (e) => {
353+
const fetchRepoRevisions = () => {
354+
const repo = addForm.getFieldValue(["ref", "repo"]);
355+
const path = addForm.getFieldValue(["ref", "path"]);
356+
354357
axios
355-
.get(`/api/templates/revisions?repo=` + e.target.value)
358+
.get(`/api/templates/revisions?repo=${repo}&path=${path}`)
356359
.then((res) => {
357360
setRepoRevisions(res.data);
361+
362+
const filtered = res.data.map((item) => ({ value: item }));
363+
setRepoRevisionOptions(filtered);
358364
})
359365
.catch(() => {});
360366
};
361367

362-
const handleRepoInput = (value) => {
368+
const handleVersionInput = (value) => {
363369
if (repoRevisions.length === 0) {
364370
setRepoRevisionOptions([]);
365371
return;
366372
}
367373

374+
console.log(value);
375+
368376
const filtered = repoRevisions
369377
.filter((item) => item.toLowerCase().includes(value.toLowerCase()))
370378
.map((item) => ({ value: item }));
@@ -670,7 +678,7 @@ const TemplateStore = () => {
670678
rules={[{ required: true, message: "Path is required" }]}
671679
style={{ marginBottom: "12px" }}
672680
>
673-
<Input />
681+
<Input onBlur={fetchRepoRevisions} />
674682
</Form.Item>
675683

676684
<Form.Item
@@ -680,7 +688,7 @@ const TemplateStore = () => {
680688
>
681689
<AutoComplete
682690
options={repoRevisionOptions}
683-
onSearch={handleRepoInput}
691+
onSearch={handleVersionInput}
684692
allowClear
685693
>
686694
<Input />

0 commit comments

Comments
 (0)