roadworker 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +5 -2
- data/lib/roadworker/client.rb +5 -5
- data/lib/roadworker/log.rb +1 -1
- data/lib/roadworker/route53-exporter.rb +1 -0
- data/lib/roadworker/route53-wrapper.rb +25 -31
- data/lib/roadworker/version.rb +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
# Roadworker
|
2
2
|
|
3
|
-
**notice: still unstable**
|
4
|
-
|
5
3
|
Roadworker is a tool to manage Route53.
|
6
4
|
|
7
5
|
It defines the state of Route53 using DSL, and updates Route53 according to DSL.
|
8
6
|
|
7
|
+
**Notice**
|
8
|
+
|
9
|
+
* HealthCheck is not supported.
|
10
|
+
* Cannot update TTL of two or more same records (with different SetIdentifier) after creation.
|
11
|
+
|
9
12
|
## Installation
|
10
13
|
|
11
14
|
Add this line to your application's Gemfile:
|
data/lib/roadworker/client.rb
CHANGED
@@ -61,10 +61,6 @@ module Roadworker
|
|
61
61
|
end
|
62
62
|
|
63
63
|
actual.each do |keys, zone|
|
64
|
-
zone.rrsets.each do |record|
|
65
|
-
record.delete(:cascaded => true)
|
66
|
-
end
|
67
|
-
|
68
64
|
zone.delete
|
69
65
|
end
|
70
66
|
end
|
@@ -98,7 +94,11 @@ module Roadworker
|
|
98
94
|
hash = {}
|
99
95
|
|
100
96
|
collection.each do |item|
|
101
|
-
key_list = keys.map
|
97
|
+
key_list = keys.map do |k|
|
98
|
+
value = item.send(k)
|
99
|
+
(k == :name && value) ? value.downcase.gsub(/\.\Z/, '') : value
|
100
|
+
end
|
101
|
+
|
102
102
|
hash[key_list] = item
|
103
103
|
end
|
104
104
|
|
data/lib/roadworker/log.rb
CHANGED
@@ -3,7 +3,7 @@ module Roadworker
|
|
3
3
|
|
4
4
|
def log(level, message, color, log_id = nil)
|
5
5
|
log_id = yield if block_given?
|
6
|
-
message = "#{message}: #{log_id}"
|
6
|
+
message = "#{message}: #{log_id}" if log_id
|
7
7
|
message << ' (dry-run)' if @options.dry_run
|
8
8
|
@options.logger.send(level, message.send(color))
|
9
9
|
end
|
@@ -74,6 +74,10 @@ module Roadworker
|
|
74
74
|
if @options.force
|
75
75
|
log(:info, 'Delete HostedZone', :red, @hosted_zone.name)
|
76
76
|
|
77
|
+
self.rrsets.each do |record|
|
78
|
+
record.delete
|
79
|
+
end
|
80
|
+
|
77
81
|
unless @options.dry_run
|
78
82
|
@hosted_zone.delete
|
79
83
|
@options.updated = true
|
@@ -156,9 +160,9 @@ module Roadworker
|
|
156
160
|
true
|
157
161
|
elsif expected and actual
|
158
162
|
case attr
|
159
|
-
when :
|
160
|
-
expected = expected.
|
161
|
-
actual = actual.
|
163
|
+
when :dns_name
|
164
|
+
expected = expected.downcase.gsub(/\.\Z/, '')
|
165
|
+
actual = actual.downcase.gsub(/\.\Z/, '')
|
162
166
|
end
|
163
167
|
|
164
168
|
(expected == actual)
|
@@ -169,12 +173,14 @@ module Roadworker
|
|
169
173
|
end
|
170
174
|
|
171
175
|
def update(expected_record)
|
172
|
-
|
173
|
-
log_id = [
|
174
|
-
rrset_setid =
|
176
|
+
log_id_proc = proc do
|
177
|
+
log_id = [self.name, self.type].join(' ')
|
178
|
+
rrset_setid = self.set_identifier
|
175
179
|
rrset_setid ? (log_id + " (#{rrset_setid})") : log_id
|
176
180
|
end
|
177
181
|
|
182
|
+
log(:info, 'Update ResourceRecordSet', :green, &log_id_proc)
|
183
|
+
|
178
184
|
Route53Wrapper::RRSET_ATTRS.each do |attr|
|
179
185
|
expected = expected_record.send(attr)
|
180
186
|
expected = nil if expected.kind_of?(Array) && expected.empty?
|
@@ -182,27 +188,11 @@ module Roadworker
|
|
182
188
|
actual = nil if actual.kind_of?(Array) && actual.empty?
|
183
189
|
|
184
190
|
if (expected and !actual) or (!expected and actual)
|
185
|
-
log(:info, " set #{attr}=#{expected.inspect}" , :green)
|
186
|
-
log_id = [@resource_record_set.name, @resource_record_set.type].join(' ')
|
187
|
-
rrset_setid = @resource_record_set.set_identifier
|
188
|
-
rrset_setid ? (log_id + " (#{rrset_setid})") : log_id
|
189
|
-
end
|
190
|
-
|
191
|
+
log(:info, " set #{attr}=#{expected.inspect}" , :green, &log_id_proc)
|
191
192
|
self.send(:"#{attr}=", expected) unless @options.dry_run
|
192
193
|
elsif expected and actual
|
193
|
-
case attr
|
194
|
-
when :resource_records
|
195
|
-
expected = expected.sort_by {|i| i[:value] }
|
196
|
-
actual = actual.sort_by {|i| i[:value] }
|
197
|
-
end
|
198
|
-
|
199
194
|
if expected != actual
|
200
|
-
log(:info, " set #{attr}=#{expected.inspect}" , :green)
|
201
|
-
log_id = [@resource_record_set.name, @resource_record_set.type].join(' ')
|
202
|
-
rrset_setid = @resource_record_set.set_identifier
|
203
|
-
rrset_setid ? (log_id + " (#{rrset_setid})") : log_id
|
204
|
-
end
|
205
|
-
|
195
|
+
log(:info, " set #{attr}=#{expected.inspect}" , :green, &log_id_proc)
|
206
196
|
self.send(:"#{attr}=", expected) unless @options.dry_run
|
207
197
|
end
|
208
198
|
end
|
@@ -214,14 +204,13 @@ module Roadworker
|
|
214
204
|
end
|
215
205
|
end
|
216
206
|
|
217
|
-
def delete
|
207
|
+
def delete
|
218
208
|
return if type =~ /\A(SOA|NS)\Z/i
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
end
|
209
|
+
|
210
|
+
log(:info, 'Delete ResourceRecordSet', :red) do
|
211
|
+
log_id = [self.name, self.type].join(' ')
|
212
|
+
rrset_setid = self.set_identifier
|
213
|
+
rrset_setid ? (log_id + " (#{rrset_setid})") : log_id
|
225
214
|
end
|
226
215
|
|
227
216
|
unless @options.dry_run
|
@@ -230,6 +219,11 @@ module Roadworker
|
|
230
219
|
end
|
231
220
|
end
|
232
221
|
|
222
|
+
def name
|
223
|
+
value = @resource_record_set.name
|
224
|
+
value ? value.gsub("\\052", '*') : value
|
225
|
+
end
|
226
|
+
|
233
227
|
def dns_name=(name)
|
234
228
|
if name
|
235
229
|
@resource_record_set.alias_target = @options.route53.dns_name_to_alias_target(name)
|
data/lib/roadworker/version.rb
CHANGED