class Chef::Resource::RemoteFile

Public Class Methods

new(name, run_context=nil) click to toggle source
Calls superclass method Chef::Resource::File.new
# File lib/chef/resource/remote_file.rb, line 31
def initialize(name, run_context=nil)
  super
  @resource_name = :remote_file
  @action = "create"
  @source = []
  @use_etag = true
  @use_last_modified = true
  @ftp_active_mode = false
  @headers = {}
  @provider = Chef::Provider::RemoteFile
end

Public Instance Methods

after_created() click to toggle source
# File lib/chef/resource/remote_file.rb, line 127
def after_created
  validate_source(@source)
end
checksum(args=nil) click to toggle source
# File lib/chef/resource/remote_file.rb, line 77
def checksum(args=nil)
  set_or_return(
    :checksum,
    args,
    :kind_of => String
  )
end
ftp_active_mode(args=nil) click to toggle source
# File lib/chef/resource/remote_file.rb, line 111
def ftp_active_mode(args=nil)
  set_or_return(
    :ftp_active_mode,
    args,
    :kind_of => [ TrueClass, FalseClass ]
  )
end
headers(args=nil) click to toggle source
# File lib/chef/resource/remote_file.rb, line 119
def headers(args=nil)
  set_or_return(
    :headers,
    args,
    :kind_of => Hash
  )
end
parse_source_args(args) click to toggle source
# File lib/chef/resource/remote_file.rb, line 65
def parse_source_args(args)
  if args.empty?
    nil
  elsif args[0].is_a?(Chef::DelayedEvaluator) && args.count == 1
    args[0]
  elsif args.any? {|a| a.is_a?(Chef::DelayedEvaluator)} && args.count > 1
    raise Exceptions::InvalidRemoteFileURI, "Only 1 source argument allowed when using a lazy evaluator"
  else
    Array(args).flatten
  end
end
source(*args) click to toggle source

source can take any of the following as arguments

  • A single string argument

  • Multiple string arguments

  • An array or strings

  • A delayed evaluator that evaluates to a string or array of strings

All strings must be parsable as URIs. source returns an array of strings.

# File lib/chef/resource/remote_file.rb, line 51
def source(*args)
  arg = parse_source_args(args)
  ret = set_or_return(:source,
                      arg,
                      { :callbacks => {
                          :validate_source => method(:validate_source)
                        }})
  if ret.is_a? String
    Array(ret)
  else
    ret
  end
end
use_conditional_get(true_or_false) click to toggle source

Disable or enable ETag and Last Modified conditional GET. Equivalent to

use_etag(true_or_false)
use_last_modified(true_or_false)
# File lib/chef/resource/remote_file.rb, line 88
def use_conditional_get(true_or_false)
  use_etag(true_or_false)
  use_last_modified(true_or_false)
end
use_etag(args=nil) click to toggle source
# File lib/chef/resource/remote_file.rb, line 93
def use_etag(args=nil)
  set_or_return(
    :use_etag,
    args,
    :kind_of => [ TrueClass, FalseClass ]
  )
end
Also aliased as: use_etags
use_etags(args=nil)
Alias for: use_etag
use_last_modified(args=nil) click to toggle source
# File lib/chef/resource/remote_file.rb, line 103
def use_last_modified(args=nil)
  set_or_return(
    :use_last_modified,
    args,
    :kind_of => [ TrueClass, FalseClass ]
  )
end

Private Instance Methods

absolute_uri?(source) click to toggle source
# File lib/chef/resource/remote_file.rb, line 145
def absolute_uri?(source)
  source.kind_of?(String) and URI.parse(source).absolute?
rescue URI::InvalidURIError
  false
end
validate_source(source) click to toggle source
# File lib/chef/resource/remote_file.rb, line 133
def validate_source(source)
  source = Array(source).flatten
  raise ArgumentError, "#{resource_name} has an empty source" if source.empty?
  source.each do |src|
    unless absolute_uri?(src)
      raise Exceptions::InvalidRemoteFileURI,
        "#{src.inspect} is not a valid `source` parameter for #{resource_name}. `source` must be an absolute URI or an array of URIs."
    end
  end
  true
end