bolt-modules/boltlib/lib/puppet/functions/file_upload.rb in bolt-0.21.8 vs bolt-modules/boltlib/lib/puppet/functions/file_upload.rb in bolt-0.22.0
- old
+ new
@@ -1,93 +1,16 @@
# frozen_string_literal: true
-require 'bolt/error'
-
-# Uploads the given file or directory to the given set of targets and returns the result from each upload.
-# This function does nothing if the list of targets is empty.
+# This function wraps the upload_file function with a deprecation warning, for backward compatibility.
Puppet::Functions.create_function(:file_upload, Puppet::Functions::InternalFunction) do
- # Upload a file.
- # @param source A source path, either an absolute path or a modulename/filename selector for a file in
- # <moduleroot>/files.
- # @param destination An absolute path on the target(s).
- # @param targets A pattern identifying zero or more targets. See {get_targets} for accepted patterns.
- # @param options Additional options: '_catch_errors', '_run_as'.
- # @return A list of results, one entry per target.
- # @example Upload a local file to Linux targets and change owner to 'root'
- # file_upload('/var/tmp/payload.tgz', '/tmp/payload.tgz', $targets, '_run_as' => 'root')
- # @example Upload a module file to a Windows target
- # file_upload('postgres/default.conf', 'C:/ProgramData/postgres/default.conf', $target)
- dispatch :file_upload do
- scope_param
- param 'String[1]', :source
- param 'String[1]', :destination
- param 'Boltlib::TargetSpec', :targets
- optional_param 'Hash[String[1], Any]', :options
- return_type 'ResultSet'
- end
-
- # Upload a file, logging the provided description.
- # @param source A source path, either an absolute path or a modulename/filename selector for a file in
- # <moduleroot>/files.
- # @param destination An absolute path on the target(s).
- # @param targets A pattern identifying zero or more targets. See {get_targets} for accepted patterns.
- # @param description A description to be output when calling this function.
- # @param options Additional options: '_catch_errors', '_run_as'.
- # @return A list of results, one entry per target.
- # @example Upload a file
- # file_upload('/var/tmp/payload.tgz', '/tmp/payload.tgz', $targets, 'Uploading payload to unpack')
- dispatch :file_upload_with_description do
- scope_param
- param 'String[1]', :source
- param 'String[1]', :destination
- param 'Boltlib::TargetSpec', :targets
- param 'String', :description
- optional_param 'Hash[String[1], Any]', :options
- return_type 'ResultSet'
- end
-
- def file_upload(scope, source, destination, targets, options = nil)
- file_upload_with_description(scope, source, destination, targets, nil, options)
- end
-
- def file_upload_with_description(scope, source, destination, targets, description = nil, options = nil)
- options ||= {}
- options = options.merge('_description' => description) if description
-
- unless Puppet[:tasks]
- raise Puppet::ParseErrorWithIssue.from_issue_and_stack(
- Puppet::Pops::Issues::TASK_OPERATION_NOT_SUPPORTED_WHEN_COMPILING, operation: 'file_upload'
- )
- end
-
+ def file_upload(*args)
executor = Puppet.lookup(:bolt_executor) { nil }
- inventory = Puppet.lookup(:bolt_inventory) { nil }
- unless executor && inventory && Puppet.features.bolt?
- raise Puppet::ParseErrorWithIssue.from_issue_and_stack(
- Puppet::Pops::Issues::TASK_MISSING_BOLT, action: _('do file uploads')
- )
- end
+ executor&.report_function_call('file_upload')
- executor.report_function_call('file_upload')
+ file, line = Puppet::Pops::PuppetStack.top_of_stack
- found = Puppet::Parser::Files.find_file(source, scope.compiler.environment)
- unless found && Puppet::FileSystem.exist?(found)
- raise Puppet::ParseErrorWithIssue.from_issue_and_stack(
- Puppet::Pops::Issues::NO_SUCH_FILE_OR_DIRECTORY, file: source
- )
- end
+ msg = "The file_upload function is deprecated and will be removed; use upload_file instead"
+ Puppet.puppet_deprecation_warning(msg, key: 'bolt-function/file_upload', file: file, line: line)
- # Ensure that that given targets are all Target instances
- targets = inventory.get_targets(targets)
- if targets.empty?
- call_function('debug', "Simulating file upload of '#{found}' - no targets given - no action taken")
- r = Bolt::ResultSet.new([])
- else
- r = executor.file_upload(targets, found, destination, options)
- end
-
- if !r.ok && !options['_catch_errors']
- raise Bolt::RunFailure.new(r, 'upload_file', source)
- end
- r
+ call_function('upload_file', *args)
end
end