From 211be90151968713c41a4b6114852ae53cf5dc6e Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Fri, 6 Dec 2024 14:11:49 -0800 Subject: [PATCH] govc: remove minimum API version check This check hasn't been useful, except maybe in the early days of govc. It's only caused problems when dev/rc versioning changes in a way that breaks our parsing. Simpler to just remove than to maintain it. Fixes #3643 Signed-off-by: Doug MacEachern --- govc/flags/client.go | 57 -------------------------------------- govc/flags/version_test.go | 14 ---------- govc/test/cli.bats | 19 ------------- 3 files changed, 90 deletions(-) diff --git a/govc/flags/client.go b/govc/flags/client.go index d4a6b19a8..75ad62d0e 100644 --- a/govc/flags/client.go +++ b/govc/flags/client.go @@ -53,8 +53,6 @@ const ( envVimVersion = "GOVC_VIM_VERSION" envTLSCaCerts = "GOVC_TLS_CA_CERTS" envTLSKnownHosts = "GOVC_TLS_KNOWN_HOSTS" - - defaultMinVimVersion = "5.5" ) const cDescr = "ESX or vCenter URL" @@ -69,7 +67,6 @@ type ClientFlag struct { cert string key string persist bool - minAPIVersion string vimNamespace string vimVersion string tlsCaCerts string @@ -167,15 +164,6 @@ func (flag *ClientFlag) Register(ctx context.Context, f *flag.FlagSet) { f.BoolVar(&flag.persist, "persist-session", persist, usage) } - { - env := os.Getenv(envMinAPIVersion) - if env == "" { - env = defaultMinVimVersion - } - - flag.minAPIVersion = env - } - { value := os.Getenv(envVimNamespace) if value == "" { @@ -310,45 +298,6 @@ func (flag *ClientFlag) SetRootCAs(c *soap.Client) error { return nil } -func isDevelopmentVersion(apiVersion string) bool { - // Skip version check for development builds which can be in the form of "r4A70F" or "6.5.x" - return strings.Count(apiVersion, ".") == 0 || strings.HasSuffix(apiVersion, ".x") -} - -// apiVersionValid returns whether or not the API version supported by the -// server the client is connected to is not recent enough. -func apiVersionValid(c *vim25.Client, minVersionString string) error { - if minVersionString == "-" { - // Disable version check - return nil - } - - apiVersion := c.ServiceContent.About.ApiVersion - if isDevelopmentVersion(apiVersion) { - return nil - } - - realVersion, err := ParseVersion(apiVersion) - if err != nil { - return fmt.Errorf("error parsing API version %q: %s", apiVersion, err) - } - - minVersion, err := ParseVersion(minVersionString) - if err != nil { - return fmt.Errorf("error parsing %s=%q: %s", envMinAPIVersion, minVersionString, err) - } - - if !minVersion.Lte(realVersion) { - err = fmt.Errorf("require API version %q, connected to API version %q (set %s to override)", - minVersionString, - c.ServiceContent.About.ApiVersion, - envMinAPIVersion) - return err - } - - return nil -} - func (flag *ClientFlag) RoundTripper(c *soap.Client) soap.RoundTripper { // Retry twice when a temporary I/O error occurs. // This means a maximum of 3 attempts. @@ -375,12 +324,6 @@ func (flag *ClientFlag) Client() (*vim25.Client, error) { return nil, err } - // Check that the endpoint has the right API version - err = apiVersionValid(c, flag.minAPIVersion) - if err != nil { - return nil, err - } - if flag.vimVersion == "" || flag.vimVersion == "-" { err = c.UseServiceVersion() if err != nil { diff --git a/govc/flags/version_test.go b/govc/flags/version_test.go index fc6957dd6..2a8a360b5 100644 --- a/govc/flags/version_test.go +++ b/govc/flags/version_test.go @@ -74,17 +74,3 @@ func TestLte(t *testing.T) { t.Errorf("Expected not 5.6 <= 5.5") } } - -func TestDevelopmentVersion(t *testing.T) { - if !isDevelopmentVersion("6.5.x") { - t.Error("expected true") - } - - if !isDevelopmentVersion("r4A70F") { - t.Error("expected true") - } - - if isDevelopmentVersion("6.5") { - t.Error("expected false") - } -} diff --git a/govc/test/cli.bats b/govc/test/cli.bats index 1ded8c2b2..99f8366fc 100755 --- a/govc/test/cli.bats +++ b/govc/test/cli.bats @@ -122,25 +122,6 @@ load test_helper assert_success } -@test "API version check" { - vcsim_env -esx - - run env GOVC_MIN_API_VERSION=24.4 govc about - assert grep -q "^govc: require API version \"24.4\"," <<<"${output}" - - run env GOVC_MIN_API_VERSION=no.no govc about - assert_failure - - run env GOVC_MIN_API_VERSION=- govc about - assert_success - - run env GOVC_MIN_API_VERSION=5.0 govc about - assert_success - - run govc about -vim-namespace urn:vim25 -vim-version 6.0 - assert_success -} - @test "govc env" { output="$(govc env -x -u 'user:pass@enoent:99999?key=val#anchor')" assert grep -q GOVC_URL=enoent:99999 <<<${output}