Sha256: 595944212631342266726f7e33e905599bab6787c234d31c3d7121be0d39a2f9
Contents?: true
Size: 1.26 KB
Versions: 4
Compression:
Stored size: 1.26 KB
Contents
# frozen_string_literal: true require 'bolt/task' require 'bolt/transport/base' module Bolt module Transport class Remote < Base # TODO: this should have access to inventory so target doesn't have to def initialize(executor) super() @executor = executor end def get_proxy(target) inventory = target.inventory raise "Target was created without inventory? Not get_targets?" unless inventory proxy = inventory.get_targets(target.options['run-on'] || 'localhost').first if proxy.transport == 'remote' msg = "#{proxy.name} is not a valid run-on target for #{target.name} since is also remote." raise Bolt::Error.new(msg, 'bolt/invalid-remote-target') end proxy end # Cannot batch because arugments differ def run_task(target, task, arguments, options = {}) proxy_target = get_proxy(target) transport = @executor.transport(proxy_target.transport) arguments = arguments.merge('_target' => target.to_h.reject { |_, v| v.nil? }) remote_task = task.remote_instance result = transport.run_task(proxy_target, remote_task, arguments, options) Bolt::Result.new(target, value: result.value) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
bolt-2.4.0 | lib/bolt/transport/remote.rb |
bolt-2.3.1 | lib/bolt/transport/remote.rb |
bolt-2.3.0 | lib/bolt/transport/remote.rb |
bolt-2.2.0 | lib/bolt/transport/remote.rb |