def main
vardir = Puppet[:vardir]
confdir = Puppet[:confdir]
certname = Puppet[:certname]
require 'puppet/util/network_device/config'
devices = Puppet::Util::NetworkDevice::Config.devices
if devices.empty?
Puppet.err "No device found in #{Puppet[:deviceconfig]}"
exit(1)
end
devices.each_value do |device|
begin
Puppet.info "starting applying configuration to #{device.name} at #{device.url}"
Puppet.settings.set_value(:confdir, ::File.join(Puppet[:devicedir], device.name), :cli)
Puppet.settings.set_value(:vardir, ::File.join(Puppet[:devicedir], device.name), :cli)
Puppet.settings.set_value(:certname, device.name, :cli)
Puppet.settings.use :main, :agent, :ssl
Puppet::Util::NetworkDevice.init(device)
setup_host
require 'puppet/configurer'
configurer = Puppet::Configurer.new
report = configurer.run(:network_device => true, :pluginsync => Puppet[:pluginsync])
rescue => detail
Puppet.log_exception(detail)
ensure
Puppet.settings.set_value(:vardir, vardir, :cli)
Puppet.settings.set_value(:confdir, confdir, :cli)
Puppet.settings.set_value(:certname, certname, :cli)
Puppet::SSL::Host.reset
end
end
end