vagrant-cachier-ng/lib/vagrant-cachier/action/configure_apt_proxy.rb

54 lines
1.5 KiB
Ruby
Raw Normal View History

2013-06-22 22:05:54 +00:00
require 'tempfile'
module VagrantPlugins
module Cachier
class Action
class ConfigureAptProxy
attr_reader :logger
def initialize(app, env)
@app = app
@logger = Log4r::Logger.new("vagrant::cachier::action::configure_apt_proxy")
end
def call(env)
@app.call env
proxy_config = env[:machine].config.apt_proxy
if !proxy_config.enabled?
logger.debug "apt_proxy not enabled or configured"
elsif !proxy_conf_capability?(env[:machine])
env[:ui].info "Skipping Apt proxy config as the machine does not support it"
else
env[:ui].info "Configuring proxy for Apt..."
write_apt_proxy_conf(env[:machine], proxy_config)
end
end
def write_apt_proxy_conf(machine, config)
logger.debug "Configuration:\n#{config}"
temp = Tempfile.new("vagrant")
temp.binmode
temp.write(config)
temp.close
machine.communicate.tap do |comm|
comm.upload(temp.path, "/tmp/vagrant-apt-proxy-conf")
comm.sudo("cat /tmp/vagrant-apt-proxy-conf > #{proxy_conf_path(machine)}")
comm.sudo("rm /tmp/vagrant-apt-proxy-conf")
end
end
def proxy_conf_capability?(machine)
machine.guest.capability?(:apt_proxy_conf)
end
def proxy_conf_path(machine)
machine.guest.capability(:apt_proxy_conf)
end
end
end
end
end