fog-core 2.1.2 → 2.5.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/.github/FUNDING.yml +2 -0
- data/.github/dependabot.yml +10 -0
- data/.github/workflows/ci.yml +32 -0
- data/.rubocop.yml +16 -12
- data/.rubocop_todo.yml +724 -0
- data/Gemfile +1 -1
- data/README.md +2 -1
- data/Rakefile +2 -14
- data/SECURITY.md +6 -0
- data/changelog.md +80 -6
- data/fog-core.gemspec +12 -9
- data/lib/fog/compute/models/server.rb +7 -3
- data/lib/fog/compute.rb +3 -3
- data/lib/fog/core/association.rb +1 -0
- data/lib/fog/core/attributes/default.rb +7 -0
- data/lib/fog/core/attributes.rb +28 -3
- data/lib/fog/core/cache.rb +58 -55
- data/lib/fog/core/collection.rb +9 -3
- data/lib/fog/core/connection.rb +1 -1
- data/lib/fog/core/current_machine.rb +1 -1
- data/lib/fog/core/errors.rb +1 -1
- data/lib/fog/core/logger.rb +5 -2
- data/lib/fog/core/mock.rb +7 -2
- data/lib/fog/core/model.rb +34 -5
- data/lib/fog/core/provider.rb +33 -10
- data/lib/fog/core/scp.rb +16 -11
- data/lib/fog/core/service.rb +5 -5
- data/lib/fog/core/services_mixin.rb +36 -16
- data/lib/fog/core/ssh.rb +4 -2
- data/lib/fog/core/stringify_keys.rb +0 -2
- data/lib/fog/core/time.rb +2 -2
- data/lib/fog/core/uuid.rb +2 -8
- data/lib/fog/core/version.rb +1 -1
- data/lib/fog/core/wait_for.rb +2 -1
- data/lib/fog/core/wait_for_defaults.rb +2 -0
- data/lib/fog/core.rb +57 -59
- data/lib/fog/formatador.rb +9 -8
- data/lib/fog/schema/data_validator.rb +1 -0
- data/lib/fog/storage.rb +15 -16
- data/lib/fog/test_helpers/collection_helper.rb +2 -0
- data/lib/fog/test_helpers/formats_helper.rb +2 -2
- data/lib/fog/test_helpers/helper.rb +3 -3
- data/lib/fog/test_helpers/minitest/assertions.rb +1 -1
- data/lib/fog/test_helpers/minitest/expectations.rb +1 -1
- data/lib/fog/test_helpers/mock_helper.rb +84 -84
- data/lib/fog/test_helpers/succeeds_helper.rb +2 -2
- data/lib/fog/test_helpers/types_helper.rb +1 -0
- data/lib/tasks/test_task.rb +4 -5
- metadata +57 -86
- data/.github/stale.yml +0 -17
- data/.travis.yml +0 -39
- data/spec/compute/models/server_spec.rb +0 -229
- data/spec/compute_spec.rb +0 -95
- data/spec/connection_spec.rb +0 -105
- data/spec/core/cache_spec.rb +0 -191
- data/spec/core/model_spec.rb +0 -36
- data/spec/core/stringify_keys_spec.rb +0 -38
- data/spec/core/whitelist_keys_spec.rb +0 -36
- data/spec/credentials_spec.rb +0 -88
- data/spec/current_machine_spec.rb +0 -36
- data/spec/fake_app/fake_service.rb +0 -18
- data/spec/fake_app/models/collection.rb +0 -5
- data/spec/fake_app/models/model.rb +0 -2
- data/spec/fake_app/requests/request.rb +0 -11
- data/spec/fog_attribute_spec.rb +0 -549
- data/spec/formatador_spec.rb +0 -154
- data/spec/identity_spec.rb +0 -95
- data/spec/mocking_spec.rb +0 -84
- data/spec/service_spec.rb +0 -201
- data/spec/spec_helper.rb +0 -19
- data/spec/storage_spec.rb +0 -112
- data/spec/test_helpers/formats_helper_spec.rb +0 -121
- data/spec/test_helpers/schema_validator_spec.rb +0 -101
- data/spec/timeout_spec.rb +0 -20
- data/spec/utils_spec.rb +0 -29
- data/spec/uuid_spec.rb +0 -11
- data/spec/wait_for_spec.rb +0 -30
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Light
|
8
8
|
- Wesley Beary
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2024-08-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: builder
|
@@ -26,49 +26,55 @@ dependencies:
|
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: excon
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '0'
|
34
|
+
version: '0.71'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '0'
|
41
|
+
version: '0.71'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: formatador
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0.2'
|
49
|
+
- - "<"
|
47
50
|
- !ruby/object:Gem::Version
|
48
|
-
version: '0
|
51
|
+
version: '2.0'
|
49
52
|
type: :runtime
|
50
53
|
prerelease: false
|
51
54
|
version_requirements: !ruby/object:Gem::Requirement
|
52
55
|
requirements:
|
53
|
-
- - "
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0.2'
|
59
|
+
- - "<"
|
54
60
|
- !ruby/object:Gem::Version
|
55
|
-
version: '0
|
61
|
+
version: '2.0'
|
56
62
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
63
|
+
name: mime-types
|
58
64
|
requirement: !ruby/object:Gem::Requirement
|
59
65
|
requirements:
|
60
|
-
- - "
|
66
|
+
- - ">="
|
61
67
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0
|
68
|
+
version: '0'
|
63
69
|
type: :runtime
|
64
70
|
prerelease: false
|
65
71
|
version_requirements: !ruby/object:Gem::Requirement
|
66
72
|
requirements:
|
67
|
-
- - "
|
73
|
+
- - ">="
|
68
74
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0
|
75
|
+
version: '0'
|
70
76
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
77
|
+
name: minitest
|
72
78
|
requirement: !ruby/object:Gem::Requirement
|
73
79
|
requirements:
|
74
80
|
- - ">="
|
@@ -82,7 +88,7 @@ dependencies:
|
|
82
88
|
- !ruby/object:Gem::Version
|
83
89
|
version: '0'
|
84
90
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
91
|
+
name: minitest-stub-const
|
86
92
|
requirement: !ruby/object:Gem::Requirement
|
87
93
|
requirements:
|
88
94
|
- - ">="
|
@@ -96,7 +102,7 @@ dependencies:
|
|
96
102
|
- !ruby/object:Gem::Version
|
97
103
|
version: '0'
|
98
104
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
105
|
+
name: pry
|
100
106
|
requirement: !ruby/object:Gem::Requirement
|
101
107
|
requirements:
|
102
108
|
- - ">="
|
@@ -110,7 +116,7 @@ dependencies:
|
|
110
116
|
- !ruby/object:Gem::Version
|
111
117
|
version: '0'
|
112
118
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
119
|
+
name: rake
|
114
120
|
requirement: !ruby/object:Gem::Requirement
|
115
121
|
requirements:
|
116
122
|
- - ">="
|
@@ -124,7 +130,7 @@ dependencies:
|
|
124
130
|
- !ruby/object:Gem::Version
|
125
131
|
version: '0'
|
126
132
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
133
|
+
name: rubocop
|
128
134
|
requirement: !ruby/object:Gem::Requirement
|
129
135
|
requirements:
|
130
136
|
- - ">="
|
@@ -138,7 +144,7 @@ dependencies:
|
|
138
144
|
- !ruby/object:Gem::Version
|
139
145
|
version: '0'
|
140
146
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
147
|
+
name: rubocop-minitest
|
142
148
|
requirement: !ruby/object:Gem::Requirement
|
143
149
|
requirements:
|
144
150
|
- - ">="
|
@@ -152,7 +158,7 @@ dependencies:
|
|
152
158
|
- !ruby/object:Gem::Version
|
153
159
|
version: '0'
|
154
160
|
- !ruby/object:Gem::Dependency
|
155
|
-
name: rubocop
|
161
|
+
name: rubocop-rake
|
156
162
|
requirement: !ruby/object:Gem::Requirement
|
157
163
|
requirements:
|
158
164
|
- - ">="
|
@@ -179,6 +185,20 @@ dependencies:
|
|
179
185
|
- - ">="
|
180
186
|
- !ruby/object:Gem::Version
|
181
187
|
version: '0'
|
188
|
+
- !ruby/object:Gem::Dependency
|
189
|
+
name: tins
|
190
|
+
requirement: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
type: :development
|
196
|
+
prerelease: false
|
197
|
+
version_requirements: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
182
202
|
- !ruby/object:Gem::Dependency
|
183
203
|
name: yard
|
184
204
|
requirement: !ruby/object:Gem::Requirement
|
@@ -201,16 +221,19 @@ executables: []
|
|
201
221
|
extensions: []
|
202
222
|
extra_rdoc_files: []
|
203
223
|
files:
|
204
|
-
- ".github/
|
224
|
+
- ".github/FUNDING.yml"
|
225
|
+
- ".github/dependabot.yml"
|
226
|
+
- ".github/workflows/ci.yml"
|
205
227
|
- ".gitignore"
|
206
228
|
- ".rubocop.yml"
|
207
|
-
- ".
|
229
|
+
- ".rubocop_todo.yml"
|
208
230
|
- CONTRIBUTING.md
|
209
231
|
- CONTRIBUTORS.md
|
210
232
|
- Gemfile
|
211
233
|
- LICENSE.md
|
212
234
|
- README.md
|
213
235
|
- Rakefile
|
236
|
+
- SECURITY.md
|
214
237
|
- changelog.md
|
215
238
|
- fog-core.gemspec
|
216
239
|
- lib/fog/account.rb
|
@@ -290,37 +313,12 @@ files:
|
|
290
313
|
- lib/fog/volume.rb
|
291
314
|
- lib/fog/vpn.rb
|
292
315
|
- lib/tasks/test_task.rb
|
293
|
-
- spec/compute/models/server_spec.rb
|
294
|
-
- spec/compute_spec.rb
|
295
|
-
- spec/connection_spec.rb
|
296
|
-
- spec/core/cache_spec.rb
|
297
|
-
- spec/core/model_spec.rb
|
298
|
-
- spec/core/stringify_keys_spec.rb
|
299
|
-
- spec/core/whitelist_keys_spec.rb
|
300
|
-
- spec/credentials_spec.rb
|
301
|
-
- spec/current_machine_spec.rb
|
302
|
-
- spec/fake_app/fake_service.rb
|
303
|
-
- spec/fake_app/models/collection.rb
|
304
|
-
- spec/fake_app/models/model.rb
|
305
|
-
- spec/fake_app/requests/request.rb
|
306
|
-
- spec/fog_attribute_spec.rb
|
307
|
-
- spec/formatador_spec.rb
|
308
|
-
- spec/identity_spec.rb
|
309
|
-
- spec/mocking_spec.rb
|
310
|
-
- spec/service_spec.rb
|
311
|
-
- spec/spec_helper.rb
|
312
|
-
- spec/storage_spec.rb
|
313
|
-
- spec/test_helpers/formats_helper_spec.rb
|
314
|
-
- spec/test_helpers/schema_validator_spec.rb
|
315
|
-
- spec/timeout_spec.rb
|
316
|
-
- spec/utils_spec.rb
|
317
|
-
- spec/uuid_spec.rb
|
318
|
-
- spec/wait_for_spec.rb
|
319
316
|
homepage: https://github.com/fog/fog-core
|
320
317
|
licenses:
|
321
318
|
- MIT
|
322
|
-
metadata:
|
323
|
-
|
319
|
+
metadata:
|
320
|
+
rubygems_mfa_required: 'true'
|
321
|
+
post_install_message:
|
324
322
|
rdoc_options: []
|
325
323
|
require_paths:
|
326
324
|
- lib
|
@@ -328,42 +326,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
328
326
|
requirements:
|
329
327
|
- - ">="
|
330
328
|
- !ruby/object:Gem::Version
|
331
|
-
version: 2.0
|
329
|
+
version: '2.0'
|
332
330
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
333
331
|
requirements:
|
334
332
|
- - ">="
|
335
333
|
- !ruby/object:Gem::Version
|
336
334
|
version: '0'
|
337
335
|
requirements: []
|
338
|
-
|
339
|
-
|
340
|
-
signing_key:
|
336
|
+
rubygems_version: 3.4.10
|
337
|
+
signing_key:
|
341
338
|
specification_version: 4
|
342
339
|
summary: Shared classes and tests for fog providers and services.
|
343
|
-
test_files:
|
344
|
-
- spec/compute/models/server_spec.rb
|
345
|
-
- spec/compute_spec.rb
|
346
|
-
- spec/connection_spec.rb
|
347
|
-
- spec/core/cache_spec.rb
|
348
|
-
- spec/core/model_spec.rb
|
349
|
-
- spec/core/stringify_keys_spec.rb
|
350
|
-
- spec/core/whitelist_keys_spec.rb
|
351
|
-
- spec/credentials_spec.rb
|
352
|
-
- spec/current_machine_spec.rb
|
353
|
-
- spec/fake_app/fake_service.rb
|
354
|
-
- spec/fake_app/models/collection.rb
|
355
|
-
- spec/fake_app/models/model.rb
|
356
|
-
- spec/fake_app/requests/request.rb
|
357
|
-
- spec/fog_attribute_spec.rb
|
358
|
-
- spec/formatador_spec.rb
|
359
|
-
- spec/identity_spec.rb
|
360
|
-
- spec/mocking_spec.rb
|
361
|
-
- spec/service_spec.rb
|
362
|
-
- spec/spec_helper.rb
|
363
|
-
- spec/storage_spec.rb
|
364
|
-
- spec/test_helpers/formats_helper_spec.rb
|
365
|
-
- spec/test_helpers/schema_validator_spec.rb
|
366
|
-
- spec/timeout_spec.rb
|
367
|
-
- spec/utils_spec.rb
|
368
|
-
- spec/uuid_spec.rb
|
369
|
-
- spec/wait_for_spec.rb
|
340
|
+
test_files: []
|
data/.github/stale.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# Number of days of inactivity before an issue becomes stale
|
2
|
-
daysUntilStale: 60
|
3
|
-
# Number of days of inactivity before a stale issue is closed
|
4
|
-
daysUntilClose: 7
|
5
|
-
# Issues with these labels will never be considered stale
|
6
|
-
exemptLabels:
|
7
|
-
- pinned
|
8
|
-
- security
|
9
|
-
# Label to use when marking an issue as stale
|
10
|
-
staleLabel: wontfix
|
11
|
-
# Comment to post when marking an issue as stale. Set to `false` to disable
|
12
|
-
markComment: >
|
13
|
-
This issue has been automatically marked stale due to inactivity.
|
14
|
-
It will be closed if no further activity occurs.
|
15
|
-
Thank you for your contributions.
|
16
|
-
# Comment to post when closing a stale issue. Set to `false` to disable
|
17
|
-
closeComment: false
|
data/.travis.yml
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
rvm:
|
4
|
-
- 2.0
|
5
|
-
- 2.1
|
6
|
-
- 2.2
|
7
|
-
- 2.3
|
8
|
-
- 2.4
|
9
|
-
- jruby-head
|
10
|
-
|
11
|
-
sudo: false
|
12
|
-
dist: trusty
|
13
|
-
|
14
|
-
script: bundle exec rake travis
|
15
|
-
|
16
|
-
matrix:
|
17
|
-
fast_finish: true
|
18
|
-
include:
|
19
|
-
- rvm: 2.1
|
20
|
-
gemfile: Gemfile
|
21
|
-
env: COVERAGE=true
|
22
|
-
- rvm: jruby-head
|
23
|
-
gemfile: Gemfile
|
24
|
-
allow_failures:
|
25
|
-
- rvm: jruby-head
|
26
|
-
- rvm: jruby9k
|
27
|
-
|
28
|
-
notifications:
|
29
|
-
email: false
|
30
|
-
irc:
|
31
|
-
channels:
|
32
|
-
- "irc.freenode.org#ruby-fog"
|
33
|
-
template:
|
34
|
-
- "[#%{build_number}] %{message} %{build_url}"
|
35
|
-
- "[#%{build_number}] %{commit} on %{branch} by %{author}"
|
36
|
-
- "[#%{build_number}] %{compare_url}"
|
37
|
-
on_success: always
|
38
|
-
on_failure: always
|
39
|
-
use_notice: false
|
@@ -1,229 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "fog/compute/models/server"
|
3
|
-
|
4
|
-
describe Fog::Compute::Server do
|
5
|
-
before do
|
6
|
-
@server = Fog::Compute::Server.new
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "#sshable?" do
|
10
|
-
describe "when the server is not ready" do
|
11
|
-
it "is false" do
|
12
|
-
@server.stub(:ready?, false) do
|
13
|
-
refute @server.sshable?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "when the server is ready" do
|
19
|
-
describe "when the ssh_ip_address is nil" do
|
20
|
-
it "is false" do
|
21
|
-
@server.stub(:ready?, true) do
|
22
|
-
@server.stub(:ssh_ip_address, nil) do
|
23
|
-
refute @server.sshable?
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
|
30
|
-
describe "when the ssh_ip_address exists" do
|
31
|
-
# Define these constants which would be imported by net-ssh once loaded
|
32
|
-
module Net
|
33
|
-
module SSH
|
34
|
-
class AuthenticationFailed < RuntimeError
|
35
|
-
end
|
36
|
-
class Disconnect < RuntimeError
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe "and ssh times out" do
|
42
|
-
it "is false" do
|
43
|
-
@server.stub(:ready?, true) do
|
44
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
45
|
-
raises_timeout = lambda { |_time| raise Timeout::Error.new }
|
46
|
-
Timeout.stub(:timeout, raises_timeout) do
|
47
|
-
refute @server.sshable?
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "and it raises Net::SSH::AuthenticationFailed" do
|
55
|
-
it "is false" do
|
56
|
-
@server.stub(:ready?, true) do
|
57
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
58
|
-
raise_error = lambda { |_cmd, _options| raise Net::SSH::AuthenticationFailed.new }
|
59
|
-
@server.stub(:ssh, raise_error) do
|
60
|
-
refute @server.sshable?
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
it "resets SSH timeout" do
|
67
|
-
@server.instance_variable_set(:@sshable_timeout, 8)
|
68
|
-
@server.stub(:ready?, true) do
|
69
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
70
|
-
raise_error = lambda { |_cmd, _options| raise Net::SSH::AuthenticationFailed.new }
|
71
|
-
@server.stub(:ssh, raise_error) do
|
72
|
-
@server.sshable?
|
73
|
-
assert_nil @server.instance_variable_get(:@sshable_timeout), nil
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe "and it raises Net::SSH::Disconnect" do
|
81
|
-
it "is false" do
|
82
|
-
@server.stub(:ready?, true) do
|
83
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
84
|
-
raise_error = lambda { |_cmd, _options| raise Net::SSH::Disconnect.new }
|
85
|
-
@server.stub(:ssh, raise_error) do
|
86
|
-
refute @server.sshable?
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
it "resets SSH timeout" do
|
93
|
-
@server.instance_variable_set(:@sshable_timeout, 8)
|
94
|
-
@server.stub(:ready?, true) do
|
95
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
96
|
-
raise_error = lambda { |_cmd, _options| raise Net::SSH::Disconnect.new }
|
97
|
-
@server.stub(:ssh, raise_error) do
|
98
|
-
@server.sshable?
|
99
|
-
assert_nil @server.instance_variable_get(:@sshable_timeout), nil
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe "and it raises SystemCallError" do
|
107
|
-
it "is false" do
|
108
|
-
@server.stub(:ready?, true) do
|
109
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
110
|
-
raise_error = lambda { |_cmd, _options| raise SystemCallError.new("message, 0") }
|
111
|
-
@server.stub(:ssh, raise_error) do
|
112
|
-
refute @server.sshable?
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
it "does not increase SSH timeout" do
|
119
|
-
@server.stub(:ready?, true) do
|
120
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
121
|
-
raise_error = lambda { |_cmd, _options| raise SystemCallError.new("message, 0") }
|
122
|
-
@server.stub(:ssh, raise_error) do
|
123
|
-
@server.sshable?
|
124
|
-
assert_equal @server.instance_variable_get(:@sshable_timeout), 8
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
describe "and ssh completes within the designated timeout" do
|
132
|
-
it "is true" do
|
133
|
-
@server.stub(:ready?, true) do
|
134
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
135
|
-
@server.stub(:ssh, "datum") do
|
136
|
-
assert @server.sshable?
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
describe "when called successively" do
|
144
|
-
describe "and ssh times out" do
|
145
|
-
it "increases the timeout factor by 1.5" do
|
146
|
-
@server.stub(:ready?, true) do
|
147
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
148
|
-
raises_timeout = lambda do |time|
|
149
|
-
assert(time == 8)
|
150
|
-
raise Timeout::Error.new
|
151
|
-
end
|
152
|
-
Timeout.stub(:timeout, raises_timeout) do
|
153
|
-
refute @server.sshable?
|
154
|
-
end
|
155
|
-
|
156
|
-
raises_timeout = lambda do |time|
|
157
|
-
assert_equal(12, time)
|
158
|
-
raise Timeout::Error.new
|
159
|
-
end
|
160
|
-
Timeout.stub(:timeout, raises_timeout) do
|
161
|
-
refute @server.sshable?
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
it "does not increase timeout beyond 60s" do
|
168
|
-
@server.stub(:ready?, true) do
|
169
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
170
|
-
raises_timeout = lambda { |_time| raise Timeout::Error.new }
|
171
|
-
Timeout.stub(:timeout, raises_timeout) do
|
172
|
-
5.times { refute @server.sshable? }
|
173
|
-
end
|
174
|
-
|
175
|
-
raises_timeout = lambda do |time|
|
176
|
-
assert_equal(60, time)
|
177
|
-
raise Timeout::Error.new
|
178
|
-
end
|
179
|
-
Timeout.stub(:timeout, raises_timeout) do
|
180
|
-
refute @server.sshable?
|
181
|
-
end
|
182
|
-
|
183
|
-
raises_timeout = lambda do |time|
|
184
|
-
assert_equal(60, time)
|
185
|
-
raise Timeout::Error.new
|
186
|
-
end
|
187
|
-
Timeout.stub(:timeout, raises_timeout) do
|
188
|
-
refute @server.sshable?
|
189
|
-
end
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
describe "when ssh eventually succeeds" do
|
195
|
-
it "resets the timeout to the initial value" do
|
196
|
-
@server.stub(:ready?, true) do
|
197
|
-
@server.stub(:ssh_ip_address, "10.0.0.1") do
|
198
|
-
raises_timeout = lambda do |time|
|
199
|
-
assert(time == 8)
|
200
|
-
raise Timeout::Error.new
|
201
|
-
end
|
202
|
-
Timeout.stub(:timeout, raises_timeout) do
|
203
|
-
refute @server.sshable?
|
204
|
-
end
|
205
|
-
|
206
|
-
@server.stub(:ssh, "datum") do
|
207
|
-
assert @server.sshable?
|
208
|
-
end
|
209
|
-
|
210
|
-
raises_timeout = lambda do |time|
|
211
|
-
assert_equal(8, time)
|
212
|
-
raise Timeout::Error.new
|
213
|
-
end
|
214
|
-
Timeout.stub(:timeout, raises_timeout) do
|
215
|
-
refute @server.sshable?
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
end
|
226
|
-
end
|
227
|
-
|
228
|
-
end
|
229
|
-
end
|
data/spec/compute_spec.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
module Fog
|
4
|
-
module Compute
|
5
|
-
def self.require(*_args); end
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "Fog::Compute" do
|
10
|
-
describe "#new" do
|
11
|
-
module Fog
|
12
|
-
module TheRightWay
|
13
|
-
extend Provider
|
14
|
-
service(:compute, "Compute")
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
module Fog
|
19
|
-
module TheRightWay
|
20
|
-
class Compute
|
21
|
-
def initialize(_args); end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
it "instantiates an instance of Fog::Compute::<Provider> from the :provider keyword arg" do
|
27
|
-
compute = Fog::Compute.new(:provider => :therightway)
|
28
|
-
assert_instance_of(Fog::TheRightWay::Compute, compute)
|
29
|
-
end
|
30
|
-
|
31
|
-
module Fog
|
32
|
-
module TheWrongWay
|
33
|
-
extend Provider
|
34
|
-
service(:compute, "Compute")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
module Fog
|
39
|
-
module Compute
|
40
|
-
class TheWrongWay
|
41
|
-
def initialize(_args); end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it "instantiates an instance of Fog::<Provider>::Compute from the :provider keyword arg" do
|
47
|
-
compute = Fog::Compute.new(:provider => :thewrongway)
|
48
|
-
assert_instance_of(Fog::Compute::TheWrongWay, compute)
|
49
|
-
end
|
50
|
-
|
51
|
-
module Fog
|
52
|
-
module BothWays
|
53
|
-
extend Provider
|
54
|
-
service(:compute, "Compute")
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
module Fog
|
59
|
-
module BothWays
|
60
|
-
class Compute
|
61
|
-
attr_reader :args
|
62
|
-
def initialize(args)
|
63
|
-
@args = args
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
module Fog
|
70
|
-
module Compute
|
71
|
-
class BothWays
|
72
|
-
def initialize(_args); end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe "when both Fog::Compute::<Provider> and Fog::<Provider>::Compute exist" do
|
78
|
-
it "prefers Fog::<Provider>::Compute" do
|
79
|
-
compute = Fog::Compute.new(:provider => :bothways)
|
80
|
-
assert_instance_of(Fog::BothWays::Compute, compute)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
it "passes the supplied keyword args less :provider to Fog::Compute::<Provider>#new" do
|
85
|
-
compute = Fog::Compute.new(:provider => :bothways, :extra => :stuff)
|
86
|
-
assert_equal({ :extra => :stuff }, compute.args)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "raises ArgumentError when given a :provider where a Fog::Compute::Provider that does not exist" do
|
90
|
-
assert_raises(ArgumentError) do
|
91
|
-
Fog::Compute.new(:provider => :wat)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|