roadworker 0.4.4 → 0.4.5
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.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/roadworker/dsl-converter.rb +10 -0
- data/lib/roadworker/dsl-tester.rb +0 -1
- data/lib/roadworker/dsl.rb +3 -2
- data/lib/roadworker/route53-exporter.rb +7 -0
- data/lib/roadworker/route53-ext.rb +18 -41
- data/lib/roadworker/route53-wrapper.rb +19 -7
- data/lib/roadworker/version.rb +1 -1
- metadata +10 -10
- data/lib/roadworker/net-dns-ext.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af3665677e4511d16efbe94f88b4be369f6e5cde
|
4
|
+
data.tar.gz: b61a6cf8b695aa77a9334ccb3353077f860eb3fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a214364df43143a33b4977c2f79bd348b87ea9e1f5b9198f771304ba307d2d181c1bcf390059014e889d11f6bca17ea52c69c437fa32a139abd3d29c6128642
|
7
|
+
data.tar.gz: 87707077040830d1627d45611d2b3cad50a168ce094353ab1ec9354783581c3b387ec3330d11df44f74d049659212693e59dc7083c6941fa6197921346efa078
|
data/README.md
CHANGED
@@ -65,6 +65,10 @@ hosted_zone "info.winebarrel.jp." do
|
|
65
65
|
dns_name "elb-dns-name.elb.amazonaws.com"
|
66
66
|
end
|
67
67
|
|
68
|
+
rrset "yyy.info.winebarrel.jp.", "A" do
|
69
|
+
dns_name "elb-dns-name2.elb.amazonaws.com", :evaluate_target_health => true
|
70
|
+
end
|
71
|
+
|
68
72
|
rrset "zzz.info.winebarrel.jp", "A" do
|
69
73
|
set_identifier "Primary"
|
70
74
|
failover "PRIMARY"
|
@@ -42,6 +42,16 @@ module Roadworker
|
|
42
42
|
end
|
43
43
|
|
44
44
|
"health_check #{hc_args}"
|
45
|
+
when :dns_name
|
46
|
+
if value.kind_of?(Array) and value.length > 1
|
47
|
+
dns_name_opts = value.pop
|
48
|
+
value = value.inspect.sub(/\A\[/, '').sub(/\]\Z/, '')
|
49
|
+
dns_name_opts = dns_name_opts.inspect.sub(/\A\{/, '').sub(/\}\Z/, '')
|
50
|
+
"#{key} #{value}, #{dns_name_opts}"
|
51
|
+
else
|
52
|
+
value = [value].flatten.inspect.sub(/\A\[/, '').sub(/\]\Z/, '')
|
53
|
+
"#{key} #{value}"
|
54
|
+
end
|
45
55
|
else
|
46
56
|
"#{key} #{value.inspect}"
|
47
57
|
end
|
data/lib/roadworker/dsl.rb
CHANGED
@@ -112,8 +112,9 @@ module Roadworker
|
|
112
112
|
@result.region = value
|
113
113
|
end
|
114
114
|
|
115
|
-
def dns_name(value)
|
116
|
-
|
115
|
+
def dns_name(value, options = {})
|
116
|
+
options = AWS::Route53.normalize_dns_name_options(options)
|
117
|
+
@result.dns_name = [value, options]
|
117
118
|
end
|
118
119
|
|
119
120
|
def failover(value)
|
@@ -64,6 +64,13 @@ module Roadworker
|
|
64
64
|
|
65
65
|
if (alias_target = record_h.delete(:alias_target))
|
66
66
|
record_h[:dns_name] = alias_target[:dns_name]
|
67
|
+
|
68
|
+
if alias_target[:evaluate_target_health]
|
69
|
+
record_h[:dns_name] = [
|
70
|
+
record_h[:dns_name],
|
71
|
+
{:evaluate_target_health => alias_target[:evaluate_target_health]}
|
72
|
+
]
|
73
|
+
end
|
67
74
|
end
|
68
75
|
end
|
69
76
|
end
|
@@ -1,45 +1,6 @@
|
|
1
1
|
require 'aws-sdk'
|
2
2
|
|
3
3
|
module AWS
|
4
|
-
module Core
|
5
|
-
class Client
|
6
|
-
|
7
|
-
# PTF:
|
8
|
-
class << self
|
9
|
-
alias load_api_config_orig load_api_config
|
10
|
-
|
11
|
-
def load_api_config(api_version)
|
12
|
-
yaml = load_api_config_orig(api_version)
|
13
|
-
|
14
|
-
if service_name == 'Route53'
|
15
|
-
rewrite_api(yaml)
|
16
|
-
end
|
17
|
-
|
18
|
-
return yaml
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def rewrite_api(value)
|
24
|
-
case value
|
25
|
-
when Array
|
26
|
-
value.each {|v| rewrite_api(v) }
|
27
|
-
when Hash
|
28
|
-
value.each do |k, v|
|
29
|
-
case k
|
30
|
-
when :health_check_config
|
31
|
-
v[:members][:ip_address][:required] = false
|
32
|
-
end
|
33
|
-
|
34
|
-
rewrite_api(v)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end # of class method
|
39
|
-
|
40
|
-
end # Client
|
41
|
-
end # Core
|
42
|
-
|
43
4
|
class Route53
|
44
5
|
|
45
6
|
# http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
|
@@ -59,13 +20,29 @@ module AWS
|
|
59
20
|
CF_HOSTED_ZONE_ID = 'Z2FDTNDATAQYW2'
|
60
21
|
|
61
22
|
class << self
|
62
|
-
def
|
23
|
+
def normalize_dns_name_options(src)
|
24
|
+
dst = {}
|
25
|
+
|
26
|
+
{
|
27
|
+
:evaluate_target_health => false,
|
28
|
+
}.each do |key, defalut_value|
|
29
|
+
dst[key] = src[key] || false
|
30
|
+
end
|
31
|
+
|
32
|
+
return dst
|
33
|
+
end
|
34
|
+
|
35
|
+
def dns_name_to_alias_target(name, options, hosted_zone_id, hosted_zone_name)
|
63
36
|
hosted_zone_name = hosted_zone_name.sub(/\.\Z/, '')
|
64
37
|
name = name.sub(/\.\Z/, '')
|
38
|
+
options ||= {}
|
65
39
|
|
66
40
|
if name =~ /([^.]+)\.elb\.amazonaws.com\Z/i
|
67
41
|
region = $1.downcase
|
68
|
-
elb_dns_name_to_alias_target(name, region)
|
42
|
+
alias_target = elb_dns_name_to_alias_target(name, region)
|
43
|
+
|
44
|
+
# XXX:
|
45
|
+
alias_target.merge(options)
|
69
46
|
elsif (s3_hosted_zone_id = S3_WEBSITE_ENDPOINTS[name.downcase]) and name =~ /\As3-website-([^.]+)\.amazonaws\.com\Z/i
|
70
47
|
region = $1.downcase
|
71
48
|
s3_dns_name_to_alias_target(name, region, s3_hosted_zone_id)
|
@@ -133,7 +133,8 @@ module Roadworker
|
|
133
133
|
case attribute
|
134
134
|
when :dns_name
|
135
135
|
attribute = :alias_target
|
136
|
-
|
136
|
+
dns_name, dns_name_opts = value
|
137
|
+
value = AWS::Route53.dns_name_to_alias_target(dns_name, dns_name_opts, @hosted_zone.id, @hosted_zone.name || @options.hosted_zone_name)
|
137
138
|
when :health_check
|
138
139
|
attribute = :health_check_id
|
139
140
|
value = @options.health_checks.find_or_create(value)
|
@@ -173,8 +174,8 @@ module Roadworker
|
|
173
174
|
elsif expected and actual
|
174
175
|
case attribute
|
175
176
|
when :dns_name
|
176
|
-
expected = expected.downcase.sub(/\.\Z/, '')
|
177
|
-
actual = actual.downcase.sub(/\.\Z/, '')
|
177
|
+
expected[0] = expected[0].downcase.sub(/\.\Z/, '')
|
178
|
+
actual[0] = actual[0].downcase.sub(/\.\Z/, '')
|
178
179
|
end
|
179
180
|
|
180
181
|
(expected == actual)
|
@@ -243,12 +244,23 @@ module Roadworker
|
|
243
244
|
end
|
244
245
|
|
245
246
|
def dns_name
|
246
|
-
|
247
|
+
alias_target = @resource_record_set.alias_target || {}
|
248
|
+
dns_name = alias_target[:dns_name]
|
249
|
+
|
250
|
+
if dns_name
|
251
|
+
[
|
252
|
+
dns_name,
|
253
|
+
AWS::Route53.normalize_dns_name_options(alias_target),
|
254
|
+
]
|
255
|
+
else
|
256
|
+
nil
|
257
|
+
end
|
247
258
|
end
|
248
259
|
|
249
|
-
def dns_name=(
|
250
|
-
if
|
251
|
-
|
260
|
+
def dns_name=(value)
|
261
|
+
if value
|
262
|
+
dns_name, dns_name_opts = value
|
263
|
+
@resource_record_set.alias_target = AWS::Route53.dns_name_to_alias_target(dns_name, dns_name_opts, @hosted_zone.id, @hosted_zone.name || @options.hosted_zone_name)
|
252
264
|
else
|
253
265
|
@resource_record_set.alias_target = nil
|
254
266
|
end
|
data/lib/roadworker/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roadworker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- winebarrel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - '
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.41.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - '
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.41.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: term-ansicolor
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,19 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: net-
|
42
|
+
name: net-dns2
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.8.
|
47
|
+
version: 0.8.4
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.8.
|
54
|
+
version: 0.8.4
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: uuid
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,7 +152,6 @@ files:
|
|
152
152
|
- lib/roadworker/dsl-tester.rb
|
153
153
|
- lib/roadworker/dsl.rb
|
154
154
|
- lib/roadworker/log.rb
|
155
|
-
- lib/roadworker/net-dns-ext.rb
|
156
155
|
- lib/roadworker/route53-exporter.rb
|
157
156
|
- lib/roadworker/route53-ext.rb
|
158
157
|
- lib/roadworker/route53-health-check.rb
|
@@ -185,3 +184,4 @@ signing_key:
|
|
185
184
|
specification_version: 4
|
186
185
|
summary: Roadworker is a tool to manage Route53.
|
187
186
|
test_files: []
|
187
|
+
has_rdoc:
|
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'net/dns'
|
2
|
-
require 'net/dns/rr'
|
3
|
-
|
4
|
-
module Net
|
5
|
-
module DNS
|
6
|
-
module QueryTypes
|
7
|
-
SPF = 99
|
8
|
-
end # QueryTypes
|
9
|
-
|
10
|
-
class RR
|
11
|
-
class Types
|
12
|
-
TYPES['SPF'] = 99
|
13
|
-
end # Types
|
14
|
-
|
15
|
-
class SPF < TXT
|
16
|
-
def spf
|
17
|
-
txt
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
def set_type
|
22
|
-
@type = Net::DNS::RR::Types.new("SPF")
|
23
|
-
end
|
24
|
-
end # SPF
|
25
|
-
end # RR
|
26
|
-
end # DNS
|
27
|
-
end # Net
|