yutani 0.1.19 → 0.1.20
Sign up to get free protection for your applications and to get access to all the features.
- 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
|