Class: PuppetForgeServer::Server

Inherits:
Object
  • Object
show all
Includes:
Utils::CacheProvider, Utils::Http, Utils::OptionParser
Defined in:
lib/puppet_forge_server/server.rb

Instance Method Summary collapse

Methods included from Utils::Http

#get_api_version

Methods included from Utils::CacheProvider

#cache_instance, #configure_cache

Methods included from Utils::OptionParser

DEFAULT_OPTIONS, #parse_options

Instance Method Details

#announce(options, backends) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/puppet_forge_server/server.rb', line 69

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) ⇒ Object



59
60
61
62
63
64
65
66
67
# File 'lib/puppet_forge_server/server.rb', line 59

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) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/puppet_forge_server/server.rb', line 25

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) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/puppet_forge_server/server.rb', line 41

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) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
# File 'lib/puppet_forge_server/server.rb', line 83

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