tfw 0.1.12 → 0.1.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -4
- data/lib/tfw.rb +3 -1
- data/lib/tfw/aws_sg_workaround.rb +38 -0
- data/lib/tfw/stack_methods.rb +19 -0
- data/lib/tfw/version.rb +1 -1
- data/tfw.gemspec +1 -1
- metadata +10 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1667921d8444a91df964f9a1549bb1de15da91a8c4b725bba68d388c0c647f9
|
4
|
+
data.tar.gz: aac7e1a4de69d0a03144c0f12349efc1805039fb33bc667d7772cf38f2605776
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd9f23b7ed8d16722b51052d8127900f71a26f9c91d5ace1687212a80f6b0f6ea85afada6a9bbf263309704ecb541e032740bbbc06fd612c1d05e6134b3bf8de
|
7
|
+
data.tar.gz: '025349e20a5ead689646c6779a185cb0dc39090aca8a760b93de9bfc26b539670dbbad8bf891284bde12796a2f1c7158af20bfc1c66b3fc448f7ab5e048680c5'
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tfw (0.1.
|
5
|
-
tfdsl (= 0.1.
|
4
|
+
tfw (0.1.17)
|
5
|
+
tfdsl (= 0.1.11)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
@@ -15,9 +15,10 @@ GEM
|
|
15
15
|
term-ansicolor (~> 1.3)
|
16
16
|
thor (~> 0.19.4)
|
17
17
|
tins (~> 1.6)
|
18
|
+
deep_merge (1.2.1)
|
18
19
|
docile (1.3.1)
|
19
20
|
jaro_winkler (1.5.4)
|
20
|
-
json (2.1
|
21
|
+
json (2.3.1)
|
21
22
|
method_source (0.9.2)
|
22
23
|
minitest (5.12.2)
|
23
24
|
parallel (1.19.1)
|
@@ -43,7 +44,8 @@ GEM
|
|
43
44
|
simplecov-html (0.10.2)
|
44
45
|
term-ansicolor (1.7.1)
|
45
46
|
tins (~> 1.0)
|
46
|
-
tfdsl (0.1.
|
47
|
+
tfdsl (0.1.11)
|
48
|
+
deep_merge (~> 1.2)
|
47
49
|
thor (0.19.4)
|
48
50
|
tins (1.20.2)
|
49
51
|
unicode-display_width (1.6.1)
|
data/lib/tfw.rb
CHANGED
@@ -14,6 +14,8 @@ module TFW
|
|
14
14
|
|
15
15
|
require "#{LIB_DIR}/setters"
|
16
16
|
require "#{LIB_DIR}/module"
|
17
|
+
require "#{LIB_DIR}/stack_methods"
|
18
|
+
require "#{LIB_DIR}/aws_sg_workaround"
|
17
19
|
|
18
20
|
WORKSPACE = './.tfw'
|
19
21
|
FileUtils.mkdir_p WORKSPACE
|
@@ -92,7 +94,7 @@ module TFW
|
|
92
94
|
|
93
95
|
if as_json?
|
94
96
|
stack_file = "#{stack_file}.json"
|
95
|
-
File.write stack_file, pretty_json(stack.to_json)
|
97
|
+
File.write stack_file, pretty_json(AwsSgWorkaround.fix(stack.to_json))
|
96
98
|
else
|
97
99
|
File.write stack_file, stack
|
98
100
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TFW
|
4
|
+
# This module is a workaround the issue that when using json some fields that are optional become required
|
5
|
+
# https://github.com/hashicorp/terraform/issues/23347
|
6
|
+
module AwsSgWorkaround
|
7
|
+
module_function
|
8
|
+
|
9
|
+
def fix(stack_json)
|
10
|
+
stack = JSON.parse stack_json
|
11
|
+
return stack.to_json unless stack.key? 'resource'
|
12
|
+
|
13
|
+
r = stack['resource']
|
14
|
+
return stack.to_json unless r.key? 'aws_security_group'
|
15
|
+
|
16
|
+
asg = r['aws_security_group']
|
17
|
+
asg.each do |_, sg|
|
18
|
+
replace_and_fill sg, 'egress' if sg.key? 'egress'
|
19
|
+
replace_and_fill sg, 'ingress' if sg.key? 'ingress'
|
20
|
+
end
|
21
|
+
stack.to_json
|
22
|
+
end
|
23
|
+
|
24
|
+
def replace_and_fill(obj, key)
|
25
|
+
backup = obj[key]
|
26
|
+
fill_fields(backup)
|
27
|
+
obj[key] = [backup]
|
28
|
+
end
|
29
|
+
|
30
|
+
def fill_fields(obj)
|
31
|
+
obj['description'] = '' unless obj.key? 'description'
|
32
|
+
obj['security_groups'] = [] unless obj.key? 'security_groups'
|
33
|
+
obj['self'] = false unless obj.key? 'self'
|
34
|
+
obj['ipv6_cidr_blocks'] = [] unless obj.key? 'ipv6_cidr_blocks'
|
35
|
+
obj['prefix_list_ids'] = [] unless obj.key? 'prefix_list_ids'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module TFW
|
4
|
+
# Dynamically create stack methods
|
5
|
+
module CreateStackMethods
|
6
|
+
def create_stack_methods
|
7
|
+
stack = TFW::State.instance.stack
|
8
|
+
%w[provider variable locals tfmodule datasource resource output terraform].each do |name|
|
9
|
+
define_method(name) { |*args, &block| stack.method(name).call(*args, &block) }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# This class carries stack methods, use it through inheritance class SomeClass < StackMethods
|
15
|
+
class StackMethods
|
16
|
+
extend CreateStackMethods
|
17
|
+
create_stack_methods
|
18
|
+
end
|
19
|
+
end
|
data/lib/tfw/version.rb
CHANGED
data/tfw.gemspec
CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
36
36
|
spec.require_paths = ['lib']
|
37
37
|
|
38
|
-
spec.add_dependency 'tfdsl', '0.1.
|
38
|
+
spec.add_dependency 'tfdsl', '0.1.11'
|
39
39
|
|
40
40
|
spec.add_development_dependency 'bundler', '~> 1.17'
|
41
41
|
spec.add_development_dependency 'coveralls', '~> 0.8'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tfw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Lopo
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tfdsl
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.1.
|
19
|
+
version: 0.1.11
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.1.
|
26
|
+
version: 0.1.11
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,8 +132,10 @@ files:
|
|
132
132
|
- exe/tfw
|
133
133
|
- exe/tfw-test
|
134
134
|
- lib/tfw.rb
|
135
|
+
- lib/tfw/aws_sg_workaround.rb
|
135
136
|
- lib/tfw/module.rb
|
136
137
|
- lib/tfw/setters.rb
|
138
|
+
- lib/tfw/stack_methods.rb
|
137
139
|
- lib/tfw/state.rb
|
138
140
|
- lib/tfw/version.rb
|
139
141
|
- tfw.gemspec
|
@@ -142,7 +144,7 @@ licenses:
|
|
142
144
|
- MIT
|
143
145
|
metadata:
|
144
146
|
homepage_uri: https://github.com/tlopo-ruby/tfw
|
145
|
-
post_install_message:
|
147
|
+
post_install_message:
|
146
148
|
rdoc_options: []
|
147
149
|
require_paths:
|
148
150
|
- lib
|
@@ -157,8 +159,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
159
|
- !ruby/object:Gem::Version
|
158
160
|
version: '0'
|
159
161
|
requirements: []
|
160
|
-
rubygems_version: 3.
|
161
|
-
signing_key:
|
162
|
+
rubygems_version: 3.1.2
|
163
|
+
signing_key:
|
162
164
|
specification_version: 4
|
163
165
|
summary: Terraform Wrapper using Terraform DSL for Ruby
|
164
166
|
test_files: []
|