Refactor with_plugins util
This commit is contained in:
parent
226c252099
commit
93ec8c1571
@ -33,38 +33,14 @@ module VagrantPlugins
|
||||
end
|
||||
|
||||
def with_plugin(context, plugins, broker:, &block)
|
||||
if !context.metadata["plugin_name"]
|
||||
raise KeyError,
|
||||
"plugin name not defined (metadata content: #{context.metadata.inspect})"
|
||||
end
|
||||
|
||||
info = Service::ServiceInfo.new(
|
||||
plugin_name: context.metadata["plugin_name"],
|
||||
broker: broker
|
||||
)
|
||||
if context.metadata["plugin_manager"] && info.broker
|
||||
Service::ServiceInfo.manager_tracker.activate do
|
||||
info.plugin_manager = Client::PluginManager.load(
|
||||
context.metadata["plugin_manager"],
|
||||
broker: info.broker
|
||||
)
|
||||
Vagrant.plugin("2").enable_remote_manager
|
||||
with_info(context, broker: broker) do |info|
|
||||
plugin_name = info.plugin_name
|
||||
plugin = plugins[plugin_name.to_s.to_sym].to_a.first
|
||||
if !plugin
|
||||
raise NameError, "Failed to locate plugin named #{plugin_name}"
|
||||
end
|
||||
yield plugin if block_given?
|
||||
end
|
||||
Thread.current.thread_variable_set(:service_info, info)
|
||||
return if !block_given?
|
||||
plugin_name = info.plugin_name
|
||||
plugin = plugins[plugin_name.to_s.to_sym].to_a.first
|
||||
if !plugin
|
||||
logger.debug("Failed to locate plugin for: #{plugin_name} in list: #{plugins.keys}")
|
||||
raise "Failed to locate plugin for: #{plugin_name.inspect}"
|
||||
end
|
||||
yield plugin
|
||||
ensure
|
||||
Service::ServiceInfo.manager_tracker.deactivate do
|
||||
Vagrant.plugin("2").disable_remote_manager
|
||||
end
|
||||
Thread.current.thread_variable_set(:service_info, nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user