Class: Chef::Resource::RemoteFile
- Inherits:
-
File
- Object
- Chef::Resource
- File
- Chef::Resource::RemoteFile
- Includes:
- Mixin::Securable, Mixin::Uris
- Defined in:
- lib/chef/resource/remote_file.rb
Overview
Use the remote_file resource to transfer a file from a remote location using file specificity. This resource is similar to the file resource.
Constant Summary
Constants inherited from Chef::Resource
Instance Attribute Summary
Attributes inherited from File
Attributes inherited from Chef::Resource
#allowed_actions, #cookbook_name, #declared_type, #default_guard_interpreter, #elapsed_time, #enclosing_provider, #params, #recipe_name, #resource_initializing, #run_context, #source_line, #updated
Instance Method Summary collapse
- #after_created ⇒ Object
- #checksum(args = nil) ⇒ Object
- #ftp_active_mode(args = nil) ⇒ Object
- #headers(args = nil) ⇒ Object
-
#initialize(name, run_context = nil) ⇒ RemoteFile
constructor
A new instance of RemoteFile.
- #parse_source_args(args) ⇒ Object
- #qualify_user(specified_user, password = nil, specified_domain = nil) ⇒ Object
- #show_progress(args = nil) ⇒ Object
-
#source(*args) ⇒ Object
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.
-
#use_conditional_get(true_or_false) ⇒ Object
Disable or enable ETag and Last Modified conditional GET.
- #use_etag(args = nil) ⇒ Object (also: #use_etags)
- #use_last_modified(args = nil) ⇒ Object
- #validate_identity_platform(specified_user, password = nil, specified_domain = nil) ⇒ Object
Methods included from Mixin::Uris
Methods included from Mixin::Securable
#group, included, #mode, #owner
Methods included from Mixin::Securable::WindowsSecurableAttributes
Methods inherited from File
#special_docker_files?, #state_for_resource_reporter, #verify
Methods inherited from Chef::Resource
action, #action, #action=, action_class, allowed_actions, allowed_actions=, #as_json, #before_notifications, #cookbook_version, #current_value, #current_value_does_not_exist!, #custom_exception_message, custom_resource?, #customize_exception, declare_action_class, #declared_key, default_action, default_action=, #defined_at, #delayed_action, #delayed_notifications, #events, from_hash, from_json, #guard_interpreter, #identity, identity_attr, identity_property, #ignore_failure, #immediate_notifications, inherited, #inspect, is_custom_resource!, json_create, load_current_value, #load_from, #lookup_provider_constant, #method_missing, #name, #node, #not_if, #notifies, #notifies_before, #notifies_delayed, #notifies_immediately, #only_if, #provider, #provider=, #provider_for_action, provides, provides?, remove_canonical_dsl, #resolve_notification_references, resource_for_node, resource_matching_short_name, #resource_name, resource_name, resource_name=, #resources, #retries, #retry_delay, #run_action, #sensitive, #should_skip?, sorted_descendants, #source_line_file, #source_line_number, state_attrs, #state_for_resource_reporter, #subscribes, #to_hash, #to_json, #to_s, #to_text, #updated?, #updated_by_last_action, #updated_by_last_action?, use_automatic_resource_name, #validate_action, #validate_resource_spec!, #value_to_text
Methods included from Mixin::Provides
#provided_as, #provides, #provides?
Methods included from Mixin::DescendantsTracker
#descendants, descendants, direct_descendants, #direct_descendants, find_descendants_by_name, #find_descendants_by_name, #inherited, store_inherited
Methods included from Mixin::ConvertToClassName
#constantize, #convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #normalize_snake_case_name, #snake_case_basename
Methods included from Mixin::Deprecation
#deprecated_attr, #deprecated_attr_reader, #deprecated_attr_writer, #deprecated_ivar
Methods included from Mixin::Properties
included, #property_is_set?, #reset_property
Methods included from Mixin::ParamsValidate
#lazy, #set_or_return, #validate
Methods included from Mixin::ShellOut
#a_to_s, #clean_array, #shell_out, #shell_out!, #shell_out_compact, #shell_out_compact!, #shell_out_compact_timeout, #shell_out_compact_timeout!, #shell_out_with_systems_locale, #shell_out_with_systems_locale!
Methods included from Mixin::PathSanity
#enforce_path_sanity, #sanitized_path
Methods included from Mixin::PowershellOut
#powershell_out, #powershell_out!
Methods included from Mixin::WindowsArchitectureHelper
#assert_valid_windows_architecture!, #disable_wow64_file_redirection, #forced_32bit_override_required?, #is_i386_process_on_x86_64_windows?, #node_supports_windows_architecture?, #node_windows_architecture, #restore_wow64_file_redirection, #valid_windows_architecture?, #with_os_architecture, #wow64_architecture_override_required?, #wow64_directory
Methods included from DSL::PlatformIntrospection
#docker?, #platform?, #platform_family?, #value_for_platform, #value_for_platform_family
Methods included from DSL::RebootPending
Methods included from DSL::RegistryHelper
#registry_data_exists?, #registry_get_subkeys, #registry_get_values, #registry_has_subkeys?, #registry_key_exists?, #registry_value_exists?
Methods included from DSL::DataQuery
#data_bag, #data_bag_item, #search
Methods included from EncryptedDataBagItem::CheckEncrypted
Constructor Details
#initialize(name, run_context = nil) ⇒ RemoteFile
Returns a new instance of RemoteFile.
33 34 35 36 37 38 39 40 41 |
# File 'lib/chef/resource/remote_file.rb', line 33 def initialize(name, run_context = nil) super @source = [] @use_etag = true @use_last_modified = true @ftp_active_mode = false @headers = {} @provider = Chef::Provider::RemoteFile end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Chef::Resource
Instance Method Details
#after_created ⇒ Object
142 143 144 145 146 147 |
# File 'lib/chef/resource/remote_file.rb', line 142 def after_created validate_identity_platform(remote_user, remote_password, remote_domain) identity = qualify_user(remote_user, remote_password, remote_domain) remote_domain(identity[:domain]) remote_user(identity[:user]) end |
#checksum(args = nil) ⇒ Object
77 78 79 80 81 82 83 |
# 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) ⇒ Object
111 112 113 114 115 116 117 |
# 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) ⇒ Object
119 120 121 122 123 124 125 |
# 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) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 |
# 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 |
#qualify_user(specified_user, password = nil, specified_domain = nil) ⇒ Object
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/chef/resource/remote_file.rb', line 157 def qualify_user(specified_user, password = nil, specified_domain = nil) domain = specified_domain user = specified_user if specified_user.nil? && ! specified_domain.nil? raise ArgumentError, "The domain `#{specified_domain}` was specified, but no user name was given" end # if domain is provided in both username and domain if specified_user && ((specified_user.include? '\\') || (specified_user.include? "@")) && specified_domain raise ArgumentError, "The domain is provided twice. Username: `#{specified_user}`, Domain: `#{specified_domain}`. Please specify domain only once." end if ! specified_user.nil? && specified_domain.nil? # Splitting username of format: Domain\Username domain_and_user = user.split('\\') if domain_and_user.length == 2 domain = domain_and_user[0] user = domain_and_user[1] elsif domain_and_user.length == 1 # Splitting username of format: Username@Domain domain_and_user = user.split("@") if domain_and_user.length == 2 domain = domain_and_user[1] user = domain_and_user[0] elsif domain_and_user.length != 1 raise ArgumentError, "The specified user name `#{user}` is not a syntactically valid user name" end end end if ( password || domain ) && user.nil? raise ArgumentError, "A value for `password` or `domain` was specified without specification of a value for `user`" end { domain: domain, user: user } end |
#show_progress(args = nil) ⇒ Object
127 128 129 130 131 132 133 134 |
# File 'lib/chef/resource/remote_file.rb', line 127 def show_progress(args = nil) set_or_return( :show_progress, args, :default => false, :kind_of => [ TrueClass, FalseClass ] ) end |
#source(*args) ⇒ Object
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.
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# 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) ⇒ Object
Disable or enable ETag and Last Modified conditional GET. Equivalent to
use_etag(true_or_false)
use_last_modified(true_or_false)
88 89 90 91 |
# 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) ⇒ Object Also known as:
93 94 95 96 97 98 99 |
# 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 |
#use_last_modified(args = nil) ⇒ Object
103 104 105 106 107 108 109 |
# 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 |
#validate_identity_platform(specified_user, password = nil, specified_domain = nil) ⇒ Object
149 150 151 152 153 154 155 |
# File 'lib/chef/resource/remote_file.rb', line 149 def validate_identity_platform(specified_user, password = nil, specified_domain = nil) if node[:platform_family] == "windows" if specified_user && password.nil? raise ArgumentError, "A value for `remote_password` must be specified when a value for `user` is specified on the Windows platform" end end end |