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, #executed_by_runner, #logger, #params, #recipe_name, #resource_initializing, #run_context, #source_line, #updated
Instance Method Summary collapse
- #after_created ⇒ 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
-
#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.
- #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, #action_description, allowed_actions, allowed_actions=, #as_json, #before_notifications, chef_version_for_provides, #compile_time, #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=, default_description, #defined_at, #delayed_action, #delayed_notifications, deprecated, description, #events, examples, from_hash, from_json, #guard_interpreter, #identity, identity_attr, identity_property, #ignore_failure, #immediate_notifications, inherited, #inspect, introduced, 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, preview_resource, #provider, #provider=, #provider_for_action, provides, provides?, #resolve_notification_references, resource_for_node, resource_matching_short_name, #resource_name, resource_name, resource_name=, #retries, #retry_delay, #run_action, #sensitive, #should_skip?, skip_docs, sorted_descendants, #source_line_file, #source_line_number, state_attrs, #state_for_resource_reporter, #subscribes, #suppress_up_to_date_messages?, #to_h, #to_json, #to_s, #to_text, #umask, unified_mode, #updated?, #updated_by_last_action, #updated_by_last_action?, use, #validate_action, #validate_resource_spec!, #value_to_text, #with_umask
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::LazyModuleInclude
#descendants, #include, #included
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::Secret
#default_secret_config, #default_secret_service, #secret, #with_secret_config, #with_secret_service
Methods included from DSL::RenderHelpers
#render_json, #render_toml, #render_yaml
Methods included from DSL::ReaderHelpers
#parse_file, #parse_json, #parse_toml, #parse_yaml
Methods included from DSL::Powershell
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::ChefVault
#chef_vault, #chef_vault_item, #chef_vault_item_for_environment
Methods included from DSL::DataQuery
#data_bag, #data_bag_item, #search, #tagged?
Methods included from EncryptedDataBagItem::CheckEncrypted
Methods included from DSL::PlatformIntrospection
#older_than_win_2012_or_8?, #platform?, #platform_family?, #value_for_platform, #value_for_platform_family
Methods included from Mixin::ConvertToClassName
#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
#copy_properties_from, included, #property_description, #property_is_set?, #reset_property
Methods included from Mixin::ParamsValidate
#lazy, #set_or_return, #validate
Methods included from DSL::RebootPending
Methods included from DSL::DeclareResource
#build_resource, #declare_resource, #delete_resource, #delete_resource!, #edit_resource, #edit_resource!, #find_resource, #find_resource!, #resources, #with_run_context
Constructor Details
#initialize(name, run_context = nil) ⇒ RemoteFile
Returns a new instance of RemoteFile.
108 109 110 111 |
# File 'lib/chef/resource/remote_file.rb', line 108 def initialize(name, run_context = nil) super @source = [] 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
216 217 218 219 220 221 |
# File 'lib/chef/resource/remote_file.rb', line 216 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 |
#parse_source_args(args) ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/chef/resource/remote_file.rb', line 135 def parse_source_args(args) if args.empty? nil elsif args[0].is_a?(Chef::DelayedEvaluator) && args.count == 1 args[0] elsif args.any?(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
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
# File 'lib/chef/resource/remote_file.rb', line 231 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 |
#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.
121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/chef/resource/remote_file.rb', line 121 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)
153 154 155 156 |
# File 'lib/chef/resource/remote_file.rb', line 153 def use_conditional_get(true_or_false) use_etag(true_or_false) use_last_modified(true_or_false) end |
#validate_identity_platform(specified_user, password = nil, specified_domain = nil) ⇒ Object
223 224 225 226 227 228 229 |
# File 'lib/chef/resource/remote_file.rb', line 223 def validate_identity_platform(specified_user, password = nil, specified_domain = nil) if 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 |