terrafying 1.6.4 → 1.7.0
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/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.
|