roadworker 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/roadwork +35 -7
- data/lib/roadworker/client.rb +6 -1
- data/lib/roadworker/dsl-tester.rb +9 -4
- data/lib/roadworker/version.rb +1 -1
- metadata +1 -1
data/bin/roadwork
CHANGED
@@ -5,9 +5,11 @@ require 'roadworker'
|
|
5
5
|
require 'optparse'
|
6
6
|
require 'logger'
|
7
7
|
|
8
|
+
mode = nil
|
8
9
|
file = 'Routefile'
|
9
10
|
output_file = '-'
|
10
|
-
|
11
|
+
split = false
|
12
|
+
|
11
13
|
logger = Logger.new($stdout)
|
12
14
|
|
13
15
|
logger.formatter = proc {|severity, datetime, progname, msg|
|
@@ -35,6 +37,7 @@ ARGV.options do |opt|
|
|
35
37
|
opt.on('' , '--force') { options[:force] = true }
|
36
38
|
opt.on('-e', '--export') {|v| mode = :export }
|
37
39
|
opt.on('-o', '--output FILE') {|v| output_file = v }
|
40
|
+
opt.on('', '--split') {|v| split = true }
|
38
41
|
opt.on('', '--with-soa-ns') {|v| options[:with_soa_ns] = true }
|
39
42
|
opt.on('-t', '--test') {|v| mode = :test }
|
40
43
|
opt.on('' , '--no-color') { options[:color] = false }
|
@@ -67,14 +70,39 @@ begin
|
|
67
70
|
|
68
71
|
case mode
|
69
72
|
when :export
|
70
|
-
|
73
|
+
if split
|
74
|
+
logger.info('Export Route53')
|
75
|
+
|
76
|
+
output_file = 'Routefile' if output_file == '-'
|
77
|
+
requires = []
|
78
|
+
|
79
|
+
client.export do |hosted_zones, converter|
|
80
|
+
hosted_zones.each do |zone|
|
81
|
+
route_file = File.join(File.dirname(output_file), "#{zone[:name].sub(/\.\Z/, '')}.route")
|
82
|
+
requires << route_file
|
83
|
+
|
84
|
+
logger.info(" write `#{route_file}`")
|
85
|
+
open(route_file, 'wb') {|f| f.puts converter.call([zone]) }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
logger.info(" write `#{output_file}`")
|
71
90
|
|
72
|
-
|
73
|
-
|
74
|
-
|
91
|
+
open(output_file, 'wb') do |f|
|
92
|
+
requires.each do |route_file|
|
93
|
+
f.puts "require '#{File.basename route_file}'"
|
94
|
+
end
|
95
|
+
end
|
75
96
|
else
|
76
|
-
|
77
|
-
|
97
|
+
exported = client.export
|
98
|
+
|
99
|
+
if output_file == '-'
|
100
|
+
logger.info('# Export Route53')
|
101
|
+
puts client.export
|
102
|
+
else
|
103
|
+
logger.info("Export Route53 to `#{output_file}`")
|
104
|
+
open(output_file, 'wb') {|f| f.puts client.export }
|
105
|
+
end
|
78
106
|
end
|
79
107
|
when :test
|
80
108
|
# XXX:
|
data/lib/roadworker/client.rb
CHANGED
@@ -33,6 +33,7 @@ module Roadworker
|
|
33
33
|
records = fetch_records(dsl)
|
34
34
|
failures = 0
|
35
35
|
error_messages = []
|
36
|
+
warning_messages = []
|
36
37
|
|
37
38
|
records.each do |key, rrs|
|
38
39
|
errors = []
|
@@ -42,7 +43,7 @@ module Roadworker
|
|
42
43
|
|
43
44
|
log(:debug, 'Check DNS', :white, "#{name} #{type}")
|
44
45
|
|
45
|
-
response = query(name, type)
|
46
|
+
response = query(name, type, warning_messages)
|
46
47
|
|
47
48
|
unless response
|
48
49
|
failures += 1
|
@@ -77,7 +78,7 @@ module Roadworker
|
|
77
78
|
if record.dns_name
|
78
79
|
# A(Alias)
|
79
80
|
is_same = response.answer.all? {|a|
|
80
|
-
query(a.value, 'PTR').answer.all? do |ptr|
|
81
|
+
query(a.value, 'PTR', warning_messages).answer.all? do |ptr|
|
81
82
|
ptr.value =~ /\.compute\.amazonaws\.com\.\Z/
|
82
83
|
end
|
83
84
|
}
|
@@ -115,6 +116,10 @@ module Roadworker
|
|
115
116
|
log(:warn, msg, :intense_red)
|
116
117
|
end
|
117
118
|
|
119
|
+
warning_messages.each do |msg|
|
120
|
+
log(:warn, "WARNING #{msg}", :intense_yellow)
|
121
|
+
end
|
122
|
+
|
118
123
|
[records.length, failures]
|
119
124
|
end
|
120
125
|
|
@@ -151,14 +156,14 @@ module Roadworker
|
|
151
156
|
name.gsub('*', "#{ASTERISK_PREFIX}-#{rand_str}")
|
152
157
|
end
|
153
158
|
|
154
|
-
def query(name, type)
|
159
|
+
def query(name, type, warning_messages)
|
155
160
|
ctype = Net::DNS.const_get(type)
|
156
161
|
response = nil
|
157
162
|
|
158
163
|
begin
|
159
164
|
response = @resolver.query(name, ctype)
|
160
165
|
rescue => e
|
161
|
-
|
166
|
+
warning_messages << "#{name} #{type}: #{e.message}"
|
162
167
|
end
|
163
168
|
|
164
169
|
return response
|
data/lib/roadworker/version.rb
CHANGED