terraforming 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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: