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 2023-07-25 11:50:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/minio-client (Old) and /work/SRC/openSUSE:Factory/.minio-client.new.1467 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "minio-client" Tue Jul 25 11:50:47 2023 rev:41 rq:1100229 version:20230721T204427Z Changes: -------- --- /work/SRC/openSUSE:Factory/minio-client/minio-client.changes 2023-07-19 19:10:38.652569720 +0200 +++ /work/SRC/openSUSE:Factory/.minio-client.new.1467/minio-client.changes 2023-07-25 11:52:25.665917794 +0200 @@ -1,0 +2,13 @@ +Mon Jul 24 04:59:11 UTC 2023 - ka...@b1-systems.de + +- Update to version 20230721T204427Z: + * Enabled option to show node and bucket metrics (#4632) + * admin-info: Include delete markers count (#4642) + * fix replicate update to check for older role ARN (#4640) + * properly report bandwidth if not configured (#4641) + * fix: remove count flag and show the byteRate for support top + net (#4639) + * fix: Enable byHost filtering by supplying server host list + (#4637) + +------------------------------------------------------------------- Old: ---- mc-20230718T210538Z.obscpio New: ---- mc-20230721T204427Z.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ minio-client.spec ++++++ --- /var/tmp/diff_new_pack.mrRQ6e/_old 2023-07-25 11:52:27.293927326 +0200 +++ /var/tmp/diff_new_pack.mrRQ6e/_new 2023-07-25 11:52:27.297927349 +0200 @@ -22,7 +22,7 @@ %define binary_name minio-client Name: minio-client -Version: 20230718T210538Z +Version: 20230721T204427Z Release: 0 Summary: Client for MinIO License: AGPL-3.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.mrRQ6e/_old 2023-07-25 11:52:27.345927630 +0200 +++ /var/tmp/diff_new_pack.mrRQ6e/_new 2023-07-25 11:52:27.349927654 +0200 @@ -5,7 +5,7 @@ <param name="exclude">.git</param> <param name="changesgenerate">enable</param> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">RELEASE.2023-07-18T21-05-38Z</param> + <param name="revision">RELEASE.2023-07-21T20-44-27Z</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="disabled"> - <param name="archive">mc-20230718T210538Z.obscpio</param> + <param name="archive">mc-20230721T204427Z.obscpio</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.mrRQ6e/_old 2023-07-25 11:52:27.373927794 +0200 +++ /var/tmp/diff_new_pack.mrRQ6e/_new 2023-07-25 11:52:27.377927818 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/minio/mc</param> - <param name="changesrevision">216aae32b9685dcdb4fdb83b6d99b00545ac6ab0</param></service></servicedata> + <param name="changesrevision">1c17ff4c995d772c97eed8c5a269f2074a9425fe</param></service></servicedata> (No newline at EOF) ++++++ mc-20230718T210538Z.obscpio -> mc-20230721T204427Z.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230718T210538Z/cmd/admin-info.go new/mc-20230721T204427Z/cmd/admin-info.go --- old/mc-20230718T210538Z/cmd/admin-info.go 2023-07-18 23:05:38.000000000 +0200 +++ new/mc-20230721T204427Z/cmd/admin-info.go 2023-07-21 22:44:27.000000000 +0200 @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2022 MinIO, Inc. +// Copyright (c) 2015-2023 MinIO, Inc. // // This file is part of MinIO Object Storage stack // @@ -285,6 +285,9 @@ if u.Info.Versions.Count > 0 { msg += ", " + english.Plural(int(u.Info.Versions.Count), "Version", "") } + if u.Info.DeleteMarkers.Count > 0 { + msg += ", " + english.Plural(int(u.Info.DeleteMarkers.Count), "Delete Marker", "") + } msg += "\n" } if backendType == madmin.Erasure { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230718T210538Z/cmd/admin-prometheus-metrics.go new/mc-20230721T204427Z/cmd/admin-prometheus-metrics.go --- old/mc-20230718T210538Z/cmd/admin-prometheus-metrics.go 2023-07-18 23:05:38.000000000 +0200 +++ new/mc-20230721T204427Z/cmd/admin-prometheus-metrics.go 2023-07-21 22:44:27.000000000 +0200 @@ -39,24 +39,34 @@ CustomHelpTemplate: `NAME: {{.HelpName}} - {{.Usage}} USAGE: - {{.HelpName}} TARGET + {{.HelpName}} TARGET [METRIC-TYPE] + +METRIC-TYPE: + valid values are ['cluster', 'node', 'bucket']. Defaults to 'cluster' if not specified. + FLAGS: {{range .VisibleFlags}}{{.}} {{end}} EXAMPLES: 1. List of metrics reported cluster wide. {{.Prompt}} {{.HelpName}} play + + 2. List of metrics reported at node level. + {{.Prompt}} {{.HelpName}} play node + + 3. List of metrics reported at bucket level. + {{.Prompt}} {{.HelpName}} play bucket `, } const ( metricsRespBodyLimit = 10 << 20 // 10 MiB - metricsEndPoint = "/minio/v2/metrics/cluster" + metricsEndPointRoot = "/minio/v2/metrics/" ) // checkSupportMetricsSyntax - validate arguments passed by a user func checkSupportMetricsSyntax(ctx *cli.Context) { - if len(ctx.Args()) == 0 || len(ctx.Args()) > 1 { + if len(ctx.Args()) == 0 || len(ctx.Args()) > 2 { showCommandHelpAndExit(ctx, 1) // last argument is exit code } } @@ -79,8 +89,16 @@ if e != nil { return e } + metricsSubSystem := args.Get(1) + switch metricsSubSystem { + case "node", "bucket", "cluster": + case "": + metricsSubSystem = "cluster" + default: + fatalIf(errInvalidArgument().Trace(), "invalid metric type '%v'", metricsSubSystem) + } - req, e := http.NewRequest(http.MethodGet, hostConfig.URL+metricsEndPoint, nil) + req, e := http.NewRequest(http.MethodGet, hostConfig.URL+metricsEndPointRoot+metricsSubSystem, nil) if e != nil { return e } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230718T210538Z/cmd/replicate-status.go new/mc-20230721T204427Z/cmd/replicate-status.go --- old/mc-20230718T210538Z/cmd/replicate-status.go 2023-07-18 23:05:38.000000000 +0200 +++ new/mc-20230721T204427Z/cmd/replicate-status.go 2023-07-21 22:44:27.000000000 +0200 @@ -225,13 +225,15 @@ rows += r rows += "\n" bwStat, ok := s.ReplicationStatus.Stats[arn] - if ok && bwStat.BandWidthLimitInBytesPerSecond > 0 { - limit := humanize.Bytes(uint64(bwStat.BandWidthLimitInBytesPerSecond)) - current := humanize.Bytes(uint64(bwStat.CurrentBandwidthInBytesPerSecond)) - if bwStat.BandWidthLimitInBytesPerSecond == 0 { - limit = "N/A" // N/A means cluster bandwidth is not configured + if ok { + limit := "N/A" // N/A means cluster bandwidth is not configured + current := "N/A" // N/A means there is + if bwStat.CurrentBandwidthInBytesPerSecond > 0 { + current = humanize.Bytes(uint64(bwStat.CurrentBandwidthInBytesPerSecond)) + } + if bwStat.BandWidthLimitInBytesPerSecond > 0 { + limit = humanize.Bytes(uint64(bwStat.BandWidthLimitInBytesPerSecond)) } - r = console.Colorize("THeaderBold", newPrettyTable("", Field{"B/w limit Hdr", 80}, ).buildRow(" Configured Max Bandwidth (Bps): "+console.Colorize("Values", limit))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230718T210538Z/cmd/replicate-update.go new/mc-20230721T204427Z/cmd/replicate-update.go --- old/mc-20230718T210538Z/cmd/replicate-update.go 2023-07-18 23:05:38.000000000 +0200 +++ new/mc-20230721T204427Z/cmd/replicate-update.go 2023-07-21 22:44:27.000000000 +0200 @@ -309,6 +309,9 @@ for _, rule := range rcfg.Rules { if rule.ID == cliCtx.String("id") { arn = rule.Destination.Bucket + if rcfg.Role != "" { + arn = rcfg.Role + } break } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230718T210538Z/cmd/support-top-net.go new/mc-20230721T204427Z/cmd/support-top-net.go --- old/mc-20230718T210538Z/cmd/support-top-net.go 2023-07-18 23:05:38.000000000 +0200 +++ new/mc-20230721T204427Z/cmd/support-top-net.go 2023-07-21 22:44:27.000000000 +0200 @@ -30,11 +30,6 @@ var supportTopNetFlags = []cli.Flag{ cli.IntFlag{ - Name: "count, c", - Usage: "show top count interfaces", - Value: 10, - }, - cli.IntFlag{ Name: "interval", Usage: "interval between requests in seconds", Value: 1, @@ -89,16 +84,18 @@ ctxt, cancel := context.WithCancel(globalContext) defer cancel() - - _, e := client.ServerInfo(ctxt) + info, e := client.ServerInfo(ctxt) fatalIf(probe.NewError(e).Trace(aliasedURL), "Unable to initialize admin client.") - + hosts := make([]string, 0, len(info.Servers)) + for _, s := range info.Servers { + hosts = append(hosts, s.Endpoint) + } // MetricsOptions are options provided to Metrics call. opts := madmin.MetricsOptions{ Type: madmin.MetricNet, Interval: time.Duration(ctx.Int("interval")) * time.Second, ByHost: true, - N: ctx.Int("count"), + Hosts: hosts, } p := tea.NewProgram(initTopNetUI()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230718T210538Z/cmd/top-net-spinner.go new/mc-20230721T204427Z/cmd/top-net-spinner.go --- old/mc-20230718T210538Z/cmd/top-net-spinner.go 2023-07-18 23:05:38.000000000 +0200 +++ new/mc-20230721T204427Z/cmd/top-net-spinner.go 2023-07-21 22:44:27.000000000 +0200 @@ -19,8 +19,10 @@ import ( "fmt" + "math" "sort" "strings" + "time" "github.com/charmbracelet/bubbles/spinner" tea "github.com/charmbracelet/bubbletea" @@ -28,6 +30,7 @@ "github.com/dustin/go-humanize" "github.com/minio/madmin-go/v3" "github.com/olekukonko/tablewriter" + "github.com/prometheus/procfs" ) type topNetUI struct { @@ -36,6 +39,7 @@ sortAsc bool + prevTopMap map[string]topNetResult currTopMap map[string]topNetResult } @@ -64,6 +68,7 @@ } return m, nil case topNetResult: + m.prevTopMap[msg.endPoint] = m.currTopMap[msg.endPoint] m.currTopMap[msg.endPoint] = msg if msg.final { m.quitting = true @@ -80,6 +85,13 @@ } } +func (m *topNetUI) calculationRate(prev, curr uint64, dur time.Duration) uint64 { + if curr < prev { + return uint64(float64(math.MaxUint64-prev+curr) / dur.Seconds()) + } + return uint64(float64(curr-prev) / dur.Seconds()) +} + func (m *topNetUI) View() string { var s strings.Builder // Set table header @@ -99,8 +111,22 @@ data := make([]topNetResult, 0, len(m.currTopMap)) - for _, metric := range m.currTopMap { - data = append(data, metric) + for endPoint, curr := range m.currTopMap { + if prev, ok := m.prevTopMap[endPoint]; ok { + data = append(data, topNetResult{ + final: curr.final, + endPoint: curr.endPoint, + error: curr.error, + stats: madmin.NetMetrics{ + CollectedAt: curr.stats.CollectedAt, + InterfaceName: curr.stats.InterfaceName, + NetStats: procfs.NetDevLine{ + RxBytes: m.calculationRate(prev.stats.NetStats.RxBytes, curr.stats.NetStats.RxBytes, curr.stats.CollectedAt.Sub(prev.stats.CollectedAt)), + TxBytes: m.calculationRate(prev.stats.NetStats.TxBytes, curr.stats.NetStats.TxBytes, curr.stats.CollectedAt.Sub(prev.stats.CollectedAt)), + }, + }, + }) + } } sort.Slice(data, func(i, j int) bool { @@ -143,5 +169,6 @@ return &topNetUI{ spinner: s, currTopMap: make(map[string]topNetResult), + prevTopMap: make(map[string]topNetResult), } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230718T210538Z/go.mod new/mc-20230721T204427Z/go.mod --- old/mc-20230718T210538Z/go.mod 2023-07-18 23:05:38.000000000 +0200 +++ new/mc-20230721T204427Z/go.mod 2023-07-21 22:44:27.000000000 +0200 @@ -47,7 +47,7 @@ github.com/gdamore/tcell/v2 v2.6.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.7 + github.com/minio/madmin-go/v3 v3.0.8 github.com/muesli/reflow v0.3.0 github.com/navidys/tvxwidgets v0.3.0 github.com/olekukonko/tablewriter v0.0.5 @@ -103,7 +103,7 @@ github.com/pkg/errors v0.9.1 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect + github.com/prometheus/procfs v0.9.0 github.com/rivo/uniseg v0.4.4 // indirect github.com/secure-io/sio-go v0.3.1 // indirect github.com/sirupsen/logrus v1.9.2 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mc-20230718T210538Z/go.sum new/mc-20230721T204427Z/go.sum --- old/mc-20230718T210538Z/go.sum 2023-07-18 23:05:38.000000000 +0200 +++ new/mc-20230721T204427Z/go.sum 2023-07-21 22:44:27.000000000 +0200 @@ -146,8 +146,8 @@ github.com/minio/colorjson v1.0.5/go.mod h1:Oq6oB83q+sL08u9wx68+91ELf0nV5G4c6l9pQcH5ElI= 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.7 h1:nuRwrqarFrkzbUiA36H/HKAcuNr8J9TjKlWRlua7lNo= -github.com/minio/madmin-go/v3 v3.0.7/go.mod h1:lPrMoc1aeiIWmmrxBthkDqzMPQwC/Lu9ByuyM2wenJk= +github.com/minio/madmin-go/v3 v3.0.8 h1:oY+siBnw7+aJg5Idx2nPguP/10TeLekBTmJiUO+buAI= +github.com/minio/madmin-go/v3 v3.0.8/go.mod h1:lPrMoc1aeiIWmmrxBthkDqzMPQwC/Lu9ByuyM2wenJk= 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.57 h1:xsFiOiWjpC1XAGbFEUOzj1/gMXGz7ljfxifwcb/5YXU= ++++++ mc.obsinfo ++++++ --- /var/tmp/diff_new_pack.mrRQ6e/_old 2023-07-25 11:52:27.657929457 +0200 +++ /var/tmp/diff_new_pack.mrRQ6e/_new 2023-07-25 11:52:27.661929481 +0200 @@ -1,5 +1,5 @@ name: mc -version: 20230718T210538Z -mtime: 1689714338 -commit: 216aae32b9685dcdb4fdb83b6d99b00545ac6ab0 +version: 20230721T204427Z +mtime: 1689972267 +commit: 1c17ff4c995d772c97eed8c5a269f2074a9425fe ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/minio-client/vendor.tar.gz /work/SRC/openSUSE:Factory/.minio-client.new.1467/vendor.tar.gz differ: char 5, line 1