terrafying 1.6.4 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/terrafying/aws.rb +4 -0
- data/lib/terrafying/cli.rb +3 -0
- data/lib/terrafying/generator.rb +80 -9
- data/lib/terrafying/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a509b0bbe3300b3eaae6b0e96b76c06324665436ee34db2ab774b03fb1c98d8c
|
4
|
+
data.tar.gz: 9ced8e28714340b035ff5c45073e6a6f6ec37882dec03ee3b423774f84e73de5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40e724f5449740072f33cad7607468c622fab5960297da09802455fbd0b767a86bb0e759267bbd4c9ff47a2961175de26931fb6bf8e78361201dedbc12c14b31
|
7
|
+
data.tar.gz: 21ea84b4da168023f1e8c588cb8f8d768e4f704917ccff33c497f4e883e4deddeb58a2bbf4f6f4ed096af18a7e9bd84bbf0b77a54323201128f8a2385e03ecfe
|
data/lib/terrafying/aws.rb
CHANGED
@@ -40,6 +40,10 @@ module Terrafying
|
|
40
40
|
@account_id_cache ||= @sts_client.get_caller_identity.account
|
41
41
|
end
|
42
42
|
|
43
|
+
def all_regions
|
44
|
+
@all_regions ||= @ec2_client.describe_regions.regions.map(&:region_name)
|
45
|
+
end
|
46
|
+
|
43
47
|
def all_security_groups
|
44
48
|
@all_security_groups ||= @ec2_resource.security_groups.to_a
|
45
49
|
end
|
data/lib/terrafying/cli.rb
CHANGED
data/lib/terrafying/generator.rb
CHANGED
@@ -9,20 +9,53 @@ module Terrafying
|
|
9
9
|
|
10
10
|
class Ref
|
11
11
|
|
12
|
-
def initialize(
|
13
|
-
|
12
|
+
def initialize(
|
13
|
+
kind: :resource,
|
14
|
+
type: "",
|
15
|
+
name:,
|
16
|
+
key: nil,
|
17
|
+
fns: []
|
18
|
+
)
|
19
|
+
@kind = kind
|
20
|
+
@type = type
|
21
|
+
@name = name
|
22
|
+
@key = key
|
23
|
+
@fns = Array(fns)
|
24
|
+
end
|
25
|
+
|
26
|
+
def resource?
|
27
|
+
@kind == :resource
|
28
|
+
end
|
29
|
+
|
30
|
+
def fn_call(fn)
|
31
|
+
Ref.new(kind: @kind, type: @type, name: @name, key: @key, fns: Array(fn) + @fns)
|
14
32
|
end
|
15
33
|
|
16
34
|
def downcase
|
17
|
-
|
35
|
+
fn_call("lower")
|
18
36
|
end
|
19
37
|
|
20
38
|
def strip
|
21
|
-
|
39
|
+
fn_call("trimspace")
|
22
40
|
end
|
23
41
|
|
24
42
|
def to_s
|
25
|
-
"
|
43
|
+
closing_parens = ")" * @fns.count
|
44
|
+
calls = @fns.reduce("") { |m, v| m << "#{v}(" }
|
45
|
+
|
46
|
+
type = @type
|
47
|
+
if ! resource?
|
48
|
+
type = [@kind.to_s, @type]
|
49
|
+
end
|
50
|
+
|
51
|
+
key = @key
|
52
|
+
if resource? && key == nil
|
53
|
+
key = "id"
|
54
|
+
end
|
55
|
+
|
56
|
+
var = [type, @name, key].flatten.compact.reject { |s| s.empty? }.join('.')
|
57
|
+
|
58
|
+
"${#{calls}#{var}#{closing_parens}}"
|
26
59
|
end
|
27
60
|
|
28
61
|
def to_str
|
@@ -37,6 +70,17 @@ module Terrafying
|
|
37
70
|
self.to_s == other.to_s
|
38
71
|
end
|
39
72
|
|
73
|
+
def [](key)
|
74
|
+
new_key = [@key, key].compact.join('.')
|
75
|
+
|
76
|
+
Ref.new(kind: @kind, type: @type, name: @name, key: new_key, fns: @fns)
|
77
|
+
end
|
78
|
+
|
79
|
+
def []=(k, v)
|
80
|
+
raise "You can't set a value this way"
|
81
|
+
end
|
82
|
+
|
83
|
+
|
40
84
|
end
|
41
85
|
|
42
86
|
class Context
|
@@ -47,6 +91,12 @@ module Terrafying
|
|
47
91
|
aws: { region: REGION }
|
48
92
|
}
|
49
93
|
|
94
|
+
def self.bundle(&block)
|
95
|
+
ctx = Context.new
|
96
|
+
ctx.instance_eval(&block)
|
97
|
+
ctx
|
98
|
+
end
|
99
|
+
|
50
100
|
attr_reader :output
|
51
101
|
|
52
102
|
def initialize
|
@@ -79,7 +129,7 @@ module Terrafying
|
|
79
129
|
|
80
130
|
raise "Data already exists #{type.to_s}.#{name.to_s}" if @output["data"][type.to_s].has_key? name.to_s
|
81
131
|
@output["data"][type.to_s][name.to_s] = spec
|
82
|
-
|
132
|
+
Ref.new(kind: :data, type: type, name: name)
|
83
133
|
end
|
84
134
|
|
85
135
|
def resource(type, name, attributes)
|
@@ -87,7 +137,7 @@ module Terrafying
|
|
87
137
|
|
88
138
|
raise "Resource already exists #{type.to_s}.#{name.to_s}" if @output["resource"][type.to_s].has_key? name.to_s
|
89
139
|
@output["resource"][type.to_s][name.to_s] = attributes
|
90
|
-
|
140
|
+
Ref.new(kind: :resource, type: type, name: name)
|
91
141
|
end
|
92
142
|
|
93
143
|
def template(relative_path, params = {})
|
@@ -106,8 +156,8 @@ module Terrafying
|
|
106
156
|
output_of(type, name, "id")
|
107
157
|
end
|
108
158
|
|
109
|
-
def output_of(type, name,
|
110
|
-
Ref.new(
|
159
|
+
def output_of(type, name, key)
|
160
|
+
Ref.new(kind: :resource, type: type, name: name, key: key)
|
111
161
|
end
|
112
162
|
|
113
163
|
def pretty_generate
|
@@ -175,4 +225,25 @@ module Terrafying
|
|
175
225
|
|
176
226
|
Generator = RootContext.new
|
177
227
|
|
228
|
+
module DSL
|
229
|
+
|
230
|
+
%w[
|
231
|
+
add!
|
232
|
+
aws
|
233
|
+
backend
|
234
|
+
provider
|
235
|
+
resource
|
236
|
+
data
|
237
|
+
template
|
238
|
+
tf_safe
|
239
|
+
id_of
|
240
|
+
output_of
|
241
|
+
].each { |name|
|
242
|
+
define_method(name) { |*args|
|
243
|
+
Generator.send(name, *args)
|
244
|
+
}
|
245
|
+
}
|
246
|
+
|
247
|
+
end
|
248
|
+
|
178
249
|
end
|
data/lib/terrafying/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terrafying
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- uSwitch Limited
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -274,8 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
274
274
|
- !ruby/object:Gem::Version
|
275
275
|
version: '0'
|
276
276
|
requirements: []
|
277
|
-
|
278
|
-
rubygems_version: 2.7.8
|
277
|
+
rubygems_version: 3.0.1
|
279
278
|
signing_key:
|
280
279
|
specification_version: 4
|
281
280
|
summary: No.
|