Files

Class/Module Index [+]

Quicksearch

Chef::Provider::File

Attributes

deployment_strategy[R]

Public Class Methods

new(new_resource, run_context) click to toggle source
# File lib/chef/provider/file.rb, line 61
def initialize(new_resource, run_context)
  @content_class ||= Chef::Provider::File::Content
  if new_resource.respond_to?(:atomic_update)
    @deployment_strategy = Chef::FileContentManagement::Deploy.strategy(new_resource.atomic_update)
  end
  super
end

Public Instance Methods

action_create() click to toggle source
# File lib/chef/provider/file.rb, line 118
def action_create
  do_unlink
  do_create_file
  do_contents_changes
  do_acl_changes
  do_selinux
  load_resource_attributes_from_file(@new_resource)
end
action_create_if_missing() click to toggle source
# File lib/chef/provider/file.rb, line 127
def action_create_if_missing
  if ::File.exists?(@new_resource.path)
    Chef::Log.debug("#{@new_resource} exists at #{@new_resource.path} taking no action.")
  else
    action_create
  end
end
action_delete() click to toggle source
# File lib/chef/provider/file.rb, line 135
def action_delete
  if ::File.exists?(@new_resource.path)
    converge_by("delete file #{@new_resource.path}") do
      do_backup unless file_class.symlink?(@new_resource.path)
      ::File.delete(@new_resource.path)
      Chef::Log.info("#{@new_resource} deleted file at #{@new_resource.path}")
    end
  end
end
action_touch() click to toggle source
# File lib/chef/provider/file.rb, line 145
def action_touch
  action_create
  converge_by("update utime on file #{@new_resource.path}") do
    time = Time.now
    ::File.utime(time, time, @new_resource.path)
    Chef::Log.info("#{@new_resource} updated atime and mtime to #{time}")
  end
end
define_resource_requirements() click to toggle source
# File lib/chef/provider/file.rb, line 87
def define_resource_requirements
  # deep inside FAC we have to assert requirements, so call FACs hook to set that up
  access_controls.define_resource_requirements
  # Make sure the parent directory exists, otherwise fail.  For why-run assume it would have been created.
  requirements.assert(:create, :create_if_missing, :touch) do |a|
    parent_directory = ::File.dirname(@new_resource.path)
    a.assertion { ::File.directory?(parent_directory) }
    a.failure_message(Chef::Exceptions::EnclosingDirectoryDoesNotExist, "Parent directory #{parent_directory} does not exist.")
    a.whyrun("Assuming directory #{parent_directory} would have been created")
  end

  # Make sure the file is deletable if it exists, otherwise fail.
  if ::File.exists?(@new_resource.path)
    requirements.assert(:delete) do |a|
      a.assertion { ::File.writable?(@new_resource.path) }
      a.failure_message(Chef::Exceptions::InsufficientPermissions,"File #{@new_resource.path} exists but is not writable so it cannot be deleted")
    end
  end

  error, reason, whyrun_message = inspect_existing_fs_entry
  requirements.assert(:create) do |a|
    a.assertion { error.nil? }
    a.failure_message(error, reason)
    a.whyrun(whyrun_message)
    # Subsequent attempts to read the fs entry at the path (e.g., for
    # calculating checksums) could blow up, so give up trying to continue
    # why-running.
    a.block_action!
  end
end
load_current_resource() click to toggle source
# File lib/chef/provider/file.rb, line 73
def load_current_resource
  # Let children resources override constructing the @current_resource
  @current_resource ||= Chef::Resource::File.new(@new_resource.name)
  @current_resource.path(@new_resource.path)
  if ::File.exists?(@current_resource.path) && ::File.file?(::File.realpath(@current_resource.path))
    if managing_content?
      Chef::Log.debug("#{@new_resource} checksumming file at #{@new_resource.path}.")
      @current_resource.checksum(checksum(@current_resource.path))
    end
    load_resource_attributes_from_file(@current_resource)
  end
  @current_resource
end
whyrun_supported?() click to toggle source
# File lib/chef/provider/file.rb, line 69
def whyrun_supported?
  true
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.