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, allowed_actions, allowed_actions=, #as_json, #before_notifications, chef_version_for_provides, #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?, remove_canonical_dsl, #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, #to_h, #to_json, #to_s, #to_text, unified_mode, #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::LazyModuleInclude
#descendants, #include, #included
Methods included from Mixin::ShellOut
apply_default_env, maybe_add_timeout, #shell_out, #shell_out!
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 Mixin::PowershellExec
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::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
#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
#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.
35 36 37 38 |
# File 'lib/chef/resource/remote_file.rb', line 35 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
104 105 106 107 108 109 |
# File 'lib/chef/resource/remote_file.rb', line 104 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
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/chef/resource/remote_file.rb', line 62 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
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/chef/resource/remote_file.rb', line 119 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.
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/chef/resource/remote_file.rb', line 48 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)
79 80 81 82 |
# File 'lib/chef/resource/remote_file.rb', line 79 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
111 112 113 114 115 116 117 |
# File 'lib/chef/resource/remote_file.rb', line 111 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 |