Implement stop on the ruby internal service

This commit is contained in:
Chris Roberts 2022-07-25 14:30:45 -07:00
parent 8c3393bd61
commit b917dc466a

View File

@ -10,6 +10,7 @@ module VagrantPlugins
module CommandServe module CommandServe
module Service module Service
class InternalService < ProtoService(Hashicorp::Vagrant::RubyVagrant::Service) class InternalService < ProtoService(Hashicorp::Vagrant::RubyVagrant::Service)
def get_plugins(req, _) def get_plugins(req, _)
plugins = [] plugins = []
plugin_manager = Vagrant::Plugin::V2::Plugin.local_manager plugin_manager = Vagrant::Plugin::V2::Plugin.local_manager
@ -42,6 +43,21 @@ module VagrantPlugins
) )
end end
def stop(_, _)
if !VagrantPlugins::CommandServe.server.nil?
logger.info("stopping the Vagrant Ruby runtime service")
# We want to hop into a separate thread and pause for a moment
# so we can send our response, then stop the server.
Thread.new do
sleep(0.05)
VagrantPlugins::CommandServe.server.stop
end
else
logger.warn("cannot stop Vagrant Ruby runtime service, not running")
end
Empty.new
end
def parse_vagrantfile(req, _) def parse_vagrantfile(req, _)
parse_item_to_proto(req.path.to_s) parse_item_to_proto(req.path.to_s)
end end