diff --git a/internal/data/cmd/data.go b/internal/data/cmd/data.go index 2999cb3a..5fc08db8 100644 --- a/internal/data/cmd/data.go +++ b/internal/data/cmd/data.go @@ -113,6 +113,8 @@ func NewCommand() *cobra.Command { deprecatedList.Flags().StringP("namespace", "n", "d8-data-exporter", "data volume namespace") deprecatedList.Flags().Bool("publish", false, "Provide access outside of cluster") deprecatedList.Flags().String("ttl", "2m", "Time to live for auto-created DataExport") + deprecatedList.Flags().Bool("tls-skip-verify", false, "Disable TLS certificate validation for download") + deprecatedList.Flags().Bool("auto-delete", false, "Delete auto-created DataExport immediately without prompt") // TODO remove this section later // Backward-compat: `d8 data download` -> export download (deprecated) @@ -128,6 +130,8 @@ func NewCommand() *cobra.Command { deprecatedDownload.Flags().StringP("output", "o", "", "file to save data (default: same as resource)") deprecatedDownload.Flags().Bool("publish", false, "Provide access outside of cluster") deprecatedDownload.Flags().String("ttl", "2m", "Time to live for auto-created DataExport") + deprecatedDownload.Flags().Bool("tls-skip-verify", false, "Disable TLS certificate validation for download") + deprecatedDownload.Flags().Bool("auto-delete", false, "Delete auto-created DataExport immediately without prompt") // TODO remove this section later // Backward-compat: `d8 data delete` -> export delete (deprecated) diff --git a/internal/data/dataexport/cmd/download/download.go b/internal/data/dataexport/cmd/download/download.go index 45e185be..1c81fca2 100644 --- a/internal/data/dataexport/cmd/download/download.go +++ b/internal/data/dataexport/cmd/download/download.go @@ -76,6 +76,8 @@ func NewCommand(ctx context.Context, log *slog.Logger) *cobra.Command { cmd.Flags().StringP("output", "o", "", "file to save data (default: same as resource)") // TODO support /dev/stdout cmd.Flags().Bool("publish", false, "Provide access outside of cluster") cmd.Flags().String("ttl", "2m", "Time to live for auto-created DataExport") + cmd.Flags().Bool("tls-skip-verify", false, "Disable TLS certificate validation for download") + cmd.Flags().Bool("auto-delete", false, "Delete auto-created DataExport immediately without prompt") return cmd } @@ -226,6 +228,8 @@ func Run(ctx context.Context, log *slog.Logger, cmd *cobra.Command, args []strin dstPath, _ := cmd.Flags().GetString("output") publish, _ := cmd.Flags().GetBool("publish") ttl, _ := cmd.Flags().GetString("ttl") + tlsSkipVerify, _ := cmd.Flags().GetBool("tls-skip-verify") + autoDelete, _ := cmd.Flags().GetBool("auto-delete") dataName, srcPath, err := dataio.ParseArgs(args) if err != nil { @@ -234,6 +238,7 @@ func Run(ctx context.Context, log *slog.Logger, cmd *cobra.Command, args []strin flags := cmd.PersistentFlags() safeClient.SupportNoAuth = false + safeClient.Insecure = tlsSkipVerify sClient, err := safeClient.NewSafeClient(flags) if err != nil { return err @@ -283,7 +288,11 @@ func Run(ctx context.Context, log *slog.Logger, cmd *cobra.Command, args []strin } if deName != dataName { // DataExport created in download process - if dataio.AskYesNoWithTimeout("DataExport will auto-delete in 30 sec [press y+Enter to delete now, n+Enter to cancel]", time.Second*30) { + shouldDelete := autoDelete || dataio.AskYesNoWithTimeout( + "DataExport will auto-delete in 30 sec [press y+Enter to delete now, n+Enter to cancel]", + time.Second*30, + ) + if shouldDelete { if err := util.DeleteDataExport(ctx, deName, namespace, rtClient); err != nil { log.Warn("Failed to delete DataExport", slog.String("name", deName), slog.String("error", err.Error())) } diff --git a/internal/data/dataexport/cmd/list/list.go b/internal/data/dataexport/cmd/list/list.go index 23eac814..5adb9f4e 100644 --- a/internal/data/dataexport/cmd/list/list.go +++ b/internal/data/dataexport/cmd/list/list.go @@ -67,6 +67,8 @@ func NewCommand(ctx context.Context, log *slog.Logger) *cobra.Command { cmd.Flags().StringP("namespace", "n", "d8-data-exporter", "data volume namespace") cmd.Flags().Bool("publish", false, "Provide access outside of cluster") cmd.Flags().String("ttl", "2m", "Time to live for auto-created DataExport") + cmd.Flags().Bool("tls-skip-verify", false, "Disable TLS certificate validation for download") + cmd.Flags().Bool("auto-delete", false, "Delete auto-created DataExport immediately without prompt") return cmd } @@ -164,6 +166,8 @@ func Run(ctx context.Context, log *slog.Logger, cmd *cobra.Command, args []strin namespace, _ := cmd.Flags().GetString("namespace") publish, _ := cmd.Flags().GetBool("publish") ttl, _ := cmd.Flags().GetString("ttl") + tlsSkipVerify, _ := cmd.Flags().GetBool("tls-skip-verify") + autoDelete, _ := cmd.Flags().GetBool("auto-delete") dataName, srcPath, err := parseArgs(args) if err != nil { @@ -172,6 +176,7 @@ func Run(ctx context.Context, log *slog.Logger, cmd *cobra.Command, args []strin flags := cmd.PersistentFlags() safeClient.SupportNoAuth = false + safeClient.Insecure = tlsSkipVerify sClient, err := safeClient.NewSafeClient(flags) if err != nil { return err @@ -201,7 +206,11 @@ func Run(ctx context.Context, log *slog.Logger, cmd *cobra.Command, args []strin } if deName != dataName { // DataExport created in download process - if dataio.AskYesNoWithTimeout("DataExport will auto-delete in 30 sec [press y+Enter to delete now, n+Enter to cancel]", time.Second*30) { + shouldDelete := autoDelete || dataio.AskYesNoWithTimeout( + "DataExport will auto-delete in 30 sec [press y+Enter to delete now, n+Enter to cancel]", + time.Second*30, + ) + if shouldDelete { if err := util.DeleteDataExport(ctx, deName, namespace, rtClient); err != nil { log.Warn("Failed to delete DataExport", slog.String("name", deName), slog.String("error", err.Error())) }