summaryrefslogtreecommitdiff
path: root/lib/chef/server_api_versions.rb
diff options
context:
space:
mode:
authorThom May <thom@chef.io>2017-06-07 16:09:01 +0100
committerThom May <thom@chef.io>2017-07-05 12:20:35 +0100
commit35e24b6125089cd6bc71c7092e431562707ee8cd (patch)
treebf8384c3ae80a28f2f57012d67fd541ea92c1ffd /lib/chef/server_api_versions.rb
parente419d7f0eb0c494a0a2f5d5963eac6fb35153bac (diff)
downloadchef-35e24b6125089cd6bc71c7092e431562707ee8cd.tar.gz
Have a sensible default for old chef serverstm/no_api_version
If we don't see a version header, we should default to only supporting API version 0, and if we can't support that, then we should die as usual Signed-off-by: Thom May <thom@chef.io>
Diffstat (limited to 'lib/chef/server_api_versions.rb')
-rw-r--r--lib/chef/server_api_versions.rb23
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/chef/server_api_versions.rb b/lib/chef/server_api_versions.rb
index 2a4d0e6a5b..40fb6385e1 100644
--- a/lib/chef/server_api_versions.rb
+++ b/lib/chef/server_api_versions.rb
@@ -26,15 +26,34 @@ class Chef
end
def min_server_version
- !@versions.nil? ? Integer(@versions["min_version"]) : nil
+ # If we're working with a pre-api-versioning server, always claim to be zero
+ if @versions.nil?
+ unversioned? ? 0 : nil
+ else
+ Integer(@versions["min_version"])
+ end
end
def max_server_version
- !@versions.nil? ? Integer(@versions["max_version"]) : nil
+ # If we're working with a pre-api-versioning server, always claim to be zero
+ if @versions.nil?
+ unversioned? ? 0 : nil
+ else
+ Integer(@versions["max_version"])
+ end
+ end
+
+ def unversioned!
+ @unversioned = true
+ end
+
+ def unversioned?
+ @unversioned
end
def reset!
@versions = nil
+ @unversioned = false
end
end
end