class PuppetForgeServer::Server
Public Instance Methods
announce(options, backends)
click to toggle source
# File lib/puppet_forge_server/server.rb, line 68 def announce(options, backends) options = options.clone options.default = 'default' @log.info " +- Daemonizing: #{options[:daemonize]}" @log.info " |- Port: #{options[:port]}" @log.info " |- Host: #{options[:host]}" @log.info " |- Pidfile: #{options[:pidfile]}" if options[:pidfile] @log.info " |- Server: #{options[:server]}" @log.info ' `- Backends:' backends.each do |backend| @log.info " - #{backend.inspect}" end end
build(backends, webui_root)
click to toggle source
# File lib/puppet_forge_server/server.rb, line 58 def build(backends, webui_root) Rack::Mount::RouteSet.new do |set| set.add_route PuppetForgeServer::App::Frontend.new(webui_root) set.add_route PuppetForgeServer::App::Generic.new set.add_route PuppetForgeServer::App::Version1.new(backends) set.add_route PuppetForgeServer::App::Version2.new(backends) set.add_route PuppetForgeServer::App::Version3.new(backends) end end
go(args)
click to toggle source
# File lib/puppet_forge_server/server.rb, line 24 def go(args) # Initial logger in case error occurs before logging options have been processed @log = PuppetForgeServer::Logger.get begin options = parse_options(args) @log = logging(options) configure_cache(options[:ram_cache_ttl], options[:ram_cache_size]) backends = backends(options) server = build(backends, options[:webui_root]) announce(options, backends) start(server, options) rescue PuppetForgeServer::Errors::Expected => error @log.error error end end
logging(options)
click to toggle source
# File lib/puppet_forge_server/server.rb, line 40 def logging(options) if options[:log_dir] FileUtils.mkdir_p options[:log_dir] server_loggers = [File.join(options[:log_dir], 'server.log')] access_loggers = [File.join(options[:log_dir], 'access.log')] if options[:debug] server_loggers << STDERR access_loggers << STDERR end PuppetForgeServer::Logger.set({:server => server_loggers, :access => access_loggers}) end if options[:debug] PuppetForgeServer::Logger.get(:server).level = ::Logger::DEBUG PuppetForgeServer::Logger.get(:access).level = ::Logger::DEBUG end PuppetForgeServer::Logger.get end
start(server, options)
click to toggle source
# File lib/puppet_forge_server/server.rb, line 82 def start(server, options) FileUtils.mkdir_p File.dirname(options[:pidfile]) if options[:pidfile] Rack::Server.start( :app => server, :Host => options[:host], :Port => options[:port], :server => options[:server], :daemonize => options[:daemonize], :pid => options[:pidfile] ) end
Private Instance Methods
backends(options)
click to toggle source
# File lib/puppet_forge_server/server.rb, line 95 def backends(options) # Add directory backend for serving cached modules in case proxy flips over backends = options[:backend]['Proxy'] && ! options[:backend]['Proxy'].empty? ? [PuppetForgeServer::Backends.const_get('Directory').new(options[:cache_basedir], true)] : [] backends << options[:backend].map do |type, typed_backends| typed_backends.map do |url| case type when 'Proxy' @log.info "Detecting API version for #{url}..." PuppetForgeServer::Backends.const_get("#{type}V#{get_api_version(url)}").new(url.chomp('/'), options[:cache_basedir]) else PuppetForgeServer::Backends.const_get(type).new(url) end end end backends.flatten.sort_by { |backend| backend.PRIORITY } end