summaryrefslogtreecommitdiff
path: root/lib/chef/chef_fs
diff options
context:
space:
mode:
authorVasu1105 <vasundhara.jagdale@msystechnologies.com>2019-12-16 14:47:50 +0530
committerVasu1105 <vasundhara.jagdale@msystechnologies.com>2019-12-16 14:47:50 +0530
commit8652c2bec65058032e9b90ac4b97cf8df3a1e1e0 (patch)
treec4150f3aa2bbed1cf7cff39d6da2766f3f45b01f /lib/chef/chef_fs
parent3794b5ffb2ecd73995b551f26703b2527eabba13 (diff)
downloadchef-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')
-rw-r--r--lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb44
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