summaryrefslogtreecommitdiff
path: root/lib/chef
diff options
context:
space:
mode:
authorJohn Keiser <jkeiser@opscode.com>2014-04-22 12:39:48 -0700
committerJohn Keiser <jkeiser@opscode.com>2014-04-22 12:39:48 -0700
commit3d6fa1ed64e4c6eff7053a33b4f8e5b728ce2959 (patch)
tree6a338b0004819634c3b797f5155dea204128bb18 /lib/chef
parent5a7b4a30fb75c58b7944b4a5612883e5470539de (diff)
downloadchef-3d6fa1ed64e4c6eff7053a33b4f8e5b728ce2959.tar.gz
Don't consider .uploaded-cookbook-version.json uploadable
since it won't be uploaded
Diffstat (limited to 'lib/chef')
-rw-r--r--lib/chef/chef_fs/chef_fs_data_store.rb6
-rw-r--r--lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb8
-rw-r--r--lib/chef/cookbook/cookbook_version_loader.rb8
3 files changed, 16 insertions, 6 deletions
diff --git a/lib/chef/chef_fs/chef_fs_data_store.rb b/lib/chef/chef_fs/chef_fs_data_store.rb
index 7f5abaf013..566ca9f9a2 100644
--- a/lib/chef/chef_fs/chef_fs_data_store.rb
+++ b/lib/chef/chef_fs/chef_fs_data_store.rb
@@ -279,11 +279,13 @@ class Chef
end
end
- cookbook_fs.add_file("#{cookbook_path}/.uploaded-cookbook-version.json", data)
-
# Use the copy/diff algorithm to copy it down so we don't destroy
# chefignored data. This is terribly un-thread-safe.
Chef::ChefFS::FileSystem.copy_to(Chef::ChefFS::FilePattern.new("/#{cookbook_path}"), cookbook_fs, chef_fs, nil, {:purge => true})
+
+ # Create the .uploaded-cookbook-version.json
+ cookbook_entry = Chef::ChefFS::FileSystem.resolve_path(chef_fs, cookbook_path)
+ cookbook_entry.write_uploaded_cookbook_version(data)
end
def split_name_version(entry_name)
diff --git a/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb b/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb
index e395cb794f..dc5f6c03ac 100644
--- a/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb
+++ b/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb
@@ -66,6 +66,8 @@ class Chef
if is_dir
# Only the given directories will be uploaded.
return CookbookDir::COOKBOOK_SEGMENT_INFO.keys.include?(name.to_sym) && name != 'root_files'
+ elsif name == Chef::Cookbook::CookbookVersionLoader::UPLOADED_COOKBOOK_VERSION_FILE
+ return false
end
super(name, is_dir)
end
@@ -81,6 +83,12 @@ class Chef
self.class.canonical_cookbook_name(entry_name)
end
+ def write_uploaded_cookbook_version(data)
+ File.open("#{file_path}/#{Chef::Cookbook::CookbookVersionLoader::UPLOADED_COOKBOOK_VERSION_FILE}", 'w') do |file|
+ file.write(data)
+ end
+ end
+
protected
def make_child(child_name)
diff --git a/lib/chef/cookbook/cookbook_version_loader.rb b/lib/chef/cookbook/cookbook_version_loader.rb
index 8419a2b46e..9e9ca20cfa 100644
--- a/lib/chef/cookbook/cookbook_version_loader.rb
+++ b/lib/chef/cookbook/cookbook_version_loader.rb
@@ -58,8 +58,8 @@ class Chef
load_root_files
remove_ignored_files
- if File.exists?(File.join(@cookbook_path, ".uploaded-cookbook-version.json"))
- @uploaded_cookbook_version_file = File.join(@cookbook_path, ".uploaded-cookbook-version.json")
+ if File.exists?(File.join(@cookbook_path, UPLOADED_COOKBOOK_VERSION_FILE))
+ @uploaded_cookbook_version_file = File.join(@cookbook_path, UPLOADED_COOKBOOK_VERSION_FILE)
end
if File.exists?(File.join(@cookbook_path, "metadata.rb"))
@@ -71,7 +71,7 @@ class Chef
end
# Set frozen based on .uploaded-cookbook-version.json
- if File.exists?(@uploaded_cookbook_version_file)
+ if @uploaded_cookbook_version_file && File.exists?(@uploaded_cookbook_version_file)
begin
data = Chef::JSONCompat.from_json(IO.read(@uploaded_cookbook_version_file), :create_additions => false)
@frozen = data['frozen?']
@@ -144,7 +144,7 @@ class Chef
def load_root_files
Dir.glob(File.join(@cookbook_path, '*'), File::FNM_DOTMATCH).each do |file|
next if File.directory?(file)
- next if File.basename(file) == '.uploaded-cookbook-version.json'
+ next if File.basename(file) == UPLOADED_COOKBOOK_VERSION_FILE
@cookbook_settings[:root_filenames][file[@relative_path, 1]] = file
end
end