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
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.
31 32 33 34 35 36 37 38 39 |
# File 'lib/chef/resource/remote_file.rb', line 31 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
140 141 142 143 144 145 |
# File 'lib/chef/resource/remote_file.rb', line 140 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
75 76 77 78 79 80 81 |
# File 'lib/chef/resource/remote_file.rb', line 75 def checksum(args = nil) set_or_return( :checksum, args, :kind_of => String ) end |
#ftp_active_mode(args = nil) ⇒ Object
109 110 111 112 113 114 115 |
# File 'lib/chef/resource/remote_file.rb', line 109 def ftp_active_mode(args = nil) set_or_return( :ftp_active_mode, args, :kind_of => [ TrueClass, FalseClass ] ) end |
#headers(args = nil) ⇒ Object
117 118 119 120 121 122 123 |
# File 'lib/chef/resource/remote_file.rb', line 117 def headers(args = nil) set_or_return( :headers, args, :kind_of => Hash ) end |
#parse_source_args(args) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/chef/resource/remote_file.rb', line 63 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
155 156 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 |
# File 'lib/chef/resource/remote_file.rb', line 155 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
125 126 127 128 129 130 131 132 |
# File 'lib/chef/resource/remote_file.rb', line 125 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.
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/chef/resource/remote_file.rb', line 49 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)
86 87 88 89 |
# File 'lib/chef/resource/remote_file.rb', line 86 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:
91 92 93 94 95 96 97 |
# File 'lib/chef/resource/remote_file.rb', line 91 def use_etag(args = nil) set_or_return( :use_etag, args, :kind_of => [ TrueClass, FalseClass ] ) end |
#use_last_modified(args = nil) ⇒ Object
101 102 103 104 105 106 107 |
# File 'lib/chef/resource/remote_file.rb', line 101 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
147 148 149 150 151 152 153 |
# File 'lib/chef/resource/remote_file.rb', line 147 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 |