roadworker 0.0.4 → 0.1.0
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/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