Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package minio-client for openSUSE:Factory checked in at 2024-01-30 18:25:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/minio-client (Old) and /work/SRC/openSUSE:Factory/.minio-client.new.1815 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "minio-client" Tue Jan 30 18:25:09 2024 rev:67 rq:1142616 version:20240128T162314Z Changes: -------- --- /work/SRC/openSUSE:Factory/minio-client/minio-client.changes 2024-01-22 20:33:03.690669832 +0100 +++ /work/SRC/openSUSE:Factory/.minio-client.new.1815/minio-client.changes 2024-01-30 18:25:23.557893485 +0100 @@ -1,0 +2,12 @@ +Mon Jan 29 17:40:18 UTC 2024 - opensuse_buildserv...@ojkastl.de + +- Update to version 20240128T162314Z: + * fix: remove prometheus metrics arbitrary body limit (#4832) + * feat: service restart/update provides now per node status + (#4827) + * Bump github.com/lestrrat-go/jwx from 1.2.27 to 1.2.28 (#4830) + * feat: add skip-errors to mc mirror (#4831) + * fix: allow -q by turning of pipe progress bar (#4828) + * Adding screen-256color to pager enabled terms (#4829) + +------------------------------------------------------------------- Old: ---- mc-20240118T070339Z.obscpio New: ---- mc-20240128T162314Z.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ minio-client.spec ++++++ --- /var/tmp/diff_new_pack.eDoctX/_old 2024-01-30 18:25:25.033946735 +0100 +++ /var/tmp/diff_new_pack.eDoctX/_new 2024-01-30 18:25:25.033946735 +0100 @@ -22,7 +22,7 @@ %define binary_name minio-client Name: minio-client -Version: 20240118T070339Z +Version: 20240128T162314Z Release: 0 Summary: Client for MinIO License: AGPL-3.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.eDoctX/_old 2024-01-30 18:25:25.061947746 +0100 +++ /var/tmp/diff_new_pack.eDoctX/_new 2024-01-30 18:25:25.065947890 +0100 @@ -5,7 +5,7 @@ <param name="exclude">.git</param> <param name="changesgenerate">enable</param> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">RELEASE.2024-01-18T07-03-39Z</param> + <param name="revision">RELEASE.2024-01-28T16-23-14Z</param> <param name="match-tag">RELEASE.*</param> <param name="versionrewrite-pattern">RELEASE\.(.*)-(.*)-(.*)-(.*)-(.*)</param> <param name="versionrewrite-replacement">\1\2\3\4\5</param> @@ -19,7 +19,7 @@ <param name="compression">gz</param> </service> <service name="go_modules" mode="manual"> - <param name="archive">mc-20240118T070339Z.obscpio</param> + <param name="archive">mc-20240128T162314Z.obscpio</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.eDoctX/_old 2024-01-30 18:25:25.081948467 +0100 +++ /var/tmp/diff_new_pack.eDoctX/_new 2024-01-30 18:25:25.085948611 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/minio/mc</param> - <param name="changesrevision">bb25267eaadc0e025243b443a94ff33bde6302ad</param></service></servicedata> + <param name="changesrevision">ba9fc6a3075df6d8a413cc7e423645706aaefae1</param></service></servicedata> (No newline at EOF) ++++++ mc-20240118T070339Z.obscpio -> mc-20240128T162314Z.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-prometheus-metrics.go new/mc-20240128T162314Z/cmd/admin-prometheus-metrics.go --- old/mc-20240118T070339Z/cmd/admin-prometheus-metrics.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/admin-prometheus-metrics.go 2024-01-28 17:23:14.000000000 +0100 @@ -18,15 +18,16 @@ package cmd import ( + "errors" "io" "net/http" + "os" "time" "github.com/minio/cli" json "github.com/minio/colorjson" + "github.com/minio/madmin-go/v3" "github.com/minio/mc/pkg/probe" - dto "github.com/prometheus/client_model/go" - "github.com/prometheus/prom2json" ) var adminPrometheusMetricsCmd = cli.Command{ @@ -62,10 +63,7 @@ `, } -const ( - metricsRespBodyLimit = 10 << 20 // 10 MiB - metricsEndPointRoot = "/minio/v2/metrics/" -) +const metricsEndPointRoot = "/minio/v2/metrics/" // checkSupportMetricsSyntax - validate arguments passed by a user func checkSupportMetricsSyntax(ctx *cli.Context) { @@ -105,7 +103,11 @@ if e != nil { return e } - req.Header.Add("Authorization", "Bearer "+token) + + if token != "" { + req.Header.Add("Authorization", "Bearer "+token) + } + client := httpClient(60 * time.Second) resp, e := client.Do(req) if e != nil { @@ -115,32 +117,29 @@ defer resp.Body.Close() if resp.StatusCode == http.StatusOK { - printMsg(prometheusMetricsReader{Reader: io.LimitReader(resp.Body, metricsRespBodyLimit)}) + printMsg(prometheusMetricsReader{Reader: resp.Body}) } - return nil + + return errors.New(resp.Status) } // JSON returns jsonified message func (pm prometheusMetricsReader) JSON() string { - mfChan := make(chan *dto.MetricFamily) - go func() { - fatalIf(probe.NewError(prom2json.ParseReader(pm.Reader, mfChan)), "Unable to parse Prometheus metrics.") - }() - result := []*prom2json.Family{} - for mf := range mfChan { - result = append(result, prom2json.NewFamily(mf)) - } - jsonMessageBytes, e := json.MarshalIndent(result, "", " ") + results, e := madmin.ParsePrometheusResults(pm.Reader) + fatalIf(probe.NewError(e), "Unable to parse Prometheus metrics.") + + jsonMessageBytes, e := json.MarshalIndent(results, "", " ") fatalIf(probe.NewError(e), "Unable to marshal into JSON.") return string(jsonMessageBytes) } // String - returns the string representation of the prometheus metrics func (pm prometheusMetricsReader) String() string { - respBytes, e := io.ReadAll(pm.Reader) + _, e := io.Copy(os.Stdout, pm.Reader) + fatalIf(probe.NewError(e), "Unable to read Prometheus metrics.") - return string(respBytes) + return "" } // prometheusMetricsReader mirrors the MetricFamily proto message. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-service-freeze.go new/mc-20240128T162314Z/cmd/admin-service-freeze.go --- old/mc-20240118T070339Z/cmd/admin-service-freeze.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/admin-service-freeze.go 2024-01-28 17:23:14.000000000 +0100 @@ -90,7 +90,7 @@ fatalIf(err, "Unable to initialize admin connection.") // Freeze the specified MinIO server - fatalIf(probe.NewError(client.ServiceFreeze(globalContext)), "Unable to freeze the server.") + fatalIf(probe.NewError(client.ServiceFreezeV2(globalContext)), "Unable to freeze the server.") // Success.. printMsg(serviceFreezeCommand{Status: "success", ServerURL: aliasedURL}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-service-restart.go new/mc-20240128T162314Z/cmd/admin-service-restart.go --- old/mc-20240118T070339Z/cmd/admin-service-restart.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/admin-service-restart.go 2024-01-28 17:23:14.000000000 +0100 @@ -20,9 +20,12 @@ import ( "context" "fmt" + "strings" "time" "github.com/fatih/color" + "github.com/jedib0t/go-pretty/v6/table" + "github.com/jedib0t/go-pretty/v6/text" "github.com/minio/cli" json "github.com/minio/colorjson" "github.com/minio/madmin-go/v3" @@ -30,13 +33,20 @@ "github.com/minio/pkg/v2/console" ) +var serviceRestartFlag = []cli.Flag{ + cli.BoolFlag{ + Name: "dry-run", + Usage: "do not attempt a restart, however verify the peer status", + }, +} + var adminServiceRestartCmd = cli.Command{ Name: "restart", Usage: "restart a MinIO cluster", Action: mainAdminServiceRestart, OnUsageError: onUsageError, Before: setGlobalsFromContext, - Flags: globalFlags, + Flags: append(serviceRestartFlag, globalFlags...), CustomHelpTemplate: `NAME: {{.HelpName}} - {{.Usage}} @@ -54,13 +64,40 @@ // serviceRestartCommand is container for service restart command success and failure messages. type serviceRestartCommand struct { - Status string `json:"status"` - ServerURL string `json:"serverURL"` + Status string `json:"status"` + ServerURL string `json:"serverURL"` + Result madmin.ServiceActionResult `json:"result"` } // String colorized service restart command message. func (s serviceRestartCommand) String() string { - return console.Colorize("ServiceRestart", "Restart command successfully sent to `"+s.ServerURL+"`. Type Ctrl-C to quit or wait to follow the status of the restart process.") + var s1 strings.Builder + s1.WriteString("Restart command successfully sent to `" + s.ServerURL + "`. Type Ctrl-C to quit or wait to follow the status of the restart process.") + + if len(s.Result.Results) > 0 { + s1.WriteString("\n") + var rows []table.Row + for _, peerRes := range s.Result.Results { + errStr := tickCell + if peerRes.Err != "" { + errStr = peerRes.Err + } else if len(peerRes.WaitingDrives) > 0 { + errStr = fmt.Sprintf("%d drives are waiting for I/O and are offline, manual restart of OS is recommended", len(peerRes.WaitingDrives)) + } + rows = append(rows, table.Row{peerRes.Host, errStr}) + } + + t := table.NewWriter() + t.SetOutputMirror(&s1) + t.SetColumnConfigs([]table.ColumnConfig{{Align: text.AlignCenter}}) + + t.AppendHeader(table.Row{"Host", "Status"}) + t.AppendRows(rows) + t.SetStyle(table.StyleLight) + t.Render() + } + + return console.Colorize("ServiceRestart", s1.String()) } // JSON jsonified service restart command message. @@ -123,10 +160,19 @@ fatalIf(err, "Unable to initialize admin connection.") // Restart the specified MinIO server - fatalIf(probe.NewError(client.ServiceRestart(ctxt)), "Unable to restart the server.") + result, e := client.ServiceAction(ctxt, madmin.ServiceActionOpts{ + Action: madmin.ServiceActionRestart, + DryRun: ctx.Bool("dry-run"), + }) + if e != nil { + // Attempt an older API server might be old + //lint:ignore SA1019 Ignore the deprecation warnings + e = client.ServiceRestart(ctxt) + } + fatalIf(probe.NewError(e), "Unable to restart the server.") // Success.. - printMsg(serviceRestartCommand{Status: "success", ServerURL: aliasedURL}) + printMsg(serviceRestartCommand{Status: "success", ServerURL: aliasedURL, Result: result}) // Start pinging the service until it is ready @@ -146,36 +192,35 @@ printProgress() mark = "." - timer := time.NewTimer(time.Second) - defer timer.Stop() - t := time.Now() for { + healthCtx, healthCancel := context.WithTimeout(ctxt, 2*time.Second) + + // Fetch the health status of the specified MinIO server + healthResult, healthErr := anonClient.Healthy(healthCtx, madmin.HealthOpts{}) + healthCancel() + + switch { + case healthErr == nil && healthResult.Healthy: + printMsg(serviceRestartMessage{ + Status: "success", + ServerURL: aliasedURL, + TimeTaken: time.Since(t), + }) + return nil + case healthErr == nil && !healthResult.Healthy: + coloring = color.New(color.FgYellow) + mark = "!" + fallthrough + default: + printProgress() + } + select { case <-ctxt.Done(): return ctxt.Err() - case <-timer.C: - healthCtx, healthCancel := context.WithTimeout(ctxt, 3*time.Second) - // Fetch the health status of the specified MinIO server - healthResult, healthErr := anonClient.Healthy(healthCtx, madmin.HealthOpts{}) - healthCancel() - switch { - case healthErr == nil && healthResult.Healthy: - printMsg(serviceRestartMessage{ - Status: "success", - ServerURL: aliasedURL, - TimeTaken: time.Since(t), - }) - return nil - case healthErr == nil && !healthResult.Healthy: - coloring = color.New(color.FgYellow) - mark = "!" - fallthrough - default: - printProgress() - } - - timer.Reset(time.Second) + default: + time.Sleep(500 * time.Millisecond) } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-service-stop.go new/mc-20240128T162314Z/cmd/admin-service-stop.go --- old/mc-20240118T070339Z/cmd/admin-service-stop.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/admin-service-stop.go 2024-01-28 17:23:14.000000000 +0100 @@ -32,6 +32,7 @@ OnUsageError: onUsageError, Before: setGlobalsFromContext, Flags: globalFlags, + Hidden: true, // this command is hidden on purpose, please do not enable it. CustomHelpTemplate: `NAME: {{.HelpName}} - {{.Usage}} @@ -88,7 +89,7 @@ fatalIf(err, "Unable to initialize admin connection.") // Stop the specified MinIO server - fatalIf(probe.NewError(client.ServiceStop(globalContext)), "Unable to stop the server.") + fatalIf(probe.NewError(client.ServiceStopV2(globalContext)), "Unable to stop the server.") // Success.. printMsg(serviceStopMessage{Status: "success", ServerURL: aliasedURL}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-service-unfreeze.go new/mc-20240128T162314Z/cmd/admin-service-unfreeze.go --- old/mc-20240118T070339Z/cmd/admin-service-unfreeze.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/admin-service-unfreeze.go 2024-01-28 17:23:14.000000000 +0100 @@ -89,6 +89,7 @@ fatalIf(err, "Unable to initialize admin connection.") // Unfreeze the specified MinIO server + //lint:ignore SA1019 Ignore the deprecation warnings fatalIf(probe.NewError(client.ServiceUnfreeze(globalContext)), "Unable to unfreeze the server.") // Success.. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/admin-update.go new/mc-20240128T162314Z/cmd/admin-update.go --- old/mc-20240118T070339Z/cmd/admin-update.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/admin-update.go 2024-01-28 17:23:14.000000000 +0100 @@ -24,8 +24,11 @@ "strings" "github.com/fatih/color" + "github.com/jedib0t/go-pretty/v6/table" + "github.com/jedib0t/go-pretty/v6/text" "github.com/minio/cli" json "github.com/minio/colorjson" + "github.com/minio/madmin-go/v3" "github.com/minio/mc/pkg/probe" "github.com/minio/pkg/v2/console" ) @@ -64,22 +67,37 @@ // serverUpdateMessage is container for ServerUpdate success and failure messages. type serverUpdateMessage struct { - Status string `json:"status"` - ServerURL string `json:"serverURL"` - CurrentVersion string `json:"currentVersion"` - UpdatedVersion string `json:"updatedVersion"` + Status string `json:"status"` + ServerURL string `json:"serverURL"` + ServerUpdateStatus madmin.ServerUpdateStatusV2 `json:"serverUpdateStatus"` } // String colorized serverUpdate message. func (s serverUpdateMessage) String() string { - if s.CurrentVersion != s.UpdatedVersion { - return console.Colorize("ServerUpdate", - fmt.Sprintf("Server `%s` updated successfully from %s to %s", - s.ServerURL, s.CurrentVersion, s.UpdatedVersion)) + var rows []table.Row + for _, peerRes := range s.ServerUpdateStatus.Results { + errStr := fmt.Sprintf("upgraded server from %s to %s: %s", peerRes.CurrentVersion, peerRes.UpdatedVersion, tickCell) + if peerRes.Err != "" { + errStr = peerRes.Err + } else if len(peerRes.WaitingDrives) > 0 { + errStr = fmt.Sprintf("%d drives are hung, process was upgraded. However OS reboot is recommended.", len(peerRes.WaitingDrives)) + } + rows = append(rows, table.Row{peerRes.Host, errStr}) } - return console.Colorize("ServerUpdate", - fmt.Sprintf("Server `%s` already running the most recent version %s of MinIO", - s.ServerURL, s.CurrentVersion)) + + t := table.NewWriter() + var s1 strings.Builder + s1.WriteString("Server update request sent successfully `" + s.ServerURL + "`\n") + + t.SetOutputMirror(&s1) + t.SetColumnConfigs([]table.ColumnConfig{{Align: text.AlignCenter}}) + + t.AppendHeader(table.Row{"Host", "Status"}) + t.AppendRows(rows) + t.SetStyle(table.StyleLight) + t.Render() + + return console.Colorize("ServiceRestart", s1.String()) } // JSON jsonified server update message. @@ -128,15 +146,17 @@ // Update the specified MinIO server, optionally also // with the provided update URL. - us, e := client.ServerUpdate(globalContext, updateURL) + us, e := client.ServerUpdateV2(globalContext, madmin.ServerUpdateOpts{ + DryRun: ctx.Bool("dry-run"), + UpdateURL: updateURL, + }) fatalIf(probe.NewError(e), "Unable to update the server.") // Success.. printMsg(serverUpdateMessage{ - Status: "success", - ServerURL: aliasedURL, - CurrentVersion: us.CurrentVersion, - UpdatedVersion: us.UpdatedVersion, + Status: "success", + ServerURL: aliasedURL, + ServerUpdateStatus: us, }) return nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/globals.go new/mc-20240128T162314Z/cmd/globals.go --- old/mc-20240118T070339Z/cmd/globals.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/globals.go 2024-01-28 17:23:14.000000000 +0100 @@ -90,10 +90,11 @@ globalPagerDisabled = false globalHelpPager *termPager globalPagerEnabledTerms = map[string]bool{ - "xterm": true, - "xterm-256color": true, - "tmux": true, - "tmux-256color": true, + "screen-256color": true, + "xterm": true, + "xterm-256color": true, + "tmux": true, + "tmux-256color": true, } // CA root certificates, a nil value means system certs pool will be used diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/humanized-duration.go new/mc-20240128T162314Z/cmd/humanized-duration.go --- old/mc-20240118T070339Z/cmd/humanized-duration.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/humanized-duration.go 2024-01-28 17:23:14.000000000 +0100 @@ -25,16 +25,19 @@ // humanizedDuration container to capture humanized time. type humanizedDuration struct { - Days int64 `json:"days,omitempty"` - Hours int64 `json:"hours,omitempty"` - Minutes int64 `json:"minutes,omitempty"` - Seconds int64 `json:"seconds,omitempty"` + Days int64 `json:"days,omitempty"` + Hours int64 `json:"hours,omitempty"` + Minutes int64 `json:"minutes,omitempty"` + Seconds int64 `json:"seconds,omitempty"` + MilliSeconds int64 `json:"milliSeconds,omitempty"` } // StringShort() humanizes humanizedDuration to human readable short format. // This does not print at seconds. func (r humanizedDuration) StringShort() string { switch { + case r.Days == 0 && r.Hours == 0 && r.Minutes == 0 && r.Seconds == 0: + return fmt.Sprintf("%d milliseconds", r.MilliSeconds) case r.Days == 0 && r.Hours == 0 && r.Minutes == 0: return fmt.Sprintf("%d seconds", r.Seconds) case r.Days == 0 && r.Hours == 0: @@ -50,6 +53,10 @@ // String() humanizes humanizedDuration to human readable, func (r humanizedDuration) String() string { + if r.Days == 0 && r.Hours == 0 && r.Minutes == 0 && r.Seconds == 0 { + return fmt.Sprintf("%d milliseconds", r.MilliSeconds) + } + if r.Days == 0 && r.Hours == 0 && r.Minutes == 0 { return fmt.Sprintf("%d seconds", r.Seconds) } @@ -65,6 +72,10 @@ // timeDurationToHumanizedDuration convert golang time.Duration to a custom more readable humanizedDuration. func timeDurationToHumanizedDuration(duration time.Duration) humanizedDuration { r := humanizedDuration{} + if duration.Milliseconds() < 1000 { + r.MilliSeconds = int64(duration.Milliseconds()) + return r + } if duration.Seconds() < 60.0 { r.Seconds = int64(duration.Seconds()) return r diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/mirror-main.go new/mc-20240128T162314Z/cmd/mirror-main.go --- old/mc-20240118T070339Z/cmd/mirror-main.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/mirror-main.go 2024-01-28 17:23:14.000000000 +0100 @@ -133,6 +133,10 @@ Name: "summary", Usage: "print a summary of the mirror session", }, + cli.BoolFlag{ + Name: "skip-errors", + Usage: "skip any errors when mirroring", + }, } ) @@ -545,8 +549,12 @@ ignoreErr = true } if !ignoreErr { - errorIf(sURLs.Error.Trace(sURLs.SourceContent.URL.String()), - fmt.Sprintf("Failed to copy `%s`.", sURLs.SourceContent.URL.String())) + if !mj.opts.skipErrors { + errorIf(sURLs.Error.Trace(sURLs.SourceContent.URL.String()), + fmt.Sprintf("Failed to copy `%s`.", sURLs.SourceContent.URL.String())) + } else { + console.Infof("[Warn] Failed to copy `%s`. %s", sURLs.SourceContent.URL.String(), sURLs.Error.Trace(sURLs.SourceContent.URL.String())) + } } } case sURLs.TargetContent != nil: @@ -569,7 +577,7 @@ mirrorFailedOps.Inc() errDuringMirror = true // Quit mirroring if --watch and --active-active are not passed - if !mj.opts.activeActive && !mj.opts.isWatch { + if !mj.opts.skipErrors && !mj.opts.activeActive && !mj.opts.isWatch { cancel() cancelInProgress = true } @@ -955,6 +963,7 @@ isRetriable: cli.Bool("retry"), md5: cli.Bool("md5"), disableMultipart: cli.Bool("disable-multipart"), + skipErrors: cli.Bool("skip-errors"), excludeOptions: cli.StringSlice("exclude"), excludeStorageClasses: cli.StringSlice("exclude-storageclass"), olderThan: cli.String("older-than"), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/mirror-url.go new/mc-20240128T162314Z/cmd/mirror-url.go --- old/mc-20240118T070339Z/cmd/mirror-url.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/mirror-url.go 2024-01-28 17:23:14.000000000 +0100 @@ -229,6 +229,7 @@ isWatch, isRemove, isMetadata bool isRetriable bool isSummary bool + skipErrors bool excludeOptions, excludeStorageClasses []string encKeyDB map[string][]prefixSSEPair md5, disableMultipart bool diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/cmd/pipe-main.go new/mc-20240128T162314Z/cmd/pipe-main.go --- old/mc-20240118T070339Z/cmd/pipe-main.go 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/cmd/pipe-main.go 2024-01-28 17:23:14.000000000 +0100 @@ -109,7 +109,7 @@ `, } -func pipe(ctx *cli.Context, targetURL string, encKeyDB map[string][]prefixSSEPair, meta map[string]string) *probe.Error { +func pipe(ctx *cli.Context, targetURL string, encKeyDB map[string][]prefixSSEPair, meta map[string]string, quiet bool) *probe.Error { // If possible increase the pipe buffer size if e := increasePipeBufferSize(os.Stdin, ctx.Int("pipe-max-size")); e != nil { fatalIf(probe.NewError(e), "Unable to increase custom pipe-max-size") @@ -151,9 +151,15 @@ concurrentStream: ctx.IsSet("concurrent"), } - pg := newProgressBar(0) + var reader io.Reader + if !quiet { + pg := newProgressBar(0) + reader = io.TeeReader(os.Stdin, pg) + } else { + reader = os.Stdin + } - _, err := putTargetStreamWithURL(targetURL, io.TeeReader(os.Stdin, pg), -1, opts) + _, err := putTargetStreamWithURL(targetURL, reader, -1, opts) // TODO: See if this check is necessary. switch e := err.ToGoError().(type) { case *os.PathError: @@ -183,6 +189,9 @@ // validate pipe input arguments. checkPipeSyntax(ctx) + // globalQuiet is true for no window size to get. We just need --quiet here. + quiet := ctx.IsSet("quiet") + meta := map[string]string{} if attr := ctx.String("attr"); attr != "" { meta, err = getMetaDataEntry(attr) @@ -192,12 +201,12 @@ meta["X-Amz-Tagging"] = tags } if len(ctx.Args()) == 0 { - err = pipe(ctx, "", nil, meta) + err = pipe(ctx, "", nil, meta, quiet) fatalIf(err.Trace("stdout"), "Unable to write to one or more targets.") } else { // extract URLs. URLs := ctx.Args() - err = pipe(ctx, URLs[0], encKeyDB, meta) + err = pipe(ctx, URLs[0], encKeyDB, meta, quiet) fatalIf(err.Trace(URLs[0]), "Unable to write to one or more targets.") } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/go.mod new/mc-20240128T162314Z/go.mod --- old/mc-20240118T070339Z/go.mod 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/go.mod 2024-01-28 17:23:14.000000000 +0100 @@ -46,7 +46,7 @@ github.com/gdamore/tcell/v2 v2.7.0 github.com/golang-jwt/jwt/v4 v4.5.0 github.com/juju/ratelimit v1.0.2 - github.com/minio/madmin-go/v3 v3.0.37 + github.com/minio/madmin-go/v3 v3.0.41 github.com/minio/pkg/v2 v2.0.7 github.com/muesli/reflow v0.3.0 github.com/navidys/tvxwidgets v0.4.1 @@ -92,7 +92,7 @@ github.com/lestrrat-go/blackmagic v1.0.2 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx v1.2.27 // indirect + github.com/lestrrat-go/jwx v1.2.28 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/lufia/plan9stats v0.0.0-20231016141302-07b5767bb0ed // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20240118T070339Z/go.sum new/mc-20240128T162314Z/go.sum --- old/mc-20240118T070339Z/go.sum 2024-01-18 08:03:39.000000000 +0100 +++ new/mc-20240128T162314Z/go.sum 2024-01-28 17:23:14.000000000 +0100 @@ -104,8 +104,8 @@ github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx v1.2.27 h1:cvnTnda/YzdyFuWdEAMkI6BsLtItSrASEVCI3C/IUEQ= -github.com/lestrrat-go/jwx v1.2.27/go.mod h1:Stob9LjSqR3lOmNdxF0/TvZo60V3hUGv8Fr7Bwzla3k= +github.com/lestrrat-go/jwx v1.2.28 h1:uadI6o0WpOVrBSf498tRXZIwPpEtLnR9CvqPFXeI5sA= +github.com/lestrrat-go/jwx v1.2.28/go.mod h1:nF+91HEMh/MYFVwKPl5HHsBGMPscqbQb+8IDQdIazP8= github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= @@ -142,8 +142,8 @@ github.com/minio/colorjson v1.0.6/go.mod h1:LUXwS5ZGNb6Eh9f+t+3uJiowD3XsIWtsvTriUBeqgYs= github.com/minio/filepath v1.0.0 h1:fvkJu1+6X+ECRA6G3+JJETj4QeAYO9sV43I79H8ubDY= github.com/minio/filepath v1.0.0/go.mod h1:/nRZA2ldl5z6jT9/KQuvZcQlxZIMQoFFQPvEXx9T/Bw= -github.com/minio/madmin-go/v3 v3.0.37 h1:u8gl6xg6Vt+LLwes/8rJhAq2wtpIRWRULptNVQtH9JE= -github.com/minio/madmin-go/v3 v3.0.37/go.mod h1:4QN2NftLSV7MdlT50dkrenOMmNVHluxTvlqJou3hte8= +github.com/minio/madmin-go/v3 v3.0.41 h1:9pU7xW51cn8Ixy8ftaRfp4SbHtnhEPlwU6mMA9KwwB8= +github.com/minio/madmin-go/v3 v3.0.41/go.mod h1:4QN2NftLSV7MdlT50dkrenOMmNVHluxTvlqJou3hte8= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= github.com/minio/minio-go/v7 v7.0.66 h1:bnTOXOHjOqv/gcMuiVbN9o2ngRItvqE774dG9nq0Dzw= @@ -278,7 +278,6 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211209193657-4570a0811e8b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= ++++++ mc.obsinfo ++++++ --- /var/tmp/diff_new_pack.eDoctX/_old 2024-01-30 18:25:25.421960733 +0100 +++ /var/tmp/diff_new_pack.eDoctX/_new 2024-01-30 18:25:25.421960733 +0100 @@ -1,5 +1,5 @@ name: mc -version: 20240118T070339Z -mtime: 1705561419 -commit: bb25267eaadc0e025243b443a94ff33bde6302ad +version: 20240128T162314Z +mtime: 1706458994 +commit: ba9fc6a3075df6d8a413cc7e423645706aaefae1 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/minio-client/vendor.tar.gz /work/SRC/openSUSE:Factory/.minio-client.new.1815/vendor.tar.gz differ: char 5, line 1