diff options
author | Vasu1105 <vasundhara.jagdale@msystechnologies.com> | 2019-12-16 14:47:50 +0530 |
---|---|---|
committer | Vasu1105 <vasundhara.jagdale@msystechnologies.com> | 2019-12-16 14:47:50 +0530 |
commit | 8652c2bec65058032e9b90ac4b97cf8df3a1e1e0 (patch) | |
tree | c4150f3aa2bbed1cf7cff39d6da2766f3f45b01f /lib/chef/chef_fs/file_system | |
parent | 3794b5ffb2ecd73995b551f26703b2527eabba13 (diff) | |
download | chef-8652c2bec65058032e9b90ac4b97cf8df3a1e1e0.tar.gz |
Updated knife cookbook upload and knife upload code to create temporary directory and copies all cookbooks into it and then generate metadata.json if it does not exist and load it to upload on Chef server
Signed-off-by: Vasu1105 <vasundhara.jagdale@msystechnologies.com>
Diffstat (limited to 'lib/chef/chef_fs/file_system')
-rw-r--r-- | lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb b/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb index 09b6e0669f..b64eb2849e 100644 --- a/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +++ b/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb @@ -72,35 +72,23 @@ class Chef end def upload_cookbook(other, options) - compiled_metadata = other.chef_object.compile_metadata - - Dir.mktmpdir do |tmp_dir_path| - begin - if compiled_metadata - proxy_cookbook_path = "#{tmp_dir_path}/#{other.name}" - # Make a symlink - file_class.symlink other.chef_object.root_dir, proxy_cookbook_path - proxy_loader = Chef::Cookbook::CookbookVersionLoader.new(proxy_cookbook_path) - proxy_loader.load_cookbooks - cookbook_to_upload = proxy_loader.cookbook_version - else - cookbook_to_upload = other.chef_object - end - - cookbook_to_upload.freeze_version if options[:freeze] - uploader = Chef::CookbookUploader.new(cookbook_to_upload, force: options[:force], rest: chef_rest) - - with_actual_cookbooks_dir(other.parent.file_path) do - uploader.upload_cookbooks - end - ensure - # deletes the generated metadata from local repo. - if compiled_metadata - GC.start - File.unlink(compiled_metadata) - end - end + cookbook = other.chef_object + tmp_cl = Chef::CookbookLoader.copy_to_tmp_dir_from_array([cookbook]) + tmp_cl.load_cookbooks + tmp_cl.compile_metadata + tmp_cl.freeze_version if options[:freeze] + cookbook_for_upload = [] + tmp_cl.each do |cookbook_name, cookbook| + cookbook_for_upload << cookbook end + + uploader = Chef::CookbookUploader.new(cookbook_for_upload, force: options[:force], rest: chef_rest) + + with_actual_cookbooks_dir(other.parent.file_path) do + uploader.upload_cookbooks + end + + tmp_cl.unlink! end def chef_rest |