From 827d5d34f55ebe3bac381a5c120fe1cbe5945cb6 Mon Sep 17 00:00:00 2001 From: Jason Scarano <6853951+scaranoj@users.noreply.github.com> Date: Wed, 12 Aug 2020 16:13:44 -0600 Subject: [PATCH] Improve and clarify cmd help documentation, flags, and examples (#2736) * capitalize `backup create` cmd comments & examples Signed-off-by: Jason Scarano * update copyright and capitilize flags and comments Signed-off-by: Jason Scarano * update copyright and capitilize flags and comments Signed-off-by: Jason Scarano * update copyright and capitilize flags and comments Signed-off-by: Jason Scarano * update backuplocation, restic, & restore cmd doc Signed-off-by: Jason Scarano * fix local typo Signed-off-by: Jason Scarano * update copyrights & capitalize pflag/help strings Signed-off-by: Jason Scarano * update copyright in utils dir Signed-off-by: Jason Scarano * Revert "update copyright in utils dir" This reverts commit d116efe3a3ef46db249dbb45d74c91150692186c. Signed-off-by: Jason Scarano * revert copyright changes Signed-off-by: Jason Scarano * restore missing file Signed-off-by: Jason Scarano * revert copyright changes Signed-off-by: Jason Scarano * add cacert flag back Signed-off-by: Jason Scarano Co-authored-by: Carlisia Campos --- go.sum | 5 +++ pkg/cmd/cli/backup/create.go | 42 +++++++++++++------------- pkg/cmd/cli/backup/delete.go | 12 ++++---- pkg/cmd/cli/backup/describe.go | 8 ++--- pkg/cmd/cli/backup/download.go | 10 +++--- pkg/cmd/cli/backup/logs.go | 4 +-- pkg/cmd/cli/backuplocation/create.go | 20 ++++++------ pkg/cmd/cli/backuplocation/get.go | 4 +-- pkg/cmd/cli/completion/completion.go | 4 +-- pkg/cmd/cli/delete_options.go | 4 +-- pkg/cmd/cli/plugin/add.go | 4 +-- pkg/cmd/cli/plugin/get.go | 4 +-- pkg/cmd/cli/restic/repo/get.go | 4 +-- pkg/cmd/cli/restic/server.go | 6 ++-- pkg/cmd/cli/restore/create.go | 38 +++++++++++------------ pkg/cmd/cli/restore/delete.go | 12 ++++---- pkg/cmd/cli/restore/describe.go | 8 ++--- pkg/cmd/cli/restore/get.go | 4 +-- pkg/cmd/cli/restore/logs.go | 6 ++-- pkg/cmd/cli/schedule/delete.go | 12 ++++---- pkg/cmd/cli/schedule/describe.go | 4 +-- pkg/cmd/cli/schedule/get.go | 4 +-- pkg/cmd/cli/snapshotlocation/create.go | 8 ++--- pkg/cmd/cli/version/version.go | 4 +-- pkg/cmd/server/server.go | 40 ++++++++++++------------ 25 files changed, 138 insertions(+), 133 deletions(-) diff --git a/go.sum b/go.sum index 16d5a2ef9..335552eb9 100644 --- a/go.sum +++ b/go.sum @@ -265,6 +265,7 @@ github.com/golang/mock v1.0.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.3 h1:GV+pQPG/EUUbkh47niozDcADz6go/dUwhVzdUQHIVRw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -314,12 +315,14 @@ github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f h1:Jnx61latede7zDD3DiiP4gmNz33uK0U5HDUaF0a/HVQ= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= @@ -601,6 +604,7 @@ go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qL go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= @@ -785,6 +789,7 @@ google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEt google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/pkg/cmd/cli/backup/create.go b/pkg/cmd/cli/backup/create.go index ce8c36b33..e06eaecb0 100644 --- a/pkg/cmd/cli/backup/create.go +++ b/pkg/cmd/cli/backup/create.go @@ -52,22 +52,22 @@ func NewCreateCommand(f client.Factory, use string) *cobra.Command { cmd.CheckError(o.Validate(c, args, f)) cmd.CheckError(o.Run(c, f)) }, - Example: ` # create a backup containing all resources + Example: ` # Create a backup containing all resources. velero backup create backup1 - # create a backup including only the nginx namespace + # Create a backup including only the nginx namespace. velero backup create nginx-backup --include-namespaces nginx - # create a backup excluding the velero and default namespaces + # Create a backup excluding the velero and default namespaces. velero backup create backup2 --exclude-namespaces velero,default - # create a backup based on a schedule named daily-backup + # Create a backup based on a schedule named daily-backup. velero backup create --from-schedule daily-backup - # view the YAML for a backup that doesn't snapshot volumes, without sending it to the server + # View the YAML for a backup that doesn't snapshot volumes, without sending it to the server. velero backup create backup3 --snapshot-volumes=false -o yaml - # wait for a backup to complete before returning from the command + # Wait for a backup to complete before returning from the command. velero backup create backup4 --wait`, } @@ -111,37 +111,37 @@ func NewCreateOptions() *CreateOptions { } func (o *CreateOptions) BindFlags(flags *pflag.FlagSet) { - flags.DurationVar(&o.TTL, "ttl", o.TTL, "how long before the backup can be garbage collected") - flags.Var(&o.IncludeNamespaces, "include-namespaces", "namespaces to include in the backup (use '*' for all namespaces)") - flags.Var(&o.ExcludeNamespaces, "exclude-namespaces", "namespaces to exclude from the backup") - flags.Var(&o.IncludeResources, "include-resources", "resources to include in the backup, formatted as resource.group, such as storageclasses.storage.k8s.io (use '*' for all resources)") - flags.Var(&o.ExcludeResources, "exclude-resources", "resources to exclude from the backup, formatted as resource.group, such as storageclasses.storage.k8s.io") - flags.Var(&o.Labels, "labels", "labels to apply to the backup") - flags.StringVar(&o.StorageLocation, "storage-location", "", "location in which to store the backup") - flags.StringSliceVar(&o.SnapshotLocations, "volume-snapshot-locations", o.SnapshotLocations, "list of locations (at most one per provider) where volume snapshots should be stored") - flags.VarP(&o.Selector, "selector", "l", "only back up resources matching this label selector") - f := flags.VarPF(&o.SnapshotVolumes, "snapshot-volumes", "", "take snapshots of PersistentVolumes as part of the backup") + flags.DurationVar(&o.TTL, "ttl", o.TTL, "How long before the backup can be garbage collected.") + flags.Var(&o.IncludeNamespaces, "include-namespaces", "Namespaces to include in the backup (use '*' for all namespaces).") + flags.Var(&o.ExcludeNamespaces, "exclude-namespaces", "Namespaces to exclude from the backup.") + flags.Var(&o.IncludeResources, "include-resources", "Resources to include in the backup, formatted as resource.group, such as storageclasses.storage.k8s.io (use '*' for all resources).") + flags.Var(&o.ExcludeResources, "exclude-resources", "Resources to exclude from the backup, formatted as resource.group, such as storageclasses.storage.k8s.io.") + flags.Var(&o.Labels, "labels", "Labels to apply to the backup.") + flags.StringVar(&o.StorageLocation, "storage-location", "", "Location in which to store the backup.") + flags.StringSliceVar(&o.SnapshotLocations, "volume-snapshot-locations", o.SnapshotLocations, "List of locations (at most one per provider) where volume snapshots should be stored.") + flags.VarP(&o.Selector, "selector", "l", "Only back up resources matching this label selector.") + f := flags.VarPF(&o.SnapshotVolumes, "snapshot-volumes", "", "Take snapshots of PersistentVolumes as part of the backup.") // this allows the user to just specify "--snapshot-volumes" as shorthand for "--snapshot-volumes=true" // like a normal bool flag f.NoOptDefVal = "true" - f = flags.VarPF(&o.IncludeClusterResources, "include-cluster-resources", "", "include cluster-scoped resources in the backup") + f = flags.VarPF(&o.IncludeClusterResources, "include-cluster-resources", "", "Include cluster-scoped resources in the backup") f.NoOptDefVal = "true" - f = flags.VarPF(&o.DefaultVolumesToRestic, "default-volumes-to-restic", "", "use restic by default to backup all pod volumes") + f = flags.VarPF(&o.DefaultVolumesToRestic, "default-volumes-to-restic", "", "Use restic by default to backup all pod volumes") f.NoOptDefVal = "true" } // BindWait binds the wait flag separately so it is not called by other create // commands that reuse CreateOptions's BindFlags method. func (o *CreateOptions) BindWait(flags *pflag.FlagSet) { - flags.BoolVarP(&o.Wait, "wait", "w", o.Wait, "wait for the operation to complete") + flags.BoolVarP(&o.Wait, "wait", "w", o.Wait, "Wait for the operation to complete.") } // BindFromSchedule binds the from-schedule flag separately so it is not called // by other create commands that reuse CreateOptions's BindFlags method. func (o *CreateOptions) BindFromSchedule(flags *pflag.FlagSet) { - flags.StringVar(&o.FromSchedule, "from-schedule", "", "create a backup from the template of an existing schedule. Cannot be used with any other filters. Backup name is optional if used.") + flags.StringVar(&o.FromSchedule, "from-schedule", "", "Create a backup from the template of an existing schedule. Cannot be used with any other filters. Backup name is optional if used.") } func (o *CreateOptions) Validate(c *cobra.Command, args []string, f client.Factory) error { @@ -156,7 +156,7 @@ func (o *CreateOptions) Validate(c *cobra.Command, args []string, f client.Facto // Ensure that unless FromSchedule is set, args contains a backup name if o.FromSchedule == "" && len(args) != 1 { - return fmt.Errorf("a backup name is required, unless you are creating based on a schedule") + return fmt.Errorf("A backup name is required, unless you are creating based on a schedule.") } if o.StorageLocation != "" { diff --git a/pkg/cmd/cli/backup/delete.go b/pkg/cmd/cli/backup/delete.go index 66ea03214..20783d8cd 100644 --- a/pkg/cmd/cli/backup/delete.go +++ b/pkg/cmd/cli/backup/delete.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -40,19 +40,19 @@ func NewDeleteCommand(f client.Factory, use string) *cobra.Command { c := &cobra.Command{ Use: fmt.Sprintf("%s [NAMES]", use), Short: "Delete backups", - Example: ` # delete a backup named "backup-1" + Example: ` # Delete a backup named "backup-1." velero backup delete backup-1 - # delete a backup named "backup-1" without prompting for confirmation + # Delete a backup named "backup-1" without prompting for confirmation. velero backup delete backup-1 --confirm - # delete backups named "backup-1" and "backup-2" + # Delete backups named "backup-1" and "backup-2." velero backup delete backup-1 backup-2 - # delete all backups triggered by schedule "schedule-1" + # Delete all backups triggered by schedule "schedule-1." velero backup delete --selector velero.io/schedule-name=schedule-1 - # delete all backups + # Delete all backups. velero backup delete --all `, Run: func(c *cobra.Command, args []string) { diff --git a/pkg/cmd/cli/backup/describe.go b/pkg/cmd/cli/backup/describe.go index 540055636..dd79b1d02 100644 --- a/pkg/cmd/cli/backup/describe.go +++ b/pkg/cmd/cli/backup/describe.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -111,9 +111,9 @@ func NewDescribeCommand(f client.Factory, use string) *cobra.Command { }, } - c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "only show items matching this label selector") - c.Flags().BoolVar(&details, "details", details, "display additional detail in the command output") + c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "Only show items matching this label selector.") + c.Flags().BoolVar(&details, "details", details, "Display additional detail in the command output.") c.Flags().BoolVar(&insecureSkipTLSVerify, "insecure-skip-tls-verify", insecureSkipTLSVerify, "If true, the object store's TLS certificate will not be checked for validity. This is insecure and susceptible to man-in-the-middle attacks. Not recommended for production.") - c.Flags().StringVar(&caCertFile, "cacert", caCertFile, "path to a certificate bundle to use when verifying TLS connections") + c.Flags().StringVar(&caCertFile, "cacert", caCertFile, "Path to a certificate bundle to use when verifying TLS connections.") return c } diff --git a/pkg/cmd/cli/backup/download.go b/pkg/cmd/cli/backup/download.go index cecce1075..b6f787caa 100644 --- a/pkg/cmd/cli/backup/download.go +++ b/pkg/cmd/cli/backup/download.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -76,11 +76,11 @@ func NewDownloadOptions() *DownloadOptions { } func (o *DownloadOptions) BindFlags(flags *pflag.FlagSet) { - flags.StringVarP(&o.Output, "output", "o", o.Output, "path to output file. Defaults to -data.tar.gz in the current directory") - flags.BoolVar(&o.Force, "force", o.Force, "forces the download and will overwrite file if it exists already") - flags.DurationVar(&o.Timeout, "timeout", o.Timeout, "maximum time to wait to process download request") + flags.StringVarP(&o.Output, "output", "o", o.Output, "Path to output file. Defaults to -data.tar.gz in the current directory.") + flags.BoolVar(&o.Force, "force", o.Force, "Forces the download and will overwrite file if it exists already.") + flags.DurationVar(&o.Timeout, "timeout", o.Timeout, "Maximum time to wait to process download request.") flags.BoolVar(&o.InsecureSkipTLSVerify, "insecure-skip-tls-verify", o.InsecureSkipTLSVerify, "If true, the object store's TLS certificate will not be checked for validity. This is insecure and susceptible to man-in-the-middle attacks. Not recommended for production.") - flags.StringVar(&o.caCertFile, "cacert", o.caCertFile, "path to a certificate bundle to use when verifying TLS connections") + flags.StringVar(&o.caCertFile, "cacert", o.caCertFile, "Path to a certificate bundle to use when verifying TLS connections.") } diff --git a/pkg/cmd/cli/backup/logs.go b/pkg/cmd/cli/backup/logs.go index 7d22d58ae..02c4a5a7d 100644 --- a/pkg/cmd/cli/backup/logs.go +++ b/pkg/cmd/cli/backup/logs.go @@ -72,8 +72,8 @@ func NewLogsCommand(f client.Factory) *cobra.Command { }, } - c.Flags().DurationVar(&timeout, "timeout", timeout, "how long to wait to receive logs") + c.Flags().DurationVar(&timeout, "timeout", timeout, "How long to wait to receive logs.") c.Flags().BoolVar(&insecureSkipTLSVerify, "insecure-skip-tls-verify", insecureSkipTLSVerify, "If true, the object store's TLS certificate will not be checked for validity. This is insecure and susceptible to man-in-the-middle attacks. Not recommended for production.") - c.Flags().StringVar(&caCertFile, "cacert", caCertFile, "path to a certificate bundle to use when verifying TLS connections") + c.Flags().StringVar(&caCertFile, "cacert", caCertFile, "Path to a certificate bundle to use when verifying TLS connections.") return c } diff --git a/pkg/cmd/cli/backuplocation/create.go b/pkg/cmd/cli/backuplocation/create.go index e7030e49f..d3c12ea47 100644 --- a/pkg/cmd/cli/backuplocation/create.go +++ b/pkg/cmd/cli/backuplocation/create.go @@ -1,5 +1,5 @@ /* -Copyright 2018 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -83,18 +83,18 @@ func NewCreateOptions() *CreateOptions { } func (o *CreateOptions) BindFlags(flags *pflag.FlagSet) { - flags.StringVar(&o.Provider, "provider", o.Provider, "name of the backup storage provider (e.g. aws, azure, gcp)") - flags.StringVar(&o.Bucket, "bucket", o.Bucket, "name of the object storage bucket where backups should be stored") - flags.StringVar(&o.Prefix, "prefix", o.Prefix, "prefix under which all Velero data should be stored within the bucket. Optional.") - flags.DurationVar(&o.BackupSyncPeriod, "backup-sync-period", o.BackupSyncPeriod, "how often to ensure all Velero backups in object storage exist as Backup API objects in the cluster. Optional. Set this to `0s` to disable sync. Default: 1 minute.") - flags.DurationVar(&o.ValidationFrequency, "validation-frequency", o.ValidationFrequency, "how often to verify if the backup storage location is valid. Optional. Set this to `0s` to disable sync. Default 1 minute.") - flags.Var(&o.Config, "config", "configuration key-value pairs") - flags.Var(&o.Labels, "labels", "labels to apply to the backup storage location") - flags.StringVar(&o.CACertFile, "cacert", o.CACertFile, "file containing a certificate bundle to use when verifying TLS connections to the object store. Optional.") + flags.StringVar(&o.Provider, "provider", o.Provider, "Name of the backup storage provider (e.g. aws, azure, gcp).") + flags.StringVar(&o.Bucket, "bucket", o.Bucket, "Name of the object storage bucket where backups should be stored.") + flags.StringVar(&o.Prefix, "prefix", o.Prefix, "Prefix under which all Velero data should be stored within the bucket. Optional.") + flags.DurationVar(&o.BackupSyncPeriod, "backup-sync-period", o.BackupSyncPeriod, "How often to ensure all Velero backups in object storage exist as Backup API objects in the cluster. Optional. Set this to `0s` to disable sync. Default: 1 minute.") + flags.DurationVar(&o.ValidationFrequency, "validation-frequency", o.ValidationFrequency, "How often to verify if the backup storage location is valid. Optional. Set this to `0s` to disable sync. Default 1 minute.") + flags.Var(&o.Config, "config", "Configuration key-value pairs.") + flags.Var(&o.Labels, "labels", "Labels to apply to the backup storage location.") + flags.StringVar(&o.CACertFile, "cacert", o.CACertFile, "File containing a certificate bundle to use when verifying TLS connections to the object store. Optional.") flags.Var( o.AccessMode, "access-mode", - fmt.Sprintf("access mode for the backup storage location. Valid values are %s", strings.Join(o.AccessMode.AllowedValues(), ",")), + fmt.Sprintf("Access mode for the backup storage location. Valid values are %s", strings.Join(o.AccessMode.AllowedValues(), ",")), ) } diff --git a/pkg/cmd/cli/backuplocation/get.go b/pkg/cmd/cli/backuplocation/get.go index c0dbe4148..e6133d492 100644 --- a/pkg/cmd/cli/backuplocation/get.go +++ b/pkg/cmd/cli/backuplocation/get.go @@ -1,5 +1,5 @@ /* -Copyright 2018 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -66,7 +66,7 @@ func NewGetCommand(f client.Factory, use string) *cobra.Command { }, } - c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "only show items matching this label selector") + c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "Only show items matching this label selector.") output.BindFlags(c.Flags()) diff --git a/pkg/cmd/cli/completion/completion.go b/pkg/cmd/cli/completion/completion.go index 3ae6fe419..9664630be 100644 --- a/pkg/cmd/cli/completion/completion.go +++ b/pkg/cmd/cli/completion/completion.go @@ -1,5 +1,5 @@ /* -Copyright 2018 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -28,7 +28,7 @@ import ( func NewCommand() *cobra.Command { c := &cobra.Command{ Use: "completion SHELL", - Short: "Output shell completion code for the specified shell (bash or zsh)", + Short: "Output shell completion code for the specified shell (bash or zsh).", Long: `Generate shell completion code. Auto completion supports both bash and zsh. Output is to STDOUT. diff --git a/pkg/cmd/cli/delete_options.go b/pkg/cmd/cli/delete_options.go index 60f7d84ff..fbdcb0d0a 100644 --- a/pkg/cmd/cli/delete_options.go +++ b/pkg/cmd/cli/delete_options.go @@ -1,5 +1,5 @@ /* -Copyright 2018 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -81,7 +81,7 @@ func (o *DeleteOptions) Validate(c *cobra.Command, f client.Factory, args []stri func (o *DeleteOptions) BindFlags(flags *pflag.FlagSet) { flags.BoolVar(&o.Confirm, "confirm", o.Confirm, "Confirm deletion") flags.BoolVar(&o.all, "all", o.all, "Delete all "+o.singularTypeName+"s") - flags.VarP(&o.Selector, "selector", "l", "Delete all "+o.singularTypeName+"s matching this label selector") + flags.VarP(&o.Selector, "selector", "l", "Delete all "+o.singularTypeName+"s matching this label selector.") } // GetConfirmation ensures that the user confirms the action before proceeding. diff --git a/pkg/cmd/cli/plugin/add.go b/pkg/cmd/cli/plugin/add.go index 24437fb54..92b5bd9b6 100644 --- a/pkg/cmd/cli/plugin/add.go +++ b/pkg/cmd/cli/plugin/add.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -122,7 +122,7 @@ func NewAddCommand(f client.Factory) *cobra.Command { }, } - c.Flags().Var(imagePullPolicyFlag, "image-pull-policy", fmt.Sprintf("the imagePullPolicy for the plugin container. Valid values are %s.", strings.Join(imagePullPolicies, ", "))) + c.Flags().Var(imagePullPolicyFlag, "image-pull-policy", fmt.Sprintf("The imagePullPolicy for the plugin container. Valid values are %s.", strings.Join(imagePullPolicies, ", "))) return c } diff --git a/pkg/cmd/cli/plugin/get.go b/pkg/cmd/cli/plugin/get.go index e56db4968..f43b49abe 100644 --- a/pkg/cmd/cli/plugin/get.go +++ b/pkg/cmd/cli/plugin/get.go @@ -1,5 +1,5 @@ /* -Copyright 2019 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -62,7 +62,7 @@ func NewGetCommand(f client.Factory, use string) *cobra.Command { }, } - c.Flags().DurationVar(&serverStatusGetter.Timeout, "timeout", serverStatusGetter.Timeout, "maximum time to wait for plugin information to be reported") + c.Flags().DurationVar(&serverStatusGetter.Timeout, "timeout", serverStatusGetter.Timeout, "Maximum time to wait for plugin information to be reported.") output.BindFlagsSimple(c.Flags()) return c diff --git a/pkg/cmd/cli/restic/repo/get.go b/pkg/cmd/cli/restic/repo/get.go index a58f77832..8fd848fd4 100644 --- a/pkg/cmd/cli/restic/repo/get.go +++ b/pkg/cmd/cli/restic/repo/get.go @@ -1,5 +1,5 @@ /* -Copyright 2018 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -59,7 +59,7 @@ func NewGetCommand(f client.Factory, use string) *cobra.Command { }, } - c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "only show items matching this label selector") + c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "Only show items matching this label selector.") output.BindFlags(c.Flags()) diff --git a/pkg/cmd/cli/restic/server.go b/pkg/cmd/cli/restic/server.go index b07d6a2ac..1921cb72e 100644 --- a/pkg/cmd/cli/restic/server.go +++ b/pkg/cmd/cli/restic/server.go @@ -1,5 +1,5 @@ /* -Copyright 2019 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -90,8 +90,8 @@ func NewServerCommand(f client.Factory) *cobra.Command { }, } - command.Flags().Var(logLevelFlag, "log-level", fmt.Sprintf("the level at which to log. Valid values are %s.", strings.Join(logLevelFlag.AllowedValues(), ", "))) - command.Flags().Var(formatFlag, "log-format", fmt.Sprintf("the format for log output. Valid values are %s.", strings.Join(formatFlag.AllowedValues(), ", "))) + command.Flags().Var(logLevelFlag, "log-level", fmt.Sprintf("The level at which to log. Valid values are %s.", strings.Join(logLevelFlag.AllowedValues(), ", "))) + command.Flags().Var(formatFlag, "log-format", fmt.Sprintf("The format for log output. Valid values are %s.", strings.Join(formatFlag.AllowedValues(), ", "))) return command } diff --git a/pkg/cmd/cli/restore/create.go b/pkg/cmd/cli/restore/create.go index f5a32d7ef..487eaa629 100644 --- a/pkg/cmd/cli/restore/create.go +++ b/pkg/cmd/cli/restore/create.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -44,19 +44,19 @@ func NewCreateCommand(f client.Factory, use string) *cobra.Command { c := &cobra.Command{ Use: use + " [RESTORE_NAME] [--from-backup BACKUP_NAME | --from-schedule SCHEDULE_NAME]", Short: "Create a restore", - Example: ` # create a restore named "restore-1" from backup "backup-1" + Example: ` # Create a restore named "restore-1" from backup "backup-1." velero restore create restore-1 --from-backup backup-1 - # create a restore with a default name ("backup-1-") from backup "backup-1" + # Create a restore with a default name ("backup-1-") from backup "backup-1." velero restore create --from-backup backup-1 - # create a restore from the latest successful backup triggered by schedule "schedule-1" + # Create a restore from the latest successful backup triggered by schedule "schedule-1." velero restore create --from-schedule schedule-1 - # create a restore from the latest successful OR partially-failed backup triggered by schedule "schedule-1" + # Create a restore from the latest successful OR partially-failed backup triggered by schedule "schedule-1." velero restore create --from-schedule schedule-1 --allow-partially-failed - # create a restore for only persistentvolumeclaims and persistentvolumes within a backup + # Create a restore for only persistentvolumeclaims and persistentvolumes within a backup. velero restore create --from-backup backup-2 --include-resources persistentvolumeclaims,persistentvolumes `, Args: cobra.MaximumNArgs(1), @@ -104,27 +104,27 @@ func NewCreateOptions() *CreateOptions { } func (o *CreateOptions) BindFlags(flags *pflag.FlagSet) { - flags.StringVar(&o.BackupName, "from-backup", "", "backup to restore from") - flags.StringVar(&o.ScheduleName, "from-schedule", "", "schedule to restore from") - flags.Var(&o.IncludeNamespaces, "include-namespaces", "namespaces to include in the restore (use '*' for all namespaces)") - flags.Var(&o.ExcludeNamespaces, "exclude-namespaces", "namespaces to exclude from the restore") - flags.Var(&o.NamespaceMappings, "namespace-mappings", "namespace mappings from name in the backup to desired restored name in the form src1:dst1,src2:dst2,...") - flags.Var(&o.Labels, "labels", "labels to apply to the restore") - flags.Var(&o.IncludeResources, "include-resources", "resources to include in the restore, formatted as resource.group, such as storageclasses.storage.k8s.io (use '*' for all resources)") - flags.Var(&o.ExcludeResources, "exclude-resources", "resources to exclude from the restore, formatted as resource.group, such as storageclasses.storage.k8s.io") - flags.VarP(&o.Selector, "selector", "l", "only restore resources matching this label selector") - f := flags.VarPF(&o.RestoreVolumes, "restore-volumes", "", "whether to restore volumes from snapshots") + flags.StringVar(&o.BackupName, "from-backup", "", "Backup to restore from") + flags.StringVar(&o.ScheduleName, "from-schedule", "", "Schedule to restore from") + flags.Var(&o.IncludeNamespaces, "include-namespaces", "Namespaces to include in the restore (use '*' for all namespaces)") + flags.Var(&o.ExcludeNamespaces, "exclude-namespaces", "Namespaces to exclude from the restore.") + flags.Var(&o.NamespaceMappings, "namespace-mappings", "Namespace mappings from name in the backup to desired restored name in the form src1:dst1,src2:dst2,...") + flags.Var(&o.Labels, "labels", "Labels to apply to the restore.") + flags.Var(&o.IncludeResources, "include-resources", "Resources to include in the restore, formatted as resource.group, such as storageclasses.storage.k8s.io (use '*' for all resources).") + flags.Var(&o.ExcludeResources, "exclude-resources", "Resources to exclude from the restore, formatted as resource.group, such as storageclasses.storage.k8s.io.") + flags.VarP(&o.Selector, "selector", "l", "Only restore resources matching this label selector.") + f := flags.VarPF(&o.RestoreVolumes, "restore-volumes", "", "Whether to restore volumes from snapshots.") // this allows the user to just specify "--restore-volumes" as shorthand for "--restore-volumes=true" // like a normal bool flag f.NoOptDefVal = "true" - f = flags.VarPF(&o.IncludeClusterResources, "include-cluster-resources", "", "include cluster-scoped resources in the restore") + f = flags.VarPF(&o.IncludeClusterResources, "include-cluster-resources", "", "Include cluster-scoped resources in the restore.") f.NoOptDefVal = "true" - f = flags.VarPF(&o.AllowPartiallyFailed, "allow-partially-failed", "", "if using --from-schedule, whether to consider PartiallyFailed backups when looking for the most recent one. This flag has no effect if not using --from-schedule.") + f = flags.VarPF(&o.AllowPartiallyFailed, "allow-partially-failed", "", "If using --from-schedule, whether to consider PartiallyFailed backups when looking for the most recent one. This flag has no effect if not using --from-schedule.") f.NoOptDefVal = "true" - flags.BoolVarP(&o.Wait, "wait", "w", o.Wait, "wait for the operation to complete") + flags.BoolVarP(&o.Wait, "wait", "w", o.Wait, "Wait for the operation to complete.") } func (o *CreateOptions) Complete(args []string, f client.Factory) error { diff --git a/pkg/cmd/cli/restore/delete.go b/pkg/cmd/cli/restore/delete.go index 2e13bfbbf..6140c756f 100644 --- a/pkg/cmd/cli/restore/delete.go +++ b/pkg/cmd/cli/restore/delete.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -39,19 +39,19 @@ func NewDeleteCommand(f client.Factory, use string) *cobra.Command { c := &cobra.Command{ Use: fmt.Sprintf("%s [NAMES]", use), Short: "Delete restores", - Example: ` # delete a restore named "restore-1" + Example: ` # Delete a restore named "restore-1." velero restore delete restore-1 - # delete a restore named "restore-1" without prompting for confirmation + # Delete a restore named "restore-1" without prompting for confirmation. velero restore delete restore-1 --confirm - # delete restores named "restore-1" and "restore-2" + # Delete restores named "restore-1" and "restore-2." velero restore delete restore-1 restore-2 - # delete all restores labelled with foo=bar" + # Delete all restores labelled with foo=bar." velero restore delete --selector foo=bar - # delete all restores + # Delete all restores. velero restore delete --all`, Run: func(c *cobra.Command, args []string) { diff --git a/pkg/cmd/cli/restore/describe.go b/pkg/cmd/cli/restore/describe.go index 1e210a470..1796fb6d2 100644 --- a/pkg/cmd/cli/restore/describe.go +++ b/pkg/cmd/cli/restore/describe.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -84,10 +84,10 @@ func NewDescribeCommand(f client.Factory, use string) *cobra.Command { }, } - c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "only show items matching this label selector") - c.Flags().BoolVar(&details, "details", details, "display additional detail in the command output") + c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "Only show items matching this label selector.") + c.Flags().BoolVar(&details, "details", details, "Display additional detail in the command output.") c.Flags().BoolVar(&insecureSkipTLSVerify, "insecure-skip-tls-verify", insecureSkipTLSVerify, "If true, the object store's TLS certificate will not be checked for validity. This is insecure and susceptible to man-in-the-middle attacks. Not recommended for production.") - c.Flags().StringVar(&caCertFile, "cacert", caCertFile, "path to a certificate bundle to use when verifying TLS connections") + c.Flags().StringVar(&caCertFile, "cacert", caCertFile, "Path to a certificate bundle to use when verifying TLS connections.") return c } diff --git a/pkg/cmd/cli/restore/get.go b/pkg/cmd/cli/restore/get.go index c6c3e05a2..a6370b9a1 100644 --- a/pkg/cmd/cli/restore/get.go +++ b/pkg/cmd/cli/restore/get.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -64,7 +64,7 @@ func NewGetCommand(f client.Factory, use string) *cobra.Command { }, } - c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "only show items matching this label selector") + c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "Only show items matching this label selector.") output.BindFlags(c.Flags()) diff --git a/pkg/cmd/cli/restore/logs.go b/pkg/cmd/cli/restore/logs.go index 614734ae7..7cc6c37d3 100644 --- a/pkg/cmd/cli/restore/logs.go +++ b/pkg/cmd/cli/restore/logs.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -72,9 +72,9 @@ func NewLogsCommand(f client.Factory) *cobra.Command { }, } - c.Flags().DurationVar(&timeout, "timeout", timeout, "how long to wait to receive logs") + c.Flags().DurationVar(&timeout, "timeout", timeout, "How long to wait to receive logs.") c.Flags().BoolVar(&insecureSkipTLSVerify, "insecure-skip-tls-verify", insecureSkipTLSVerify, "If true, the object store's TLS certificate will not be checked for validity. This is insecure and susceptible to man-in-the-middle attacks. Not recommended for production.") - c.Flags().StringVar(&caCertFile, "cacert", caCertFile, "path to a certificate bundle to use when verifying TLS connections") + c.Flags().StringVar(&caCertFile, "cacert", caCertFile, "Path to a certificate bundle to use when verifying TLS connections.") return c } diff --git a/pkg/cmd/cli/schedule/delete.go b/pkg/cmd/cli/schedule/delete.go index c9f28325f..63fd72297 100644 --- a/pkg/cmd/cli/schedule/delete.go +++ b/pkg/cmd/cli/schedule/delete.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -39,19 +39,19 @@ func NewDeleteCommand(f client.Factory, use string) *cobra.Command { c := &cobra.Command{ Use: fmt.Sprintf("%s [NAMES]", use), Short: "Delete schedules", - Example: ` # delete a schedule named "schedule-1" + Example: ` # Delete a schedule named "schedule-1." velero schedule delete schedule-1 - # delete a schedule named "schedule-1" without prompting for confirmation + # Delete a schedule named "schedule-1" without prompting for confirmation. velero schedule delete schedule-1 --confirm - # delete schedules named "schedule-1" and "schedule-2" + # Delete schedules named "schedule-1" and "schedule-2." velero schedule delete schedule-1 schedule-2 - # delete all schedules labelled with foo=bar" + # Delete all schedules labelled with foo=bar." velero schedule delete --selector foo=bar - # delete all schedules + # Delete all schedules. velero schedule delete --all`, Run: func(c *cobra.Command, args []string) { diff --git a/pkg/cmd/cli/schedule/describe.go b/pkg/cmd/cli/schedule/describe.go index b1b8d8f1f..ba6972a96 100644 --- a/pkg/cmd/cli/schedule/describe.go +++ b/pkg/cmd/cli/schedule/describe.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -66,7 +66,7 @@ func NewDescribeCommand(f client.Factory, use string) *cobra.Command { }, } - c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "only show items matching this label selector") + c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "Only show items matching this label selector.") return c } diff --git a/pkg/cmd/cli/schedule/get.go b/pkg/cmd/cli/schedule/get.go index bc66d459f..4a20da630 100644 --- a/pkg/cmd/cli/schedule/get.go +++ b/pkg/cmd/cli/schedule/get.go @@ -1,5 +1,5 @@ /* -Copyright 2017 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -64,7 +64,7 @@ func NewGetCommand(f client.Factory, use string) *cobra.Command { }, } - c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "only show items matching this label selector") + c.Flags().StringVarP(&listOptions.LabelSelector, "selector", "l", listOptions.LabelSelector, "Only show items matching this label selector.") output.BindFlags(c.Flags()) diff --git a/pkg/cmd/cli/snapshotlocation/create.go b/pkg/cmd/cli/snapshotlocation/create.go index a808bb5bc..824156eac 100644 --- a/pkg/cmd/cli/snapshotlocation/create.go +++ b/pkg/cmd/cli/snapshotlocation/create.go @@ -1,5 +1,5 @@ /* -Copyright 2018 the Velero contributors. +Copyright 2020 the Velero contributors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -67,9 +67,9 @@ func NewCreateOptions() *CreateOptions { } func (o *CreateOptions) BindFlags(flags *pflag.FlagSet) { - flags.StringVar(&o.Provider, "provider", o.Provider, "name of the volume snapshot provider (e.g. aws, azure, gcp)") - flags.Var(&o.Config, "config", "configuration key-value pairs") - flags.Var(&o.Labels, "labels", "labels to apply to the volume snapshot location") + flags.StringVar(&o.Provider, "provider", o.Provider, "Name of the volume snapshot provider (e.g. aws, azure, gcp).") + flags.Var(&o.Config, "config", "Configuration key-value pairs.") + flags.Var(&o.Labels, "labels", "Labels to apply to the volume snapshot location.") } func (o *CreateOptions) Validate(c *cobra.Command, args []string, f client.Factory) error { diff --git a/pkg/cmd/cli/version/version.go b/pkg/cmd/cli/version/version.go index cbf365a4a..0017e066c 100644 --- a/pkg/cmd/cli/version/version.go +++ b/pkg/cmd/cli/version/version.go @@ -55,8 +55,8 @@ func NewCommand(f client.Factory) *cobra.Command { }, } - c.Flags().DurationVar(&serverStatusGetter.Timeout, "timeout", serverStatusGetter.Timeout, "maximum time to wait for server version to be reported") - c.Flags().BoolVar(&clientOnly, "client-only", clientOnly, "only get velero client version, not server version") + c.Flags().DurationVar(&serverStatusGetter.Timeout, "timeout", serverStatusGetter.Timeout, "Maximum time to wait for server version to be reported") + c.Flags().BoolVar(&clientOnly, "client-only", clientOnly, "Only get velero client version, not server version") return c } diff --git a/pkg/cmd/server/server.go b/pkg/cmd/server/server.go index 88fb8c121..5fad93003 100644 --- a/pkg/cmd/server/server.go +++ b/pkg/cmd/server/server.go @@ -208,25 +208,25 @@ func NewCommand(f client.Factory) *cobra.Command { }, } - command.Flags().Var(logLevelFlag, "log-level", fmt.Sprintf("the level at which to log. Valid values are %s.", strings.Join(logLevelFlag.AllowedValues(), ", "))) - command.Flags().Var(config.formatFlag, "log-format", fmt.Sprintf("the format for log output. Valid values are %s.", strings.Join(config.formatFlag.AllowedValues(), ", "))) - command.Flags().StringVar(&config.pluginDir, "plugin-dir", config.pluginDir, "directory containing Velero plugins") - command.Flags().StringVar(&config.metricsAddress, "metrics-address", config.metricsAddress, "the address to expose prometheus metrics") - command.Flags().DurationVar(&config.backupSyncPeriod, "backup-sync-period", config.backupSyncPeriod, "how often to ensure all Velero backups in object storage exist as Backup API objects in the cluster. This is the default sync period if none is explicitly specified for a backup storage location.") - command.Flags().DurationVar(&config.podVolumeOperationTimeout, "restic-timeout", config.podVolumeOperationTimeout, "how long backups/restores of pod volumes should be allowed to run before timing out") - command.Flags().BoolVar(&config.restoreOnly, "restore-only", config.restoreOnly, "run in a mode where only restores are allowed; backups, schedules, and garbage-collection are all disabled. DEPRECATED: this flag will be removed in v2.0. Use read-only backup storage locations instead.") - command.Flags().StringSliceVar(&config.disabledControllers, "disable-controllers", config.disabledControllers, fmt.Sprintf("list of controllers to disable on startup. Valid values are %s", strings.Join(disableControllerList, ","))) - command.Flags().StringSliceVar(&config.restoreResourcePriorities, "restore-resource-priorities", config.restoreResourcePriorities, "desired order of resource restores; any resource not in the list will be restored alphabetically after the prioritized resources") - command.Flags().StringVar(&config.defaultBackupLocation, "default-backup-storage-location", config.defaultBackupLocation, "name of the default backup storage location") - command.Flags().DurationVar(&config.storeValidationFrequency, "store-validation-frequency", config.storeValidationFrequency, "how often to verify if the storage is valid. Optional. Set this to `0s` to disable sync. Default 1 minute.") - command.Flags().Var(&volumeSnapshotLocations, "default-volume-snapshot-locations", "list of unique volume providers and default volume snapshot location (provider1:location-01,provider2:location-02,...)") - command.Flags().Float32Var(&config.clientQPS, "client-qps", config.clientQPS, "maximum number of requests per second by the server to the Kubernetes API once the burst limit has been reached") - command.Flags().IntVar(&config.clientBurst, "client-burst", config.clientBurst, "maximum number of requests by the server to the Kubernetes API in a short period of time") - command.Flags().StringVar(&config.profilerAddress, "profiler-address", config.profilerAddress, "the address to expose the pprof profiler") - command.Flags().DurationVar(&config.resourceTerminatingTimeout, "terminating-resource-timeout", config.resourceTerminatingTimeout, "how long to wait on persistent volumes and namespaces to terminate during a restore before timing out") - command.Flags().DurationVar(&config.defaultBackupTTL, "default-backup-ttl", config.defaultBackupTTL, "how long to wait by default before backups can be garbage collected") - command.Flags().DurationVar(&config.defaultResticMaintenanceFrequency, "default-restic-prune-frequency", config.defaultResticMaintenanceFrequency, "how often 'restic prune' is run for restic repositories by default") - command.Flags().BoolVar(&config.defaultVolumesToRestic, "default-volumes-to-restic", config.defaultVolumesToRestic, "backup all volumes with restic by default") + command.Flags().Var(logLevelFlag, "log-level", fmt.Sprintf("The level at which to log. Valid values are %s.", strings.Join(logLevelFlag.AllowedValues(), ", "))) + command.Flags().Var(config.formatFlag, "log-format", fmt.Sprintf("The format for log output. Valid values are %s.", strings.Join(config.formatFlag.AllowedValues(), ", "))) + command.Flags().StringVar(&config.pluginDir, "plugin-dir", config.pluginDir, "Directory containing Velero plugins") + command.Flags().StringVar(&config.metricsAddress, "metrics-address", config.metricsAddress, "The address to expose prometheus metrics") + command.Flags().DurationVar(&config.backupSyncPeriod, "backup-sync-period", config.backupSyncPeriod, "How often to ensure all Velero backups in object storage exist as Backup API objects in the cluster. This is the default sync period if none is explicitly specified for a backup storage location.") + command.Flags().DurationVar(&config.podVolumeOperationTimeout, "restic-timeout", config.podVolumeOperationTimeout, "How long backups/restores of pod volumes should be allowed to run before timing out.") + command.Flags().BoolVar(&config.restoreOnly, "restore-only", config.restoreOnly, "Run in a mode where only restores are allowed; backups, schedules, and garbage-collection are all disabled. DEPRECATED: this flag will be removed in v2.0. Use read-only backup storage locations instead.") + command.Flags().StringSliceVar(&config.disabledControllers, "disable-controllers", config.disabledControllers, fmt.Sprintf("List of controllers to disable on startup. Valid values are %s", strings.Join(disableControllerList, ","))) + command.Flags().StringSliceVar(&config.restoreResourcePriorities, "restore-resource-priorities", config.restoreResourcePriorities, "Desired order of resource restores; any resource not in the list will be restored alphabetically after the prioritized resources.") + command.Flags().StringVar(&config.defaultBackupLocation, "default-backup-storage-location", config.defaultBackupLocation, "Name of the default backup storage location.") + command.Flags().DurationVar(&config.storeValidationFrequency, "store-validation-frequency", config.storeValidationFrequency, "How often to verify if the storage is valid. Optional. Set this to `0s` to disable sync. Default 1 minute.") + command.Flags().Var(&volumeSnapshotLocations, "default-volume-snapshot-locations", "List of unique volume providers and default volume snapshot location (provider1:location-01,provider2:location-02,...)") + command.Flags().Float32Var(&config.clientQPS, "client-qps", config.clientQPS, "Maximum number of requests per second by the server to the Kubernetes API once the burst limit has been reached.") + command.Flags().IntVar(&config.clientBurst, "client-burst", config.clientBurst, "Maximum number of requests by the server to the Kubernetes API in a short period of time.") + command.Flags().StringVar(&config.profilerAddress, "profiler-address", config.profilerAddress, "The address to expose the pprof profiler.") + command.Flags().DurationVar(&config.resourceTerminatingTimeout, "terminating-resource-timeout", config.resourceTerminatingTimeout, "How long to wait on persistent volumes and namespaces to terminate during a restore before timing out.") + command.Flags().DurationVar(&config.defaultBackupTTL, "default-backup-ttl", config.defaultBackupTTL, "How long to wait by default before backups can be garbage collected.") + command.Flags().DurationVar(&config.defaultResticMaintenanceFrequency, "default-restic-prune-frequency", config.defaultResticMaintenanceFrequency, "How often 'restic prune' is run for restic repositories by default.") + command.Flags().BoolVar(&config.defaultVolumesToRestic, "default-volumes-to-restic", config.defaultVolumesToRestic, "Backup all volumes with restic by default.") return command } @@ -375,7 +375,7 @@ func (s *server) run() error { // namespaceExists returns nil if namespace can be successfully // gotten from the kubernetes API, or an error otherwise. func (s *server) namespaceExists(namespace string) error { - s.logger.WithField("namespace", namespace).Info("Checking existence of namespace") + s.logger.WithField("namespace", namespace).Info("Checking existence of namespace.") if _, err := s.kubeClient.CoreV1().Namespaces().Get(s.ctx, namespace, metav1.GetOptions{}); err != nil { return errors.WithStack(err)