class Chef::ChefFS::FileSystem::ChefServer::CookbooksDir
/cookbooks
Example children:
apache2/ mysql/
Public Instance Methods
can_have_child?(name, is_dir)
click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb, line 98 def can_have_child?(name, is_dir) is_dir end
chef_rest()
click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb, line 84 def chef_rest Chef::ServerAPI.new(root.chef_rest.url, root.chef_rest.options.merge(version_class: Chef::CookbookManifestVersions)) end
children()
click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb, line 47 def children @children ||= begin result = root.get_json(api_path).keys.map { |cookbook_name| CookbookDir.new(cookbook_name, self, exists: true) } result.sort_by(&:name) end end
create_child_from(other, options = {})
click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb, line 54 def create_child_from(other, options = {}) @children = nil upload_cookbook_from(other, options) end
make_child_entry(name)
click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb, line 42 def make_child_entry(name) result = @children.find { |child| child.name == name } if @children result || CookbookDir.new(name, self) end
upload_cookbook(other, options)
click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb, line 74 def upload_cookbook(other, options) cookbook_to_upload = other.chef_object 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 end
upload_cookbook_from(other, options = {})
click to toggle source
# File lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb, line 59 def upload_cookbook_from(other, options = {}) upload_cookbook(other, options) rescue Timeout::Error => e raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, e, "Timeout writing: #{e}") rescue Net::HTTPServerException => e case e.response.code when "409" raise Chef::ChefFS::FileSystem::CookbookFrozenError.new(:write, self, e, "Cookbook #{other.name} is frozen") else raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, e, "HTTP error writing: #{e}") end rescue Chef::Exceptions::CookbookFrozen => e raise Chef::ChefFS::FileSystem::CookbookFrozenError.new(:write, self, e, "Cookbook #{other.name} is frozen") end
with_actual_cookbooks_dir(actual_cookbook_path) { || ... }
click to toggle source
Work around the fact that CookbookUploader doesn't understand chef_repo_path (yet)
# File lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb, line 89 def with_actual_cookbooks_dir(actual_cookbook_path) old_cookbook_path = Chef::Config.cookbook_path Chef::Config.cookbook_path = actual_cookbook_path if !Chef::Config.cookbook_path yield ensure Chef::Config.cookbook_path = old_cookbook_path end