chef-provisioning-aws 1.3.1 → 1.4.0

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