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 +4 -4
- data/lib/yutani.rb +1 -0
- data/lib/yutani/data.rb +60 -0
- data/lib/yutani/stack.rb +9 -0
- data/lib/yutani/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4fa37a2e778f35ef0e294cac1ad3690ad0ad45a
|
4
|
+
data.tar.gz: a67ca09140825e7fe8278bed7fa53695399b1331
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 984fcf53399b10e98854f0b5f2c9b452841dcd76710fd08db36d94594fdaaa81fc8062f07cf4ea1f7a2d0b7df9f9b5f715c314af38ad52786c3027545ec2d5f3
|
7
|
+
data.tar.gz: c39349aaf5d39a62f4514fd055917dab14edf2ce92cced5c2395e3c3ab26ebc887d83c6e167d623ec917c664b463b92732cbc6162471d4d9e7210f290769916a
|
data/lib/yutani.rb
CHANGED
data/lib/yutani/data.rb
ADDED
@@ -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
|
},
|
data/lib/yutani/version.rb
CHANGED
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.
|
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
|