chef-provisioning-aws 1.3.1 → 1.4.0

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +70 -69
  3. data/Rakefile +22 -2
  4. data/lib/chef/provider/aws_auto_scaling_group.rb +3 -2
  5. data/lib/chef/provider/aws_cache_cluster.rb +3 -2
  6. data/lib/chef/provider/aws_cache_replication_group.rb +5 -4
  7. data/lib/chef/provider/aws_cache_subnet_group.rb +5 -4
  8. data/lib/chef/provider/aws_cloudsearch_domain.rb +163 -0
  9. data/lib/chef/provider/aws_dhcp_options.rb +9 -6
  10. data/lib/chef/provider/aws_ebs_volume.rb +7 -3
  11. data/lib/chef/provider/aws_eip_address.rb +8 -7
  12. data/lib/chef/provider/aws_image.rb +8 -3
  13. data/lib/chef/provider/aws_instance.rb +14 -2
  14. data/lib/chef/provider/aws_key_pair.rb +2 -1
  15. data/lib/chef/provider/aws_launch_configuration.rb +4 -2
  16. data/lib/chef/provider/aws_load_balancer.rb +18 -0
  17. data/lib/chef/provider/aws_network_acl.rb +6 -2
  18. data/lib/chef/provider/aws_network_interface.rb +11 -24
  19. data/lib/chef/provider/aws_rds_instance.rb +66 -0
  20. data/lib/chef/provider/aws_rds_subnet_group.rb +89 -0
  21. data/lib/chef/provider/aws_route_table.rb +42 -23
  22. data/lib/chef/provider/aws_s3_bucket.rb +32 -8
  23. data/lib/chef/provider/aws_security_group.rb +11 -4
  24. data/lib/chef/provider/aws_server_certificate.rb +23 -0
  25. data/lib/chef/provider/aws_sns_topic.rb +4 -3
  26. data/lib/chef/provider/aws_sqs_queue.rb +3 -2
  27. data/lib/chef/provider/aws_subnet.rb +10 -7
  28. data/lib/chef/provider/aws_vpc.rb +54 -21
  29. data/lib/chef/provider/aws_vpc_peering_connection.rb +88 -0
  30. data/lib/chef/provisioning/aws_driver.rb +8 -0
  31. data/lib/chef/provisioning/aws_driver/aws_provider.rb +45 -76
  32. data/lib/chef/provisioning/aws_driver/aws_rds_resource.rb +11 -0
  33. data/lib/chef/provisioning/aws_driver/aws_resource.rb +14 -2
  34. data/lib/chef/provisioning/aws_driver/aws_resource_with_entry.rb +2 -8
  35. data/lib/chef/provisioning/aws_driver/aws_taggable.rb +18 -0
  36. data/lib/chef/provisioning/aws_driver/aws_tagger.rb +61 -0
  37. data/lib/chef/provisioning/aws_driver/credentials2.rb +51 -0
  38. data/lib/chef/provisioning/aws_driver/driver.rb +214 -162
  39. data/lib/chef/provisioning/aws_driver/tagging_strategy/ec2.rb +64 -0
  40. data/lib/chef/provisioning/aws_driver/tagging_strategy/elb.rb +39 -0
  41. data/lib/chef/provisioning/aws_driver/tagging_strategy/rds.rb +92 -0
  42. data/lib/chef/provisioning/aws_driver/tagging_strategy/s3.rb +41 -0
  43. data/lib/chef/provisioning/aws_driver/version.rb +1 -1
  44. data/lib/chef/resource/aws_cache_cluster.rb +1 -2
  45. data/lib/chef/resource/aws_cloudsearch_domain.rb +46 -0
  46. data/lib/chef/resource/aws_dhcp_options.rb +2 -0
  47. data/lib/chef/resource/aws_ebs_volume.rb +3 -1
  48. data/lib/chef/resource/aws_eip_address.rb +0 -3
  49. data/lib/chef/resource/aws_image.rb +3 -0
  50. data/lib/chef/resource/aws_instance.rb +7 -2
  51. data/lib/chef/resource/aws_internet_gateway.rb +2 -0
  52. data/lib/chef/resource/aws_load_balancer.rb +3 -0
  53. data/lib/chef/resource/aws_network_acl.rb +2 -0
  54. data/lib/chef/resource/aws_network_interface.rb +3 -1
  55. data/lib/chef/resource/aws_rds_instance.rb +42 -0
  56. data/lib/chef/resource/aws_rds_subnet_group.rb +29 -0
  57. data/lib/chef/resource/aws_route_table.rb +7 -5
  58. data/lib/chef/resource/aws_s3_bucket.rb +3 -0
  59. data/lib/chef/resource/aws_security_group.rb +2 -7
  60. data/lib/chef/resource/aws_server_certificate.rb +21 -0
  61. data/lib/chef/resource/aws_subnet.rb +2 -0
  62. data/lib/chef/resource/aws_vpc.rb +4 -1
  63. data/lib/chef/resource/aws_vpc_peering_connection.rb +73 -0
  64. data/spec/acceptance/aws_ebs_volume/nodes/ettores-mbp.lan.json +3 -0
  65. data/spec/aws_support.rb +25 -8
  66. data/spec/aws_support/aws_resource_run_wrapper.rb +5 -1
  67. data/spec/aws_support/deep_matcher/match_values_failure_messages.rb +19 -0
  68. data/spec/aws_support/matchers/create_an_aws_object.rb +1 -1
  69. data/spec/aws_support/matchers/destroy_an_aws_object.rb +1 -1
  70. data/spec/aws_support/matchers/have_aws_object_tags.rb +9 -15
  71. data/spec/aws_support/matchers/match_an_aws_object.rb +1 -1
  72. data/spec/aws_support/matchers/update_an_aws_object.rb +1 -1
  73. data/spec/integration/aws_cloudsearch_domain_spec.rb +31 -0
  74. data/spec/integration/aws_dhcp_options_spec.rb +73 -0
  75. data/spec/integration/aws_ebs_volume_spec.rb +97 -0
  76. data/spec/integration/aws_network_acl_spec.rb +51 -0
  77. data/spec/integration/aws_network_interface_spec.rb +89 -0
  78. data/spec/integration/aws_rds_instance_spec.rb +150 -0
  79. data/spec/integration/aws_rds_subnet_group_spec.rb +105 -0
  80. data/spec/integration/aws_route_table_spec.rb +94 -7
  81. data/spec/integration/aws_s3_bucket_spec.rb +88 -0
  82. data/spec/integration/aws_security_group_spec.rb +47 -0
  83. data/spec/integration/aws_server_certificate_spec.rb +24 -0
  84. data/spec/integration/aws_subnet_spec.rb +51 -2
  85. data/spec/integration/aws_vpc_peering_connection_spec.rb +99 -0
  86. data/spec/integration/aws_vpc_spec.rb +73 -0
  87. data/spec/integration/load_balancer_spec.rb +101 -0
  88. data/spec/integration/machine_image_spec.rb +61 -6
  89. data/spec/integration/machine_spec.rb +26 -0
  90. data/spec/spec_helper.rb +3 -0
  91. data/spec/unit/{aws_driver → chef/provisioning/aws_driver}/credentials_spec.rb +0 -0
  92. data/spec/unit/chef/provisioning/aws_driver/driver_spec.rb +88 -0
  93. metadata +63 -20
  94. data/spec/integration/aws_tagged_items_spec.rb +0 -166
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-provisioning-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Ewart
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-05 00:00:00.000000000 Z
11
+ date: 2015-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: chef
14
+ name: chef-provisioning
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 11.16.4
19
+ version: '1.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 11.16.4
26
+ version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
- name: chef-provisioning
28
+ name: aws-sdk-v1
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
33
+ version: 1.59.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.0'
40
+ version: 1.59.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: aws-sdk-v1
42
+ name: aws-sdk
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.59.0
47
+ version: '2.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.59.0
54
+ version: '2.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: retryable
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '4.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: chef
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 11.16.4
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 11.16.4
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -151,6 +165,7 @@ files:
151
165
  - lib/chef/provider/aws_cache_cluster.rb
152
166
  - lib/chef/provider/aws_cache_replication_group.rb
153
167
  - lib/chef/provider/aws_cache_subnet_group.rb
168
+ - lib/chef/provider/aws_cloudsearch_domain.rb
154
169
  - lib/chef/provider/aws_dhcp_options.rb
155
170
  - lib/chef/provider/aws_ebs_volume.rb
156
171
  - lib/chef/provider/aws_eip_address.rb
@@ -161,28 +176,41 @@ files:
161
176
  - lib/chef/provider/aws_load_balancer.rb
162
177
  - lib/chef/provider/aws_network_acl.rb
163
178
  - lib/chef/provider/aws_network_interface.rb
179
+ - lib/chef/provider/aws_rds_instance.rb
180
+ - lib/chef/provider/aws_rds_subnet_group.rb
164
181
  - lib/chef/provider/aws_route_table.rb
165
182
  - lib/chef/provider/aws_s3_bucket.rb
166
183
  - lib/chef/provider/aws_security_group.rb
184
+ - lib/chef/provider/aws_server_certificate.rb
167
185
  - lib/chef/provider/aws_sns_topic.rb
168
186
  - lib/chef/provider/aws_sqs_queue.rb
169
187
  - lib/chef/provider/aws_subnet.rb
170
188
  - lib/chef/provider/aws_vpc.rb
189
+ - lib/chef/provider/aws_vpc_peering_connection.rb
171
190
  - lib/chef/provisioning/aws_driver.rb
172
191
  - lib/chef/provisioning/aws_driver/aws_provider.rb
192
+ - lib/chef/provisioning/aws_driver/aws_rds_resource.rb
173
193
  - lib/chef/provisioning/aws_driver/aws_resource.rb
174
194
  - lib/chef/provisioning/aws_driver/aws_resource_with_entry.rb
195
+ - lib/chef/provisioning/aws_driver/aws_taggable.rb
196
+ - lib/chef/provisioning/aws_driver/aws_tagger.rb
175
197
  - lib/chef/provisioning/aws_driver/credentials.rb
198
+ - lib/chef/provisioning/aws_driver/credentials2.rb
176
199
  - lib/chef/provisioning/aws_driver/driver.rb
177
200
  - lib/chef/provisioning/aws_driver/exceptions.rb
178
201
  - lib/chef/provisioning/aws_driver/resources.rb
179
202
  - lib/chef/provisioning/aws_driver/super_lwrp.rb
203
+ - lib/chef/provisioning/aws_driver/tagging_strategy/ec2.rb
204
+ - lib/chef/provisioning/aws_driver/tagging_strategy/elb.rb
205
+ - lib/chef/provisioning/aws_driver/tagging_strategy/rds.rb
206
+ - lib/chef/provisioning/aws_driver/tagging_strategy/s3.rb
180
207
  - lib/chef/provisioning/aws_driver/version.rb
181
208
  - lib/chef/provisioning/driver_init/aws.rb
182
209
  - lib/chef/resource/aws_auto_scaling_group.rb
183
210
  - lib/chef/resource/aws_cache_cluster.rb
184
211
  - lib/chef/resource/aws_cache_replication_group.rb
185
212
  - lib/chef/resource/aws_cache_subnet_group.rb
213
+ - lib/chef/resource/aws_cloudsearch_domain.rb
186
214
  - lib/chef/resource/aws_dhcp_options.rb
187
215
  - lib/chef/resource/aws_ebs_volume.rb
188
216
  - lib/chef/resource/aws_eip_address.rb
@@ -194,13 +222,18 @@ files:
194
222
  - lib/chef/resource/aws_load_balancer.rb
195
223
  - lib/chef/resource/aws_network_acl.rb
196
224
  - lib/chef/resource/aws_network_interface.rb
225
+ - lib/chef/resource/aws_rds_instance.rb
226
+ - lib/chef/resource/aws_rds_subnet_group.rb
197
227
  - lib/chef/resource/aws_route_table.rb
198
228
  - lib/chef/resource/aws_s3_bucket.rb
199
229
  - lib/chef/resource/aws_security_group.rb
230
+ - lib/chef/resource/aws_server_certificate.rb
200
231
  - lib/chef/resource/aws_sns_topic.rb
201
232
  - lib/chef/resource/aws_sqs_queue.rb
202
233
  - lib/chef/resource/aws_subnet.rb
203
234
  - lib/chef/resource/aws_vpc.rb
235
+ - lib/chef/resource/aws_vpc_peering_connection.rb
236
+ - spec/acceptance/aws_ebs_volume/nodes/ettores-mbp.lan.json
204
237
  - spec/aws_support.rb
205
238
  - spec/aws_support/aws_resource_run_wrapper.rb
206
239
  - spec/aws_support/deep_matcher.rb
@@ -216,19 +249,28 @@ files:
216
249
  - spec/aws_support/matchers/match_an_aws_object.rb
217
250
  - spec/aws_support/matchers/update_an_aws_object.rb
218
251
  - spec/integration/aws_cache_subnet_group_spec.rb
252
+ - spec/integration/aws_cloudsearch_domain_spec.rb
253
+ - spec/integration/aws_dhcp_options_spec.rb
219
254
  - spec/integration/aws_ebs_volume_spec.rb
220
255
  - spec/integration/aws_key_pair_spec.rb
221
256
  - spec/integration/aws_network_acl_spec.rb
257
+ - spec/integration/aws_network_interface_spec.rb
258
+ - spec/integration/aws_rds_instance_spec.rb
259
+ - spec/integration/aws_rds_subnet_group_spec.rb
222
260
  - spec/integration/aws_route_table_spec.rb
261
+ - spec/integration/aws_s3_bucket_spec.rb
223
262
  - spec/integration/aws_security_group_spec.rb
263
+ - spec/integration/aws_server_certificate_spec.rb
224
264
  - spec/integration/aws_subnet_spec.rb
225
- - spec/integration/aws_tagged_items_spec.rb
265
+ - spec/integration/aws_vpc_peering_connection_spec.rb
226
266
  - spec/integration/aws_vpc_spec.rb
267
+ - spec/integration/load_balancer_spec.rb
227
268
  - spec/integration/machine_batch_spec.rb
228
269
  - spec/integration/machine_image_spec.rb
229
270
  - spec/integration/machine_spec.rb
230
271
  - spec/spec_helper.rb
231
- - spec/unit/aws_driver/credentials_spec.rb
272
+ - spec/unit/chef/provisioning/aws_driver/credentials_spec.rb
273
+ - spec/unit/chef/provisioning/aws_driver/driver_spec.rb
232
274
  homepage: https://github.com/opscode/chef-provisioning-aws
233
275
  licenses: []
234
276
  metadata: {}
@@ -248,8 +290,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
290
  version: '0'
249
291
  requirements: []
250
292
  rubyforge_project:
251
- rubygems_version: 2.4.7
293
+ rubygems_version: 2.4.5
252
294
  signing_key:
253
295
  specification_version: 4
254
296
  summary: Provisioner for creating aws containers in Chef Provisioning.
255
297
  test_files: []
298
+ has_rdoc:
@@ -1,166 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "AWS Tagged Items" do
4
- extend AWSSupport
5
-
6
- when_the_chef_12_server "exists", organization: 'foo', server_scope: :context do
7
- with_aws "when connected to AWS" do
8
- it "aws_ebs_volume 'test_volume' created with default Name tag" do
9
- expect_recipe {
10
- aws_ebs_volume "test_volume"
11
- }.to create_an_aws_ebs_volume('test_volume'
12
- ).and have_aws_ebs_volume_tags('test_volume',
13
- { 'Name' => 'test_volume' }
14
- ).and be_idempotent
15
- end
16
-
17
- it "aws_ebs_volume 'test_volume' tags are updated" do
18
- expect_recipe {
19
- aws_ebs_volume "test_volume_a" do
20
- aws_tags :byebye => 'true'
21
- end
22
- }.to create_an_aws_ebs_volume('test_volume_a'
23
- ).and have_aws_ebs_volume_tags('test_volume_a',
24
- { 'Name' => 'test_volume_a',
25
- 'byebye' => 'true'
26
- }
27
- ).and be_idempotent
28
-
29
- expect_recipe {
30
- aws_ebs_volume "test_volume_a" do
31
- aws_tags 'Name' => 'test_volume_b', :project => 'X'
32
- end
33
- }.to update_an_aws_ebs_volume('test_volume_a'
34
- ).and have_aws_ebs_volume_tags('test_volume_a',
35
- { 'Name' => 'test_volume_b',
36
- 'project' => 'X'
37
- }
38
- ).and be_idempotent
39
- end
40
-
41
- it "aws_ebs_volume 'test_volume' tags are not changed when not updated" do
42
- expect_recipe {
43
- aws_ebs_volume "test_volume_c" do
44
- aws_tags :byebye => 'true'
45
- end
46
- }.to create_an_aws_ebs_volume('test_volume_c'
47
- ).and have_aws_ebs_volume_tags('test_volume_c',
48
- { 'Name' => 'test_volume_c',
49
- 'byebye' => 'true'
50
- }
51
- ).and be_idempotent
52
-
53
- expect_recipe {
54
- aws_ebs_volume "test_volume_c"
55
- }.to have_aws_ebs_volume_tags('test_volume_c',
56
- { 'Name' => 'test_volume_c',
57
- 'byebye' => 'true'
58
- }
59
- ).and be_idempotent
60
- end
61
-
62
-
63
- it "aws_ebs_volume 'test_volume' created with new Name tag" do
64
- expect_recipe {
65
- aws_ebs_volume "test_volume_2" do
66
- aws_tags :Name => 'test_volume_new'
67
- end
68
- }.to create_an_aws_ebs_volume('test_volume_2'
69
- ).and have_aws_ebs_volume_tags('test_volume_2',
70
- { 'Name' => 'test_volume_new' }
71
- ).and be_idempotent
72
- end
73
-
74
- it "aws_ebs_volume 'test_volume' created with custom tag" do
75
- expect_recipe {
76
- aws_ebs_volume "test_volume_3" do
77
- aws_tags :project => 'aws-provisioning'
78
- end
79
- }.to create_an_aws_ebs_volume('test_volume_3'
80
- ).and have_aws_ebs_volume_tags('test_volume_3',
81
- { 'Name' => 'test_volume_3',
82
- 'project' => 'aws-provisioning'
83
- }
84
- ).and be_idempotent
85
- end
86
-
87
- it "aws_instance 'test_instance' created with custom tag", :super_slow do
88
- expect_recipe {
89
- machine 'test_instance' do
90
- action :allocate
91
- end
92
- }.to create_an_aws_instance('test_instance')
93
-
94
- expect_recipe {
95
- aws_instance "test_instance" do
96
- aws_tags :project => 'FUN'
97
- end
98
- }.to update_an_aws_instance('test_instance'
99
- ).and have_aws_instance_tags('test_instance',
100
- { 'Name' => 'test_instance',
101
- 'project' => 'FUN'
102
- }
103
- ).and be_idempotent
104
- end
105
-
106
- it "machine 'test_machine' created using machine_options aws_tag", :super_slow do
107
- expect_recipe {
108
- machine 'test_machine' do
109
- machine_options :aws_tags => { :mach_opt_sym => 'value', 'mach_opt_str' => 'value' }
110
- action :allocate
111
- end
112
- }.to create_an_aws_instance('test_machine'
113
- ).and have_aws_instance_tags('test_machine',
114
- { 'Name' => 'test_machine',
115
- 'mach_opt_sym' => 'value',
116
- 'mach_opt_str' => 'value'
117
- }
118
- ).and be_idempotent
119
- end
120
-
121
- it "machine 'test_machine_2' created using default with_machine_options aws_tag", :super_slow do
122
- expect_recipe {
123
- with_machine_options :aws_tags => { :default => 'value1' }
124
-
125
- machine 'test_machine_2' do
126
- action :allocate
127
- end
128
- }.to create_an_aws_instance('test_machine_2'
129
- ).and have_aws_instance_tags('test_machine_2',
130
- { 'Name' => 'test_machine_2',
131
- 'default' => 'value1'
132
- }
133
- ).and be_idempotent
134
- end
135
-
136
- it "load balancer 'lbtest' tagged with load_balancer_options" do
137
- expect_recipe {
138
- load_balancer 'lbtest' do
139
- load_balancer_options :aws_tags => { :marco => 'polo', 'happyhappy' => 'joyjoy' },
140
- :availability_zones => ["#{driver.aws_config.region}a", "#{driver.aws_config.region}c"]
141
- end
142
- }.to create_an_aws_load_balancer('lbtest'
143
- ).and have_aws_load_balancer_tags('lbtest',
144
- { 'marco' => 'polo',
145
- 'happyhappy' => 'joyjoy'
146
- }
147
- ).and be_idempotent
148
- expect_recipe {
149
- load_balancer 'lbtest' do
150
- load_balancer_options :aws_tags => { :default => 'value1' }
151
- end
152
- }.to update_an_aws_load_balancer('lbtest'
153
- ).and have_aws_load_balancer_tags('lbtest',
154
- { 'default' => 'value1' }
155
- ).and be_idempotent
156
- end
157
-
158
- it "does not error when a class does not define #aws_tags" do
159
- expect_recipe {
160
- aws_eip_address 'test_address'
161
- }.to create_an_aws_eip_address('test_address')
162
- end
163
-
164
- end
165
- end
166
- end