roadworker 0.5.6.beta → 0.5.6.beta2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40f0aef1281b27f381e6b60cda6e47ffa0e07026
4
- data.tar.gz: 2ab08cb9125e4dd16107e6b55b8a084ddfc633fb
3
+ metadata.gz: c374c9eb2340b97d52280b65853c864883456e33
4
+ data.tar.gz: 12cb31b18c1250f52d8a799eec0e2e3f98936ce0
5
5
  SHA512:
6
- metadata.gz: 13bdec92a634305574206353c211b92f9ea88d889820b6456cf21c3c22a8a1d1bb4f04795fd587eb9cae30d9a9363e878bd70fa3b44c2b4f1aa13d644eb4ba6d
7
- data.tar.gz: abfd581e1f6335183053bd67a410f25dd41f17a67892cc780eae2ab5379341716c14907f3cfd7e3c87a26d72737e65af98daaf6331866e6cd9694916ad03333e
6
+ metadata.gz: 6421fdd77cef322d125bad62596df0336b41028484c233e2adffe3b0f9828fd9062566635361257743c80a75f5e895d09e268408879fc4bc162244cb43fab090
7
+ data.tar.gz: 3f5fe53e3ed4a1b40e3423d7ac8c99e9de43adf3bdc63a94cf9118c579ed72fe4016824e26e5e29040c7ad133190cf89d9d6ba6d96d137840fba905810a2106e
data/README.md CHANGED
@@ -20,6 +20,7 @@ It defines the state of Route53 using DSL, and updates Route53 according to DSL.
20
20
  * Disable HealthCheck GC (pass `--health-check-gc` option if enable)
21
21
  * Support Calculated Health Checks
22
22
  * Support New Health Check attributes
23
+ * Add template feature
23
24
 
24
25
  ## Installation
25
26
 
@@ -174,6 +175,25 @@ hosted_zone "us-east-1.my.local." do
174
175
  end
175
176
  ```
176
177
 
178
+ ### Use template
179
+
180
+ ```ruby
181
+ template('default_rrset') do
182
+ rrset context.name + '.' + context.hosted_zone_name, "A" do
183
+ ttl context.ttl
184
+ resource_records(
185
+ "127.0.0.1"
186
+ )
187
+ end
188
+ end
189
+
190
+ hosted_zone "winebarrel.jp." do
191
+ context.ttl = 100
192
+ include_template 'default_rrset', name: 'www'
193
+ include_template 'default_rrset', name: 'www2'
194
+ end
195
+ ```
196
+
177
197
  ## Test
178
198
 
179
199
  Routefile compares the results of a query to the DNS and DSL in the test mode.
@@ -6,6 +6,7 @@ require 'tempfile'
6
6
  require 'uri'
7
7
  require 'uuid'
8
8
  require 'diffy'
9
+ require 'hashie'
9
10
 
10
11
  require 'roadworker/string-ext'
11
12
  require 'roadworker/struct-ext'
@@ -14,6 +15,7 @@ require 'roadworker/route53-ext'
14
15
  require 'roadworker/version'
15
16
  require 'roadworker/log'
16
17
  require 'roadworker/utils'
18
+ require 'roadworker/template-helper'
17
19
 
18
20
  require 'roadworker/client'
19
21
  require 'roadworker/collection'
@@ -1,5 +1,6 @@
1
1
  module Roadworker
2
2
  class DSL
3
+ include Roadworker::TemplateHelper
3
4
 
4
5
  class << self
5
6
  def define(source, path, lineno = 1)
@@ -22,9 +23,19 @@ module Roadworker
22
23
  def initialize(path, &block)
23
24
  @path = path
24
25
  @result = OpenStruct.new({:hosted_zones => []})
26
+
27
+ @context = Hashie::Mash.new(
28
+ :path => path,
29
+ :templates => {}
30
+ )
31
+
25
32
  instance_eval(&block)
26
33
  end
27
34
 
35
+ def template(name, &block)
36
+ @context.templates[name.to_s] = block
37
+ end
38
+
28
39
  private
29
40
 
30
41
  def require(file)
@@ -40,14 +51,17 @@ module Roadworker
40
51
  end
41
52
 
42
53
  def hosted_zone(name, &block)
43
- @result.hosted_zones << HostedZone.new(name, [], &block).result
54
+ @result.hosted_zones << HostedZone.new(@context, name, [], &block).result
44
55
  end
45
56
 
46
57
  class HostedZone
58
+ include Roadworker::TemplateHelper
59
+
47
60
  attr_reader :result
48
61
 
49
- def initialize(name, rrsets = [], &block)
62
+ def initialize(context, name, rrsets = [], &block)
50
63
  @name = name
64
+ @context = context.merge(:hosted_zone_name => name)
51
65
 
52
66
  @result = OpenStruct.new({
53
67
  :name => name,
@@ -84,14 +98,21 @@ module Roadworker
84
98
  raise "Invalid ResourceRecordSet Name: #{rrset_name}"
85
99
  end
86
100
 
87
- @result.resource_record_sets << ResourceRecordSet.new(rrset_name, type, &block).result
101
+ @result.resource_record_sets << ResourceRecordSet.new(@context, rrset_name, type, &block).result
88
102
  end
89
103
  alias rrset resource_record_set
90
104
 
91
105
  class ResourceRecordSet
106
+ include Roadworker::TemplateHelper
107
+
92
108
  attr_reader :result
93
109
 
94
- def initialize(name, type, &block)
110
+ def initialize(context, name, type, &block)
111
+ @context = context.merge(
112
+ :rrset_name => name,
113
+ :rrset_type => type
114
+ )
115
+
95
116
  @result = OpenStruct.new({
96
117
  :name => name,
97
118
  :type => type,
@@ -0,0 +1,20 @@
1
+ module Roadworker
2
+ module TemplateHelper
3
+ def include_template(template_name, context = {})
4
+ tmplt = @context.templates[template_name.to_s]
5
+
6
+ unless tmplt
7
+ raise "Template `#{template_name}` is not defined"
8
+ end
9
+
10
+ context_orig = @context
11
+ @context = @context.merge(context)
12
+ instance_eval(&tmplt)
13
+ @context = context_orig
14
+ end
15
+
16
+ def context
17
+ @context
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module Roadworker
2
- VERSION = "0.5.6.beta"
2
+ VERSION = "0.5.6.beta2"
3
3
  end
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.5.6.beta
4
+ version: 0.5.6.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - winebarrel
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: hashie
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: bundler
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -215,7 +229,7 @@ files:
215
229
  - lib/roadworker/route53-wrapper.rb
216
230
  - lib/roadworker/string-ext.rb
217
231
  - lib/roadworker/struct-ext.rb
218
- - lib/roadworker/template_helper.rb
232
+ - lib/roadworker/template-helper.rb
219
233
  - lib/roadworker/utils.rb
220
234
  - lib/roadworker/version.rb
221
235
  homepage: http://roadworker.codenize.tools/
File without changes