roadworker 0.5.6.beta → 0.5.6.beta2

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: 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