kitchen-ec2 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kitchen/driver/aws/instance_generator.rb +27 -18
- data/lib/kitchen/driver/aws/standard_platform/amazon.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/amazon2.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/centos.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/debian.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/fedora.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/freebsd.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/rhel.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/ubuntu.rb +1 -1
- data/lib/kitchen/driver/aws/standard_platform/windows.rb +1 -1
- data/lib/kitchen/driver/ec2.rb +6 -4
- data/lib/kitchen/driver/ec2_version.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1132f5a8bcb58e6a8c4d38ad342ac2e38afeabbd51abf63b6980a6b4c9474339
|
4
|
+
data.tar.gz: 876fb813038936051338a3be5682fc6633b420aa6faa201b3156879bc9f29430
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae1058987c9efd9e8b7e0f2e0fa152b0a7cefb297d82fb6ab50cc77e1ee84f59e7b9a7fb54b391e9a3b35ae3ee7f3ef704ab6edd7e8fb908c1abe90870cc2c3d
|
7
|
+
data.tar.gz: 5fd929e0e1752d3b7cd1ff5b1e83383be321c95569bc00fee8ab9ad19539e815a3a1d9f692c516550cf5d4da5f667e500bc2ea8d64704a0fc337152fe34744df
|
@@ -43,25 +43,26 @@ module Kitchen
|
|
43
43
|
# can be passed in null, others need to be ommitted if they are null
|
44
44
|
def ec2_instance_data # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
45
45
|
# Support for looking up security group id and subnet id using tags.
|
46
|
-
|
46
|
+
vpc_id = nil
|
47
|
+
client = ::Aws::EC2::Client.new(region: config[:region])
|
47
48
|
if config[:subnet_id].nil? && config[:subnet_filter]
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
{
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
#{config[:subnet_filter][:value]}' does not exist!"
|
61
|
-
end
|
49
|
+
subnets = client.describe_subnets(
|
50
|
+
filters: [
|
51
|
+
{
|
52
|
+
name: "tag:#{config[:subnet_filter][:tag]}",
|
53
|
+
values: [config[:subnet_filter][:value]],
|
54
|
+
},
|
55
|
+
]
|
56
|
+
).subnets
|
57
|
+
raise "The subnet tagged '#{config[:subnet_filter][:tag]}:#{config[:subnet_filter][:value]}' does not exist!" unless subnets.any?
|
58
|
+
|
59
|
+
vpc_id = subnets[0].vpc_id
|
60
|
+
config[:subnet_id] = subnets[0].subnet_id
|
62
61
|
end
|
63
62
|
|
64
63
|
if config[:security_group_ids].nil? && config[:security_group_filter]
|
64
|
+
# => Grab the VPC in the case a Subnet ID rather than Filter was set
|
65
|
+
vpc_id ||= client.describe_subnets(subnet_ids: [config[:subnet_id]]).subnets[0].vpc_id
|
65
66
|
security_groups = []
|
66
67
|
filters = [config[:security_group_filter]].flatten
|
67
68
|
filters.each do |sg_filter|
|
@@ -72,6 +73,10 @@ module Kitchen
|
|
72
73
|
name: "group-name",
|
73
74
|
values: [sg_filter[:name]],
|
74
75
|
},
|
76
|
+
{
|
77
|
+
name: "vpc-id",
|
78
|
+
values: [vpc_id],
|
79
|
+
},
|
75
80
|
]
|
76
81
|
end
|
77
82
|
|
@@ -81,13 +86,17 @@ module Kitchen
|
|
81
86
|
name: "tag:#{sg_filter[:tag]}",
|
82
87
|
values: [sg_filter[:value]],
|
83
88
|
},
|
89
|
+
{
|
90
|
+
name: "vpc-id",
|
91
|
+
values: [vpc_id],
|
92
|
+
},
|
84
93
|
]
|
85
94
|
end
|
86
95
|
|
87
|
-
security_group =
|
96
|
+
security_group = client.describe_security_groups(r).security_groups
|
88
97
|
|
89
|
-
if security_group
|
90
|
-
security_groups.push(
|
98
|
+
if security_group.any?
|
99
|
+
security_group.each { |sg| security_groups.push(sg.group_id) }
|
91
100
|
else
|
92
101
|
raise "A Security Group matching the following filter could not be found:\n#{sg_filter}"
|
93
102
|
end
|
data/lib/kitchen/driver/ec2.rb
CHANGED
@@ -277,7 +277,7 @@ module Kitchen
|
|
277
277
|
|
278
278
|
info("EC2 instance <#{state[:server_id]}> ready (hostname: #{state[:hostname]}).")
|
279
279
|
instance.transport.connection(state).wait_until_ready
|
280
|
-
create_ec2_json(state) if instance.provisioner.name =~ /chef/
|
280
|
+
create_ec2_json(state) if instance.provisioner.name =~ /chef/i
|
281
281
|
debug("ec2:create '#{state[:hostname]}'")
|
282
282
|
rescue Exception
|
283
283
|
# Clean up any auto-created security groups or keys on the way out.
|
@@ -454,15 +454,16 @@ module Kitchen
|
|
454
454
|
expanded = []
|
455
455
|
end
|
456
456
|
|
457
|
+
errs = []
|
457
458
|
configs.each do |conf|
|
458
459
|
begin
|
459
460
|
@config = conf
|
460
461
|
return submit_spot(state)
|
461
|
-
rescue
|
462
|
+
rescue => e
|
463
|
+
errs.append(e)
|
462
464
|
end
|
463
465
|
end
|
464
|
-
|
465
|
-
raise "Could not create a spot"
|
466
|
+
raise ["Could not create a spot instance:", errs].flatten.join("\n")
|
466
467
|
end
|
467
468
|
|
468
469
|
def submit_spot(state)
|
@@ -788,6 +789,7 @@ module Kitchen
|
|
788
789
|
elsif config[:subnet_filter]
|
789
790
|
subnets = ec2.client.describe_subnets(filters: [{ name: "tag:#{config[:subnet_filter][:tag]}", values: [config[:subnet_filter][:value]] }]).subnets
|
790
791
|
raise "Subnets with tag '#{config[:subnet_filter][:tag]}=#{config[:subnet_filter][:value]}' not found during security group creation" if subnets.empty?
|
792
|
+
|
791
793
|
subnets.first.vpc_id
|
792
794
|
else
|
793
795
|
# Try to check for a default VPC.
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
|
4
4
|
#
|
5
|
-
# Copyright:: 2016-
|
5
|
+
# Copyright:: 2016-2020, Chef Software, Inc.
|
6
6
|
# Copyright:: 2012-2018, Fletcher Nichol
|
7
7
|
#
|
8
8
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -22,6 +22,6 @@ module Kitchen
|
|
22
22
|
module Driver
|
23
23
|
|
24
24
|
# Version string for EC2 Test Kitchen driver
|
25
|
-
EC2_VERSION = "3.
|
25
|
+
EC2_VERSION = "3.3.0".freeze
|
26
26
|
end
|
27
27
|
end
|
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: 3.
|
4
|
+
version: 3.3.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:
|
11
|
+
date: 2020-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-kitchen
|
@@ -168,14 +168,14 @@ dependencies:
|
|
168
168
|
requirements:
|
169
169
|
- - '='
|
170
170
|
- !ruby/object:Gem::Version
|
171
|
-
version: 0.
|
171
|
+
version: 0.14.0
|
172
172
|
type: :development
|
173
173
|
prerelease: false
|
174
174
|
version_requirements: !ruby/object:Gem::Requirement
|
175
175
|
requirements:
|
176
176
|
- - '='
|
177
177
|
- !ruby/object:Gem::Version
|
178
|
-
version: 0.
|
178
|
+
version: 0.14.0
|
179
179
|
- !ruby/object:Gem::Dependency
|
180
180
|
name: climate_control
|
181
181
|
requirement: !ruby/object:Gem::Requirement
|