kitchen-ec2 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -3
- data/README.md +8 -1
- data/kitchen-ec2.gemspec +4 -0
- data/lib/kitchen/driver/aws/instance_generator.rb +4 -0
- data/lib/kitchen/driver/ec2.rb +11 -2
- data/lib/kitchen/driver/ec2_version.rb +1 -1
- data/spec/kitchen/driver/ec2/instance_generator_spec.rb +23 -0
- data/spec/kitchen/driver/ec2_spec.rb +17 -8
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f4428e6497e1981ef132bd6c518ca4f347ed0aa
|
4
|
+
data.tar.gz: 8f2014042f18b8f1ab66e8b694141535ff365696
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6f81b68882cb0d853f9b111543373e7c545fa5f57f3c8bf60de9a38aaea237ea2955e6768a632823722e0d482f56444e317c7f670940f2d6db19ebb32946334
|
7
|
+
data.tar.gz: a6e0a708723aef725301b6690b83eb5b7807cbb2fd1aff89e2ab86f5f460ce09d59c0a380ff0ecce585178e41cf6caf0dfb6c39d20a1b58013105268ba571dde
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,21 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [1.
|
4
|
-
[Full Changelog](https://github.com/test-kitchen/kitchen-ec2/compare/v1.0
|
3
|
+
## [1.2.0](https://github.com/test-kitchen/kitchen-ec2/tree/1.2.0) (2016-09-12)
|
4
|
+
[Full Changelog](https://github.com/test-kitchen/kitchen-ec2/compare/v1.1.0...1.2.0)
|
5
|
+
|
6
|
+
**Fixed bugs:**
|
7
|
+
|
8
|
+
- Turn on eager loading for AWS resources [\#255](https://github.com/test-kitchen/kitchen-ec2/pull/255) ([hfinucane](https://github.com/hfinucane))
|
9
|
+
|
10
|
+
**Merged pull requests:**
|
11
|
+
|
12
|
+
- Add optional config for shutdown\_behavior [\#274](https://github.com/test-kitchen/kitchen-ec2/pull/274) ([alexpop](https://github.com/alexpop))
|
13
|
+
- pin rack to ~\> 1.0 [\#272](https://github.com/test-kitchen/kitchen-ec2/pull/272) ([mwrock](https://github.com/mwrock))
|
14
|
+
- Fix \#268 [\#269](https://github.com/test-kitchen/kitchen-ec2/pull/269) ([gasserk](https://github.com/gasserk))
|
15
|
+
- Allow PowerShell script execution [\#234](https://github.com/test-kitchen/kitchen-ec2/pull/234) ([dlukman](https://github.com/dlukman))
|
16
|
+
|
17
|
+
## [v1.1.0](https://github.com/test-kitchen/kitchen-ec2/tree/v1.1.0) (2016-08-09)
|
18
|
+
[Full Changelog](https://github.com/test-kitchen/kitchen-ec2/compare/v1.0.1...v1.1.0)
|
5
19
|
|
6
20
|
**Implemented enhancements:**
|
7
21
|
|
@@ -15,6 +29,7 @@
|
|
15
29
|
|
16
30
|
**Closed issues:**
|
17
31
|
|
32
|
+
- Do not require aws\_ssh\_key\_id in ec2.rb [\#268](https://github.com/test-kitchen/kitchen-ec2/issues/268)
|
18
33
|
- Retrieve AMI IDs from the EC2 API [\#147](https://github.com/test-kitchen/kitchen-ec2/issues/147)
|
19
34
|
|
20
35
|
## [v1.0.1](https://github.com/test-kitchen/kitchen-ec2/tree/v1.0.1) (2016-07-20)
|
@@ -358,4 +373,4 @@
|
|
358
373
|
## [v0.1.0](https://github.com/test-kitchen/kitchen-ec2/tree/v0.1.0) (2012-12-27)
|
359
374
|
|
360
375
|
|
361
|
-
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
376
|
+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/README.md
CHANGED
@@ -178,7 +178,8 @@ The ID of the AWS key pair you want to use.
|
|
178
178
|
The default will be read from the `AWS_SSH_KEY_ID` environment variable if set,
|
179
179
|
or `nil` otherwise.
|
180
180
|
|
181
|
-
|
181
|
+
If `aws_ssh_key_id` is specified, it must be one of the KeyName values shown by the AWS CLI: `aws ec2 describe-key-pairs`.
|
182
|
+
Otherwise, if not specified, you must either have a user pre-provisioned on the AMI, or provision the user using `user_data`.
|
182
183
|
|
183
184
|
#### `transport.ssh_key`
|
184
185
|
|
@@ -290,6 +291,12 @@ The price you bid in order to submit a spot request. An additional step will be
|
|
290
291
|
|
291
292
|
The default is `nil`.
|
292
293
|
|
294
|
+
### `instance_initiated_shutdown_behavior`
|
295
|
+
|
296
|
+
Control whether an instance should `stop` or `terminate` when shutdown is initiated from the instance using an operating system command for system shutdown.
|
297
|
+
|
298
|
+
The default is `nil`.
|
299
|
+
|
293
300
|
### block_duration_minutes
|
294
301
|
|
295
302
|
The [specified duration](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html#fixed-duration-spot-instances) for a spot instance, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360).
|
data/kitchen-ec2.gemspec
CHANGED
@@ -38,4 +38,8 @@ Gem::Specification.new do |gem|
|
|
38
38
|
# enforced in CI
|
39
39
|
gem.add_development_dependency "finstyle", "1.4.0"
|
40
40
|
gem.add_development_dependency "climate_control"
|
41
|
+
|
42
|
+
# github_changelog_generator -> github-api -> oauth2 -> rack
|
43
|
+
# rack being unconstrained breaks Ruby 2.1 installs
|
44
|
+
gem.add_development_dependency "rack", "~> 1.0"
|
41
45
|
end
|
@@ -84,6 +84,10 @@ module Kitchen
|
|
84
84
|
i[:network_interfaces][0][:groups] = i.delete(:security_group_ids)
|
85
85
|
end
|
86
86
|
end
|
87
|
+
unless config[:instance_initiated_shutdown_behavior].nil? ||
|
88
|
+
config[:instance_initiated_shutdown_behavior].empty?
|
89
|
+
i[:instance_initiated_shutdown_behavior] = config[:instance_initiated_shutdown_behavior]
|
90
|
+
end
|
87
91
|
i
|
88
92
|
end
|
89
93
|
|
data/lib/kitchen/driver/ec2.rb
CHANGED
@@ -33,6 +33,8 @@ require_relative "aws/standard_platform/windows"
|
|
33
33
|
require "aws-sdk-core/waiters/errors"
|
34
34
|
require "retryable"
|
35
35
|
|
36
|
+
Aws.eager_autoload!
|
37
|
+
|
36
38
|
module Kitchen
|
37
39
|
|
38
40
|
module Driver
|
@@ -79,8 +81,7 @@ module Kitchen
|
|
79
81
|
default_config :interface, nil
|
80
82
|
default_config :http_proxy, ENV["HTTPS_PROXY"] || ENV["HTTP_PROXY"]
|
81
83
|
default_config :retry_limit, 3
|
82
|
-
|
83
|
-
required_config :aws_ssh_key_id
|
84
|
+
default_config :instance_initiated_shutdown_behavior, nil
|
84
85
|
|
85
86
|
def initialize(*args, &block)
|
86
87
|
super
|
@@ -157,6 +158,12 @@ module Kitchen
|
|
157
158
|
"the README for more details"
|
158
159
|
end
|
159
160
|
end
|
161
|
+
validations[:instance_initiated_shutdown_behavior] = lambda do |attr, val, _driver|
|
162
|
+
unless [nil, "stop", "terminate"].include?(val)
|
163
|
+
raise "'#{val}' is an invalid value for option '#{attr}'. " \
|
164
|
+
"Valid values are 'stop' or 'terminate'"
|
165
|
+
end
|
166
|
+
end
|
160
167
|
|
161
168
|
def create(state) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
162
169
|
return if state[:server_id]
|
@@ -510,6 +517,8 @@ module Kitchen
|
|
510
517
|
Kitchen::Util.outdent!(<<-EOH)
|
511
518
|
<powershell>
|
512
519
|
$logfile="C:\\Program Files\\Amazon\\Ec2ConfigService\\Logs\\kitchen-ec2.log"
|
520
|
+
# Allow script execution
|
521
|
+
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force
|
513
522
|
#PS Remoting and & winrm.cmd basic config
|
514
523
|
Enable-PSRemoting -Force -SkipNetworkProfileCheck
|
515
524
|
& winrm.cmd set winrm/config '@{MaxTimeoutms="1800000"}' >> $logfile
|
@@ -71,6 +71,29 @@ describe Kitchen::Driver::Aws::InstanceGenerator do
|
|
71
71
|
end
|
72
72
|
|
73
73
|
context "when populated with minimum requirements" do
|
74
|
+
let(:config) do
|
75
|
+
{
|
76
|
+
:instance_type => "micro",
|
77
|
+
:ebs_optimized => true,
|
78
|
+
:image_id => "ami-123",
|
79
|
+
:subnet_id => "s-456",
|
80
|
+
:private_ip_address => "0.0.0.0"
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
84
|
+
it "returns the minimum data" do
|
85
|
+
expect(generator.ec2_instance_data).to eq(
|
86
|
+
:instance_type => "micro",
|
87
|
+
:ebs_optimized => true,
|
88
|
+
:image_id => "ami-123",
|
89
|
+
:key_name => nil,
|
90
|
+
:subnet_id => "s-456",
|
91
|
+
:private_ip_address => "0.0.0.0"
|
92
|
+
)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context "when populated with ssh key" do
|
74
97
|
let(:config) do
|
75
98
|
{
|
76
99
|
:instance_type => "micro",
|
@@ -70,14 +70,6 @@ describe Kitchen::Driver::Ec2 do
|
|
70
70
|
Kitchen::Driver::EC2_VERSION)
|
71
71
|
end
|
72
72
|
|
73
|
-
describe "configuration" do
|
74
|
-
let(:config) { {} }
|
75
|
-
it "requires :aws_ssh_key_id to be provided" do
|
76
|
-
expect { driver.finalize_config!(instance) }.to \
|
77
|
-
raise_error(Kitchen::UserError, /:aws_ssh_key_id/)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
73
|
describe "#hostname" do
|
82
74
|
let(:public_dns_name) { nil }
|
83
75
|
let(:private_dns_name) { nil }
|
@@ -195,6 +187,23 @@ describe Kitchen::Driver::Ec2 do
|
|
195
187
|
end
|
196
188
|
end
|
197
189
|
|
190
|
+
describe "submit_server with terminate shutdown behaviour" do
|
191
|
+
before do
|
192
|
+
config[:instance_initiated_shutdown_behavior] = "terminate"
|
193
|
+
expect(driver).to receive(:instance).at_least(:once).and_return(instance)
|
194
|
+
end
|
195
|
+
|
196
|
+
it "submits the server request" do
|
197
|
+
expect(generator).to receive(:ec2_instance_data).and_return(
|
198
|
+
:instance_initiated_shutdown_behavior => "terminate"
|
199
|
+
)
|
200
|
+
expect(client).to receive(:create_instance).with(
|
201
|
+
:min_count => 1, :max_count => 1, :instance_initiated_shutdown_behavior => "terminate"
|
202
|
+
)
|
203
|
+
driver.submit_server
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
198
207
|
describe "#submit_spot" do
|
199
208
|
let(:state) { {} }
|
200
209
|
let(:response) {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-ec2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fletcher Nichol
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-kitchen
|
@@ -184,6 +184,20 @@ dependencies:
|
|
184
184
|
- - ">="
|
185
185
|
- !ruby/object:Gem::Version
|
186
186
|
version: '0'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: rack
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - "~>"
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '1.0'
|
194
|
+
type: :development
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - "~>"
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: '1.0'
|
187
201
|
description: A Test Kitchen Driver for Amazon EC2
|
188
202
|
email:
|
189
203
|
- fnichol@nichol.ca
|
@@ -239,7 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
253
|
version: '0'
|
240
254
|
requirements: []
|
241
255
|
rubyforge_project:
|
242
|
-
rubygems_version: 2.
|
256
|
+
rubygems_version: 2.5.1
|
243
257
|
signing_key:
|
244
258
|
specification_version: 4
|
245
259
|
summary: A Test Kitchen Driver for Amazon EC2
|
@@ -249,3 +263,4 @@ test_files:
|
|
249
263
|
- spec/kitchen/driver/ec2/instance_generator_spec.rb
|
250
264
|
- spec/kitchen/driver/ec2_spec.rb
|
251
265
|
- spec/spec_helper.rb
|
266
|
+
has_rdoc:
|