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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f694d04bb0eda4bc71551dd53e709123d8d7f81
4
- data.tar.gz: 3970732f55fc1f556cd65f1393480bd996feac05
3
+ metadata.gz: af3665677e4511d16efbe94f88b4be369f6e5cde
4
+ data.tar.gz: b61a6cf8b695aa77a9334ccb3353077f860eb3fb
5
5
  SHA512:
6
- metadata.gz: c4133a0c6f348ac2dc5fbeaaf0150f446400af9c5f68ca65b4731eaf56d2d0b290c2ee40267cf0bbd77343de16742da877becdfbb3a6f981534863e49445ff97
7
- data.tar.gz: a2deb137b51610117ef0792a71d5e72ab97525f85d0a29c95f038cc2e89528b9839b700f0c84f6672048470f26896ca4c85ef72f3d9a8f930d5d44b1364fcd42
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
@@ -22,7 +22,6 @@ proc {
22
22
  }.call
23
23
 
24
24
  require 'net/dns'
25
- require 'roadworker/net-dns-ext'
26
25
 
27
26
  module Roadworker
28
27
  class DSL
@@ -112,8 +112,9 @@ module Roadworker
112
112
  @result.region = value
113
113
  end
114
114
 
115
- def dns_name(value)
116
- @result.dns_name = value
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 dns_name_to_alias_target(name, hosted_zone_id, hosted_zone_name)
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
- value = AWS::Route53.dns_name_to_alias_target(value, @hosted_zone.id, @hosted_zone.name || @options.hosted_zone_name)
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
- (@resource_record_set.alias_target || {})[:dns_name]
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=(name)
250
- if name
251
- @resource_record_set.alias_target = AWS::Route53.dns_name_to_alias_target(name, @hosted_zone.id, @hosted_zone.name || @options.hosted_zone_name)
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
@@ -1,5 +1,5 @@
1
1
  module Roadworker
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.5"
3
3
  end
4
4
 
5
5
  Version = Roadworker::VERSION
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
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-03 00:00:00.000000000 Z
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.39.0
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.39.0
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-dns
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.0
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.0
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