Use mapper when loading funcspec arguments in services

This commit is contained in:
Chris Roberts 2021-08-26 15:03:07 -07:00 committed by Paul Hinze
parent fc88c8d580
commit ce29c48931
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0
4 changed files with 11 additions and 29 deletions

View File

@ -5,6 +5,7 @@ module VagrantPlugins
module Service
class CommandService < SDK::CommandService::Service
prepend Util::HasMapper
prepend Util::HasBroker
prepend Util::ExceptionLogger
LOGGER = Log4r::Logger.new("vagrant::command::serve::command")
@ -52,19 +53,8 @@ module VagrantPlugins
def execute(req, ctx)
ServiceInfo.with_info(ctx) do |info|
plugin_name = info.plugin_name
raw_terminal = req.spec.args.detect { |a|
a.type == "hashicorp.vagrant.sdk.Args.TerminalUI"
}&.value&.value
raw_args = req.spec.args.detect { |a|
a.type == "hashicorp.vagrant.sdk.Command.Arguments"
}&.value&.value
raw_project = req.spec.args.detect { |a|
a.type == "hashicorp.vagrant.sdk.Args.Project"
}&.value&.value
arguments = SDK::Command::Arguments.decode(raw_args)
ui_client = Client::Terminal.load(raw_terminal, broker: broker)
env_client = Client::Project.load(raw_project, broker: broker)
ui_client, env_client, arguments = mapper.funcspec_map(req.spec)
ui = Vagrant::UI::Remote.new(ui_client)
env = Vagrant::Environment.new(

View File

@ -4,6 +4,7 @@ module VagrantPlugins
module CommandServe
module Service
class GuestService < Hashicorp::Vagrant::Sdk::GuestService::Service
prepend Util::HasMapper
prepend Util::HasBroker
prepend Util::ExceptionLogger
LOGGER = Log4r::Logger.new("vagrant::command::serve::guest")
@ -29,11 +30,8 @@ module VagrantPlugins
def detect(req, ctx)
ServiceInfo.with_info(ctx) do |info|
plugin_name = info.plugin_name
raw_target = req.args.detect { |a|
a.type == "hashicorp.vagrant.sdk.Args.Target"
}&.value&.value
target = mapper.funcspec_map(req.args)
target = Client::Target.load(raw_target, broker: broker)
project = target.project
env = Vagrant::Environment.new({client: project})
machine = env.machine(target.name.to_sym, target.provider_name.to_sym)
@ -46,7 +44,7 @@ module VagrantPlugins
begin
detected = guest.detect?(machine)
rescue => err
LOGGER.debug("error detecting")
LOGGER.debug("error encountered detecting guest: #{err.class} - #{err}")
detected = false
end
LOGGER.debug("detected #{detected} for guest #{plugin_name}")

View File

@ -4,6 +4,7 @@ module VagrantPlugins
module CommandServe
module Service
class HostService < Hashicorp::Vagrant::Sdk::HostService::Service
prepend Util::HasMapper
prepend Util::HasBroker
prepend Util::ExceptionLogger
@ -110,14 +111,11 @@ module VagrantPlugins
def capability(req, ctx)
ServiceInfo.with_info(ctx) do |info|
begin
res = nil
plugin_name = info.plugin_name
n_cap = req.name
raw_terminal = req.func_args.args.detect { |a|
a.type == "hashicorp.vagrant.sdk.Args.TerminalUI"
}&.value&.value
ui_client = Client::Terminal.load(raw_terminal, broker: broker)
ui_client = mapper.funcspec_map(req.spec)
ui = Vagrant::UI::Remote.new(ui_client)
p = Vagrant::Host.new(

View File

@ -6,6 +6,7 @@ module VagrantPlugins
module CommandServe
module Service
class ProviderService < SDK::ProviderService::Service
prepend Util::HasMapper
prepend Util::HasBroker
prepend Util::ExceptionLogger
@ -36,13 +37,8 @@ module VagrantPlugins
def action_up(req, ctx)
ServiceInfo.with_info(ctx) do |info|
plugin_name = info.plugin_name
raw_terminal = req.args.detect { |a|
a.type == "hashicorp.vagrant.sdk.Args.TerminalUI"
}&.value&.value
raw_machine = req.args.detect { |a|
a.type == "hashicorp.vagrant.sdk.Args.Machine"
}&.value&.value
ui = Client::Terminal.load(raw_terminal, broker: broker)
ui, machine = mapper.funcspec_map(req.spec)
machine = Client::Machine.load(raw_machine, ui)
machine.ui.warn("hello from vagrant")
SDK::Provider::ActionResp.new(success: true)