terraforming 0.1.3 → 0.1.4

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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/lib/terraforming/cli.rb +25 -10
  4. data/lib/terraforming/resource/db_parameter_group.rb +6 -8
  5. data/lib/terraforming/resource/db_security_group.rb +6 -8
  6. data/lib/terraforming/resource/db_subnet_group.rb +6 -8
  7. data/lib/terraforming/resource/ec2.rb +6 -8
  8. data/lib/terraforming/resource/elasti_cache_cluster.rb +6 -8
  9. data/lib/terraforming/resource/elasti_cache_subnet_group.rb +6 -8
  10. data/lib/terraforming/resource/elb.rb +6 -8
  11. data/lib/terraforming/resource/iam_group.rb +6 -8
  12. data/lib/terraforming/resource/iam_group_membership.rb +6 -8
  13. data/lib/terraforming/resource/iam_group_policy.rb +6 -8
  14. data/lib/terraforming/resource/iam_instance_profile.rb +6 -8
  15. data/lib/terraforming/resource/iam_policy.rb +6 -8
  16. data/lib/terraforming/resource/iam_role.rb +6 -8
  17. data/lib/terraforming/resource/iam_role_policy.rb +6 -8
  18. data/lib/terraforming/resource/iam_user.rb +6 -8
  19. data/lib/terraforming/resource/iam_user_policy.rb +6 -8
  20. data/lib/terraforming/resource/network_acl.rb +6 -8
  21. data/lib/terraforming/resource/rds.rb +6 -8
  22. data/lib/terraforming/resource/route53_record.rb +6 -8
  23. data/lib/terraforming/resource/route53_zone.rb +6 -8
  24. data/lib/terraforming/resource/s3.rb +6 -8
  25. data/lib/terraforming/resource/security_group.rb +31 -46
  26. data/lib/terraforming/resource/subnet.rb +6 -8
  27. data/lib/terraforming/resource/vpc.rb +6 -8
  28. data/lib/terraforming/template/tf/security_group.erb +2 -2
  29. data/lib/terraforming/util.rb +0 -23
  30. data/lib/terraforming/version.rb +1 -1
  31. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f2efd2fcc749aae8e786423ae3e8d46be4cf852
4
- data.tar.gz: b99a7cfe20ed485d646fe455b1e38c225bdbbf9d
3
+ metadata.gz: e0d4e58b3e575b0651e800cad36a2fb8c58780cc
4
+ data.tar.gz: 12a4b4fb459f47b28089fcd063bad8b4e720b94f
5
5
  SHA512:
6
- metadata.gz: 1caa9dd2b3d02d284643323c9cc0c3977e7765dec2efe61b517e9da24d084313b5b20e6731d5a691cf967576a870ce41d23c57d38c0f70eb9da18a42e40a145a
7
- data.tar.gz: a369651650377159062123d710077bc9529177a110c94488d33ca41fc9dd59e55396e686de6f59b0d237479508614bfff8747a69e46bd09d12aa3135bb693d5b
6
+ metadata.gz: 0a56a65bff72645122cfd3191dd5354fb9c133528e4d3c4374e84a356ab8621bb31ec5d64d1371d8fa4294484f719f8f3981e9b6825c6f074bd0be105a861270
7
+ data.tar.gz: 347f65090624c3eac681ed58a8e66dcd0c84a4d47606811e428261449dae95232037d48e2f19db3adba69ce6e0178978dce55ac17e404a53b9a53fd8470678c3
@@ -1,3 +1,10 @@
1
+ # [v0.1.4](https://github.com/dtan4/terraforming/releases/tag/v0.1.4) (2015-08-07)
2
+
3
+ ### Fixed
4
+
5
+ - Refactor internal implements to reduce code #106
6
+ - Add tests and improvement for Security Group #105
7
+
1
8
  # [v0.1.3](https://github.com/dtan4/terraforming/releases/tag/v0.1.3) (2015-08-01)
2
9
 
3
10
  ### Fixed
@@ -126,20 +126,35 @@ module Terraforming
126
126
  private
127
127
 
128
128
  def execute(klass, options)
129
- result = if options[:tfstate]
130
- tfstate(klass, options[:merge])
131
- else
132
- klass.tf
133
- end
134
-
129
+ result = options[:tfstate] ? tfstate(klass, options[:merge]) : tf(klass)
135
130
  puts result
136
131
  end
137
132
 
138
- def tfstate(klass, tfstate_path)
139
- return klass.tfstate unless tfstate_path
133
+ def tf(klass)
134
+ klass.tf
135
+ end
140
136
 
141
- tfstate_base = JSON.parse(open(tfstate_path).read)
142
- klass.tfstate(tfstate_base: tfstate_base)
137
+ def tfstate(klass, tfstate_path)
138
+ tfstate = tfstate_path ? JSON.parse(open(tfstate_path).read) : tfstate_skeleton
139
+ tfstate["serial"] = tfstate["serial"] + 1
140
+ tfstate["modules"][0]["resources"] = tfstate["modules"][0]["resources"].merge(klass.tfstate)
141
+ JSON.pretty_generate(tfstate)
142
+ end
143
+
144
+ def tfstate_skeleton
145
+ {
146
+ "version" => 1,
147
+ "serial" => 0,
148
+ "modules" => [
149
+ {
150
+ "path" => [
151
+ "root"
152
+ ],
153
+ "outputs" => {},
154
+ "resources" => {},
155
+ }
156
+ ]
157
+ }
143
158
  end
144
159
  end
145
160
  end
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::RDS::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::RDS::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/db_parameter_group")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = db_parameter_groups.inject({}) do |result, parameter_group|
22
+ def tfstate
23
+ db_parameter_groups.inject({}) do |resources, parameter_group|
24
24
  attributes = {
25
25
  "description" => parameter_group.description,
26
26
  "family" => parameter_group.db_parameter_group_family,
@@ -28,7 +28,7 @@ module Terraforming
28
28
  "name" => parameter_group.db_parameter_group_name,
29
29
  "parameter.#" => db_parameters_in(parameter_group).length.to_s
30
30
  }
31
- result["aws_db_parameter_group.#{module_name_of(parameter_group)}"] = {
31
+ resources["aws_db_parameter_group.#{module_name_of(parameter_group)}"] = {
32
32
  "type" => "aws_db_parameter_group",
33
33
  "primary" => {
34
34
  "id" => parameter_group.db_parameter_group_name,
@@ -36,10 +36,8 @@ module Terraforming
36
36
  }
37
37
  }
38
38
 
39
- result
39
+ resources
40
40
  end
41
-
42
- generate_tfstate(resources, tfstate_base)
43
41
  end
44
42
 
45
43
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::RDS::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::RDS::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,15 +19,15 @@ module Terraforming
19
19
  apply_template(@client, "tf/db_security_group")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = db_security_groups.inject({}) do |result, security_group|
22
+ def tfstate
23
+ db_security_groups.inject({}) do |resources, security_group|
24
24
  attributes = {
25
25
  "db_subnet_group_name" => security_group.db_security_group_name,
26
26
  "id" => security_group.db_security_group_name,
27
27
  "ingress.#" => (security_group.ec2_security_groups.length + security_group.ip_ranges.length).to_s,
28
28
  "name" => security_group.db_security_group_name,
29
29
  }
30
- result["aws_db_security_group.#{module_name_of(security_group)}"] = {
30
+ resources["aws_db_security_group.#{module_name_of(security_group)}"] = {
31
31
  "type" => "aws_db_security_group",
32
32
  "primary" => {
33
33
  "id" => security_group.db_security_group_name,
@@ -35,10 +35,8 @@ module Terraforming
35
35
  }
36
36
  }
37
37
 
38
- result
38
+ resources
39
39
  end
40
-
41
- generate_tfstate(resources, tfstate_base)
42
40
  end
43
41
 
44
42
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::RDS::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::RDS::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,14 +19,14 @@ module Terraforming
19
19
  apply_template(@client, "tf/db_subnet_group")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = db_subnet_groups.inject({}) do |result, subnet_group|
22
+ def tfstate
23
+ db_subnet_groups.inject({}) do |resources, subnet_group|
24
24
  attributes = {
25
25
  "description" => subnet_group.db_subnet_group_description,
26
26
  "name" => subnet_group.db_subnet_group_name,
27
27
  "subnet_ids.#" => subnet_group.subnets.length.to_s
28
28
  }
29
- result["aws_db_subnet_group.#{module_name_of(subnet_group)}"] = {
29
+ resources["aws_db_subnet_group.#{module_name_of(subnet_group)}"] = {
30
30
  "type" => "aws_db_subnet_group",
31
31
  "primary" => {
32
32
  "id" => subnet_group.db_subnet_group_name,
@@ -34,10 +34,8 @@ module Terraforming
34
34
  }
35
35
  }
36
36
 
37
- result
37
+ resources
38
38
  end
39
-
40
- generate_tfstate(resources, tfstate_base)
41
39
  end
42
40
 
43
41
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::EC2::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::EC2::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/ec2")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = instances.inject({}) do |result, instance|
22
+ def tfstate
23
+ instances.inject({}) do |resources, instance|
24
24
  in_vpc = in_vpc?(instance)
25
25
  block_devices = block_devices_of(instance)
26
26
 
@@ -46,7 +46,7 @@ module Terraforming
46
46
 
47
47
  attributes["subnet_id"] = instance.subnet_id if in_vpc?(instance)
48
48
 
49
- result["aws_instance.#{module_name_of(instance)}"] = {
49
+ resources["aws_instance.#{module_name_of(instance)}"] = {
50
50
  "type" => "aws_instance",
51
51
  "primary" => {
52
52
  "id" => instance.instance_id,
@@ -57,10 +57,8 @@ module Terraforming
57
57
  }
58
58
  }
59
59
 
60
- result
60
+ resources
61
61
  end
62
-
63
- generate_tfstate(resources, tfstate_base)
64
62
  end
65
63
 
66
64
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::ElastiCache::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::ElastiCache::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/elasti_cache_cluster")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = cache_clusters.inject({}) do |result, cache_cluster|
22
+ def tfstate
23
+ cache_clusters.inject({}) do |resources, cache_cluster|
24
24
  attributes = {
25
25
  "cache_nodes.#" => cache_cluster.cache_nodes.length.to_s,
26
26
  "cluster_id" => cache_cluster.cache_cluster_id,
@@ -36,7 +36,7 @@ module Terraforming
36
36
  "subnet_group_name" => cache_cluster.cache_subnet_group_name,
37
37
  "tags.#" => "0",
38
38
  }
39
- result["aws_elasticache_cluster.#{cache_cluster.cache_cluster_id}"] = {
39
+ resources["aws_elasticache_cluster.#{cache_cluster.cache_cluster_id}"] = {
40
40
  "type" => "aws_elasticache_cluster",
41
41
  "primary" => {
42
42
  "id" => cache_cluster.cache_cluster_id,
@@ -44,10 +44,8 @@ module Terraforming
44
44
  }
45
45
  }
46
46
 
47
- result
47
+ resources
48
48
  end
49
-
50
- generate_tfstate(resources, tfstate_base)
51
49
  end
52
50
 
53
51
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::ElastiCache::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::ElastiCache::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,14 +19,14 @@ module Terraforming
19
19
  apply_template(@client, "tf/elasti_cache_subnet_group")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = cache_subnet_groups.inject({}) do |result, cache_subnet_group|
22
+ def tfstate
23
+ cache_subnet_groups.inject({}) do |resources, cache_subnet_group|
24
24
  attributes = {
25
25
  "description" => cache_subnet_group.cache_subnet_group_description,
26
26
  "name" => cache_subnet_group.cache_subnet_group_name,
27
27
  "subnet_ids.#" => subnet_ids_of(cache_subnet_group).length.to_s,
28
28
  }
29
- result["aws_elasticache_subnet_group.#{cache_subnet_group.cache_subnet_group_name}"] = {
29
+ resources["aws_elasticache_subnet_group.#{cache_subnet_group.cache_subnet_group_name}"] = {
30
30
  "type" => "aws_elasticache_subnet_group",
31
31
  "primary" => {
32
32
  "id" => cache_subnet_group.cache_subnet_group_name,
@@ -34,10 +34,8 @@ module Terraforming
34
34
  }
35
35
  }
36
36
 
37
- result
37
+ resources
38
38
  end
39
-
40
- generate_tfstate(resources, tfstate_base)
41
39
  end
42
40
 
43
41
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::ElasticLoadBalancing::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::ElasticLoadBalancing::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/elb")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = load_balancers.inject({}) do |result, load_balancer|
22
+ def tfstate
23
+ load_balancers.inject({}) do |resources, load_balancer|
24
24
  load_balancer_attributes = load_balancer_attributes_of(load_balancer)
25
25
  attributes = {
26
26
  "availability_zones.#" => load_balancer.availability_zones.length.to_s,
@@ -43,7 +43,7 @@ module Terraforming
43
43
  attributes.merge!(tags_attributes_of(load_balancer))
44
44
 
45
45
 
46
- result["aws_elb.#{module_name_of(load_balancer)}"] = {
46
+ resources["aws_elb.#{module_name_of(load_balancer)}"] = {
47
47
  "type" => "aws_elb",
48
48
  "primary" => {
49
49
  "id" => load_balancer.load_balancer_name,
@@ -51,10 +51,8 @@ module Terraforming
51
51
  }
52
52
  }
53
53
 
54
- result
54
+ resources
55
55
  end
56
-
57
- generate_tfstate(resources, tfstate_base)
58
56
  end
59
57
 
60
58
  def healthcheck_attributes_of(elb)
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_group")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_groups.inject({}) do |result, group|
22
+ def tfstate
23
+ iam_groups.inject({}) do |resources, group|
24
24
  attributes = {
25
25
  "arn"=> group.arn,
26
26
  "id" => group.group_name,
@@ -28,7 +28,7 @@ module Terraforming
28
28
  "path" => group.path,
29
29
  "unique_id" => group.group_id,
30
30
  }
31
- result["aws_iam_group.#{group.group_name}"] = {
31
+ resources["aws_iam_group.#{group.group_name}"] = {
32
32
  "type" => "aws_iam_group",
33
33
  "primary" => {
34
34
  "id" => group.group_name,
@@ -36,10 +36,8 @@ module Terraforming
36
36
  }
37
37
  }
38
38
 
39
- result
39
+ resources
40
40
  end
41
-
42
- generate_tfstate(resources, tfstate_base)
43
41
  end
44
42
 
45
43
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_group_membership")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_groups.inject({}) do |result, group|
22
+ def tfstate
23
+ iam_groups.inject({}) do |resources, group|
24
24
  membership_name = membership_name_of(group)
25
25
 
26
26
  attributes = {
@@ -29,7 +29,7 @@ module Terraforming
29
29
  "name" => membership_name,
30
30
  "users.#" => group_members_of(group).length.to_s,
31
31
  }
32
- result["aws_iam_group_membership.#{group.group_name}"] = {
32
+ resources["aws_iam_group_membership.#{group.group_name}"] = {
33
33
  "type" => "aws_iam_group_membership",
34
34
  "primary" => {
35
35
  "id" => membership_name,
@@ -37,10 +37,8 @@ module Terraforming
37
37
  }
38
38
  }
39
39
 
40
- result
40
+ resources
41
41
  end
42
-
43
- generate_tfstate(resources, tfstate_base)
44
42
  end
45
43
 
46
44
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,15 +19,15 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_group_policy")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_group_policies.inject({}) do |result, policy|
22
+ def tfstate
23
+ iam_group_policies.inject({}) do |resources, policy|
24
24
  attributes = {
25
25
  "group" => policy.group_name,
26
26
  "id" => iam_group_policy_id_of(policy),
27
27
  "name" => policy.policy_name,
28
28
  "policy" => prettify_policy(policy.policy_document, true)
29
29
  }
30
- result["aws_iam_group_policy.#{policy.policy_name}"] = {
30
+ resources["aws_iam_group_policy.#{policy.policy_name}"] = {
31
31
  "type" => "aws_iam_group_policy",
32
32
  "primary" => {
33
33
  "id" => iam_group_policy_id_of(policy),
@@ -35,10 +35,8 @@ module Terraforming
35
35
  }
36
36
  }
37
37
 
38
- result
38
+ resources
39
39
  end
40
-
41
- generate_tfstate(resources, tfstate_base)
42
40
  end
43
41
 
44
42
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_instance_profile")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_instance_profiles.inject({}) do |result, profile|
22
+ def tfstate
23
+ iam_instance_profiles.inject({}) do |resources, profile|
24
24
  attributes = {
25
25
  "arn" => profile.arn,
26
26
  "id" => profile.instance_profile_name,
@@ -28,7 +28,7 @@ module Terraforming
28
28
  "path" => profile.path,
29
29
  "roles.#" => profile.roles.length.to_s,
30
30
  }
31
- result["aws_iam_instance_profile.#{profile.instance_profile_name}"] = {
31
+ resources["aws_iam_instance_profile.#{profile.instance_profile_name}"] = {
32
32
  "type" => "aws_iam_instance_profile",
33
33
  "primary" => {
34
34
  "id" => profile.instance_profile_name,
@@ -36,10 +36,8 @@ module Terraforming
36
36
  }
37
37
  }
38
38
 
39
- result
39
+ resources
40
40
  end
41
-
42
- generate_tfstate(resources, tfstate_base)
43
41
  end
44
42
 
45
43
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_policy")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_policies.inject({}) do |result, policy|
22
+ def tfstate
23
+ iam_policies.inject({}) do |resources, policy|
24
24
  version = iam_policy_version_of(policy)
25
25
  attributes = {
26
26
  "id" => policy.arn,
@@ -28,7 +28,7 @@ module Terraforming
28
28
  "path" => policy.path,
29
29
  "policy" => prettify_policy(version.document, true),
30
30
  }
31
- result["aws_iam_policy.#{policy.policy_name}"] = {
31
+ resources["aws_iam_policy.#{policy.policy_name}"] = {
32
32
  "type" => "aws_iam_policy",
33
33
  "primary" => {
34
34
  "id" => policy.arn,
@@ -36,10 +36,8 @@ module Terraforming
36
36
  }
37
37
  }
38
38
 
39
- result
39
+ resources
40
40
  end
41
-
42
- generate_tfstate(resources, tfstate_base)
43
41
  end
44
42
 
45
43
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_role")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_roles.inject({}) do |result, role|
22
+ def tfstate
23
+ iam_roles.inject({}) do |resources, role|
24
24
  attributes = {
25
25
  "arn" => role.arn,
26
26
  "assume_role_policy" => prettify_policy(role.assume_role_policy_document, true),
@@ -29,7 +29,7 @@ module Terraforming
29
29
  "path" => role.path,
30
30
  "unique_id" => role.role_id,
31
31
  }
32
- result["aws_iam_role.#{role.role_name}"] = {
32
+ resources["aws_iam_role.#{role.role_name}"] = {
33
33
  "type" => "aws_iam_role",
34
34
  "primary" => {
35
35
  "id" => role.role_name,
@@ -37,10 +37,8 @@ module Terraforming
37
37
  }
38
38
  }
39
39
 
40
- result
40
+ resources
41
41
  end
42
-
43
- generate_tfstate(resources, tfstate_base)
44
42
  end
45
43
 
46
44
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,15 +19,15 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_role_policy")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_role_policies.inject({}) do |result, policy|
22
+ def tfstate
23
+ iam_role_policies.inject({}) do |resources, policy|
24
24
  attributes = {
25
25
  "id" => iam_role_policy_id_of(policy),
26
26
  "name" => policy.policy_name,
27
27
  "policy" => prettify_policy(policy.policy_document, true),
28
28
  "role" => policy.role_name,
29
29
  }
30
- result["aws_iam_role_policy.#{policy.policy_name}"] = {
30
+ resources["aws_iam_role_policy.#{policy.policy_name}"] = {
31
31
  "type" => "aws_iam_role_policy",
32
32
  "primary" => {
33
33
  "id" => iam_role_policy_id_of(policy),
@@ -35,10 +35,8 @@ module Terraforming
35
35
  }
36
36
  }
37
37
 
38
- result
38
+ resources
39
39
  end
40
-
41
- generate_tfstate(resources, tfstate_base)
42
40
  end
43
41
 
44
42
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_user")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_users.inject({}) do |result, user|
22
+ def tfstate
23
+ iam_users.inject({}) do |resources, user|
24
24
  attributes = {
25
25
  "arn"=> user.arn,
26
26
  "id" => user.user_name,
@@ -28,7 +28,7 @@ module Terraforming
28
28
  "path" => user.path,
29
29
  "unique_id" => user.user_id,
30
30
  }
31
- result["aws_iam_user.#{user.user_name}"] = {
31
+ resources["aws_iam_user.#{user.user_name}"] = {
32
32
  "type" => "aws_iam_user",
33
33
  "primary" => {
34
34
  "id" => user.user_name,
@@ -36,10 +36,8 @@ module Terraforming
36
36
  }
37
37
  }
38
38
 
39
- result
39
+ resources
40
40
  end
41
-
42
- generate_tfstate(resources, tfstate_base)
43
41
  end
44
42
 
45
43
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::IAM::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::IAM::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,15 +19,15 @@ module Terraforming
19
19
  apply_template(@client, "tf/iam_user_policy")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = iam_user_policies.inject({}) do |result, policy|
22
+ def tfstate
23
+ iam_user_policies.inject({}) do |resources, policy|
24
24
  attributes = {
25
25
  "id" => iam_user_policy_id_of(policy),
26
26
  "name" => policy.policy_name,
27
27
  "policy" => prettify_policy(policy.policy_document, true),
28
28
  "user" => policy.user_name,
29
29
  }
30
- result["aws_iam_user_policy.#{policy.policy_name}"] = {
30
+ resources["aws_iam_user_policy.#{policy.policy_name}"] = {
31
31
  "type" => "aws_iam_user_policy",
32
32
  "primary" => {
33
33
  "id" => iam_user_policy_id_of(policy),
@@ -35,10 +35,8 @@ module Terraforming
35
35
  }
36
36
  }
37
37
 
38
- result
38
+ resources
39
39
  end
40
-
41
- generate_tfstate(resources, tfstate_base)
42
40
  end
43
41
 
44
42
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::EC2::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::EC2::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/network_acl")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = network_acls.inject({}) do |result, network_acl|
22
+ def tfstate
23
+ network_acls.inject({}) do |resources, network_acl|
24
24
  attributes = {
25
25
  "egress.#" => egresses_of(network_acl).length.to_s,
26
26
  "id" => network_acl.network_acl_id,
@@ -29,7 +29,7 @@ module Terraforming
29
29
  "tags.#" => network_acl.tags.length.to_s,
30
30
  "vpc_id" => network_acl.vpc_id,
31
31
  }
32
- result["aws_network_acl.#{module_name_of(network_acl)}"] = {
32
+ resources["aws_network_acl.#{module_name_of(network_acl)}"] = {
33
33
  "type" => "aws_network_acl",
34
34
  "primary" => {
35
35
  "id" => network_acl.network_acl_id,
@@ -37,10 +37,8 @@ module Terraforming
37
37
  }
38
38
  }
39
39
 
40
- result
40
+ resources
41
41
  end
42
-
43
- generate_tfstate(resources, tfstate_base)
44
42
  end
45
43
 
46
44
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::RDS::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::RDS::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/rds")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = db_instances.inject({}) do |result, instance|
22
+ def tfstate
23
+ db_instances.inject({}) do |resources, instance|
24
24
  attributes = {
25
25
  "address" => instance.endpoint.address,
26
26
  "allocated_storage" => instance.allocated_storage.to_s,
@@ -48,7 +48,7 @@ module Terraforming
48
48
  "username" => instance.master_username,
49
49
  "vpc_security_group_ids.#" => instance.vpc_security_groups.length.to_s,
50
50
  }
51
- result["aws_db_instance.#{module_name_of(instance)}"] = {
51
+ resources["aws_db_instance.#{module_name_of(instance)}"] = {
52
52
  "type" => "aws_db_instance",
53
53
  "primary" => {
54
54
  "id" => instance.db_instance_identifier,
@@ -56,10 +56,8 @@ module Terraforming
56
56
  }
57
57
  }
58
58
 
59
- result
59
+ resources
60
60
  end
61
-
62
- generate_tfstate(resources, tfstate_base)
63
61
  end
64
62
 
65
63
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::Route53::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::Route53::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/route53_record")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = records.inject({}) do |result, r|
22
+ def tfstate
23
+ records.inject({}) do |resources, r|
24
24
  record, zone_id = r[:record], r[:zone_id]
25
25
  record_id = record_id_of(record, zone_id)
26
26
 
@@ -37,7 +37,7 @@ module Terraforming
37
37
  attributes["weight"] = record.weight.to_s if record.weight
38
38
  attributes["set_identifier"] = record.set_identifier if record.set_identifier
39
39
 
40
- result["aws_route53_record.#{module_name_of(record)}"] = {
40
+ resources["aws_route53_record.#{module_name_of(record)}"] = {
41
41
  "type" => "aws_route53_record",
42
42
  "primary" => {
43
43
  "id" => record_id,
@@ -45,10 +45,8 @@ module Terraforming
45
45
  }
46
46
  }
47
47
 
48
- result
48
+ resources
49
49
  end
50
-
51
- generate_tfstate(resources, tfstate_base)
52
50
  end
53
51
 
54
52
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::Route53::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::Route53::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/route53_zone")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = hosted_zones.inject({}) do |result, hosted_zone|
22
+ def tfstate
23
+ hosted_zones.inject({}) do |resources, hosted_zone|
24
24
  zone_id = zone_id_of(hosted_zone)
25
25
 
26
26
  attributes = {
@@ -30,7 +30,7 @@ module Terraforming
30
30
  "tags.#" => tags_of(hosted_zone).length.to_s,
31
31
  "zone_id" => zone_id,
32
32
  }
33
- result["aws_route53_zone.#{module_name_of(hosted_zone)}"] = {
33
+ resources["aws_route53_zone.#{module_name_of(hosted_zone)}"] = {
34
34
  "type" => "aws_route53_zone",
35
35
  "primary" => {
36
36
  "id" => zone_id,
@@ -38,10 +38,8 @@ module Terraforming
38
38
  }
39
39
  }
40
40
 
41
- result
41
+ resources
42
42
  end
43
-
44
- generate_tfstate(resources, tfstate_base)
45
43
  end
46
44
 
47
45
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::S3::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::S3::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,9 +19,9 @@ module Terraforming
19
19
  apply_template(@client, "tf/s3")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = buckets.inject({}) do |result, bucket|
24
- result["aws_s3_bucket.#{module_name_of(bucket)}"] = {
22
+ def tfstate
23
+ buckets.inject({}) do |resources, bucket|
24
+ resources["aws_s3_bucket.#{module_name_of(bucket)}"] = {
25
25
  "type" => "aws_s3_bucket",
26
26
  "primary" => {
27
27
  "id" => bucket.name,
@@ -33,10 +33,8 @@ module Terraforming
33
33
  }
34
34
  }
35
35
 
36
- result
36
+ resources
37
37
  end
38
-
39
- generate_tfstate(resources, tfstate_base)
40
38
  end
41
39
 
42
40
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::EC2::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::EC2::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/security_group")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = security_groups.inject({}) do |result, security_group|
22
+ def tfstate
23
+ security_groups.inject({}) do |resources, security_group|
24
24
  attributes = {
25
25
  "description" => security_group.description,
26
26
  "id" => security_group.group_id,
@@ -33,7 +33,7 @@ module Terraforming
33
33
  attributes.merge!(egress_attributes_of(security_group))
34
34
  attributes.merge!(ingress_attributes_of(security_group))
35
35
 
36
- result["aws_security_group.#{module_name_of(security_group)}"] = {
36
+ resources["aws_security_group.#{module_name_of(security_group)}"] = {
37
37
  "type" => "aws_security_group",
38
38
  "primary" => {
39
39
  "id" => security_group.group_id,
@@ -41,18 +41,17 @@ module Terraforming
41
41
  }
42
42
  }
43
43
 
44
- result
44
+ resources
45
45
  end
46
-
47
- generate_tfstate(resources, tfstate_base)
48
46
  end
49
47
 
50
48
  private
51
49
 
52
50
  def ingress_attributes_of(security_group)
53
- attributes = { "ingress.#" => security_group.ip_permissions.length.to_s }
51
+ ingresses = dedup_permissions(security_group.ip_permissions, security_group.group_id)
52
+ attributes = { "ingress.#" => ingresses.length.to_s }
54
53
 
55
- dedup_permissions(security_group).ip_permissions.each do |permission|
54
+ ingresses.each do |permission|
56
55
  attributes.merge!(permission_attributes_of(security_group, permission, "ingress"))
57
56
  end
58
57
 
@@ -60,9 +59,10 @@ module Terraforming
60
59
  end
61
60
 
62
61
  def egress_attributes_of(security_group)
63
- attributes = { "egress.#" => security_group.ip_permissions_egress.length.to_s }
62
+ egresses = dedup_permissions(security_group.ip_permissions_egress, security_group.group_id)
63
+ attributes = { "egress.#" => egresses.length.to_s }
64
64
 
65
- dedup_permissions(security_group).ip_permissions_egress.each do |permission|
65
+ egresses.each do |permission|
66
66
  attributes.merge!(permission_attributes_of(security_group, permission, "egress"))
67
67
  end
68
68
 
@@ -101,48 +101,33 @@ module Terraforming
101
101
  attributes
102
102
  end
103
103
 
104
- def dedup_permissions(security_group)
105
- grouped_ingress = security_group.ip_permissions.group_by {|perm| [perm.ip_protocol, perm.to_port, perm.from_port]}
106
- grouped_egress = security_group.ip_permissions_egress.group_by {|perm| [perm.ip_protocol, perm.to_port, perm.from_port]}
107
-
108
- security_group.ip_permissions = []
109
- security_group.ip_permissions_egress = []
104
+ def dedup_permissions(permissions, group_id)
105
+ group_permissions(permissions).inject([]) do |result, (_, perms)|
106
+ group_ids = perms.map(&:user_id_group_pairs).flatten.map(&:group_id)
110
107
 
111
- grouped_ingress.each do |range, perms|
112
- if perms.length == 1
113
- security_group.ip_permissions << perms.first
108
+ if group_ids.length == 1 && group_ids.first == group_id
109
+ result << merge_permissions(perms)
114
110
  else
115
- g_ids = perms.map {|perm| perm.user_id_group_pairs}.flatten.map {|gp| gp.group_id}
116
- if g_ids.length == 1 && g_ids.first == security_group.group_id
117
- security_group.ip_permissions << merge_perms(perms)
118
- else
119
- security_group.ip_permissions.concat(perms)
120
- end
111
+ result.concat(perms)
121
112
  end
122
- end
123
113
 
124
- grouped_egress.each do |range, perms|
125
- if perms.length == 1
126
- security_group.ip_permissions_egress << perms.first
127
- else
128
- g_ids = perms.map {|perm| perm.user_id_group_pairs}.flatten.map {|gp| gp.group_id}
129
- if g_ids.length == 1 && g_ids.first == security_group.group_id
130
- security_group.ip_permissions_egress << merge_perms(perms)
131
- else
132
- security_group.ip_permissions_egress.concat(perms)
133
- end
134
- end
114
+ result
135
115
  end
136
- security_group
137
116
  end
138
117
 
139
- def merge_perms(permissions)
140
- master_perm = permissions.pop
141
- permissions.each do |perm|
142
- master_perm.user_id_group_pairs.concat(perm.user_id_group_pairs)
143
- master_perm.ip_ranges.concat(perm.ip_ranges)
118
+ def group_permissions(permissions)
119
+ permissions.group_by { |permission| [permission.ip_protocol, permission.to_port, permission.from_port] }
120
+ end
121
+
122
+ def merge_permissions(permissions)
123
+ master_permission = permissions.pop
124
+
125
+ permissions.each do |permission|
126
+ master_permission.user_id_group_pairs.concat(permission.user_id_group_pairs)
127
+ master_permission.ip_ranges.concat(permission.ip_ranges)
144
128
  end
145
- master_perm
129
+
130
+ master_permission
146
131
  end
147
132
 
148
133
  def permission_hashcode_of(security_group, permission)
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::EC2::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::EC2::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/subnet")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = subnets.inject({}) do |result, subnet|
22
+ def tfstate
23
+ subnets.inject({}) do |resources, subnet|
24
24
  attributes = {
25
25
  "availability_zone" => subnet.availability_zone,
26
26
  "cidr_block" => subnet.cidr_block,
@@ -29,7 +29,7 @@ module Terraforming
29
29
  "tags.#" => subnet.tags.length.to_s,
30
30
  "vpc_id" => subnet.vpc_id,
31
31
  }
32
- result["aws_subnet.#{module_name_of(subnet)}"] = {
32
+ resources["aws_subnet.#{module_name_of(subnet)}"] = {
33
33
  "type" => "aws_subnet",
34
34
  "primary" => {
35
35
  "id" => subnet.subnet_id,
@@ -37,10 +37,8 @@ module Terraforming
37
37
  }
38
38
  }
39
39
 
40
- result
40
+ resources
41
41
  end
42
-
43
- generate_tfstate(resources, tfstate_base)
44
42
  end
45
43
 
46
44
  private
@@ -7,8 +7,8 @@ module Terraforming
7
7
  self.new(client).tf
8
8
  end
9
9
 
10
- def self.tfstate(client: Aws::EC2::Client.new, tfstate_base: nil)
11
- self.new(client).tfstate(tfstate_base)
10
+ def self.tfstate(client: Aws::EC2::Client.new)
11
+ self.new(client).tfstate
12
12
  end
13
13
 
14
14
  def initialize(client)
@@ -19,8 +19,8 @@ module Terraforming
19
19
  apply_template(@client, "tf/vpc")
20
20
  end
21
21
 
22
- def tfstate(tfstate_base)
23
- resources = vpcs.inject({}) do |result, vpc|
22
+ def tfstate
23
+ vpcs.inject({}) do |resources, vpc|
24
24
  attributes = {
25
25
  "cidr_block" => vpc.cidr_block,
26
26
  "enable_dns_hostnames" => enable_dns_hostnames?(vpc).to_s,
@@ -29,7 +29,7 @@ module Terraforming
29
29
  "instance_tenancy" => vpc.instance_tenancy,
30
30
  "tags.#" => vpc.tags.length.to_s,
31
31
  }
32
- result["aws_vpc.#{module_name_of(vpc)}"] = {
32
+ resources["aws_vpc.#{module_name_of(vpc)}"] = {
33
33
  "type" => "aws_vpc",
34
34
  "primary" => {
35
35
  "id" => vpc.vpc_id,
@@ -37,10 +37,8 @@ module Terraforming
37
37
  }
38
38
  }
39
39
 
40
- result
40
+ resources
41
41
  end
42
-
43
- generate_tfstate(resources, tfstate_base)
44
42
  end
45
43
 
46
44
  private
@@ -4,7 +4,7 @@ resource "aws_security_group" "<%= module_name_of(security_group) %>" {
4
4
  description = "<%= security_group.description %>"
5
5
  vpc_id = "<%= security_group.vpc_id || '' %>"
6
6
 
7
- <% dedup_permissions(security_group).ip_permissions.each do |permission| -%>
7
+ <% dedup_permissions(security_group.ip_permissions, security_group.group_id).each do |permission| -%>
8
8
  <%- security_groups = security_groups_in(permission).reject { |group_id| group_id == security_group.group_id } -%>
9
9
  ingress {
10
10
  from_port = <%= permission.from_port || 0 %>
@@ -24,7 +24,7 @@ resource "aws_security_group" "<%= module_name_of(security_group) %>" {
24
24
 
25
25
  <% end -%>
26
26
 
27
- <% dedup_permissions(security_group).ip_permissions_egress.each do |permission| -%>
27
+ <% dedup_permissions(security_group.ip_permissions_egress, security_group.group_id).each do |permission| -%>
28
28
  egress {
29
29
  from_port = <%= permission.from_port || 0 %>
30
30
  to_port = <%= permission.to_port || 0 %>
@@ -17,13 +17,6 @@ module Terraforming
17
17
  File.join(File.expand_path(File.dirname(__FILE__)), "template", template_name) << ".erb"
18
18
  end
19
19
 
20
- def generate_tfstate(resources, tfstate_base = nil)
21
- tfstate = tfstate_base || tfstate_skeleton
22
- tfstate["serial"] = tfstate["serial"] + 1
23
- tfstate["modules"][0]["resources"] = tfstate["modules"][0]["resources"].merge(resources)
24
- JSON.pretty_generate(tfstate)
25
- end
26
-
27
20
  def prettify_policy(policy_document, breakline = false)
28
21
  json = JSON.pretty_generate(JSON.parse(CGI.unescape(policy_document)))
29
22
 
@@ -33,21 +26,5 @@ module Terraforming
33
26
  json.strip
34
27
  end
35
28
  end
36
-
37
- def tfstate_skeleton
38
- {
39
- "version" => 1,
40
- "serial" => 0,
41
- "modules" => [
42
- {
43
- "path" => [
44
- "root"
45
- ],
46
- "outputs" => {},
47
- "resources" => {},
48
- }
49
- ]
50
- }
51
- end
52
29
  end
53
30
  end
@@ -1,3 +1,3 @@
1
1
  module Terraforming
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraforming
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daisuke Fujita
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-01 00:00:00.000000000 Z
11
+ date: 2015-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -258,8 +258,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
258
258
  version: '0'
259
259
  requirements: []
260
260
  rubyforge_project:
261
- rubygems_version: 2.4.5
261
+ rubygems_version: 2.4.7
262
262
  signing_key:
263
263
  specification_version: 4
264
264
  summary: Export existing AWS resources to Terraform style (tf, tfstate)
265
265
  test_files: []
266
+ has_rdoc: