Skip to content

Commit

Permalink
feat: add option manual to the --sync-policy flag of the `app cre…
Browse files Browse the repository at this point in the history
…ate` command (#17459)

* feat: add sync policy option 'manual' for app create command

Signed-off-by: Anirudh Sudhir <anirudh.sudhir1@gmail.com>

* chore: Update tests to reflect sync policy option changes

Signed-off-by: Anirudh Sudhir <anirudh.sudhir1@gmail.com>

---------

Signed-off-by: Anirudh Sudhir <anirudh.sudhir1@gmail.com>
  • Loading branch information
anirudhsudhir authored Mar 11, 2024
1 parent 085ed0f commit 05eea87
Show file tree
Hide file tree
Showing 9 changed files with 14 additions and 14 deletions.
4 changes: 2 additions & 2 deletions cmd/argocd/commands/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ func printAppSummaryTable(app *argoappv1.Application, appURL string, windows *ar
syncPolicy += " (Prune)"
}
} else {
syncPolicy = "<none>"
syncPolicy = "Manual"
}
fmt.Printf(printOpFmtStr, "Sync Policy:", syncPolicy)
syncStatusStr := string(app.Status.Sync.Status)
Expand Down Expand Up @@ -1516,7 +1516,7 @@ func NewApplicationListCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co

func formatSyncPolicy(app argoappv1.Application) string {
if app.Spec.SyncPolicy == nil || app.Spec.SyncPolicy.Automated == nil {
return "<none>"
return "Manual"
}
policy := "Auto"
if app.Spec.SyncPolicy.Automated.Prune {
Expand Down
8 changes: 4 additions & 4 deletions cmd/argocd/commands/app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -422,8 +422,8 @@ func TestFormatSyncPolicy(t *testing.T) {

policy := formatSyncPolicy(app)

if policy != "<none>" {
t.Fatalf("Incorrect policy %q, should be <none>", policy)
if policy != "Manual" {
t.Fatalf("Incorrect policy %q, should be Manual", policy)
}
})

Expand Down Expand Up @@ -1428,7 +1428,7 @@ func TestPrintApplicationTableNotWide(t *testing.T) {
return nil
})
assert.NoError(t, err)
expectation := "NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS\napp-name http://localhost:8080 default prj OutOfSync Healthy <none> <none>\napp-name http://localhost:8080 default prj OutOfSync Healthy <none> <none>\n"
expectation := "NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS\napp-name http://localhost:8080 default prj OutOfSync Healthy Manual <none>\napp-name http://localhost:8080 default prj OutOfSync Healthy Manual <none>\n"
assert.Equal(t, output, expectation)
}

Expand Down Expand Up @@ -1464,7 +1464,7 @@ func TestPrintApplicationTableWide(t *testing.T) {
return nil
})
assert.NoError(t, err)
expectation := "NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET\napp-name http://localhost:8080 default prj OutOfSync Healthy <none> <none> https://github.com/argoproj/argocd-example-apps guestbook 123\napp-name http://localhost:8080 default prj OutOfSync Healthy <none> <none> https://github.com/argoproj/argocd-example-apps guestbook 123\n"
expectation := "NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET\napp-name http://localhost:8080 default prj OutOfSync Healthy Manual <none> https://github.com/argoproj/argocd-example-apps guestbook 123\napp-name http://localhost:8080 default prj OutOfSync Healthy Manual <none> https://github.com/argoproj/argocd-example-apps guestbook 123\n"
assert.Equal(t, output, expectation)
}

Expand Down
4 changes: 2 additions & 2 deletions cmd/util/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ func AddAppFlags(command *cobra.Command, opts *AppOptions) {
command.Flags().StringArrayVar(&opts.helmSetFiles, "helm-set-file", []string{}, "Helm set values from respective files specified via the command line (can be repeated to set several values: --helm-set-file key1=path1 --helm-set-file key2=path2)")
command.Flags().BoolVar(&opts.helmSkipCrds, "helm-skip-crds", false, "Skip helm crd installation step")
command.Flags().StringVar(&opts.project, "project", "", "Application project name")
command.Flags().StringVar(&opts.syncPolicy, "sync-policy", "", "Set the sync policy (one of: none, automated (aliases of automated: auto, automatic))")
command.Flags().StringVar(&opts.syncPolicy, "sync-policy", "", "Set the sync policy (one of: manual (aliases of manual: none), automated (aliases of automated: auto, automatic))")
command.Flags().StringArrayVar(&opts.syncOptions, "sync-option", []string{}, "Add or remove a sync option, e.g add `Prune=false`. Remove using `!` prefix, e.g. `!Prune=false`")
command.Flags().BoolVar(&opts.autoPrune, "auto-prune", false, "Set automatic pruning when sync is automated")
command.Flags().BoolVar(&opts.selfHeal, "self-heal", false, "Set self healing when sync is automated")
Expand Down Expand Up @@ -166,7 +166,7 @@ func SetAppSpecOptions(flags *pflag.FlagSet, spec *argoappv1.ApplicationSpec, ap
spec.Project = appOpts.project
case "sync-policy":
switch appOpts.syncPolicy {
case "none":
case "none", "manual":
if spec.SyncPolicy != nil {
spec.SyncPolicy.Automated = nil
}
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guide/commands/argocd_admin_app_generate-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ argocd admin app generate-spec APPNAME [flags]
--revision-history-limit int How many items to keep in revision history (default 10)
--self-heal Set self healing when sync is automated
--sync-option Prune=false Add or remove a sync option, e.g add Prune=false. Remove using `!` prefix, e.g. `!Prune=false`
--sync-policy string Set the sync policy (one of: none, automated (aliases of automated: auto, automatic))
--sync-policy string Set the sync policy (one of: manual (aliases of manual: none), automated (aliases of automated: auto, automatic))
--sync-retry-backoff-duration duration Sync retry backoff base duration. Input needs to be a duration (e.g. 2m, 1h) (default 5s)
--sync-retry-backoff-factor int Factor multiplies the base duration after each failed sync retry (default 2)
--sync-retry-backoff-max-duration duration Max sync retry backoff duration. Input needs to be a duration (e.g. 2m, 1h) (default 3m0s)
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guide/commands/argocd_app_add-source.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ argocd app add-source APPNAME [flags]
--revision-history-limit int How many items to keep in revision history (default 10)
--self-heal Set self healing when sync is automated
--sync-option Prune=false Add or remove a sync option, e.g add Prune=false. Remove using `!` prefix, e.g. `!Prune=false`
--sync-policy string Set the sync policy (one of: none, automated (aliases of automated: auto, automatic))
--sync-policy string Set the sync policy (one of: manual (aliases of manual: none), automated (aliases of automated: auto, automatic))
--sync-retry-backoff-duration duration Sync retry backoff base duration. Input needs to be a duration (e.g. 2m, 1h) (default 5s)
--sync-retry-backoff-factor int Factor multiplies the base duration after each failed sync retry (default 2)
--sync-retry-backoff-max-duration duration Max sync retry backoff duration. Input needs to be a duration (e.g. 2m, 1h) (default 3m0s)
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guide/commands/argocd_app_create.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ argocd app create APPNAME [flags]
--self-heal Set self healing when sync is automated
--set-finalizer Sets deletion finalizer on the application, application resources will be cascaded on deletion
--sync-option Prune=false Add or remove a sync option, e.g add Prune=false. Remove using `!` prefix, e.g. `!Prune=false`
--sync-policy string Set the sync policy (one of: none, automated (aliases of automated: auto, automatic))
--sync-policy string Set the sync policy (one of: manual (aliases of manual: none), automated (aliases of automated: auto, automatic))
--sync-retry-backoff-duration duration Sync retry backoff base duration. Input needs to be a duration (e.g. 2m, 1h) (default 5s)
--sync-retry-backoff-factor int Factor multiplies the base duration after each failed sync retry (default 2)
--sync-retry-backoff-max-duration duration Max sync retry backoff duration. Input needs to be a duration (e.g. 2m, 1h) (default 3m0s)
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guide/commands/argocd_app_set.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ argocd app set APPNAME [flags]
--revision-history-limit int How many items to keep in revision history (default 10)
--self-heal Set self healing when sync is automated
--sync-option Prune=false Add or remove a sync option, e.g add Prune=false. Remove using `!` prefix, e.g. `!Prune=false`
--sync-policy string Set the sync policy (one of: none, automated (aliases of automated: auto, automatic))
--sync-policy string Set the sync policy (one of: manual (aliases of manual: none), automated (aliases of automated: auto, automatic))
--sync-retry-backoff-duration duration Sync retry backoff base duration. Input needs to be a duration (e.g. 2m, 1h) (default 5s)
--sync-retry-backoff-factor int Factor multiplies the base duration after each failed sync retry (default 2)
--sync-retry-backoff-max-duration duration Max sync retry backoff duration. Input needs to be a duration (e.g. 2m, 1h) (default 3m0s)
Expand Down
2 changes: 1 addition & 1 deletion test/e2e/cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func TestCliAppCommand(t *testing.T) {
output, err := RunCli("app", "list")
assert.NoError(t, err)
expected := Tmpl(
`{{.Name}} https://kubernetes.default.svc {{.Namespace}} default Synced Healthy <none> <none>`,
`{{.Name}} https://kubernetes.default.svc {{.Namespace}} default Synced Healthy Manual <none>`,
map[string]interface{}{"Name": Name(), "Namespace": DeploymentNamespace()})
assert.Contains(t, NormalizeOutput(output), expected)
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,7 @@ export const ApplicationSummary = (props: ApplicationSummaryProps) => {
<div className='white-box__details'>
<p>SYNC POLICY</p>
<div className='row white-box__details-row'>
<div className='columns small-3'>{(app.spec.syncPolicy && app.spec.syncPolicy.automated && <span>AUTOMATED</span>) || <span>NONE</span>}</div>
<div className='columns small-3'>{(app.spec.syncPolicy && app.spec.syncPolicy.automated && <span>AUTOMATED</span>) || <span>MANUAL</span>}</div>
<div className='columns small-9'>
{(app.spec.syncPolicy && app.spec.syncPolicy.automated && (
<button className='argo-button argo-button--base' onClick={() => unsetAutoSync(ctx)}>
Expand Down

0 comments on commit 05eea87

Please sign in to comment.