puppet-forge-server 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/puppet_forge_server.rb +1 -0
- data/lib/puppet_forge_server/app/version1.rb +8 -0
- data/lib/puppet_forge_server/app/version3.rb +8 -0
- data/lib/puppet_forge_server/logger.rb +56 -0
- data/lib/puppet_forge_server/server.rb +23 -14
- data/lib/puppet_forge_server/utils/option_parser.rb +20 -1
- data/lib/puppet_forge_server/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 973bfb424267e3db596e1568f4781d7ef102e46a
|
4
|
+
data.tar.gz: aaaba8e6de5e1a55e7842e92b28caab624df37c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e01143d845d1c664ff7490ac231cae20e0616de8dcad0ccd745695c04279384763433b3b998bba6546dc57e634d0dcf6f9bb98d045704f55d1f6ec982bac7a09
|
7
|
+
data.tar.gz: be411f8e681736089b3026ba66f1a7c132b75f338f8dd02fca8fa5c8c831af3a404461ef66c99ff12826c72134165fa091ce29c4c2e95e2fc06c7f8b75ce4e5c
|
data/lib/puppet_forge_server.rb
CHANGED
@@ -23,6 +23,14 @@ module PuppetForgeServer::App
|
|
23
23
|
include PuppetForgeServer::Api::V1::Modules
|
24
24
|
include PuppetForgeServer::Utils::Buffer
|
25
25
|
|
26
|
+
configure do
|
27
|
+
use ::Rack::CommonLogger, PuppetForgeServer::Logger.get(:access)
|
28
|
+
end
|
29
|
+
|
30
|
+
before {
|
31
|
+
env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
|
32
|
+
}
|
33
|
+
|
26
34
|
def initialize(backends)
|
27
35
|
super(nil)
|
28
36
|
@backends = backends
|
@@ -22,6 +22,14 @@ module PuppetForgeServer::App
|
|
22
22
|
include PuppetForgeServer::Api::V3::Modules
|
23
23
|
include PuppetForgeServer::Utils::Buffer
|
24
24
|
|
25
|
+
configure do
|
26
|
+
use ::Rack::CommonLogger, PuppetForgeServer::Logger.get(:access)
|
27
|
+
end
|
28
|
+
|
29
|
+
before {
|
30
|
+
env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
|
31
|
+
}
|
32
|
+
|
25
33
|
def initialize(backends)
|
26
34
|
super(nil)
|
27
35
|
@backends = backends
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright 2014 North Development AB
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
|
18
|
+
require 'logger'
|
19
|
+
|
20
|
+
module PuppetForgeServer
|
21
|
+
class Logger
|
22
|
+
@@DEFAULT_DESTINATION = STDERR
|
23
|
+
@@DEFAULT_DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
|
24
|
+
@static_loggers = {:server => nil, :access => nil}
|
25
|
+
|
26
|
+
def initialize(destinations = [@@DEFAULT_LOGGER])
|
27
|
+
@loggers = Array.new(destinations).flatten.map do |dest|
|
28
|
+
logger = ::Logger.new(dest)
|
29
|
+
logger.formatter = proc do |severity, datetime, progname, msg|
|
30
|
+
datetime = datetime.strftime @@DEFAULT_DATETIME_FORMAT
|
31
|
+
"[#{datetime}] #{severity} #{msg}\n"
|
32
|
+
end
|
33
|
+
logger
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def method_missing (method_name, *args, &block)
|
38
|
+
method_name = method_name == :write ? :'<<' : method_name
|
39
|
+
@loggers.each { |logger| logger.send(method_name, args.first) }
|
40
|
+
end
|
41
|
+
|
42
|
+
class << self
|
43
|
+
def get(type = :server)
|
44
|
+
set unless @static_loggers[type]
|
45
|
+
@static_loggers[type]
|
46
|
+
end
|
47
|
+
|
48
|
+
def set(loggers= {})
|
49
|
+
loggers = {:server => [@@DEFAULT_DESTINATION], :access => [@@DEFAULT_DESTINATION]}.merge(loggers)
|
50
|
+
loggers.each do |type, destinations|
|
51
|
+
@static_loggers[type] = PuppetForgeServer::Logger.new(destinations)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -21,40 +21,49 @@ module PuppetForgeServer
|
|
21
21
|
include PuppetForgeServer::Utils::OptionParser
|
22
22
|
include PuppetForgeServer::Utils::Http
|
23
23
|
|
24
|
-
def initialize(log = STDERR)
|
25
|
-
@log = log
|
26
|
-
end
|
27
|
-
|
28
24
|
def go(args)
|
29
25
|
begin
|
30
26
|
options = parse_options(args)
|
27
|
+
@log = logging(options)
|
31
28
|
backends = backends(options)
|
32
29
|
server = build(backends)
|
33
30
|
announce(options, backends)
|
34
31
|
start(server, options)
|
35
32
|
rescue PuppetForgeServer::Errors::Expected
|
36
|
-
@log.
|
33
|
+
@log.error error
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def logging(options)
|
38
|
+
if options[:log_dir]
|
39
|
+
FileUtils.mkdir_p options[:log_dir]
|
40
|
+
server_loggers = [File.join(options[:log_dir], 'server.log')]
|
41
|
+
server_loggers << STDERR if options[:debug]
|
42
|
+
access_loggers = [File.join(options[:log_dir], 'access.log')]
|
43
|
+
access_loggers << STDERR if options[:debug]
|
44
|
+
PuppetForgeServer::Logger.set({:server => server_loggers, :access => access_loggers})
|
37
45
|
end
|
46
|
+
PuppetForgeServer::Logger.get
|
38
47
|
end
|
39
48
|
|
40
49
|
def build(backends)
|
41
50
|
Rack::Mount::RouteSet.new do |set|
|
42
51
|
set.add_route PuppetForgeServer::App::Version1.new(backends)
|
43
|
-
set.add_route
|
52
|
+
set.add_route PuppetForgeServer::App::Version3.new(backends)
|
44
53
|
end
|
45
54
|
end
|
46
55
|
|
47
56
|
def announce(options, backends)
|
48
57
|
options = options.clone
|
49
58
|
options.default = 'default'
|
50
|
-
@log.
|
51
|
-
@log.
|
52
|
-
@log.
|
53
|
-
@log.
|
54
|
-
@log.
|
55
|
-
@log.
|
59
|
+
@log.info " +- Daemonizing: #{options[:daemonize]}"
|
60
|
+
@log.info " |- Port: #{options[:port]}"
|
61
|
+
@log.info " |- Host: #{options[:hostname]}"
|
62
|
+
@log.info " |- Pidfile: #{options[:pidfile]}" if options[:pidfile]
|
63
|
+
@log.info " |- Server: #{options[:server]}"
|
64
|
+
@log.info ' `- Backends:'
|
56
65
|
backends.each do |backend|
|
57
|
-
@log.
|
66
|
+
@log.info " - #{backend.inspect}"
|
58
67
|
end
|
59
68
|
end
|
60
69
|
|
@@ -76,7 +85,7 @@ module PuppetForgeServer
|
|
76
85
|
typed_backends.map do |url|
|
77
86
|
case type
|
78
87
|
when 'Proxy'
|
79
|
-
@log.
|
88
|
+
@log.info "Detecting API version for #{url}..."
|
80
89
|
PuppetForgeServer::Backends.const_get("#{type}V#{get_api_version(url)}").new(url.chomp('/'), options[:cache_basedir])
|
81
90
|
else
|
82
91
|
PuppetForgeServer::Backends.const_get(type).new(url)
|
@@ -26,6 +26,7 @@ module PuppetForgeServer::Utils
|
|
26
26
|
@@DEFAULT_PORT = 8080
|
27
27
|
@@DEFAULT_PID_FILE = File.join(Dir.tmpdir.to_s, 'puppet-forge-server', 'server.pid')
|
28
28
|
@@DEFAULT_CACHE_DIR = File.join(Dir.tmpdir.to_s, 'puppet-forge-server', 'cache')
|
29
|
+
@@DEFAULT_LOG_DIR = File.join(Dir.tmpdir.to_s, 'puppet-forge-server', 'log')
|
29
30
|
|
30
31
|
def parse_options(args)
|
31
32
|
options = {:daemonize => @@DEFAULT_DAEMONIZE, :cache_basedir => @@DEFAULT_CACHE_DIR, :port => @@DEFAULT_PORT}
|
@@ -43,7 +44,6 @@ module PuppetForgeServer::Utils
|
|
43
44
|
|
44
45
|
opts.on('-D', '--daemonize', "Run the server in the background (default: #{@@DEFAULT_DAEMONIZE})") do
|
45
46
|
options[:daemonize] = true
|
46
|
-
options[:pidfile] = @@DEFAULT_PID_FILE unless options[:pidfile]
|
47
47
|
end
|
48
48
|
|
49
49
|
opts.on('--pidfile FILE', 'Write a pidfile to this location after starting') do |pidfile|
|
@@ -61,12 +61,31 @@ module PuppetForgeServer::Utils
|
|
61
61
|
opts.on('--cache-basedir DIR', "Cache all proxies' downloaded modules under this directory (default: #{@@DEFAULT_CACHE_DIR})") do |cache_basedir|
|
62
62
|
options[:cache_basedir] = cache_basedir
|
63
63
|
end
|
64
|
+
|
65
|
+
opts.on('--log-dir DIR', "Directory containing all server logs (if daemonized default: #{@@DEFAULT_LOG_DIR})") do |log_dir|
|
66
|
+
options[:log_dir] = log_dir
|
67
|
+
end
|
68
|
+
|
69
|
+
opts.on('--debug', 'Log everything into STDERR') do
|
70
|
+
options[:debug] = true
|
71
|
+
end
|
64
72
|
end
|
65
73
|
begin
|
66
74
|
option_parser.parse(args)
|
67
75
|
rescue ::OptionParser::InvalidOption => parse_error
|
68
76
|
raise PuppetForgeServer::Errors::Expected, parse_error.message + "\n" + option_parser.help
|
69
77
|
end
|
78
|
+
|
79
|
+
# Handle option dependencies
|
80
|
+
if options[:daemonize]
|
81
|
+
options[:pidfile] = @@DEFAULT_PID_FILE unless options[:pidfile]
|
82
|
+
options[:log_dir] = @@DEFAULT_LOG_DIR unless options[:log_dir]
|
83
|
+
end
|
84
|
+
|
85
|
+
if options[:log_dir] && !options[:daemonize]
|
86
|
+
options[:debug] = true
|
87
|
+
end
|
88
|
+
|
70
89
|
return options
|
71
90
|
end
|
72
91
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-forge-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilja Bobkevic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- lib/puppet_forge_server/backends/proxy_v3.rb
|
135
135
|
- lib/puppet_forge_server/errors.rb
|
136
136
|
- lib/puppet_forge_server/http/http_client.rb
|
137
|
+
- lib/puppet_forge_server/logger.rb
|
137
138
|
- lib/puppet_forge_server/models/builder.rb
|
138
139
|
- lib/puppet_forge_server/models/metadata.rb
|
139
140
|
- lib/puppet_forge_server/patches.rb
|