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.
@@ -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: