kitchen-digitalocean 0.12.0 → 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 +37 -37
- data/lib/kitchen/driver/digitalocean_version.rb +1 -1
- metadata +9 -23
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,13 +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
|
|
26
|
-
autoload :YAML,
|
|
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"
|
|
27
27
|
|
|
28
28
|
module Kitchen
|
|
29
29
|
module Driver
|
|
@@ -31,9 +31,9 @@ module Kitchen
|
|
|
31
31
|
#
|
|
32
32
|
# @author Greg Fitzgerald <greg@gregf.org>
|
|
33
33
|
class Digitalocean < Kitchen::Driver::SSHBase
|
|
34
|
-
default_config :username,
|
|
35
|
-
default_config :port,
|
|
36
|
-
default_config :size,
|
|
34
|
+
default_config :username, "root"
|
|
35
|
+
default_config :port, "22"
|
|
36
|
+
default_config :size, "s-1vcpu-1gb"
|
|
37
37
|
default_config :monitoring, false
|
|
38
38
|
default_config(:image, &:default_image)
|
|
39
39
|
default_config(:server_name, &:default_name)
|
|
@@ -45,32 +45,32 @@ module Kitchen
|
|
|
45
45
|
default_config :vpcs, nil
|
|
46
46
|
|
|
47
47
|
default_config :region do
|
|
48
|
-
ENV[
|
|
48
|
+
ENV["DIGITALOCEAN_REGION"] || "nyc1"
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
default_config :digitalocean_access_token do
|
|
52
|
-
ENV[
|
|
52
|
+
ENV["DIGITALOCEAN_ACCESS_TOKEN"]
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
default_config :ssh_key_ids do
|
|
56
|
-
ENV[
|
|
56
|
+
ENV["DIGITALOCEAN_SSH_KEY_IDS"] || ENV["SSH_KEY_IDS"]
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
required_config :digitalocean_access_token
|
|
60
60
|
required_config :ssh_key_ids
|
|
61
61
|
|
|
62
62
|
PLATFORM_SLUG_MAP = {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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",
|
|
74
74
|
}.freeze
|
|
75
75
|
|
|
76
76
|
def create(state)
|
|
@@ -85,21 +85,21 @@ module Kitchen
|
|
|
85
85
|
droplet = client.droplets.find(id: state[:server_id])
|
|
86
86
|
|
|
87
87
|
break if droplet && droplet.networks[:v4] &&
|
|
88
|
-
|
|
88
|
+
droplet.networks[:v4].any? { |n| n[:type] == "public" }
|
|
89
89
|
end
|
|
90
90
|
droplet ||= client.droplets.find(id: state[:server_id])
|
|
91
91
|
|
|
92
92
|
state[:hostname] = droplet.networks[:v4]
|
|
93
|
-
|
|
93
|
+
.find { |n| n[:type] == "public" }["ip_address"]
|
|
94
94
|
|
|
95
95
|
if config[:firewalls]
|
|
96
|
-
debug(
|
|
96
|
+
debug("trying to add the firewall by id")
|
|
97
97
|
fw_ids = if config[:firewalls].is_a?(String)
|
|
98
98
|
config[:firewalls].split(/\s+|,\s+|,+/)
|
|
99
99
|
elsif config[:firewalls].is_a?(Array)
|
|
100
100
|
config[:firewalls]
|
|
101
101
|
else
|
|
102
|
-
warn(
|
|
102
|
+
warn("firewalls attribute is not string/array, ignoring")
|
|
103
103
|
[]
|
|
104
104
|
end
|
|
105
105
|
debug("firewall : #{YAML.dump(fw_ids.inspect)}")
|
|
@@ -107,7 +107,7 @@ module Kitchen
|
|
|
107
107
|
firewall = client.firewalls.find(id: fw_id)
|
|
108
108
|
if firewall
|
|
109
109
|
client.firewalls
|
|
110
|
-
|
|
110
|
+
.add_droplets([droplet.id], id: firewall.id)
|
|
111
111
|
debug("firewall added: #{firewall.id}")
|
|
112
112
|
else
|
|
113
113
|
warn("firewalls id: '#{fw_id}' was not found in api, ignoring")
|
|
@@ -129,7 +129,7 @@ module Kitchen
|
|
|
129
129
|
|
|
130
130
|
break unless droplet
|
|
131
131
|
|
|
132
|
-
if droplet.status !=
|
|
132
|
+
if droplet.status != "new"
|
|
133
133
|
client.droplets.delete(id: state[:server_id])
|
|
134
134
|
break
|
|
135
135
|
end
|
|
@@ -162,11 +162,11 @@ module Kitchen
|
|
|
162
162
|
# Total: 63
|
|
163
163
|
def default_name
|
|
164
164
|
[
|
|
165
|
-
instance.name.gsub(/\W/,
|
|
166
|
-
(Etc.getlogin ||
|
|
167
|
-
Socket.gethostname.gsub(/\W/,
|
|
168
|
-
Array.new(7) { rand(36).to_s(36) }.join
|
|
169
|
-
].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("_", "-")
|
|
170
170
|
end
|
|
171
171
|
|
|
172
172
|
private
|
|
@@ -201,8 +201,8 @@ module Kitchen
|
|
|
201
201
|
resp = client.droplets.create(droplet)
|
|
202
202
|
|
|
203
203
|
if resp.class != DropletKit::Droplet
|
|
204
|
-
error JSON.parse(resp)[
|
|
205
|
-
error
|
|
204
|
+
error JSON.parse(resp)["message"]
|
|
205
|
+
error "Please check your access token is set correctly."
|
|
206
206
|
else
|
|
207
207
|
resp
|
|
208
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
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-07-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: droplet_kit
|
|
@@ -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
|