tfw 0.1.12 → 0.1.17
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/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: []
|