yutani 0.1.19 → 0.1.20

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: 19392ae5e18da8ace5f0da1b75df60195b02344e
4
- data.tar.gz: 58d4d3605b5364954891c45c7bd6b4db756e248d
3
+ metadata.gz: e4fa37a2e778f35ef0e294cac1ad3690ad0ad45a
4
+ data.tar.gz: a67ca09140825e7fe8278bed7fa53695399b1331
5
5
  SHA512:
6
- metadata.gz: 192cea6e367fbb41488479646ae933eb7931825566adb7ec9b654e4f40f0c045f6093f3068d597cd4ba4bd7b8949c0b691f5d0aaf2b56e4ef1dd2b4c287269a4
7
- data.tar.gz: 8154a43329154a3466949852de0ba4d7bc20f6ad3fe79f7a248d34989ac5a889bd1789fe638299a5523fb9dc1f5b6802bc49b1c5b29983148cdc925dcce176ef
6
+ metadata.gz: 984fcf53399b10e98854f0b5f2c9b452841dcd76710fd08db36d94594fdaaa81fc8062f07cf4ea1f7a2d0b7df9f9b5f715c314af38ad52786c3027545ec2d5f3
7
+ data.tar.gz: c39349aaf5d39a62f4514fd055917dab14edf2ce92cced5c2395e3c3ab26ebc887d83c6e167d623ec917c664b463b92732cbc6162471d4d9e7210f290769916a
data/lib/yutani.rb CHANGED
@@ -9,6 +9,7 @@ require 'yutani/hiera'
9
9
  require 'yutani/cli'
10
10
  require 'yutani/stack'
11
11
  require 'yutani/resource'
12
+ require 'yutani/data'
12
13
  require 'yutani/remote_config'
13
14
  require 'yutani/provider'
14
15
  require 'yutani/template'
@@ -0,0 +1,60 @@
1
+ module Yutani
2
+ class Data
3
+ include Hiera
4
+
5
+ attr_accessor :data_type, :namespace, :fields
6
+
7
+ def initialize(data_type, *namespace, &block)
8
+ @data_type = data_type
9
+ @namespace = namespace
10
+ @fields = {}
11
+
12
+ Docile.dsl_eval(self, &block) if block_given?
13
+ end
14
+
15
+ def data_name
16
+ @namespace.to_underscored_string
17
+ end
18
+
19
+ def to_h
20
+ {
21
+ @data_type => {
22
+ data_name => @fields
23
+ }
24
+ }
25
+ end
26
+
27
+ def ref(resource_type, *namespace, attr)
28
+ "${%s}" % [resource_type, namespace.to_underscored_string, attr].
29
+ join('.')
30
+ end
31
+
32
+ def template(path, **kv)
33
+ Template.new(kv).render(path)
34
+ end
35
+
36
+ def respond_to_missing?(method_name, include_private = false)
37
+ true
38
+ end
39
+
40
+ def method_missing(name, *args, &block)
41
+ if name =~ /ref_(.*)/
42
+ # redirect ref_id, ref_name, etc, to ref()
43
+ ref(*args, $1)
44
+ elsif block_given?
45
+ # handle sub datas, like tags, listener, etc
46
+ sub = SubData.new
47
+ sub.instance_exec(&block)
48
+ @fields[name] = sub.fields
49
+ else
50
+ @fields[name] = args.first
51
+ end
52
+ end
53
+ end
54
+
55
+ class SubData < Data
56
+ def initialize
57
+ @fields = {}
58
+ end
59
+ end
60
+ end
data/lib/yutani/stack.rb CHANGED
@@ -9,6 +9,7 @@ module Yutani
9
9
 
10
10
  def initialize(*namespace, &block)
11
11
  @resources = []
12
+ @data = []
12
13
  @providers = []
13
14
  @remote_config = nil
14
15
  @outputs = {}
@@ -27,6 +28,11 @@ module Yutani
27
28
  Resource.new(resource_type, *namespace, &block)
28
29
  end
29
30
 
31
+ def data(data_type, *namespace, &block)
32
+ @data <<
33
+ Data.new(data_type, *namespace, &block)
34
+ end
35
+
30
36
  def provider(name, &block)
31
37
  @providers <<
32
38
  Provider.new(name, &block)
@@ -57,6 +63,9 @@ module Yutani
57
63
  resource: @resources.inject(DeepMergeHash.new){|resources,r|
58
64
  resources.deep_merge!(r.to_h)
59
65
  },
66
+ data: @data.inject(DeepMergeHash.new){|data,d|
67
+ data.deep_merge!(d.to_h)
68
+ },
60
69
  provider: @providers.inject(DeepMergeHash.new){|providers,r|
61
70
  providers.deep_merge(r.to_h)
62
71
  },
@@ -1,3 +1,3 @@
1
1
  module Yutani
2
- VERSION = '0.1.19'
2
+ VERSION = '0.1.20'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yutani
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.19
4
+ version: 0.1.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Louis Garman
@@ -172,6 +172,7 @@ files:
172
172
  - lib/yutani.rb
173
173
  - lib/yutani/cli.rb
174
174
  - lib/yutani/config.rb
175
+ - lib/yutani/data.rb
175
176
  - lib/yutani/hiera.rb
176
177
  - lib/yutani/provider.rb
177
178
  - lib/yutani/remote_config.rb