From de18081a35e0b16a47a704933bf4f01483caa3ce Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Fri, 17 Dec 2021 14:58:31 -0800 Subject: [PATCH] Add mappers for host and plugin manager clients --- plugins/commands/serve/mappers.rb | 2 + plugins/commands/serve/mappers/host.rb | 56 +++++++++++++++++++ .../commands/serve/mappers/plugin_manager.rb | 22 ++++++++ 3 files changed, 80 insertions(+) create mode 100644 plugins/commands/serve/mappers/host.rb create mode 100644 plugins/commands/serve/mappers/plugin_manager.rb diff --git a/plugins/commands/serve/mappers.rb b/plugins/commands/serve/mappers.rb index c723cb56a..e5bbf062c 100644 --- a/plugins/commands/serve/mappers.rb +++ b/plugins/commands/serve/mappers.rb @@ -268,9 +268,11 @@ require Vagrant.source_root.join("plugins/commands/serve/mappers/communicator.rb require Vagrant.source_root.join("plugins/commands/serve/mappers/direct.rb").to_s require Vagrant.source_root.join("plugins/commands/serve/mappers/environment.rb").to_s require Vagrant.source_root.join("plugins/commands/serve/mappers/guest.rb").to_s +require Vagrant.source_root.join("plugins/commands/serve/mappers/host.rb").to_s require Vagrant.source_root.join("plugins/commands/serve/mappers/known_types.rb").to_s require Vagrant.source_root.join("plugins/commands/serve/mappers/machine.rb").to_s require Vagrant.source_root.join("plugins/commands/serve/mappers/pathname.rb").to_s +require Vagrant.source_root.join("plugins/commands/serve/mappers/plugin_manager.rb").to_s require Vagrant.source_root.join("plugins/commands/serve/mappers/project.rb").to_s require Vagrant.source_root.join("plugins/commands/serve/mappers/state_bag.rb").to_s require Vagrant.source_root.join("plugins/commands/serve/mappers/synced_folder.rb").to_s diff --git a/plugins/commands/serve/mappers/host.rb b/plugins/commands/serve/mappers/host.rb new file mode 100644 index 000000000..3e67bc10b --- /dev/null +++ b/plugins/commands/serve/mappers/host.rb @@ -0,0 +1,56 @@ +module VagrantPlugins + module CommandServe + class Mappers + class HostProtoFromSpec < Mapper + def initialize + super( + inputs: [Input.new(type: SDK::FuncSpec::Value) { |arg| + arg.type == "hashicorp.vagrant.sdk.Args.Host" && + !arg&.value&.value.nil? + } + ], + output: SDK::Args::Host, + func: method(:converter) + ) + end + + def converter(fv) + SDK::Args::Host.decode(fv.value.value) + end + end + + # Build a guest client from a FuncSpec value + class HostFromSpec < Mapper + def initialize + inputs = [].tap do |i| + i << Input.new(type: SDK::FuncSpec::Value) { |arg| + arg.type == "hashicorp.vagrant.sdk.Args.Host" && + !arg&.value&.value.nil? + } + i << Input.new(type: Broker) + end + super(inputs: inputs, output: Client::Host, func: method(:converter)) + end + + def converter(proto, broker) + Client::Host.load(proto.value.value, broker: broker) + end + end + + # Build a guest client from a proto instance + class HostFromProto < Mapper + def initialize + inputs = [].tap do |i| + i << Input.new(type: SDK::Args::Host) + i << Input.new(type: Broker) + end + super(inputs: inputs, output: Client::Host, func: method(:converter)) + end + + def converter(proto, broker) + Client::Host.load(proto, broker: broker) + end + end + end + end +end diff --git a/plugins/commands/serve/mappers/plugin_manager.rb b/plugins/commands/serve/mappers/plugin_manager.rb new file mode 100644 index 000000000..c727938d9 --- /dev/null +++ b/plugins/commands/serve/mappers/plugin_manager.rb @@ -0,0 +1,22 @@ +module VagrantPlugins + module CommandServe + class Mappers + class PluginManagerFromProto < Mapper + def initialize + super( + inputs: [ + Input.new(type: SDK::Args::PluginManager), + Input.new(type: Broker), + ], + output: Client::PluginManager, + func: method(:converter) + ) + end + + def converter(proto, broker) + Client::PluginManager.load(proto, broker: broker) + end + end + end + end +end