roadworker 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- mode = nil
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
- exported = client.export
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
- if output_file == '-'
73
- logger.info('# Export Route53')
74
- puts client.export
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
- logger.info("Export Route53 to `#{output_file}`")
77
- open(output_file, 'wb') {|f| f.puts client.export }
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:
@@ -36,7 +36,12 @@ module Roadworker
36
36
 
37
37
  def export
38
38
  exported = AWS.memoize { @route53.export }
39
- DSL.convert(exported)
39
+
40
+ if block_given?
41
+ yield(exported, DSL.method(:convert))
42
+ else
43
+ DSL.convert(exported)
44
+ end
40
45
  end
41
46
 
42
47
  def test(file)
@@ -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
- log(:warn, "WARNING #{e.message}", :yellow, "#{name} #{type}")
166
+ warning_messages << "#{name} #{type}: #{e.message}"
162
167
  end
163
168
 
164
169
  return response
@@ -1,5 +1,5 @@
1
1
  module Roadworker
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
4
4
 
5
5
  Version = Roadworker::VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roadworker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: