mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
Merge pull request #84395 from RainbowMango/pr_fix_should_hide_version
Fix metrics may be hidden in current minor release issue
This commit is contained in:
commit
3d7318f29d
@ -101,7 +101,7 @@ func (r *lazyMetric) determineDeprecationStatus(version semver.Version) {
|
|||||||
klog.Warningf("Hidden metrics have been manually overridden, showing this very deprecated metric.")
|
klog.Warningf("Hidden metrics have been manually overridden, showing this very deprecated metric.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if selfVersion.LT(version) {
|
if shouldHide(&version, selfVersion) {
|
||||||
klog.Warningf("This metric has been deprecated for more than one release, hiding.")
|
klog.Warningf("This metric has been deprecated for more than one release, hiding.")
|
||||||
r.isHidden = true
|
r.isHidden = true
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package metrics
|
package metrics
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
@ -33,6 +34,21 @@ var (
|
|||||||
showHidden atomic.Value
|
showHidden atomic.Value
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// shouldHide be used to check if a specific metric with deprecated version should be hidden
|
||||||
|
// according to metrics deprecation lifecycle.
|
||||||
|
func shouldHide(currentVersion *semver.Version, deprecatedVersion *semver.Version) bool {
|
||||||
|
guardVersion, err := semver.Make(fmt.Sprintf("%d.%d.0", currentVersion.Major, currentVersion.Minor))
|
||||||
|
if err != nil {
|
||||||
|
panic("failed to make version from current version")
|
||||||
|
}
|
||||||
|
|
||||||
|
if deprecatedVersion.LT(guardVersion) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// SetShowHidden will enable showing hidden metrics. This will no-opt
|
// SetShowHidden will enable showing hidden metrics. This will no-opt
|
||||||
// after the initial call
|
// after the initial call
|
||||||
func SetShowHidden() {
|
func SetShowHidden() {
|
||||||
|
@ -60,6 +60,39 @@ var (
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestShouldHide(t *testing.T) {
|
||||||
|
currentVersion := parseVersion(apimachineryversion.Info{
|
||||||
|
Major: "1",
|
||||||
|
Minor: "17",
|
||||||
|
GitVersion: "v1.17.1-alpha-1.12345",
|
||||||
|
})
|
||||||
|
|
||||||
|
var tests = []struct {
|
||||||
|
desc string
|
||||||
|
deprecatedVersion string
|
||||||
|
shouldHide bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
desc: "current minor release should not be hidden",
|
||||||
|
deprecatedVersion: "1.17.0",
|
||||||
|
shouldHide: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "older minor release should be hidden",
|
||||||
|
deprecatedVersion: "1.16.0",
|
||||||
|
shouldHide: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
tc := test
|
||||||
|
t.Run(tc.desc, func(t *testing.T) {
|
||||||
|
result := shouldHide(¤tVersion, parseSemver(tc.deprecatedVersion))
|
||||||
|
assert.Equalf(t, tc.shouldHide, result, "expected should hide %v, but got %v", tc.shouldHide, result)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRegister(t *testing.T) {
|
func TestRegister(t *testing.T) {
|
||||||
var tests = []struct {
|
var tests = []struct {
|
||||||
desc string
|
desc string
|
||||||
|
Loading…
Reference in New Issue
Block a user