Skip to content

Commit c97d1ab

Browse files
CR-10299-2 (#359)
* refactor * version for separate logic * inverted condition * testing e2e again * cli-v2
1 parent 163553a commit c97d1ab

File tree

5 files changed

+143
-65
lines changed

5 files changed

+143
-65
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.318
1+
VERSION=v0.0.319
22

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

cmd/commands/git-source.go

Lines changed: 128 additions & 51 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.319")
108+
106109
func NewGitSourceCommand() *cobra.Command {
107110
cmd := &cobra.Command{
108111
Use: "git-source",
@@ -205,37 +208,57 @@ 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+
218+
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)
219+
// upsert git-source repo
220+
gsRepo, gsFs, err := opts.GsCloneOpts.GetRepo(ctx)
221+
if err != nil {
222+
return fmt.Errorf("failed to clone git-source repo: %w", err)
218223
}
219-
} else {
220-
if err := createPlaceholderIfNeeded(ctx, opts, gsRepo, gsFs); err != nil {
221-
return fmt.Errorf("failed to create a git-source placeholder: %w", err)
224+
225+
if opts.CreateDemoResources {
226+
if err := createDemoResources(ctx, opts, gsRepo, gsFs); err != nil {
227+
return fmt.Errorf("failed to create git-source demo resources: %w", err)
228+
}
229+
} else {
230+
if err := createPlaceholderIfNeeded(ctx, opts, gsRepo, gsFs); err != nil {
231+
return fmt.Errorf("failed to create a git-source placeholder: %w", err)
232+
}
222233
}
223-
}
224234

225-
appDef := &runtime.AppDef{
226-
Name: opts.GsName,
227-
Type: application.AppTypeDirectory,
228-
URL: opts.GsCloneOpts.Repo,
229-
}
235+
appDef := &runtime.AppDef{
236+
Name: opts.GsName,
237+
Type: application.AppTypeDirectory,
238+
URL: opts.GsCloneOpts.Repo,
239+
}
240+
241+
appDef.IsInternal = util.StringIndexOf(store.Get().CFInternalGitSources, appDef.Name) > -1
242+
243+
if err := appDef.CreateApp(ctx, nil, opts.InsCloneOpts, opts.RuntimeName, store.Get().CFGitSourceType, opts.Include, ""); err != nil {
244+
return fmt.Errorf("failed to create git-source application. Err: %w", err)
245+
}
246+
} else {
247+
appProxy, err := cfConfig.NewClient().AppProxy(ctx, opts.RuntimeName, store.Get().InsecureIngressHost)
248+
if err != nil {
249+
return err
250+
}
230251

231-
appDef.IsInternal = util.StringIndexOf(store.Get().CFInternalGitSources, appDef.Name) > -1
252+
appSpecifier := opts.GsCloneOpts.Repo
253+
isInternal := util.StringIndexOf(store.Get().CFInternalGitSources, opts.GsName) > -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+
err = appProxy.AppProxyGitSources().Create(ctx, opts.GsName, appSpecifier, opts.RuntimeName, opts.RuntimeName, isInternal)
256+
if err != nil {
257+
return fmt.Errorf("failed to create git-source: %w", err)
258+
}
235259
}
236260

237261
log.G(ctx).Infof("Successfully created git-source: \"%s\"", opts.GsName)
238-
239262
return nil
240263
}
241264

@@ -368,7 +391,7 @@ func createCronExampleEventSource() *eventsourcev1alpha1.EventSource {
368391
Name: store.Get().CronExampleEventSourceName,
369392
},
370393
Spec: eventsourcev1alpha1.EventSourceSpec{
371-
Template: tpl,
394+
Template: tpl,
372395
EventBusName: store.Get().EventBusName,
373396
Calendar: map[string]eventsourcev1alpha1.CalendarEventSource{
374397
store.Get().CronExampleEventName: {
@@ -390,7 +413,7 @@ func createCronExampleSensor(triggers []sensorsv1alpha1.Trigger) (*sensorsv1alph
390413

391414
tpl := &sensorsv1alpha1.Template{
392415
ServiceAccountName: "argo-server",
393-
Container: &corev1.Container{},
416+
Container: &corev1.Container{},
394417
}
395418

396419
if store.Get().SetDefaultResources {
@@ -407,7 +430,7 @@ func createCronExampleSensor(triggers []sensorsv1alpha1.Trigger) (*sensorsv1alph
407430
},
408431
Spec: sensorsv1alpha1.SensorSpec{
409432
EventBusName: "codefresh-eventbus",
410-
Template: tpl,
433+
Template: tpl,
411434
Dependencies: dependencies,
412435
Triggers: triggers,
413436
},
@@ -580,19 +603,36 @@ func NewGitSourceDeleteCommand() *cobra.Command {
580603
}
581604

582605
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-
606+
version, err := getRuntimeVersion(ctx, opts.RuntimeName)
590607
if err != nil {
591-
return fmt.Errorf("failed to delete the git-source %s. Err: %w", opts.GsName, err)
608+
return err
592609
}
593610

594-
log.G(ctx).Infof("Successfully deleted the git-source: %s", opts.GsName)
611+
if version.LessThan(versionOfGitSourceByAppProxyRefactor) {
612+
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)
613+
err = apcmd.RunAppDelete(ctx, &apcmd.AppDeleteOptions{
614+
CloneOpts: opts.InsCloneOpts,
615+
ProjectName: opts.RuntimeName,
616+
AppName: opts.GsName,
617+
Global: false,
618+
})
619+
620+
if err != nil {
621+
return fmt.Errorf("failed to delete the git-source %s. Err: %w", opts.GsName, err)
622+
}
623+
} else {
624+
appProxy, err := cfConfig.NewClient().AppProxy(ctx, opts.RuntimeName, store.Get().InsecureIngressHost)
625+
if err != nil {
626+
return err
627+
}
628+
629+
err = appProxy.AppProxyGitSources().Delete(ctx, opts.GsName)
630+
if err != nil {
631+
return fmt.Errorf("failed to delete git-source: %w", err)
632+
}
633+
}
595634

635+
log.G(ctx).Infof("Successfully deleted the git-source: %s", opts.GsName)
596636
return nil
597637
}
598638

@@ -662,29 +702,53 @@ func NewGitSourceEditCommand() *cobra.Command {
662702
func RunGitSourceEdit(ctx context.Context, opts *GitSourceEditOptions) error {
663703
repo, fs, err := opts.InsCloneOpts.GetRepo(ctx)
664704
if err != nil {
665-
return fmt.Errorf("failed to clone the installation repo, attemptint to edit git-source %s. Err: %w", opts.GsName, err)
705+
return err
666706
}
667-
c := &dirConfig{}
668-
fileName := fs.Join(apstore.Default.AppsDir, opts.GsName, opts.RuntimeName, "config_dir.json")
669-
err = fs.ReadJson(fileName, c)
707+
708+
version, err := getRuntimeVersion(ctx, opts.RuntimeName)
670709
if err != nil {
671-
return fmt.Errorf("failed to read the %s of git-source: %s. Err: %w", fileName, opts.GsName, err)
710+
return err
672711
}
673712

674-
c.Config.SrcPath = opts.GsCloneOpts.Path()
675-
c.Config.SrcRepoURL = opts.GsCloneOpts.URL()
676-
c.Config.SrcTargetRevision = opts.GsCloneOpts.Revision()
713+
if version.LessThan(versionOfGitSourceByAppProxyRefactor) {
714+
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)
677715

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-
}
716+
if err != nil {
717+
return fmt.Errorf("failed to clone the installation repo, attemptint to edit git-source %s. Err: %w", opts.GsName, err)
718+
}
719+
c := &dirConfig{}
720+
fileName := fs.Join(apstore.Default.AppsDir, opts.GsName, opts.RuntimeName, "config_dir.json")
721+
err = fs.ReadJson(fileName, c)
722+
if err != nil {
723+
return fmt.Errorf("failed to read the %s of git-source: %s. Err: %w", fileName, opts.GsName, err)
724+
}
725+
726+
c.Config.SrcPath = opts.GsCloneOpts.Path()
727+
c.Config.SrcRepoURL = opts.GsCloneOpts.URL()
728+
c.Config.SrcTargetRevision = opts.GsCloneOpts.Revision()
729+
730+
err = fs.WriteJson(fileName, c)
731+
if err != nil {
732+
return fmt.Errorf("failed to write the updated %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+
log.G(ctx).Info("Pushing updated GitSource to the installation repo")
736+
if err := apu.PushWithMessage(ctx, repo, fmt.Sprintf("Persisted an updated git-source \"%s\"", opts.GsName)); err != nil {
737+
return fmt.Errorf("failed to persist the updated git-source: %s. Err: %w", opts.GsName, err)
738+
}
739+
} else {
740+
appProxy, err := cfConfig.NewClient().AppProxy(ctx, opts.RuntimeName, store.Get().InsecureIngressHost)
741+
if err != nil {
742+
return err
743+
}
744+
745+
err = appProxy.AppProxyGitSources().Edit(ctx, opts.GsName, opts.GsCloneOpts.Repo)
746+
if err != nil {
747+
return fmt.Errorf("failed to edit git-source: %w", err)
748+
}
686749
}
687750

751+
log.G(ctx).Infof("Successfully created git-source: \"%s\"", opts.GsName)
688752
return nil
689753
}
690754

@@ -845,7 +909,7 @@ func createGithubExampleEventSource(repoURL string, ingressHost string, runtimeN
845909
},
846910
Spec: eventsourcev1alpha1.EventSourceSpec{
847911
EventBusName: store.Get().EventBusName,
848-
Template: tpl,
912+
Template: tpl,
849913
Service: &eventsourcev1alpha1.Service{
850914
Ports: []corev1.ServicePort{
851915
{
@@ -959,7 +1023,7 @@ func createGithubExampleSensor() *sensorsv1alpha1.Sensor {
9591023
}
9601024

9611025
tpl := &sensorsv1alpha1.Template{
962-
Container: &corev1.Container{},
1026+
Container: &corev1.Container{},
9631027
ServiceAccountName: store.Get().WorkflowTriggerServiceAccount,
9641028
}
9651029

@@ -977,7 +1041,7 @@ func createGithubExampleSensor() *sensorsv1alpha1.Sensor {
9771041
},
9781042
Spec: sensorsv1alpha1.SensorSpec{
9791043
EventBusName: store.Get().EventBusName,
980-
Template: tpl,
1044+
Template: tpl,
9811045
Dependencies: dependencies,
9821046
Triggers: triggers,
9831047
},
@@ -1157,3 +1221,16 @@ func unMarshalCustomObject(obj interface{}) (map[string]interface{}, error) {
11571221
}
11581222
return crd, nil
11591223
}
1224+
1225+
func getRuntimeVersion(ctx context.Context, runtimeName string) (*semver.Version, error) {
1226+
rt, err := cfConfig.NewClient().V2().Runtime().Get(ctx, runtimeName)
1227+
if err != nil {
1228+
return nil, err
1229+
}
1230+
1231+
if rt.RuntimeVersion == nil {
1232+
return nil, fmt.Errorf("runtime \"%s\" has no version", runtimeName)
1233+
}
1234+
1235+
return semver.MustParse(*rt.RuntimeVersion), nil
1236+
}

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.318/cf-linux-amd64.tar.gz | tar zx
26+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.319/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.318/cf-darwin-amd64.tar.gz | tar zx
39+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.319/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: 2 additions & 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.318
8+
version: 0.0.319
99
bootstrapSpecifier: github.com/codefresh-io/cli-v2/manifests/argo-cd
1010
components:
1111
- name: events
@@ -21,3 +21,4 @@ spec:
2121
- name: app-proxy
2222
type: kustomize
2323
url: github.com/codefresh-io/cli-v2/manifests/app-proxy
24+
wait: true

0 commit comments

Comments
 (0)