geoengineer 0.1.0 → 0.1.1

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 (91) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +5 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +5 -5
  5. data/lib/geoengineer/cli/geo_cli.rb +4 -5
  6. data/lib/geoengineer/cli/status_command.rb +7 -1
  7. data/lib/geoengineer/environment.rb +53 -51
  8. data/lib/geoengineer/project.rb +5 -24
  9. data/lib/geoengineer/resource.rb +89 -20
  10. data/lib/geoengineer/resources/aws_customer_gateway.rb +23 -0
  11. data/lib/geoengineer/resources/aws_eip.rb +43 -0
  12. data/lib/geoengineer/resources/aws_iam_group.rb +26 -0
  13. data/lib/geoengineer/resources/aws_iam_group_membership.rb +50 -0
  14. data/lib/geoengineer/resources/aws_iam_policy.rb +12 -4
  15. data/lib/geoengineer/resources/aws_iam_policy_attachment.rb +95 -0
  16. data/lib/geoengineer/resources/aws_iam_role.rb +45 -0
  17. data/lib/geoengineer/resources/aws_instance.rb +7 -4
  18. data/lib/geoengineer/resources/aws_internet_gateway.rb +23 -0
  19. data/lib/geoengineer/resources/aws_lambda_alias.rb +50 -0
  20. data/lib/geoengineer/resources/aws_lambda_event_source_mapping.rb +47 -0
  21. data/lib/geoengineer/resources/aws_lambda_function.rb +30 -0
  22. data/lib/geoengineer/resources/aws_lambda_permission.rb +74 -0
  23. data/lib/geoengineer/resources/aws_main_route_table_association.rb +51 -0
  24. data/lib/geoengineer/resources/aws_nat_gateway.rb +29 -0
  25. data/lib/geoengineer/resources/aws_network_acl.rb +38 -0
  26. data/lib/geoengineer/resources/aws_network_acl_rule.rb +50 -0
  27. data/lib/geoengineer/resources/aws_route.rb +47 -0
  28. data/lib/geoengineer/resources/aws_route53_record.rb +4 -0
  29. data/lib/geoengineer/resources/aws_route_table.rb +26 -0
  30. data/lib/geoengineer/resources/aws_route_table_association.rb +45 -0
  31. data/lib/geoengineer/resources/aws_security_group.rb +8 -5
  32. data/lib/geoengineer/resources/aws_subnet.rb +24 -0
  33. data/lib/geoengineer/resources/aws_vpc.rb +24 -0
  34. data/lib/geoengineer/resources/aws_vpc_dhcp_options.rb +29 -0
  35. data/lib/geoengineer/resources/aws_vpc_dhcp_options_association.rb +40 -0
  36. data/lib/geoengineer/resources/aws_vpc_endpoint.rb +26 -0
  37. data/lib/geoengineer/resources/aws_vpc_peering_connection.rb +29 -0
  38. data/lib/geoengineer/resources/aws_vpn_connection.rb +23 -0
  39. data/lib/geoengineer/resources/aws_vpn_connection_route.rb +35 -0
  40. data/lib/geoengineer/resources/aws_vpn_gateway.rb +22 -0
  41. data/lib/geoengineer/resources/aws_vpn_gateway_attachment.rb +41 -0
  42. data/lib/geoengineer/template.rb +20 -4
  43. data/lib/geoengineer/utils/aws_clients.rb +4 -0
  44. data/lib/geoengineer/utils/crc32.rb +61 -0
  45. data/lib/geoengineer/utils/has_attributes.rb +25 -11
  46. data/lib/geoengineer/utils/has_projects.rb +21 -0
  47. data/lib/geoengineer/utils/has_resources.rb +17 -4
  48. data/lib/geoengineer/utils/has_templates.rb +31 -0
  49. data/lib/geoengineer/utils/has_validations.rb +18 -3
  50. data/lib/geoengineer/version.rb +1 -1
  51. data/spec/environment_spec.rb +40 -19
  52. data/spec/project_spec.rb +2 -2
  53. data/spec/resource_spec.rb +87 -6
  54. data/spec/resources/aws_customer_gateway_spec.rb +24 -0
  55. data/spec/resources/aws_eip_spec.rb +29 -0
  56. data/spec/resources/aws_iam_group_membership_spec.rb +83 -0
  57. data/spec/resources/aws_iam_group_spec.rb +43 -0
  58. data/spec/resources/aws_iam_policy_attachment_spec.rb +80 -0
  59. data/spec/resources/{aws_iam_policy.rb → aws_iam_policy_spec.rb} +6 -5
  60. data/spec/resources/aws_iam_role_spec.rb +45 -0
  61. data/spec/resources/aws_internet_gateway_spec.rb +24 -0
  62. data/spec/resources/aws_lambda_alias_spec.rb +39 -0
  63. data/spec/resources/aws_lambda_event_source_mapping_spec.rb +53 -0
  64. data/spec/resources/aws_lambda_function_spec.rb +29 -0
  65. data/spec/resources/aws_lambda_permission_spec.rb +90 -0
  66. data/spec/resources/aws_main_route_table_association_spec.rb +57 -0
  67. data/spec/resources/aws_nat_gateway_spec.rb +31 -0
  68. data/spec/resources/aws_network_acl_rule_spec.rb +73 -0
  69. data/spec/resources/aws_network_acl_spec.rb +31 -0
  70. data/spec/resources/aws_route53_record_spec.rb +5 -0
  71. data/spec/resources/aws_route_spec.rb +47 -0
  72. data/spec/resources/aws_route_table_association_spec.rb +47 -0
  73. data/spec/resources/aws_route_table_spec.rb +24 -0
  74. data/spec/resources/aws_security_group_spec.rb +36 -2
  75. data/spec/resources/aws_subnet_spec.rb +24 -0
  76. data/spec/resources/aws_vpc_dhcp_options_association_spec.rb +43 -0
  77. data/spec/resources/aws_vpc_dhcp_options_spec.rb +24 -0
  78. data/spec/resources/aws_vpc_endpoint_spec.rb +41 -0
  79. data/spec/resources/aws_vpc_peering_connection_spec.rb +33 -0
  80. data/spec/resources/aws_vpc_spec.rb +24 -0
  81. data/spec/resources/aws_vpn_connection_route_spec.rb +43 -0
  82. data/spec/resources/aws_vpn_connection_spec.rb +41 -0
  83. data/spec/resources/aws_vpn_gateway_attachment_spec.rb +41 -0
  84. data/spec/resources/aws_vpn_gateway_spec.rb +39 -0
  85. data/spec/spec_helper.rb +3 -1
  86. data/spec/utils/crc32_spec.rb +14 -0
  87. data/spec/utils/has_attributes_spec.rb +22 -0
  88. data/spec/utils/has_resources_spec.rb +4 -0
  89. data/spec/utils/has_validations_spec.rb +45 -0
  90. metadata +117 -6
  91. metadata.gz.sig +1 -0
@@ -0,0 +1,33 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe("GeoEngineer::Resources::AwsVpcPeeringConnection") do
4
+ common_resource_tests(
5
+ GeoEngineer::Resources::AwsVpcPeeringConnection,
6
+ 'aws_vpc_peering_connection'
7
+ )
8
+
9
+ describe "#_fetch_remote_resources" do
10
+ let(:ec2) { AwsClients.ec2 }
11
+ before do
12
+ stub = ec2.stub_data(
13
+ :describe_vpc_peering_connections,
14
+ {
15
+ vpc_peering_connections: [
16
+ { vpc_peering_connection_id: 'name1', tags: [{ key: 'Name', value: 'one' }] },
17
+ { vpc_peering_connection_id: 'name1', tags: [{ key: 'Name', value: 'two' }] }
18
+ ]
19
+ }
20
+ )
21
+ ec2.stub_responses(:describe_vpc_peering_connections, stub)
22
+ end
23
+
24
+ after do
25
+ ec2.stub_responses(:describe_vpc_peering_connections, [])
26
+ end
27
+
28
+ it 'should create list of hashes from returned AWS SDK' do
29
+ remote_resources = GeoEngineer::Resources::AwsVpcPeeringConnection._fetch_remote_resources
30
+ expect(remote_resources.length).to eq(2)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe("GeoEngineer::Resources::AwsVpc") do
4
+ common_resource_tests(GeoEngineer::Resources::AwsVpc, 'aws_vpc')
5
+ name_tag_geo_id_tests(GeoEngineer::Resources::AwsVpc)
6
+
7
+ describe "#_fetch_remote_resources" do
8
+ it 'should create list of hashes from returned AWS SDK' do
9
+ ec2 = AwsClients.ec2
10
+ stub = ec2.stub_data(
11
+ :describe_vpcs,
12
+ {
13
+ vpcs: [
14
+ { vpc_id: 'name1', cidr_block: "10.120.0.0/24", tags: [{ key: 'Name', value: 'one' }] },
15
+ { vpc_id: 'name2', cidr_block: "10.120.1.0/24", tags: [{ key: 'Name', value: 'two' }] }
16
+ ]
17
+ }
18
+ )
19
+ ec2.stub_responses(:describe_vpcs, stub)
20
+ remote_resources = GeoEngineer::Resources::AwsVpc._fetch_remote_resources
21
+ expect(remote_resources.length).to eq(2)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,43 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe("GeoEngineer::Resources::AwsVpnConnectionRoute") do
4
+ common_resource_tests(
5
+ GeoEngineer::Resources::AwsVpnConnectionRoute,
6
+ 'aws_vpn_connection_route'
7
+ )
8
+
9
+ describe "#_fetch_remote_resources" do
10
+ let(:ec2) { AwsClients.ec2 }
11
+ before do
12
+ stub = ec2.stub_data(
13
+ :describe_vpn_connections,
14
+ {
15
+ vpn_connections: [
16
+ {
17
+ vpn_connection_id: 'name1',
18
+ customer_gateway_id: 'cg1',
19
+ tags: [{ key: 'Name', value: 'one' }],
20
+ routes: [{ destination_cidr_block: '0.0.0.0/0' }]
21
+ },
22
+ {
23
+ vpn_connection_id: 'name2',
24
+ customer_gateway_id: 'cg2',
25
+ tags: [{ key: 'Name', value: 'two' }],
26
+ routes: [{ destination_cidr_block: '0.0.0.0/0' }]
27
+ }
28
+ ]
29
+ }
30
+ )
31
+ ec2.stub_responses(:describe_vpn_connections, stub)
32
+ end
33
+
34
+ after do
35
+ ec2.stub_responses(:describe_vpn_connections, [])
36
+ end
37
+
38
+ it 'should create list of hashes from returned AWS SDK' do
39
+ remote_resources = GeoEngineer::Resources::AwsVpnConnectionRoute._fetch_remote_resources
40
+ expect(remote_resources.length).to eq(2)
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,41 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe("GeoEngineer::Resources::AwsVpnConnection") do
4
+ common_resource_tests(GeoEngineer::Resources::AwsVpnConnection, 'aws_vpn_connection')
5
+ name_tag_geo_id_tests(GeoEngineer::Resources::AwsVpnConnection)
6
+
7
+ describe "#_fetch_remote_resources" do
8
+ let(:ec2) { AwsClients.ec2 }
9
+ before do
10
+ stub = ec2.stub_data(
11
+ :describe_vpn_connections,
12
+ {
13
+ vpn_connections: [
14
+ {
15
+ vpn_connection_id: 'name1',
16
+ customer_gateway_id: 'cg1',
17
+ tags: [{ key: 'Name', value: 'one' }],
18
+ routes: [{ destination_cidr_block: '0.0.0.0/0' }]
19
+ },
20
+ {
21
+ vpn_connection_id: 'name2',
22
+ customer_gateway_id: 'cg2',
23
+ tags: [{ key: 'Name', value: 'two' }],
24
+ routes: [{ destination_cidr_block: '0.0.0.0/0' }]
25
+ }
26
+ ]
27
+ }
28
+ )
29
+ ec2.stub_responses(:describe_vpn_connections, stub)
30
+ end
31
+
32
+ after do
33
+ ec2.stub_responses(:describe_vpn_connections, [])
34
+ end
35
+
36
+ it 'should create list of hashes from returned AWS SDK' do
37
+ remote_resources = GeoEngineer::Resources::AwsVpnConnection._fetch_remote_resources
38
+ expect(remote_resources.length).to eq(2)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,41 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe("GeoEngineer::Resources::AwsVpnGatewayAttachment") do
4
+ common_resource_tests(
5
+ GeoEngineer::Resources::AwsVpnGatewayAttachment,
6
+ 'aws_vpn_gateway_attachment'
7
+ )
8
+
9
+ describe "#_fetch_remote_resources" do
10
+ let(:ec2) { AwsClients.ec2 }
11
+ before do
12
+ stub = ec2.stub_data(
13
+ :describe_vpn_gateways,
14
+ {
15
+ vpn_gateways: [
16
+ {
17
+ vpn_gateway_id: 'name1',
18
+ tags: [{ key: 'Name', value: 'one' }],
19
+ vpc_attachments: [{ vpc_id: 'v1' }]
20
+ },
21
+ {
22
+ vpn_gateway_id: 'name2',
23
+ tags: [{ key: 'Name', value: 'two' }],
24
+ vpc_attachments: [{ vpc_id: 'v1' }]
25
+ }
26
+ ]
27
+ }
28
+ )
29
+ ec2.stub_responses(:describe_vpn_gateways, stub)
30
+ end
31
+
32
+ after do
33
+ ec2.stub_responses(:describe_vpn_gateways, [])
34
+ end
35
+
36
+ it 'should create list of hashes from returned AWS SDK' do
37
+ remote_resources = GeoEngineer::Resources::AwsVpnGatewayAttachment._fetch_remote_resources
38
+ expect(remote_resources.length).to eq(2)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,39 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe("GeoEngineer::Resources::AwsVpnGateway") do
4
+ common_resource_tests(GeoEngineer::Resources::AwsVpnGateway, 'aws_vpn_gateway')
5
+ name_tag_geo_id_tests(GeoEngineer::Resources::AwsVpnGateway)
6
+
7
+ describe "#_fetch_remote_resources" do
8
+ let(:ec2) { AwsClients.ec2 }
9
+ before do
10
+ stub = ec2.stub_data(
11
+ :describe_vpn_gateways,
12
+ {
13
+ vpn_gateways: [
14
+ {
15
+ vpn_gateway_id: 'name1',
16
+ tags: [{ key: 'Name', value: 'one' }],
17
+ vpc_attachments: [{ vpc_id: 'v1' }]
18
+ },
19
+ {
20
+ vpn_gateway_id: 'name2',
21
+ tags: [{ key: 'Name', value: 'two' }],
22
+ vpc_attachments: [{ vpc_id: 'v1' }]
23
+ }
24
+ ]
25
+ }
26
+ )
27
+ ec2.stub_responses(:describe_vpn_gateways, stub)
28
+ end
29
+
30
+ after do
31
+ ec2.stub_responses(:describe_vpn_gateways, [])
32
+ end
33
+
34
+ it 'should create list of hashes from returned AWS SDK' do
35
+ remote_resources = GeoEngineer::Resources::AwsVpnGateway._fetch_remote_resources
36
+ expect(remote_resources.length).to eq(2)
37
+ end
38
+ end
39
+ end
@@ -41,7 +41,7 @@ def fetch_empty_should_work(clazz)
41
41
  end
42
42
  end
43
43
 
44
- def common_resource_tests(clazz, clazz_name)
44
+ def common_resource_tests(clazz, clazz_name, fetch_remote = true)
45
45
  describe 'init test' do
46
46
  init_test(clazz_name)
47
47
  end
@@ -50,6 +50,8 @@ def common_resource_tests(clazz, clazz_name)
50
50
  mapping_tests(clazz, clazz_name)
51
51
  end
52
52
 
53
+ return unless fetch_remote
54
+
53
55
  describe "#_fetch_remote_resources" do
54
56
  fetch_empty_should_work(clazz)
55
57
  end
@@ -0,0 +1,14 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Crc32 do
4
+ describe "::hashcode" do
5
+ it "matches the output from Terraform's Go Implementation" do
6
+ expect(Crc32.hashcode("0.0.0.0/0")).to eq(1_080_289_494)
7
+ expect(Crc32.hashcode("10.60.0.0/16")).to eq(2_056_622_336)
8
+ end
9
+
10
+ it "returns 0 for nil strings" do
11
+ expect(Crc32.hashcode(nil)).to eq(0)
12
+ end
13
+ end
14
+ end
@@ -114,5 +114,27 @@ describe("HasAttributes") do
114
114
  expect(x["attribute"]).to eq "asd"
115
115
  expect(x[:attribute]).to eq "asd"
116
116
  end
117
+
118
+ it 'allows you to reset already evaluated values' do
119
+ example = WithAttributes.new
120
+ example.tags = { Name: 'foo' }
121
+ example.attribute = -> { example.tags[:Name] }
122
+ expect(example.attribute).to eq('foo')
123
+
124
+ example.tags[:Name] = 'bar'
125
+ example.reset_attributes
126
+ expect(example.attribute).to eq('bar')
127
+ end
128
+
129
+ it 'allows you to eagerly load all lazy attributes' do
130
+ example = WithAttributes.new
131
+ example.lazy1 = -> { "foo" }
132
+ example.lazy2 = -> { "bar" }
133
+ expect(example.attributes['lazy1'].is_a?(Proc)).to eq(true)
134
+ expect(example.attributes['lazy2'].is_a?(Proc)).to eq(true)
135
+ example.eager_load_attributes
136
+ expect(example.attributes['lazy1'].is_a?(Proc)).to eq(false)
137
+ expect(example.attributes['lazy2'].is_a?(Proc)).to eq(false)
138
+ end
117
139
  end
118
140
  end
@@ -3,6 +3,10 @@ require_relative '../spec_helper'
3
3
  describe("HasResources") do
4
4
  class WithResources
5
5
  include HasResources
6
+
7
+ def all_resources
8
+ resources
9
+ end
6
10
  end
7
11
 
8
12
  class GeoEngineer::Resources::AwesomeResource < GeoEngineer::Resource
@@ -32,4 +32,49 @@ describe("HasValidations") do
32
32
  expect(errs).to include('sub')
33
33
  expect(errs).to include('super')
34
34
  end
35
+
36
+ describe "#validate_at_least_one_present" do
37
+ it "checks that at least of the specified attributes is defined" do
38
+ class Subject < GeoEngineer::Resource
39
+ include HasValidations
40
+ validate -> {
41
+ validate_at_least_one_present([:foo, :bar, :baz])
42
+ }
43
+
44
+ def _terraform_id
45
+ 'id'
46
+ end
47
+ end
48
+
49
+ valid = Subject.new('subject', 'id') { foo("quack") }
50
+ expect(valid.errors).to be_empty
51
+
52
+ invalid = Subject.new('subject', 'id') { qux("quack") }
53
+ expect(invalid.errors).to_not be_empty
54
+ end
55
+ end
56
+
57
+ describe "#validate_at_least_one_present" do
58
+ it "checks that at least of the specified attributes is defined" do
59
+ class Subject < GeoEngineer::Resource
60
+ include HasValidations
61
+ validate -> {
62
+ validate_only_one_present([:foo, :bar, :baz])
63
+ }
64
+
65
+ def _terraform_id
66
+ 'id'
67
+ end
68
+ end
69
+
70
+ valid = Subject.new('subject', 'id') { foo("quack") }
71
+ expect(valid.errors).to be_empty
72
+
73
+ invalid = Subject.new('subject', 'id') {
74
+ foo("quack")
75
+ bar("meow")
76
+ }
77
+ expect(invalid.errors).to_not be_empty
78
+ end
79
+ end
35
80
  end
metadata CHANGED
@@ -1,14 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geoengineer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - coinbase
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2016-11-25 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRQwEgYDVQQDDAtnZW9l
14
+ bmdpbmVlcjEYMBYGCgmSJomT8ixkARkWCGNvaW5iYXNlMRMwEQYKCZImiZPyLGQB
15
+ GRYDY29tMB4XDTE2MTIyOTE4MzQ0M1oXDTE3MTIyOTE4MzQ0M1owRTEUMBIGA1UE
16
+ AwwLZ2VvZW5naW5lZXIxGDAWBgoJkiaJk/IsZAEZFghjb2luYmFzZTETMBEGCgmS
17
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALaH
18
+ THSRh8ZT/1ATMtT0E3QMe9vpCc+CXx9NE1ulkwZZxBNoRQtJwF+AW8A2WJ38crxk
19
+ RyYJy7iE/ZEA1rrYLbMuvpbK6x5WaC9g68Iwb/vtc04GNVkiY4IuE9H2jm04yVMB
20
+ Tsvs7boRoEt0LfiGgEjBpBQmUE0IuU3q1PnXfhrJvBVb4r+6/PaCTsjwy3226yXr
21
+ rtEPHZP9uou6ZwaWrHrNkREOAAoRc4QTsuQoh6MZuUpcKhWk75ZuLihQi7ST1K6U
22
+ DvmGB3nrmnZbzlyPI3bjolWGoDRR72sMFNs2djASTeKQI52vJB03wFv/1Qow89+r
23
+ JBNHgZeGfSgYOPV8r20CAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
+ sDAdBgNVHQ4EFgQUxM51GnNOQC4m66Hikp6h6qEHNCEwIwYDVR0RBBwwGoEYZ2Vv
25
+ ZW5naW5lZXJAY29pbmJhc2UuY29tMCMGA1UdEgQcMBqBGGdlb2VuZ2luZWVyQGNv
26
+ aW5iYXNlLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAio4/74eUc8dECI9UrmpCB5y5
27
+ G4Hrgk4epPeQoeBJPtVfxtyAui3itTUKA8dzT3st+yopzliSImTUMNwRa+K9WfFM
28
+ AQ7Jd3vZT0jSK7y0FmmBaZzl0rXBqGOvXLcIoChvaZj6obzNarPODyRlllKX6ATM
29
+ jfuWe0dOA1gZHMwI9xYL6CLTceJTs2M3sW9o5vZyWLnFL93rqpMH5TncwIZP+Zfi
30
+ 6WK7/7ziN7oP5gOag1gEqjCieZEtmPdj2uvE5+X0/bQOpstnZfPbeaMxswFdxMB4
31
+ gvJWIT9xvxqnL8bM/44RAGrzrkx7OQi5HEoMCpfXJevlu1PF17Y3ylbNGBL4Og==
32
+ -----END CERTIFICATE-----
33
+ date: 2016-12-29 00:00:00.000000000 Z
12
34
  dependencies:
13
35
  - !ruby/object:Gem::Dependency
14
36
  name: rspec
@@ -171,21 +193,39 @@ files:
171
193
  - lib/geoengineer/output.rb
172
194
  - lib/geoengineer/project.rb
173
195
  - lib/geoengineer/resource.rb
196
+ - lib/geoengineer/resources/aws_customer_gateway.rb
174
197
  - lib/geoengineer/resources/aws_db_instance.rb
175
198
  - lib/geoengineer/resources/aws_db_parameter_group.rb
199
+ - lib/geoengineer/resources/aws_eip.rb
176
200
  - lib/geoengineer/resources/aws_elasticache_cluster.rb
177
201
  - lib/geoengineer/resources/aws_elasticache_parameter_group.rb
178
202
  - lib/geoengineer/resources/aws_elasticache_replication_group.rb
179
203
  - lib/geoengineer/resources/aws_elasticache_subnet_group.rb
180
204
  - lib/geoengineer/resources/aws_elasticsearch_domain.rb
181
205
  - lib/geoengineer/resources/aws_elb.rb
206
+ - lib/geoengineer/resources/aws_iam_group.rb
207
+ - lib/geoengineer/resources/aws_iam_group_membership.rb
182
208
  - lib/geoengineer/resources/aws_iam_policy.rb
209
+ - lib/geoengineer/resources/aws_iam_policy_attachment.rb
210
+ - lib/geoengineer/resources/aws_iam_role.rb
183
211
  - lib/geoengineer/resources/aws_iam_user.rb
184
212
  - lib/geoengineer/resources/aws_instance.rb
213
+ - lib/geoengineer/resources/aws_internet_gateway.rb
214
+ - lib/geoengineer/resources/aws_lambda_alias.rb
215
+ - lib/geoengineer/resources/aws_lambda_event_source_mapping.rb
216
+ - lib/geoengineer/resources/aws_lambda_function.rb
217
+ - lib/geoengineer/resources/aws_lambda_permission.rb
218
+ - lib/geoengineer/resources/aws_main_route_table_association.rb
219
+ - lib/geoengineer/resources/aws_nat_gateway.rb
220
+ - lib/geoengineer/resources/aws_network_acl.rb
221
+ - lib/geoengineer/resources/aws_network_acl_rule.rb
185
222
  - lib/geoengineer/resources/aws_proxy_protocol_policy.rb
186
223
  - lib/geoengineer/resources/aws_redshift_cluster.rb
224
+ - lib/geoengineer/resources/aws_route.rb
187
225
  - lib/geoengineer/resources/aws_route53_record.rb
188
226
  - lib/geoengineer/resources/aws_route53_zone.rb
227
+ - lib/geoengineer/resources/aws_route_table.rb
228
+ - lib/geoengineer/resources/aws_route_table_association.rb
189
229
  - lib/geoengineer/resources/aws_s3_bucket.rb
190
230
  - lib/geoengineer/resources/aws_security_group.rb
191
231
  - lib/geoengineer/resources/aws_ses_receipt_rule.rb
@@ -193,14 +233,27 @@ files:
193
233
  - lib/geoengineer/resources/aws_sns_topic.rb
194
234
  - lib/geoengineer/resources/aws_sns_topic_subscription.rb
195
235
  - lib/geoengineer/resources/aws_sqs_queue.rb
236
+ - lib/geoengineer/resources/aws_subnet.rb
237
+ - lib/geoengineer/resources/aws_vpc.rb
238
+ - lib/geoengineer/resources/aws_vpc_dhcp_options.rb
239
+ - lib/geoengineer/resources/aws_vpc_dhcp_options_association.rb
240
+ - lib/geoengineer/resources/aws_vpc_endpoint.rb
241
+ - lib/geoengineer/resources/aws_vpc_peering_connection.rb
242
+ - lib/geoengineer/resources/aws_vpn_connection.rb
243
+ - lib/geoengineer/resources/aws_vpn_connection_route.rb
244
+ - lib/geoengineer/resources/aws_vpn_gateway.rb
245
+ - lib/geoengineer/resources/aws_vpn_gateway_attachment.rb
196
246
  - lib/geoengineer/resources/iam/statement.rb
197
247
  - lib/geoengineer/sub_resource.rb
198
248
  - lib/geoengineer/template.rb
199
249
  - lib/geoengineer/utils/aws_clients.rb
250
+ - lib/geoengineer/utils/crc32.rb
200
251
  - lib/geoengineer/utils/has_attributes.rb
201
252
  - lib/geoengineer/utils/has_lifecycle.rb
253
+ - lib/geoengineer/utils/has_projects.rb
202
254
  - lib/geoengineer/utils/has_resources.rb
203
255
  - lib/geoengineer/utils/has_sub_resources.rb
256
+ - lib/geoengineer/utils/has_templates.rb
204
257
  - lib/geoengineer/utils/has_validations.rb
205
258
  - lib/geoengineer/utils/null_object.rb
206
259
  - lib/geoengineer/version.rb
@@ -208,21 +261,39 @@ files:
208
261
  - spec/output_spec.rb
209
262
  - spec/project_spec.rb
210
263
  - spec/resource_spec.rb
264
+ - spec/resources/aws_customer_gateway_spec.rb
211
265
  - spec/resources/aws_db_instance_spec.rb
212
266
  - spec/resources/aws_db_parameter_group_spec.rb
267
+ - spec/resources/aws_eip_spec.rb
213
268
  - spec/resources/aws_elasticache_replication_group_spec.rb
214
269
  - spec/resources/aws_elasticache_subnet_group_spec.rb
215
270
  - spec/resources/aws_elasticcache_cluster_spec.rb
216
271
  - spec/resources/aws_elasticcache_parameter_group_spec.rb
217
272
  - spec/resources/aws_elasticsearch_domain_spec.rb
218
273
  - spec/resources/aws_elb_spec.rb
219
- - spec/resources/aws_iam_policy.rb
274
+ - spec/resources/aws_iam_group_membership_spec.rb
275
+ - spec/resources/aws_iam_group_spec.rb
276
+ - spec/resources/aws_iam_policy_attachment_spec.rb
277
+ - spec/resources/aws_iam_policy_spec.rb
278
+ - spec/resources/aws_iam_role_spec.rb
220
279
  - spec/resources/aws_iam_user.rb
221
280
  - spec/resources/aws_instance_spec.rb
281
+ - spec/resources/aws_internet_gateway_spec.rb
282
+ - spec/resources/aws_lambda_alias_spec.rb
283
+ - spec/resources/aws_lambda_event_source_mapping_spec.rb
284
+ - spec/resources/aws_lambda_function_spec.rb
285
+ - spec/resources/aws_lambda_permission_spec.rb
286
+ - spec/resources/aws_main_route_table_association_spec.rb
287
+ - spec/resources/aws_nat_gateway_spec.rb
288
+ - spec/resources/aws_network_acl_rule_spec.rb
289
+ - spec/resources/aws_network_acl_spec.rb
222
290
  - spec/resources/aws_proxy_protocol_policy_spec.rb
223
291
  - spec/resources/aws_redshift_cluster_spec.rb
224
292
  - spec/resources/aws_route53_record_spec.rb
225
293
  - spec/resources/aws_route53_zone_spec.rb
294
+ - spec/resources/aws_route_spec.rb
295
+ - spec/resources/aws_route_table_association_spec.rb
296
+ - spec/resources/aws_route_table_spec.rb
226
297
  - spec/resources/aws_s3_bucket_spec.rb
227
298
  - spec/resources/aws_security_group_spec.rb
228
299
  - spec/resources/aws_ses_receipt_rule.rb
@@ -230,10 +301,21 @@ files:
230
301
  - spec/resources/aws_sns_topic_spec.rb
231
302
  - spec/resources/aws_sns_topic_subscription.rb
232
303
  - spec/resources/aws_sqs_queue_spec.rb
304
+ - spec/resources/aws_subnet_spec.rb
305
+ - spec/resources/aws_vpc_dhcp_options_association_spec.rb
306
+ - spec/resources/aws_vpc_dhcp_options_spec.rb
307
+ - spec/resources/aws_vpc_endpoint_spec.rb
308
+ - spec/resources/aws_vpc_peering_connection_spec.rb
309
+ - spec/resources/aws_vpc_spec.rb
310
+ - spec/resources/aws_vpn_connection_route_spec.rb
311
+ - spec/resources/aws_vpn_connection_spec.rb
312
+ - spec/resources/aws_vpn_gateway_attachment_spec.rb
313
+ - spec/resources/aws_vpn_gateway_spec.rb
233
314
  - spec/rubocop_spec.rb
234
315
  - spec/spec_helper.rb
235
316
  - spec/sub_resource_spec.rb
236
317
  - spec/template_spec.rb
318
+ - spec/utils/crc32_spec.rb
237
319
  - spec/utils/has_attributes_spec.rb
238
320
  - spec/utils/has_lifecycle_spec.rb
239
321
  - spec/utils/has_resources_spec.rb
@@ -242,7 +324,7 @@ files:
242
324
  - spec/utils/null_object_spec.rb
243
325
  homepage: https://coinbase.github.io/geoengineer
244
326
  licenses:
245
- - Apache 2.0
327
+ - Apache-2.0
246
328
  metadata: {}
247
329
  post_install_message:
248
330
  rdoc_options: []
@@ -269,21 +351,39 @@ test_files:
269
351
  - spec/output_spec.rb
270
352
  - spec/project_spec.rb
271
353
  - spec/resource_spec.rb
354
+ - spec/resources/aws_customer_gateway_spec.rb
272
355
  - spec/resources/aws_db_instance_spec.rb
273
356
  - spec/resources/aws_db_parameter_group_spec.rb
357
+ - spec/resources/aws_eip_spec.rb
274
358
  - spec/resources/aws_elasticache_replication_group_spec.rb
275
359
  - spec/resources/aws_elasticache_subnet_group_spec.rb
276
360
  - spec/resources/aws_elasticcache_cluster_spec.rb
277
361
  - spec/resources/aws_elasticcache_parameter_group_spec.rb
278
362
  - spec/resources/aws_elasticsearch_domain_spec.rb
279
363
  - spec/resources/aws_elb_spec.rb
280
- - spec/resources/aws_iam_policy.rb
364
+ - spec/resources/aws_iam_group_membership_spec.rb
365
+ - spec/resources/aws_iam_group_spec.rb
366
+ - spec/resources/aws_iam_policy_attachment_spec.rb
367
+ - spec/resources/aws_iam_policy_spec.rb
368
+ - spec/resources/aws_iam_role_spec.rb
281
369
  - spec/resources/aws_iam_user.rb
282
370
  - spec/resources/aws_instance_spec.rb
371
+ - spec/resources/aws_internet_gateway_spec.rb
372
+ - spec/resources/aws_lambda_alias_spec.rb
373
+ - spec/resources/aws_lambda_event_source_mapping_spec.rb
374
+ - spec/resources/aws_lambda_function_spec.rb
375
+ - spec/resources/aws_lambda_permission_spec.rb
376
+ - spec/resources/aws_main_route_table_association_spec.rb
377
+ - spec/resources/aws_nat_gateway_spec.rb
378
+ - spec/resources/aws_network_acl_rule_spec.rb
379
+ - spec/resources/aws_network_acl_spec.rb
283
380
  - spec/resources/aws_proxy_protocol_policy_spec.rb
284
381
  - spec/resources/aws_redshift_cluster_spec.rb
285
382
  - spec/resources/aws_route53_record_spec.rb
286
383
  - spec/resources/aws_route53_zone_spec.rb
384
+ - spec/resources/aws_route_spec.rb
385
+ - spec/resources/aws_route_table_association_spec.rb
386
+ - spec/resources/aws_route_table_spec.rb
287
387
  - spec/resources/aws_s3_bucket_spec.rb
288
388
  - spec/resources/aws_security_group_spec.rb
289
389
  - spec/resources/aws_ses_receipt_rule.rb
@@ -291,10 +391,21 @@ test_files:
291
391
  - spec/resources/aws_sns_topic_spec.rb
292
392
  - spec/resources/aws_sns_topic_subscription.rb
293
393
  - spec/resources/aws_sqs_queue_spec.rb
394
+ - spec/resources/aws_subnet_spec.rb
395
+ - spec/resources/aws_vpc_dhcp_options_association_spec.rb
396
+ - spec/resources/aws_vpc_dhcp_options_spec.rb
397
+ - spec/resources/aws_vpc_endpoint_spec.rb
398
+ - spec/resources/aws_vpc_peering_connection_spec.rb
399
+ - spec/resources/aws_vpc_spec.rb
400
+ - spec/resources/aws_vpn_connection_route_spec.rb
401
+ - spec/resources/aws_vpn_connection_spec.rb
402
+ - spec/resources/aws_vpn_gateway_attachment_spec.rb
403
+ - spec/resources/aws_vpn_gateway_spec.rb
294
404
  - spec/rubocop_spec.rb
295
405
  - spec/spec_helper.rb
296
406
  - spec/sub_resource_spec.rb
297
407
  - spec/template_spec.rb
408
+ - spec/utils/crc32_spec.rb
298
409
  - spec/utils/has_attributes_spec.rb
299
410
  - spec/utils/has_lifecycle_spec.rb
300
411
  - spec/utils/has_resources_spec.rb