Files

Class/Module Index [+]

Quicksearch

Chef::Provider::CookbookFile

Public Instance Methods

action_create() click to toggle source
# File lib/chef/provider/cookbook_file.rb, line 38
def action_create
  if file_cache_location && content_stale? 
    description = []
    description << "create a new cookbook_file #{@new_resource.path}"
    description << diff_current(file_cache_location)
    converge_by(description) do
      Chef::Log.debug("#{@new_resource} has new contents")
      backup_new_resource
      deploy_tempfile do |tempfile|
        Chef::Log.debug("#{@new_resource} staging #{file_cache_location} to #{tempfile.path}")
        tempfile.close
        FileUtils.cp(file_cache_location, tempfile.path)
        enforce_tempfile_inheritance(tempfile.path)              
      end
      update_new_file_state
      Chef::Log.info("#{@new_resource} created file #{@new_resource.path}")
    end
  else
    set_all_access_controls
  end
end
backup_new_resource() click to toggle source
# File lib/chef/provider/cookbook_file.rb, line 74
def backup_new_resource
  if ::File.exists?(@new_resource.path)
    backup @new_resource.path
  end
end
content_stale?() click to toggle source
# File lib/chef/provider/cookbook_file.rb, line 80
def content_stale?
  ( ! ::File.exist?(@new_resource.path)) || ( ! compare_content)
end
file_cache_location() click to toggle source
# File lib/chef/provider/cookbook_file.rb, line 60
def file_cache_location
  @file_cache_location ||= begin
    cookbook = run_context.cookbook_collection[resource_cookbook]
    cookbook.preferred_filename_on_disk_location(node, :files, @new_resource.source, @new_resource.path)
  end
end
load_current_resource() click to toggle source
# File lib/chef/provider/cookbook_file.rb, line 33
def load_current_resource
  @current_resource = Chef::Resource::CookbookFile.new(@new_resource.name)
  super
end
resource_cookbook() click to toggle source

Determine the cookbook to get the file from. If new resource sets an explicit cookbook, use it, otherwise fall back to the implicit cookbook i.e., the cookbook the resource was declared in.

# File lib/chef/provider/cookbook_file.rb, line 70
def resource_cookbook
  @new_resource.cookbook || @new_resource.cookbook_name
end
whyrun_supported?() click to toggle source
# File lib/chef/provider/cookbook_file.rb, line 29
def whyrun_supported?
  true
end

Protected Instance Methods

enforce_tempfile_inheritance(tempfile_path) click to toggle source
# File lib/chef/provider/cookbook_file.rb, line 86
def enforce_tempfile_inheritance(tempfile_path)
  # On the Windows platform, files in the temp directory
  # default to not inherit unless the new resource
  # specifies rights of
  # some sort. Here we ensure that even when no rights
  # are
  # specified, the dacl's inheritance flag is set.
  if Chef::Platform.windows? &&
      @new_resource.rights.nil? &&
      @new_resource.group.nil? &&
      @new_resource.owner.nil? &&
      @new_resource.deny_rights.nil?

    securable_tempfile = Chef::ReservedNames::Win32::Security::SecurableObject.new(tempfile_path)

    # No rights were specified, so the dacl will have
    # no explicit aces
    default_dacl = Chef::ReservedNames::Win32::Security::ACL.create([])

    # In setting this default dacl, set inheritance to
    # true
    securable_tempfile.set_dacl(default_dacl, true)
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.