mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 23:37:01 +00:00
Add common flag validation functionality shared by kube-binaries
This commit is contained in:
parent
eedfb6bc7a
commit
0efb642fec
@ -49,6 +49,29 @@ func shouldHide(currentVersion *semver.Version, deprecatedVersion *semver.Versio
|
||||
return false
|
||||
}
|
||||
|
||||
func validateShowHiddenMetricsVersion(currentVersion semver.Version, targetVersionStr string) error {
|
||||
if targetVersionStr == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
validVersionStr := fmt.Sprintf("%d.%d", currentVersion.Major, currentVersion.Minor-1)
|
||||
if targetVersionStr != validVersionStr {
|
||||
return fmt.Errorf("--show-hidden-metrics-for-version must be omitted or have the value '%v'. Only the previous minor version is allowed", validVersionStr)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ValidateShowHiddenMetricsVersion checks invalid version for which show hidden metrics.
|
||||
func ValidateShowHiddenMetricsVersion(v string) []error {
|
||||
err := validateShowHiddenMetricsVersion(parseVersion(version.Get()), v)
|
||||
if err != nil {
|
||||
return []error{err}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetShowHidden will enable showing hidden metrics. This will no-opt
|
||||
// after the initial call
|
||||
func SetShowHidden() {
|
||||
|
@ -264,3 +264,56 @@ func TestShowHiddenMetric(t *testing.T) {
|
||||
assert.Nil(t, err, "Gather failed %v", err)
|
||||
|
||||
}
|
||||
|
||||
func TestValidateShowHiddenMetricsVersion(t *testing.T) {
|
||||
currentVersion := parseVersion(apimachineryversion.Info{
|
||||
Major: "1",
|
||||
Minor: "17",
|
||||
GitVersion: "v1.17.1-alpha-1.12345",
|
||||
})
|
||||
|
||||
var tests = []struct {
|
||||
desc string
|
||||
targetVersion string
|
||||
expectedError bool
|
||||
}{
|
||||
{
|
||||
desc: "invalid version is not allowed",
|
||||
targetVersion: "1.invalid",
|
||||
expectedError: true,
|
||||
},
|
||||
{
|
||||
desc: "patch version is not allowed",
|
||||
targetVersion: "1.16.0",
|
||||
expectedError: true,
|
||||
},
|
||||
{
|
||||
desc: "old version is not allowed",
|
||||
targetVersion: "1.15",
|
||||
expectedError: true,
|
||||
},
|
||||
{
|
||||
desc: "new version is not allowed",
|
||||
targetVersion: "1.17",
|
||||
expectedError: true,
|
||||
},
|
||||
{
|
||||
desc: "valid version is allowed",
|
||||
targetVersion: "1.16",
|
||||
expectedError: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
tc := test
|
||||
t.Run(tc.desc, func(t *testing.T) {
|
||||
err := validateShowHiddenMetricsVersion(currentVersion, tc.targetVersion)
|
||||
|
||||
if tc.expectedError {
|
||||
assert.Errorf(t, err, "Failed to test: %s", tc.desc)
|
||||
} else {
|
||||
assert.NoErrorf(t, err, "Failed to test: %s", tc.desc)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user