From e8595bdec6aa35820c17669c8dbcb5265303ef1f Mon Sep 17 00:00:00 2001 From: John Keiser Date: Mon, 3 Jun 2013 13:35:46 -0700 Subject: Add knife upload --freeze for cookbooks --- lib/chef/chef_fs/file_system/cookbooks_dir.rb | 9 +++++++-- lib/chef/knife/upload.rb | 8 +++++++- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'lib/chef') diff --git a/lib/chef/chef_fs/file_system/cookbooks_dir.rb b/lib/chef/chef_fs/file_system/cookbooks_dir.rb index 934e82883d..f54584bcab 100644 --- a/lib/chef/chef_fs/file_system/cookbooks_dir.rb +++ b/lib/chef/chef_fs/file_system/cookbooks_dir.rb @@ -95,8 +95,11 @@ class Chef proxy_loader = Chef::Cookbook::CookbookVersionLoader.new(proxy_cookbook_path, other.parent.chefignore) proxy_loader.load_cookbooks + cookbook_to_upload = proxy_loader.cookbook_version + cookbook_to_upload.freeze_version if options[:freeze] + # Instantiate a new uploader based on the proxy loader - uploader = Chef::CookbookUploader.new(proxy_loader.cookbook_version, proxy_cookbook_path, :force => options[:force], :rest => rest) + uploader = Chef::CookbookUploader.new(cookbook_to_upload, proxy_cookbook_path, :force => options[:force], :rest => rest) with_actual_cookbooks_dir(temp_cookbooks_path) do upload_cookbook!(uploader) @@ -105,7 +108,9 @@ class Chef end def upload_unversioned_cookbook(other, options) - uploader = Chef::CookbookUploader.new(other.chef_object, other.parent.file_path, :force => options[:force], :rest => rest) + cookbook_to_upload = other.chef_object + cookbook_to_upload.freeze_version if options[:freeze] + uploader = Chef::CookbookUploader.new(cookbook_to_upload, other.parent.file_path, :force => options[:force], :rest => rest) with_actual_cookbooks_dir(other.parent.file_path) do upload_cookbook!(uploader) diff --git a/lib/chef/knife/upload.rb b/lib/chef/knife/upload.rb index d2e5708aa8..f72b6ea616 100644 --- a/lib/chef/knife/upload.rb +++ b/lib/chef/knife/upload.rb @@ -25,7 +25,13 @@ class Chef :long => '--[no-]force', :boolean => true, :default => false, - :description => "Force upload of files even if they match (quicker and harmless, but doesn't print out what it changed)" + :description => "Force upload of files even if they match (quicker for many files). Will overwrite frozen cookbooks." + + option :freeze, + :long => '--[no-]freeze', + :boolean => true, + :default => false, + :description => "Freeze cookbooks that get uploaded." option :dry_run, :long => '--dry-run', -- cgit v1.2.1