kitchen-digitalocean 0.10.7 → 0.13.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.
- checksums.yaml +4 -4
- data/lib/kitchen/driver/digitalocean.rb +40 -43
- data/lib/kitchen/driver/digitalocean_version.rb +1 -1
- metadata +16 -30
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 57b24c201f1bc0b22c851d8d7ed316c6658af9a5eae401cc5656ed2de97e632e
|
|
4
|
+
data.tar.gz: 9ae18f394de58c969b81db50ed82fcf187be07a4419a490a228da7899a5da66c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2ab3ba2374832a91f659e881b2096a77045010a14c9eb571dcff691afe680bfb3044eab8156a148c2d1e1a08dc357d1bbd5980d008257c5b585cbffb0138df7f
|
|
7
|
+
data.tar.gz: faacfdc85d589fbe10e617558c8cbe8df7cbd49dd942fa51d032237f24ffe941af5738eee01b66992d782bf94122466b395c675bdd75f60a5cd2db088b5c0e07
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
# See the License for the specific language governing permissions and
|
|
18
18
|
# limitations under the License.
|
|
19
19
|
|
|
20
|
-
require
|
|
21
|
-
require
|
|
22
|
-
require
|
|
23
|
-
require
|
|
24
|
-
require
|
|
25
|
-
require
|
|
20
|
+
require "benchmark" unless defined?(Benchmark)
|
|
21
|
+
require "droplet_kit" unless defined?(DropletKit)
|
|
22
|
+
require "kitchen"
|
|
23
|
+
require "etc" unless defined?(Etc)
|
|
24
|
+
require "socket" unless defined?(Socket)
|
|
25
|
+
require "json" unless defined?(JSON)
|
|
26
|
+
autoload :YAML, "yaml"
|
|
26
27
|
|
|
27
28
|
module Kitchen
|
|
28
29
|
module Driver
|
|
@@ -30,9 +31,9 @@ module Kitchen
|
|
|
30
31
|
#
|
|
31
32
|
# @author Greg Fitzgerald <greg@gregf.org>
|
|
32
33
|
class Digitalocean < Kitchen::Driver::SSHBase
|
|
33
|
-
default_config :username,
|
|
34
|
-
default_config :port,
|
|
35
|
-
default_config :size,
|
|
34
|
+
default_config :username, "root"
|
|
35
|
+
default_config :port, "22"
|
|
36
|
+
default_config :size, "s-1vcpu-1gb"
|
|
36
37
|
default_config :monitoring, false
|
|
37
38
|
default_config(:image, &:default_image)
|
|
38
39
|
default_config(:server_name, &:default_name)
|
|
@@ -41,40 +42,35 @@ module Kitchen
|
|
|
41
42
|
default_config :user_data, nil
|
|
42
43
|
default_config :tags, nil
|
|
43
44
|
default_config :firewalls, nil
|
|
45
|
+
default_config :vpcs, nil
|
|
44
46
|
|
|
45
47
|
default_config :region do
|
|
46
|
-
ENV[
|
|
48
|
+
ENV["DIGITALOCEAN_REGION"] || "nyc1"
|
|
47
49
|
end
|
|
48
50
|
|
|
49
51
|
default_config :digitalocean_access_token do
|
|
50
|
-
ENV[
|
|
52
|
+
ENV["DIGITALOCEAN_ACCESS_TOKEN"]
|
|
51
53
|
end
|
|
52
54
|
|
|
53
55
|
default_config :ssh_key_ids do
|
|
54
|
-
ENV[
|
|
56
|
+
ENV["DIGITALOCEAN_SSH_KEY_IDS"] || ENV["SSH_KEY_IDS"]
|
|
55
57
|
end
|
|
56
58
|
|
|
57
59
|
required_config :digitalocean_access_token
|
|
58
60
|
required_config :ssh_key_ids
|
|
59
61
|
|
|
60
62
|
PLATFORM_SLUG_MAP = {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
'freebsd-11' => 'freebsd-11-x64-zfs',
|
|
73
|
-
'freebsd-12' => 'freebsd-12-x64-zfs',
|
|
74
|
-
'ubuntu-16' => 'ubuntu-16-04-x64',
|
|
75
|
-
'ubuntu-18' => 'ubuntu-18-04-x64',
|
|
76
|
-
'ubuntu-19' => 'ubuntu-19-10-x64',
|
|
77
|
-
'ubuntu-20' => 'ubuntu-20-04-x64'
|
|
63
|
+
"centos-7" => "centos-7-x64",
|
|
64
|
+
"centos-8" => "centos-8-x64",
|
|
65
|
+
"debian-9" => "debian-9-x64",
|
|
66
|
+
"debian-10" => "debian-10-x64",
|
|
67
|
+
"fedora-32" => "fedora-32-x64",
|
|
68
|
+
"fedora-33" => "fedora-33-x64",
|
|
69
|
+
"freebsd-11" => "freebsd-11-x64-zfs",
|
|
70
|
+
"freebsd-12" => "freebsd-12-x64-zfs",
|
|
71
|
+
"ubuntu-16" => "ubuntu-16-04-x64",
|
|
72
|
+
"ubuntu-18" => "ubuntu-18-04-x64",
|
|
73
|
+
"ubuntu-20" => "ubuntu-20-04-x64",
|
|
78
74
|
}.freeze
|
|
79
75
|
|
|
80
76
|
def create(state)
|
|
@@ -89,29 +85,29 @@ module Kitchen
|
|
|
89
85
|
droplet = client.droplets.find(id: state[:server_id])
|
|
90
86
|
|
|
91
87
|
break if droplet && droplet.networks[:v4] &&
|
|
92
|
-
|
|
88
|
+
droplet.networks[:v4].any? { |n| n[:type] == "public" }
|
|
93
89
|
end
|
|
94
90
|
droplet ||= client.droplets.find(id: state[:server_id])
|
|
95
91
|
|
|
96
92
|
state[:hostname] = droplet.networks[:v4]
|
|
97
|
-
|
|
93
|
+
.find { |n| n[:type] == "public" }["ip_address"]
|
|
98
94
|
|
|
99
95
|
if config[:firewalls]
|
|
100
|
-
debug(
|
|
96
|
+
debug("trying to add the firewall by id")
|
|
101
97
|
fw_ids = if config[:firewalls].is_a?(String)
|
|
102
98
|
config[:firewalls].split(/\s+|,\s+|,+/)
|
|
103
99
|
elsif config[:firewalls].is_a?(Array)
|
|
104
100
|
config[:firewalls]
|
|
105
101
|
else
|
|
106
|
-
warn(
|
|
102
|
+
warn("firewalls attribute is not string/array, ignoring")
|
|
107
103
|
[]
|
|
108
104
|
end
|
|
109
|
-
debug("firewall : #{fw_ids.inspect
|
|
105
|
+
debug("firewall : #{YAML.dump(fw_ids.inspect)}")
|
|
110
106
|
fw_ids.each do |fw_id|
|
|
111
107
|
firewall = client.firewalls.find(id: fw_id)
|
|
112
108
|
if firewall
|
|
113
109
|
client.firewalls
|
|
114
|
-
|
|
110
|
+
.add_droplets([droplet.id], id: firewall.id)
|
|
115
111
|
debug("firewall added: #{firewall.id}")
|
|
116
112
|
else
|
|
117
113
|
warn("firewalls id: '#{fw_id}' was not found in api, ignoring")
|
|
@@ -133,7 +129,7 @@ module Kitchen
|
|
|
133
129
|
|
|
134
130
|
break unless droplet
|
|
135
131
|
|
|
136
|
-
if droplet.status !=
|
|
132
|
+
if droplet.status != "new"
|
|
137
133
|
client.droplets.delete(id: state[:server_id])
|
|
138
134
|
break
|
|
139
135
|
end
|
|
@@ -166,11 +162,11 @@ module Kitchen
|
|
|
166
162
|
# Total: 63
|
|
167
163
|
def default_name
|
|
168
164
|
[
|
|
169
|
-
instance.name.gsub(/\W/,
|
|
170
|
-
(Etc.getlogin ||
|
|
171
|
-
Socket.gethostname.gsub(/\W/,
|
|
172
|
-
Array.new(7) { rand(36).to_s(36) }.join
|
|
173
|
-
].join(
|
|
165
|
+
instance.name.gsub(/\W/, "")[0..14],
|
|
166
|
+
(Etc.getlogin || "nologin").gsub(/\W/, "")[0..14],
|
|
167
|
+
Socket.gethostname.gsub(/\W/, "")[0..22],
|
|
168
|
+
Array.new(7) { rand(36).to_s(36) }.join,
|
|
169
|
+
].join("-").tr("_", "-")
|
|
174
170
|
end
|
|
175
171
|
|
|
176
172
|
private
|
|
@@ -194,6 +190,7 @@ module Kitchen
|
|
|
194
190
|
private_networking: config[:private_networking],
|
|
195
191
|
ipv6: config[:ipv6],
|
|
196
192
|
user_data: config[:user_data],
|
|
193
|
+
vpc_uuid: config[:vpcs],
|
|
197
194
|
tags: if config[:tags].is_a?(String)
|
|
198
195
|
config[:tags].split(/\s+|,\s+|,+/)
|
|
199
196
|
else
|
|
@@ -204,8 +201,8 @@ module Kitchen
|
|
|
204
201
|
resp = client.droplets.create(droplet)
|
|
205
202
|
|
|
206
203
|
if resp.class != DropletKit::Droplet
|
|
207
|
-
error JSON.parse(resp)[
|
|
208
|
-
error
|
|
204
|
+
error JSON.parse(resp)["message"]
|
|
205
|
+
error "Please check your access token is set correctly."
|
|
209
206
|
else
|
|
210
207
|
resp
|
|
211
208
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitchen-digitalocean
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.13.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Greg Fitzgerald
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-07-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: droplet_kit
|
|
@@ -16,7 +16,7 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '3.7'
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
22
|
version: '4.0'
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - ">="
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '
|
|
29
|
+
version: '3.7'
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
32
|
version: '4.0'
|
|
@@ -39,7 +39,7 @@ dependencies:
|
|
|
39
39
|
version: '1.17'
|
|
40
40
|
- - "<"
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '
|
|
42
|
+
version: '4'
|
|
43
43
|
type: :runtime
|
|
44
44
|
prerelease: false
|
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -49,21 +49,7 @@ dependencies:
|
|
|
49
49
|
version: '1.17'
|
|
50
50
|
- - "<"
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
|
-
version: '
|
|
53
|
-
- !ruby/object:Gem::Dependency
|
|
54
|
-
name: bundler
|
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
|
56
|
-
requirements:
|
|
57
|
-
- - ">="
|
|
58
|
-
- !ruby/object:Gem::Version
|
|
59
|
-
version: '0'
|
|
60
|
-
type: :development
|
|
61
|
-
prerelease: false
|
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
63
|
-
requirements:
|
|
64
|
-
- - ">="
|
|
65
|
-
- !ruby/object:Gem::Version
|
|
66
|
-
version: '0'
|
|
52
|
+
version: '4'
|
|
67
53
|
- !ruby/object:Gem::Dependency
|
|
68
54
|
name: cane
|
|
69
55
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -135,19 +121,19 @@ dependencies:
|
|
|
135
121
|
- !ruby/object:Gem::Version
|
|
136
122
|
version: '3.8'
|
|
137
123
|
- !ruby/object:Gem::Dependency
|
|
138
|
-
name:
|
|
124
|
+
name: chefstyle
|
|
139
125
|
requirement: !ruby/object:Gem::Requirement
|
|
140
126
|
requirements:
|
|
141
|
-
- -
|
|
127
|
+
- - '='
|
|
142
128
|
- !ruby/object:Gem::Version
|
|
143
|
-
version:
|
|
129
|
+
version: 2.0.5
|
|
144
130
|
type: :development
|
|
145
131
|
prerelease: false
|
|
146
132
|
version_requirements: !ruby/object:Gem::Requirement
|
|
147
133
|
requirements:
|
|
148
|
-
- -
|
|
134
|
+
- - '='
|
|
149
135
|
- !ruby/object:Gem::Version
|
|
150
|
-
version:
|
|
136
|
+
version: 2.0.5
|
|
151
137
|
- !ruby/object:Gem::Dependency
|
|
152
138
|
name: simplecov
|
|
153
139
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -204,7 +190,7 @@ homepage: https://github.com/test-kitchen/kitchen-digitalocean
|
|
|
204
190
|
licenses:
|
|
205
191
|
- Apache-2.0
|
|
206
192
|
metadata: {}
|
|
207
|
-
post_install_message:
|
|
193
|
+
post_install_message:
|
|
208
194
|
rdoc_options: []
|
|
209
195
|
require_paths:
|
|
210
196
|
- lib
|
|
@@ -212,15 +198,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
212
198
|
requirements:
|
|
213
199
|
- - ">="
|
|
214
200
|
- !ruby/object:Gem::Version
|
|
215
|
-
version: '
|
|
201
|
+
version: '2.5'
|
|
216
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
203
|
requirements:
|
|
218
204
|
- - ">="
|
|
219
205
|
- !ruby/object:Gem::Version
|
|
220
206
|
version: '0'
|
|
221
207
|
requirements: []
|
|
222
|
-
rubygems_version: 3.
|
|
223
|
-
signing_key:
|
|
208
|
+
rubygems_version: 3.2.15
|
|
209
|
+
signing_key:
|
|
224
210
|
specification_version: 4
|
|
225
211
|
summary: A Test Kitchen Driver for Digital Ocean
|
|
226
212
|
test_files: []
|