Skip to content

Commit b6724e2

Browse files
CR-10299 (#344)
* bump * wip * wip * fixed manual type in models_gen go * no gs list: read-models is for that * wip * wip * git-source edit * tested gs edit * correct models_gen.go * removed redundant * touches * bump * codegen * removed comments * lint * versionOfGitSourceByAppProxyRefactor * bump
1 parent 3a790b8 commit b6724e2

File tree

6 files changed

+141
-64
lines changed

6 files changed

+141
-64
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION=v0.0.316
1+
VERSION=v0.0.317
22

33
OUT_DIR=dist
44
YEAR?=$(shell date +"%Y")

cmd/commands/git-source.go

Lines changed: 126 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"strings"
2222
"time"
2323

24+
"github.com/Masterminds/semver/v3"
2425
apcmd "github.com/argoproj-labs/argocd-autopilot/cmd/commands"
2526
"github.com/argoproj-labs/argocd-autopilot/pkg/application"
2627
"github.com/argoproj-labs/argocd-autopilot/pkg/fs"
@@ -39,8 +40,8 @@ import (
3940
"github.com/codefresh-io/cli-v2/pkg/store"
4041
"github.com/codefresh-io/cli-v2/pkg/util"
4142
apu "github.com/codefresh-io/cli-v2/pkg/util/aputil"
42-
ingressutil "github.com/codefresh-io/cli-v2/pkg/util/ingress"
4343
eventsutil "github.com/codefresh-io/cli-v2/pkg/util/events"
44+
ingressutil "github.com/codefresh-io/cli-v2/pkg/util/ingress"
4445
wfutil "github.com/codefresh-io/cli-v2/pkg/util/workflow"
4546
billyUtils "github.com/go-git/go-billy/v5/util"
4647
"github.com/juju/ansiterm"
@@ -103,6 +104,8 @@ type (
103104
}
104105
)
105106

107+
var versionOfGitSourceByAppProxyRefactor = semver.MustParse("0.0.317")
108+
106109
func NewGitSourceCommand() *cobra.Command {
107110
cmd := &cobra.Command{
108111
Use: "git-source",
@@ -205,37 +208,56 @@ func NewGitSourceCreateCommand() *cobra.Command {
205208
}
206209

207210
func RunGitSourceCreate(ctx context.Context, opts *GitSourceCreateOptions) error {
208-
// upsert git-source repo
209-
210-
gsRepo, gsFs, err := opts.GsCloneOpts.GetRepo(ctx)
211+
version, err := getRuntimeVersion(ctx, opts.RuntimeName)
211212
if err != nil {
212-
return fmt.Errorf("failed to clone git-source repo: %w", err)
213+
return err
213214
}
214215

215-
if opts.CreateDemoResources {
216-
if err := createDemoResources(ctx, opts, gsRepo, gsFs); err != nil {
217-
return fmt.Errorf("failed to create git-source demo resources: %w", err)
216+
if !version.LessThan(versionOfGitSourceByAppProxyRefactor) {
217+
appProxy, err := cfConfig.NewClient().AppProxy(ctx, opts.RuntimeName, store.Get().InsecureIngressHost)
218+
if err != nil {
219+
return err
220+
}
221+
222+
appSpecifier := opts.GsCloneOpts.Repo
223+
isInternal := util.StringIndexOf(store.Get().CFInternalGitSources, opts.GsName) > -1
224+
225+
err = appProxy.AppProxyGitSources().Create(ctx, opts.GsName, appSpecifier, opts.RuntimeName, opts.RuntimeName, isInternal)
226+
if err != nil {
227+
return fmt.Errorf("failed to create git-source: %w", err)
218228
}
219229
} else {
220-
if err := createPlaceholderIfNeeded(ctx, opts, gsRepo, gsFs); err != nil {
221-
return fmt.Errorf("failed to create a git-source placeholder: %w", err)
230+
log.G(ctx).Infof("runtime \"%s\" is using a depracated git-source api. Versions %s and up use the app-proxy for this command", opts.RuntimeName, minAddClusterSupportedVersion)
231+
// upsert git-source repo
232+
gsRepo, gsFs, err := opts.GsCloneOpts.GetRepo(ctx)
233+
if err != nil {
234+
return fmt.Errorf("failed to clone git-source repo: %w", err)
222235
}
223-
}
224236

225-
appDef := &runtime.AppDef{
226-
Name: opts.GsName,
227-
Type: application.AppTypeDirectory,
228-
URL: opts.GsCloneOpts.Repo,
229-
}
237+
if opts.CreateDemoResources {
238+
if err := createDemoResources(ctx, opts, gsRepo, gsFs); err != nil {
239+
return fmt.Errorf("failed to create git-source demo resources: %w", err)
240+
}
241+
} else {
242+
if err := createPlaceholderIfNeeded(ctx, opts, gsRepo, gsFs); err != nil {
243+
return fmt.Errorf("failed to create a git-source placeholder: %w", err)
244+
}
245+
}
230246

231-
appDef.IsInternal = util.StringIndexOf(store.Get().CFInternalGitSources, appDef.Name) > -1
247+
appDef := &runtime.AppDef{
248+
Name: opts.GsName,
249+
Type: application.AppTypeDirectory,
250+
URL: opts.GsCloneOpts.Repo,
251+
}
252+
253+
appDef.IsInternal = util.StringIndexOf(store.Get().CFInternalGitSources, appDef.Name) > -1
232254

233-
if err := appDef.CreateApp(ctx, nil, opts.InsCloneOpts, opts.RuntimeName, store.Get().CFGitSourceType, opts.Include, ""); err != nil {
234-
return fmt.Errorf("failed to create git-source application. Err: %w", err)
255+
if err := appDef.CreateApp(ctx, nil, opts.InsCloneOpts, opts.RuntimeName, store.Get().CFGitSourceType, opts.Include, ""); err != nil {
256+
return fmt.Errorf("failed to create git-source application. Err: %w", err)
257+
}
235258
}
236259

237260
log.G(ctx).Infof("Successfully created git-source: \"%s\"", opts.GsName)
238-
239261
return nil
240262
}
241263

@@ -368,7 +390,7 @@ func createCronExampleEventSource() *eventsourcev1alpha1.EventSource {
368390
Name: store.Get().CronExampleEventSourceName,
369391
},
370392
Spec: eventsourcev1alpha1.EventSourceSpec{
371-
Template: tpl,
393+
Template: tpl,
372394
EventBusName: store.Get().EventBusName,
373395
Calendar: map[string]eventsourcev1alpha1.CalendarEventSource{
374396
store.Get().CronExampleEventName: {
@@ -390,7 +412,7 @@ func createCronExampleSensor(triggers []sensorsv1alpha1.Trigger) (*sensorsv1alph
390412

391413
tpl := &sensorsv1alpha1.Template{
392414
ServiceAccountName: "argo-server",
393-
Container: &corev1.Container{},
415+
Container: &corev1.Container{},
394416
}
395417

396418
if store.Get().SetDefaultResources {
@@ -407,7 +429,7 @@ func createCronExampleSensor(triggers []sensorsv1alpha1.Trigger) (*sensorsv1alph
407429
},
408430
Spec: sensorsv1alpha1.SensorSpec{
409431
EventBusName: "codefresh-eventbus",
410-
Template: tpl,
432+
Template: tpl,
411433
Dependencies: dependencies,
412434
Triggers: triggers,
413435
},
@@ -580,19 +602,36 @@ func NewGitSourceDeleteCommand() *cobra.Command {
580602
}
581603

582604
func RunGitSourceDelete(ctx context.Context, opts *GitSourceDeleteOptions) error {
583-
err := apcmd.RunAppDelete(ctx, &apcmd.AppDeleteOptions{
584-
CloneOpts: opts.InsCloneOpts,
585-
ProjectName: opts.RuntimeName,
586-
AppName: opts.GsName,
587-
Global: false,
588-
})
589-
605+
version, err := getRuntimeVersion(ctx, opts.RuntimeName)
590606
if err != nil {
591-
return fmt.Errorf("failed to delete the git-source %s. Err: %w", opts.GsName, err)
607+
return err
592608
}
593609

594-
log.G(ctx).Infof("Successfully deleted the git-source: %s", opts.GsName)
610+
if !version.LessThan(versionOfGitSourceByAppProxyRefactor) {
611+
appProxy, err := cfConfig.NewClient().AppProxy(ctx, opts.RuntimeName, store.Get().InsecureIngressHost)
612+
if err != nil {
613+
return err
614+
}
615+
616+
err = appProxy.AppProxyGitSources().Delete(ctx, opts.GsName)
617+
if err != nil {
618+
return fmt.Errorf("failed to delete git-source: %w", err)
619+
}
620+
} else {
621+
log.G(ctx).Infof("runtime \"%s\" is using a depracated git-source api. Versions %s and up use the app-proxy for this command", opts.RuntimeName, minAddClusterSupportedVersion)
622+
err = apcmd.RunAppDelete(ctx, &apcmd.AppDeleteOptions{
623+
CloneOpts: opts.InsCloneOpts,
624+
ProjectName: opts.RuntimeName,
625+
AppName: opts.GsName,
626+
Global: false,
627+
})
595628

629+
if err != nil {
630+
return fmt.Errorf("failed to delete the git-source %s. Err: %w", opts.GsName, err)
631+
}
632+
}
633+
634+
log.G(ctx).Infof("Successfully deleted the git-source: %s", opts.GsName)
596635
return nil
597636
}
598637

@@ -662,29 +701,53 @@ func NewGitSourceEditCommand() *cobra.Command {
662701
func RunGitSourceEdit(ctx context.Context, opts *GitSourceEditOptions) error {
663702
repo, fs, err := opts.InsCloneOpts.GetRepo(ctx)
664703
if err != nil {
665-
return fmt.Errorf("failed to clone the installation repo, attemptint to edit git-source %s. Err: %w", opts.GsName, err)
704+
return err
666705
}
667-
c := &dirConfig{}
668-
fileName := fs.Join(apstore.Default.AppsDir, opts.GsName, opts.RuntimeName, "config_dir.json")
669-
err = fs.ReadJson(fileName, c)
706+
707+
version, err := getRuntimeVersion(ctx, opts.RuntimeName)
670708
if err != nil {
671-
return fmt.Errorf("failed to read the %s of git-source: %s. Err: %w", fileName, opts.GsName, err)
709+
return err
672710
}
673711

674-
c.Config.SrcPath = opts.GsCloneOpts.Path()
675-
c.Config.SrcRepoURL = opts.GsCloneOpts.URL()
676-
c.Config.SrcTargetRevision = opts.GsCloneOpts.Revision()
712+
if !version.LessThan(versionOfGitSourceByAppProxyRefactor) {
713+
appProxy, err := cfConfig.NewClient().AppProxy(ctx, opts.RuntimeName, store.Get().InsecureIngressHost)
714+
if err != nil {
715+
return err
716+
}
677717

678-
err = fs.WriteJson(fileName, c)
679-
if err != nil {
680-
return fmt.Errorf("failed to write the updated %s of git-source: %s. Err: %w", fileName, opts.GsName, err)
681-
}
718+
err = appProxy.AppProxyGitSources().Edit(ctx, opts.GsName, opts.GsCloneOpts.Repo)
719+
if err != nil {
720+
return fmt.Errorf("failed to edit git-source: %w", err)
721+
}
722+
} else {
723+
log.G(ctx).Infof("runtime \"%s\" is using a depracated git-source api. Versions %s and up use the app-proxy for this command", opts.RuntimeName, minAddClusterSupportedVersion)
724+
725+
if err != nil {
726+
return fmt.Errorf("failed to clone the installation repo, attemptint to edit git-source %s. Err: %w", opts.GsName, err)
727+
}
728+
c := &dirConfig{}
729+
fileName := fs.Join(apstore.Default.AppsDir, opts.GsName, opts.RuntimeName, "config_dir.json")
730+
err = fs.ReadJson(fileName, c)
731+
if err != nil {
732+
return fmt.Errorf("failed to read the %s of git-source: %s. Err: %w", fileName, opts.GsName, err)
733+
}
682734

683-
log.G(ctx).Info("Pushing updated GitSource to the installation repo")
684-
if err := apu.PushWithMessage(ctx, repo, fmt.Sprintf("Persisted an updated git-source \"%s\"", opts.GsName)); err != nil {
685-
return fmt.Errorf("failed to persist the updated git-source: %s. Err: %w", opts.GsName, err)
735+
c.Config.SrcPath = opts.GsCloneOpts.Path()
736+
c.Config.SrcRepoURL = opts.GsCloneOpts.URL()
737+
c.Config.SrcTargetRevision = opts.GsCloneOpts.Revision()
738+
739+
err = fs.WriteJson(fileName, c)
740+
if err != nil {
741+
return fmt.Errorf("failed to write the updated %s of git-source: %s. Err: %w", fileName, opts.GsName, err)
742+
}
743+
744+
log.G(ctx).Info("Pushing updated GitSource to the installation repo")
745+
if err := apu.PushWithMessage(ctx, repo, fmt.Sprintf("Persisted an updated git-source \"%s\"", opts.GsName)); err != nil {
746+
return fmt.Errorf("failed to persist the updated git-source: %s. Err: %w", opts.GsName, err)
747+
}
686748
}
687749

750+
log.G(ctx).Infof("Successfully created git-source: \"%s\"", opts.GsName)
688751
return nil
689752
}
690753

@@ -845,7 +908,7 @@ func createGithubExampleEventSource(repoURL string, ingressHost string, runtimeN
845908
},
846909
Spec: eventsourcev1alpha1.EventSourceSpec{
847910
EventBusName: store.Get().EventBusName,
848-
Template: tpl,
911+
Template: tpl,
849912
Service: &eventsourcev1alpha1.Service{
850913
Ports: []corev1.ServicePort{
851914
{
@@ -959,7 +1022,7 @@ func createGithubExampleSensor() *sensorsv1alpha1.Sensor {
9591022
}
9601023

9611024
tpl := &sensorsv1alpha1.Template{
962-
Container: &corev1.Container{},
1025+
Container: &corev1.Container{},
9631026
ServiceAccountName: store.Get().WorkflowTriggerServiceAccount,
9641027
}
9651028

@@ -977,7 +1040,7 @@ func createGithubExampleSensor() *sensorsv1alpha1.Sensor {
9771040
},
9781041
Spec: sensorsv1alpha1.SensorSpec{
9791042
EventBusName: store.Get().EventBusName,
980-
Template: tpl,
1043+
Template: tpl,
9811044
Dependencies: dependencies,
9821045
Triggers: triggers,
9831046
},
@@ -1157,3 +1220,16 @@ func unMarshalCustomObject(obj interface{}) (map[string]interface{}, error) {
11571220
}
11581221
return crd, nil
11591222
}
1223+
1224+
func getRuntimeVersion(ctx context.Context, runtimeName string) (*semver.Version, error) {
1225+
rt, err := cfConfig.NewClient().V2().Runtime().Get(ctx, runtimeName)
1226+
if err != nil {
1227+
return nil, err
1228+
}
1229+
1230+
if rt.RuntimeVersion == nil {
1231+
return nil, fmt.Errorf("runtime \"%s\" has no version", runtimeName)
1232+
}
1233+
1234+
return semver.MustParse(*rt.RuntimeVersion), nil
1235+
}

cmd/commands/runtime.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ func runtimeInstallCommandPreRunHandler(cmd *cobra.Command, opts *RuntimeInstall
291291
var err error
292292
handleCliStep(reporter.InstallPhasePreCheckStart, "Starting pre checks", nil, true, false)
293293

294-
opts.Version, err = getVersionIfExists(opts)
294+
opts.Version, err = getVersionIfExists(opts.versionStr)
295295
handleCliStep(reporter.InstallStepPreCheckValidateRuntimeVersion, "Validating runtime version", err, true, false)
296296
if err != nil {
297297
return err
@@ -2357,19 +2357,19 @@ func validateRuntimeName(runtime string) error {
23572357
return err
23582358
}
23592359

2360-
func getVersionIfExists(opts *RuntimeInstallOptions) (*semver.Version, error) {
2361-
if opts.versionStr != "" {
2362-
log.G().Infof("vesionStr: %s", opts.versionStr)
2363-
return semver.NewVersion(opts.versionStr)
2364-
}
2365-
2366-
return nil, nil
2367-
}
2368-
23692360
func initializeGitSourceCloneOpts(opts *RuntimeInstallOptions) {
23702361
opts.GsCloneOpts.Provider = opts.InsCloneOpts.Provider
23712362
opts.GsCloneOpts.Auth = opts.InsCloneOpts.Auth
23722363
opts.GsCloneOpts.Progress = opts.InsCloneOpts.Progress
23732364
host, orgRepo, _, _, _, suffix, _ := aputil.ParseGitUrl(opts.InsCloneOpts.Repo)
23742365
opts.GsCloneOpts.Repo = host + orgRepo + "_git-source" + suffix + "/resources" + "_" + opts.RuntimeName
23752366
}
2367+
2368+
func getVersionIfExists(versionStr string) (*semver.Version, error) {
2369+
if versionStr != "" {
2370+
log.G().Infof("vesionStr: %s", versionStr)
2371+
return semver.NewVersion(versionStr)
2372+
}
2373+
2374+
return nil, nil
2375+
}

docs/releases/release_notes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ cf version
2323

2424
```bash
2525
# download and extract the binary
26-
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.316/cf-linux-amd64.tar.gz | tar zx
26+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.317/cf-linux-amd64.tar.gz | tar zx
2727

2828
# move the binary to your $PATH
2929
mv ./cf-linux-amd64 /usr/local/bin/cf
@@ -36,7 +36,7 @@ cf version
3636

3737
```bash
3838
# download and extract the binary
39-
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.316/cf-darwin-amd64.tar.gz | tar zx
39+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.317/cf-darwin-amd64.tar.gz | tar zx
4040

4141
# move the binary to your $PATH
4242
mv ./cf-darwin-amd64 /usr/local/bin/cf

manifests/runtime.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
namespace: "{{ namespace }}"
66
spec:
77
defVersion: 1.0.1
8-
version: 0.0.316
8+
version: 0.0.317
99
bootstrapSpecifier: github.com/codefresh-io/cli-v2/manifests/argo-cd
1010
components:
1111
- name: events

pkg/store/store.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ type Store struct {
140140
SccName string
141141
CFInternalGitSources []string
142142
CFInternalReporters []string
143+
VersionOfGitSourceAppProxyRefactor string
143144
}
144145

145146
// Get returns the global store

0 commit comments

Comments
 (0)