48 lines
1.5 KiB
Ruby
48 lines
1.5 KiB
Ruby
require 'vagrant-hostmanager/hosts_file'
|
|
|
|
module VagrantPlugins
|
|
module HostManager
|
|
module Action
|
|
class UpdateAll
|
|
include HostsFile
|
|
|
|
def initialize(app, env)
|
|
@app = app
|
|
@machine = env[:machine]
|
|
@global_env = @machine.env
|
|
@provider = @machine.provider_name
|
|
@logger = Log4r::Logger.new('vagrant::hostmanager::update_all')
|
|
end
|
|
|
|
def call(env)
|
|
# skip if machine is already active on up action
|
|
return @app.call(env) if @machine.id && env[:machine_action] == :up
|
|
# skip if machine is not active on destroy action
|
|
return @app.call(env) if !@machine.id && env[:machine_action] == :destroy
|
|
|
|
# check config to see if the hosts file should be update automatically
|
|
return @app.call(env) unless @global_env.config_global.hostmanager.enabled?
|
|
@logger.info 'Updating /etc/hosts file automatically'
|
|
|
|
@app.call(env)
|
|
|
|
# update /etc/hosts file on active machines
|
|
env[:ui].info I18n.t('vagrant_hostmanager.action.update_guests')
|
|
@global_env.active_machines.each do |name, p|
|
|
if p == @provider
|
|
machine = @global_env.machine(name, p)
|
|
update_guest(machine)
|
|
end
|
|
end
|
|
|
|
# update /etc/hosts files on host if enabled
|
|
if @machine.config.hostmanager.manage_host?
|
|
env[:ui].info I18n.t('vagrant_hostmanager.action.update_host')
|
|
update_host
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|