roadworker 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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