diff --git a/lib/vagrant/plugin/remote/manager.rb b/lib/vagrant/plugin/remote/manager.rb index 4afc8dcf4..1e887a70c 100644 --- a/lib/vagrant/plugin/remote/manager.rb +++ b/lib/vagrant/plugin/remote/manager.rb @@ -10,6 +10,9 @@ module Vagrant class << self # @return [VagrantPlugins::Command::Serve::Client::PluginManager] remote manager client attr_accessor :client + + # @return [VagrantPlugins::Command::Serve::Client::CorePluginManager] remote manager client for core plugins + attr_accessor :core_client end # This wrapper class is used for encapsulating a remote plugin class. This @@ -140,6 +143,12 @@ module Vagrant self.class.client end + # @return [VagrantPlugins::Command::Serve::Client::CorePluginManager] remote core manager client + def core_plugin_manager + @logger.debug("Returning core plugin manager client #{self.class.core_client}") + self.class.core_client + end + # Synced folder plugins are registered with an integer priority, but in # remote mode this is all captured by InternalService#get_plugins and # handled on the Go sidw. Within the remote manager we return a stub diff --git a/lib/vagrant/plugin/v2/plugin.rb b/lib/vagrant/plugin/v2/plugin.rb index 943b45ea5..83b269cdf 100644 --- a/lib/vagrant/plugin/v2/plugin.rb +++ b/lib/vagrant/plugin/v2/plugin.rb @@ -35,8 +35,11 @@ module Vagrant @_remote_manager ||= Remote::Manager.new(local_manager) end - def self.enable_remote_manager(client) + def self.enable_remote_manager(client, core_client: nil) + LOGGER.debug("enablinge remote manager with client: #{client}") + LOGGER.debug("enablinge remote manager with core client: #{core_client}") Remote::Manager.client = client + Remote::Manager.core_client = core_client @manager = remote_manager end diff --git a/plugins/commands/serve/util/service_info.rb b/plugins/commands/serve/util/service_info.rb index 843983be0..f05867b2e 100644 --- a/plugins/commands/serve/util/service_info.rb +++ b/plugins/commands/serve/util/service_info.rb @@ -30,7 +30,14 @@ module VagrantPlugins context.metadata["plugin_manager"], broker: info.broker ) - Vagrant.plugin("2").enable_remote_manager(client) + core_client = nil + if context.metadata["core_plugin_manager"] + core_client = Client::CorePluginManager.load( + context.metadata["core_plugin_manager"], + broker: info.broker + ) + end + Vagrant.plugin("2").enable_remote_manager(client, core_client: core_client) end end Thread.current.thread_variable_set(:service_info, info)