geoengineer 0.1.0 → 0.1.1

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