summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanielsdeleo <dan@getchef.com>2015-02-06 09:43:09 -0800
committerdanielsdeleo <dan@getchef.com>2015-02-11 10:52:49 -0800
commit6c9f246b04c23906dd5297d178a423c96bc7b369 (patch)
treeb12595c7931c0c9a8d9962ec9e6469f7483998aa
parent677ca0d7e3366ea9b3b6a912c8c6c28d543e2046 (diff)
downloadchef-6c9f246b04c23906dd5297d178a423c96bc7b369.tar.gz
Temporarily implement deprecation warnings as errors
This is an intermediate step where we're cleaning up all internal code to convert cookbook version objects to JSON in the new way.
-rw-r--r--lib/chef/chef_fs/chef_fs_data_store.rb2
-rw-r--r--lib/chef/cookbook_uploader.rb7
-rw-r--r--lib/chef/cookbook_version.rb28
-rw-r--r--spec/unit/cookbook_loader_spec.rb14
-rw-r--r--spec/unit/cookbook_uploader_spec.rb6
-rw-r--r--spec/unit/cookbook_version_spec.rb8
6 files changed, 53 insertions, 12 deletions
diff --git a/lib/chef/chef_fs/chef_fs_data_store.rb b/lib/chef/chef_fs/chef_fs_data_store.rb
index 9b4f7320b8..5f147720eb 100644
--- a/lib/chef/chef_fs/chef_fs_data_store.rb
+++ b/lib/chef/chef_fs/chef_fs_data_store.rb
@@ -147,7 +147,7 @@ class Chef
# get /cookbooks/NAME/version
result = nil
begin
- result = entry.chef_object.to_hash
+ result = Chef::CookbookManifest.new(entry.chef_object).to_hash
rescue Chef::ChefFS::FileSystem::NotFoundError => e
raise ChefZero::DataStore::DataNotFoundError.new(to_zero_path(e.entry), e)
end
diff --git a/lib/chef/cookbook_uploader.rb b/lib/chef/cookbook_uploader.rb
index 2d8bf5bc7e..826b362a3d 100644
--- a/lib/chef/cookbook_uploader.rb
+++ b/lib/chef/cookbook_uploader.rb
@@ -92,9 +92,12 @@ class Chef
# files are uploaded, so save the manifest
cookbooks.each do |cb|
- save_url = opts[:force] ? cb.force_save_url : cb.save_url
+
+ manifest = Chef::CookbookManifest.new(cb)
+
+ save_url = opts[:force] ? manifest.force_save_url : manifest.save_url
begin
- rest.put(save_url, cb)
+ rest.put(save_url, manifest)
rescue Net::HTTPServerException => e
case e.response.code
when "409"
diff --git a/lib/chef/cookbook_version.rb b/lib/chef/cookbook_version.rb
index c26ab46565..4e3e8069a6 100644
--- a/lib/chef/cookbook_version.rb
+++ b/lib/chef/cookbook_version.rb
@@ -64,18 +64,46 @@ class Chef
end
def save_url
+ # TODO: double check this code suggestion
+ msg = <<-WARNING
+Cookbooks now have multiple save URLs based on the capabilities of the Chef Server.
+To get the default save URL, use code like `Chef::CookbookManifest.new(cookbook_version).save_url`
+WARNING
+ raise msg
+ # TODO: change to warning
cookbook_manifest.save_url
end
def force_save_url
+ # TODO: double check this code suggestion
+ msg = <<-WARNING
+Cookbooks now have multiple save URLs based on the capabilities of the Chef Server.
+To get the default save URL, use code like `Chef::CookbookManifest.new(cookbook_version).force_save_url`
+WARNING
+ raise msg
+ # TODO: change to warning
cookbook_manifest.force_save_url
end
def to_hash
+ # TODO: double check this code suggestion
+ msg = <<-WARNING
+Cookbooks now have multiple JSON representations based on the capabilities of the Chef Server.
+To get the Hash representation, use code like `Chef::CookbookManifest.new(cookbook_version).to_hash`
+WARNING
+ raise msg
+ # TODO: change to warning
cookbook_manifest.to_hash
end
def to_json(*a)
+ # TODO: double check this code suggestion
+ msg = <<-WARNING
+Cookbooks now have multiple JSON representations based on the capabilities of the Chef Server.
+To get the JSON representation, use code like `Chef::CookbookManifest.new(cookbook_version).to_json`
+WARNING
+ raise msg
+ # TODO: change to warning
cookbook_manifest.to_json
end
diff --git a/spec/unit/cookbook_loader_spec.rb b/spec/unit/cookbook_loader_spec.rb
index 51532778e4..45a985bafd 100644
--- a/spec/unit/cookbook_loader_spec.rb
+++ b/spec/unit/cookbook_loader_spec.rb
@@ -190,6 +190,11 @@ describe Chef::CookbookLoader do
end
describe "loading only one cookbook" do
+
+ let(:openldap_cookbook) { cookbook_loader["openldap"] }
+
+ let(:cookbook_as_hash) { Chef::CookbookManifest.new(openldap_cookbook).to_hash }
+
before(:each) do
cookbook_loader.load_cookbook("openldap")
end
@@ -205,12 +210,11 @@ describe Chef::CookbookLoader do
it "should not duplicate keys when serialized to JSON" do
# Chef JSON serialization will generate duplicate keys if given
# a Hash containing matching string and symbol keys. See CHEF-4571.
- aa = cookbook_loader["openldap"]
- expect(aa.to_hash["metadata"].recipes.keys).not_to include(:openldap)
- expect(aa.to_hash["metadata"].recipes.keys).to include("openldap")
+ expect(cookbook_as_hash["metadata"].recipes.keys).not_to include(:openldap)
+ expect(cookbook_as_hash["metadata"].recipes.keys).to include("openldap")
expected_desc = "Main Open LDAP configuration"
- expect(aa.to_hash["metadata"].recipes["openldap"]).to eq(expected_desc)
- raw = Chef::JSONCompat.to_json(aa.to_hash["metadata"].recipes)
+ expect(cookbook_as_hash["metadata"].recipes["openldap"]).to eq(expected_desc)
+ raw = Chef::JSONCompat.to_json(cookbook_as_hash["metadata"].recipes)
search_str = "\"openldap\":\""
key_idx = raw.index(search_str)
expect(key_idx).to be > 0
diff --git a/spec/unit/cookbook_uploader_spec.rb b/spec/unit/cookbook_uploader_spec.rb
index dc9ca5f1a6..deb0536487 100644
--- a/spec/unit/cookbook_uploader_spec.rb
+++ b/spec/unit/cookbook_uploader_spec.rb
@@ -94,6 +94,10 @@ describe Chef::CookbookUploader do
end
end
+ def expected_save_url(cookbook)
+ "cookbooks/#{cookbook.name}/#{cookbook.version}"
+ end
+
def expect_sandbox_commit
expect(http_client).to receive(:put).with(sandbox_commit_uri, {:is_completed => true})
end
@@ -102,7 +106,7 @@ describe Chef::CookbookUploader do
cookbooks_to_upload.each do |cookbook|
expect(http_client).to receive(:put).
- with(cookbook.save_url, cookbook)
+ with(expected_save_url(cookbook), cookbook)
end
end
diff --git a/spec/unit/cookbook_version_spec.rb b/spec/unit/cookbook_version_spec.rb
index 6dd3429ffc..95f0d68efc 100644
--- a/spec/unit/cookbook_version_spec.rb
+++ b/spec/unit/cookbook_version_spec.rb
@@ -498,9 +498,11 @@ describe Chef::CookbookVersion do
end
end
+ pending "These should work when deprecation errors are changed back to warning" do
- include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
- let(:jsonable) { Chef::CookbookVersion.new("tatft", '/tmp/blah') }
- end
+ include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
+ let(:jsonable) { Chef::CookbookVersion.new("tatft", '/tmp/blah') }
+ end
+ end
end