vmpooler 2.3.0 → 2.4.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/vmpooler/api/helpers.rb +2 -7
- data/lib/vmpooler/api/v1.rb +1 -1
- data/lib/vmpooler/api/v2.rb +76 -0
- data/lib/vmpooler/pool_manager.rb +14 -8
- data/lib/vmpooler/version.rb +1 -1
- metadata +39 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4642648148ddd5b7d470163c4509ccad6f3a377f0f20dc1a43a940aaacf6a157
|
4
|
+
data.tar.gz: 7fe2d19cbfb839a750872d09adf01048d23dba9aa345b6e1150e3787f5c47f51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf2dc2f68527913308264c10f7c986523e9bc4922cc1b1283a9125596d74e474f30ae973ecec7c29c6c7f524ab016cc98e59caffa690185af588e00505de7a0e
|
7
|
+
data.tar.gz: 357a8436751c0e47d29bd00cea9f9e380548f6a19ed541e6c0487d5da9afc7840aadae79911d17439571339cf1b8a6e8c414fb2653ac6a72f1c254c8903bcb3d
|
data/lib/vmpooler/api/helpers.rb
CHANGED
@@ -181,14 +181,9 @@ module Vmpooler
|
|
181
181
|
/^\d{4}-\d{2}-\d{2}$/ === date_str
|
182
182
|
end
|
183
183
|
|
184
|
+
# NOTE: domain is not needed here, so we should update the callers of this method
|
184
185
|
def hostname_shorten(hostname, domain=nil)
|
185
|
-
|
186
|
-
hostname = hostname[/[^.]+/]
|
187
|
-
elsif hostname =~ /^[\w-]+\..+$/
|
188
|
-
hostname = hostname[/[^.]+/]
|
189
|
-
end
|
190
|
-
|
191
|
-
hostname
|
186
|
+
hostname[/[^.]+/]
|
192
187
|
end
|
193
188
|
|
194
189
|
def get_task_times(backend, task, date_str)
|
data/lib/vmpooler/api/v1.rb
CHANGED
@@ -1519,7 +1519,7 @@ module Vmpooler
|
|
1519
1519
|
|
1520
1520
|
post "#{api_prefix}/vm/:hostname/snapshot/:snapshot/?" do
|
1521
1521
|
content_type :json
|
1522
|
-
metrics.increment('http_requests_vm_total.post.vm.
|
1522
|
+
metrics.increment('http_requests_vm_total.post.vm.snapshot')
|
1523
1523
|
|
1524
1524
|
need_token! if Vmpooler::API.settings.config[:auth]
|
1525
1525
|
|
data/lib/vmpooler/api/v2.rb
CHANGED
@@ -258,6 +258,82 @@ module Vmpooler
|
|
258
258
|
JSON.pretty_generate(result)
|
259
259
|
end
|
260
260
|
|
261
|
+
get "#{api_prefix}/vm/:hostname/?" do
|
262
|
+
content_type :json
|
263
|
+
metrics.increment('http_requests_vm_total.get.vm.hostname')
|
264
|
+
|
265
|
+
result = {}
|
266
|
+
|
267
|
+
status 404
|
268
|
+
result['ok'] = false
|
269
|
+
|
270
|
+
params[:hostname] = hostname_shorten(params[:hostname], nil)
|
271
|
+
|
272
|
+
rdata = backend.hgetall("vmpooler__vm__#{params[:hostname]}")
|
273
|
+
unless rdata.empty?
|
274
|
+
status 200
|
275
|
+
result['ok'] = true
|
276
|
+
|
277
|
+
result[params[:hostname]] = {}
|
278
|
+
|
279
|
+
result[params[:hostname]]['template'] = rdata['template']
|
280
|
+
result[params[:hostname]]['lifetime'] = (rdata['lifetime'] || config['vm_lifetime']).to_i
|
281
|
+
|
282
|
+
if rdata['destroy']
|
283
|
+
result[params[:hostname]]['running'] = ((Time.parse(rdata['destroy']) - Time.parse(rdata['checkout'])) / 60 / 60).round(2) if rdata['checkout']
|
284
|
+
result[params[:hostname]]['state'] = 'destroyed'
|
285
|
+
elsif rdata['checkout']
|
286
|
+
result[params[:hostname]]['running'] = ((Time.now - Time.parse(rdata['checkout'])) / 60 / 60).round(2)
|
287
|
+
result[params[:hostname]]['remaining'] = ((Time.parse(rdata['checkout']) + rdata['lifetime'].to_i*60*60 - Time.now) / 60 / 60).round(2)
|
288
|
+
result[params[:hostname]]['start_time'] = Time.parse(rdata['checkout']).to_datetime.rfc3339
|
289
|
+
result[params[:hostname]]['end_time'] = (Time.parse(rdata['checkout']) + rdata['lifetime'].to_i*60*60).to_datetime.rfc3339
|
290
|
+
result[params[:hostname]]['state'] = 'running'
|
291
|
+
elsif rdata['check']
|
292
|
+
result[params[:hostname]]['state'] = 'ready'
|
293
|
+
else
|
294
|
+
result[params[:hostname]]['state'] = 'pending'
|
295
|
+
end
|
296
|
+
|
297
|
+
rdata.keys.each do |key|
|
298
|
+
if key.match('^tag\:(.+?)$')
|
299
|
+
result[params[:hostname]]['tags'] ||= {}
|
300
|
+
result[params[:hostname]]['tags'][$1] = rdata[key]
|
301
|
+
end
|
302
|
+
|
303
|
+
if key.match('^snapshot\:(.+?)$')
|
304
|
+
result[params[:hostname]]['snapshots'] ||= []
|
305
|
+
result[params[:hostname]]['snapshots'].push($1)
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
if rdata['disk']
|
310
|
+
result[params[:hostname]]['disk'] = rdata['disk'].split(':')
|
311
|
+
end
|
312
|
+
|
313
|
+
# Look up IP address of the hostname
|
314
|
+
begin
|
315
|
+
ipAddress = TCPSocket.gethostbyname(params[:hostname])[3]
|
316
|
+
rescue StandardError
|
317
|
+
ipAddress = ""
|
318
|
+
end
|
319
|
+
|
320
|
+
result[params[:hostname]]['ip'] = ipAddress
|
321
|
+
|
322
|
+
if rdata['pool']
|
323
|
+
vmdomain = Parsing.get_domain_for_pool(full_config, rdata['pool'])
|
324
|
+
if vmdomain
|
325
|
+
result[params[:hostname]]['fqdn'] = "#{params[:hostname]}.#{vmdomain}"
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
result[params[:hostname]]['host'] = rdata['host'] if rdata['host']
|
330
|
+
result[params[:hostname]]['migrated'] = rdata['migrated'] if rdata['migrated']
|
331
|
+
|
332
|
+
end
|
333
|
+
|
334
|
+
JSON.pretty_generate(result)
|
335
|
+
end
|
336
|
+
|
261
337
|
post "#{api_prefix}/ondemandvm/?" do
|
262
338
|
content_type :json
|
263
339
|
metrics.increment('http_requests_vm_total.post.ondemand.requestid')
|
@@ -119,7 +119,13 @@ module Vmpooler
|
|
119
119
|
pool_alias = redis.hget("vmpooler__vm__#{vm}", 'pool_alias') if request_id
|
120
120
|
redis.multi
|
121
121
|
redis.smove("vmpooler__pending__#{pool}", "vmpooler__completed__#{pool}", vm)
|
122
|
-
|
122
|
+
if request_id
|
123
|
+
ondemandrequest_hash = redis.hgetall("vmpooler__odrequest__#{request_id}")
|
124
|
+
if ondemandrequest_hash && ondemandrequest_hash['status'] != 'failed' && ondemandrequest_hash['status'] != 'deleted'
|
125
|
+
# will retry a VM that did not come up as vm_ready? only if it has not been market failed or deleted
|
126
|
+
redis.zadd('vmpooler__odcreate__task', 1, "#{pool_alias}:#{pool}:1:#{request_id}")
|
127
|
+
end
|
128
|
+
end
|
123
129
|
redis.exec
|
124
130
|
$metrics.increment("errors.markedasfailed.#{pool}")
|
125
131
|
$logger.log('d', "[!] [#{pool}] '#{vm}' marked as 'failed' after #{timeout} minutes")
|
@@ -1596,19 +1602,19 @@ module Vmpooler
|
|
1596
1602
|
$config[:pools].each do |pool|
|
1597
1603
|
provider_name = pool['provider']
|
1598
1604
|
# The provider_class parameter can be defined in the provider's data eg
|
1599
|
-
|
1600
|
-
#
|
1601
|
-
#
|
1602
|
-
#
|
1603
|
-
#
|
1605
|
+
# :providers:
|
1606
|
+
# :vsphere:
|
1607
|
+
# provider_class: 'vsphere'
|
1608
|
+
# :another-vsphere:
|
1609
|
+
# provider_class: 'vsphere'
|
1604
1610
|
# the above would create two providers/vsphere.rb class objects named 'vsphere' and 'another-vsphere'
|
1605
1611
|
# each pools would then define which provider definition to use: vsphere or another-vsphere
|
1606
1612
|
#
|
1607
1613
|
# if provider_class is not defined it will try to use the provider_name as the class, this is to be
|
1608
1614
|
# backwards compatible for example when there is only one provider listed
|
1609
1615
|
# :providers:
|
1610
|
-
#
|
1611
|
-
#
|
1616
|
+
# :dummy:
|
1617
|
+
# filename: 'db.txs'
|
1612
1618
|
# the above example would create an object based on the class providers/dummy.rb
|
1613
1619
|
if $config[:providers].nil? || $config[:providers][provider_name.to_sym].nil? || $config[:providers][provider_name.to_sym]['provider_class'].nil?
|
1614
1620
|
provider_class = provider_name
|
data/lib/vmpooler/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vmpooler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -17,8 +17,8 @@ dependencies:
|
|
17
17
|
- !ruby/object:Gem::Version
|
18
18
|
version: '1.1'
|
19
19
|
name: concurrent-ruby
|
20
|
-
type: :runtime
|
21
20
|
prerelease: false
|
21
|
+
type: :runtime
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
@@ -31,8 +31,8 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '2.2'
|
33
33
|
name: connection_pool
|
34
|
-
type: :runtime
|
35
34
|
prerelease: false
|
35
|
+
type: :runtime
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
@@ -45,8 +45,8 @@ dependencies:
|
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '1.2'
|
47
47
|
name: deep_merge
|
48
|
-
type: :runtime
|
49
48
|
prerelease: false
|
49
|
+
type: :runtime
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
@@ -59,27 +59,13 @@ dependencies:
|
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '0.16'
|
61
61
|
name: net-ldap
|
62
|
-
type: :runtime
|
63
62
|
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0.16'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '1.10'
|
75
|
-
name: nokogiri
|
76
63
|
type: :runtime
|
77
|
-
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
68
|
+
version: '0.16'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
requirement: !ruby/object:Gem::Requirement
|
85
71
|
requirements:
|
@@ -87,8 +73,8 @@ dependencies:
|
|
87
73
|
- !ruby/object:Gem::Version
|
88
74
|
version: 0.20.1
|
89
75
|
name: opentelemetry-exporter-jaeger
|
90
|
-
type: :runtime
|
91
76
|
prerelease: false
|
77
|
+
type: :runtime
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - '='
|
@@ -101,8 +87,8 @@ dependencies:
|
|
101
87
|
- !ruby/object:Gem::Version
|
102
88
|
version: 0.19.2
|
103
89
|
name: opentelemetry-instrumentation-concurrent_ruby
|
104
|
-
type: :runtime
|
105
90
|
prerelease: false
|
91
|
+
type: :runtime
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - '='
|
@@ -113,29 +99,29 @@ dependencies:
|
|
113
99
|
requirements:
|
114
100
|
- - '='
|
115
101
|
- !ruby/object:Gem::Version
|
116
|
-
version: 0.19.
|
102
|
+
version: 0.19.4
|
117
103
|
name: opentelemetry-instrumentation-http_client
|
118
|
-
type: :runtime
|
119
104
|
prerelease: false
|
105
|
+
type: :runtime
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - '='
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.19.
|
110
|
+
version: 0.19.4
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
requirement: !ruby/object:Gem::Requirement
|
127
113
|
requirements:
|
128
114
|
- - '='
|
129
115
|
- !ruby/object:Gem::Version
|
130
|
-
version: 0.21.
|
116
|
+
version: 0.21.3
|
131
117
|
name: opentelemetry-instrumentation-redis
|
132
|
-
type: :runtime
|
133
118
|
prerelease: false
|
119
|
+
type: :runtime
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - '='
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.21.
|
124
|
+
version: 0.21.3
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
requirement: !ruby/object:Gem::Requirement
|
141
127
|
requirements:
|
@@ -143,8 +129,8 @@ dependencies:
|
|
143
129
|
- !ruby/object:Gem::Version
|
144
130
|
version: 0.19.3
|
145
131
|
name: opentelemetry-instrumentation-sinatra
|
146
|
-
type: :runtime
|
147
132
|
prerelease: false
|
133
|
+
type: :runtime
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
136
|
- - '='
|
@@ -157,8 +143,8 @@ dependencies:
|
|
157
143
|
- !ruby/object:Gem::Version
|
158
144
|
version: 0.19.1
|
159
145
|
name: opentelemetry-resource_detectors
|
160
|
-
type: :runtime
|
161
146
|
prerelease: false
|
147
|
+
type: :runtime
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
150
|
- - '='
|
@@ -174,8 +160,8 @@ dependencies:
|
|
174
160
|
- !ruby/object:Gem::Version
|
175
161
|
version: 1.0.2
|
176
162
|
name: opentelemetry-sdk
|
177
|
-
type: :runtime
|
178
163
|
prerelease: false
|
164
|
+
type: :runtime
|
179
165
|
version_requirements: !ruby/object:Gem::Requirement
|
180
166
|
requirements:
|
181
167
|
- - "~>"
|
@@ -191,8 +177,8 @@ dependencies:
|
|
191
177
|
- !ruby/object:Gem::Version
|
192
178
|
version: 0.0.11
|
193
179
|
name: pickup
|
194
|
-
type: :runtime
|
195
180
|
prerelease: false
|
181
|
+
type: :runtime
|
196
182
|
version_requirements: !ruby/object:Gem::Requirement
|
197
183
|
requirements:
|
198
184
|
- - "~>"
|
@@ -205,8 +191,8 @@ dependencies:
|
|
205
191
|
- !ruby/object:Gem::Version
|
206
192
|
version: '2.0'
|
207
193
|
name: prometheus-client
|
208
|
-
type: :runtime
|
209
194
|
prerelease: false
|
195
|
+
type: :runtime
|
210
196
|
version_requirements: !ruby/object:Gem::Requirement
|
211
197
|
requirements:
|
212
198
|
- - "~>"
|
@@ -222,8 +208,8 @@ dependencies:
|
|
222
208
|
- !ruby/object:Gem::Version
|
223
209
|
version: 5.0.4
|
224
210
|
name: puma
|
225
|
-
type: :runtime
|
226
211
|
prerelease: false
|
212
|
+
type: :runtime
|
227
213
|
version_requirements: !ruby/object:Gem::Requirement
|
228
214
|
requirements:
|
229
215
|
- - "~>"
|
@@ -239,8 +225,8 @@ dependencies:
|
|
239
225
|
- !ruby/object:Gem::Version
|
240
226
|
version: '2.2'
|
241
227
|
name: rack
|
242
|
-
type: :runtime
|
243
228
|
prerelease: false
|
229
|
+
type: :runtime
|
244
230
|
version_requirements: !ruby/object:Gem::Requirement
|
245
231
|
requirements:
|
246
232
|
- - "~>"
|
@@ -253,8 +239,8 @@ dependencies:
|
|
253
239
|
- !ruby/object:Gem::Version
|
254
240
|
version: '13.0'
|
255
241
|
name: rake
|
256
|
-
type: :runtime
|
257
242
|
prerelease: false
|
243
|
+
type: :runtime
|
258
244
|
version_requirements: !ruby/object:Gem::Requirement
|
259
245
|
requirements:
|
260
246
|
- - "~>"
|
@@ -267,8 +253,8 @@ dependencies:
|
|
267
253
|
- !ruby/object:Gem::Version
|
268
254
|
version: '4.1'
|
269
255
|
name: redis
|
270
|
-
type: :runtime
|
271
256
|
prerelease: false
|
257
|
+
type: :runtime
|
272
258
|
version_requirements: !ruby/object:Gem::Requirement
|
273
259
|
requirements:
|
274
260
|
- - "~>"
|
@@ -281,8 +267,8 @@ dependencies:
|
|
281
267
|
- !ruby/object:Gem::Version
|
282
268
|
version: '2.0'
|
283
269
|
name: sinatra
|
284
|
-
type: :runtime
|
285
270
|
prerelease: false
|
271
|
+
type: :runtime
|
286
272
|
version_requirements: !ruby/object:Gem::Requirement
|
287
273
|
requirements:
|
288
274
|
- - "~>"
|
@@ -295,8 +281,8 @@ dependencies:
|
|
295
281
|
- !ruby/object:Gem::Version
|
296
282
|
version: '2.1'
|
297
283
|
name: spicy-proton
|
298
|
-
type: :runtime
|
299
284
|
prerelease: false
|
285
|
+
type: :runtime
|
300
286
|
version_requirements: !ruby/object:Gem::Requirement
|
301
287
|
requirements:
|
302
288
|
- - "~>"
|
@@ -309,8 +295,8 @@ dependencies:
|
|
309
295
|
- !ruby/object:Gem::Version
|
310
296
|
version: '1.4'
|
311
297
|
name: statsd-ruby
|
312
|
-
type: :runtime
|
313
298
|
prerelease: false
|
299
|
+
type: :runtime
|
314
300
|
version_requirements: !ruby/object:Gem::Requirement
|
315
301
|
requirements:
|
316
302
|
- - "~>"
|
@@ -323,8 +309,8 @@ dependencies:
|
|
323
309
|
- !ruby/object:Gem::Version
|
324
310
|
version: 0.2.0
|
325
311
|
name: climate_control
|
326
|
-
type: :development
|
327
312
|
prerelease: false
|
313
|
+
type: :development
|
328
314
|
version_requirements: !ruby/object:Gem::Requirement
|
329
315
|
requirements:
|
330
316
|
- - ">="
|
@@ -337,8 +323,8 @@ dependencies:
|
|
337
323
|
- !ruby/object:Gem::Version
|
338
324
|
version: 0.17.0
|
339
325
|
name: mock_redis
|
340
|
-
type: :development
|
341
326
|
prerelease: false
|
327
|
+
type: :development
|
342
328
|
version_requirements: !ruby/object:Gem::Requirement
|
343
329
|
requirements:
|
344
330
|
- - ">="
|
@@ -351,8 +337,8 @@ dependencies:
|
|
351
337
|
- !ruby/object:Gem::Version
|
352
338
|
version: '0'
|
353
339
|
name: pry
|
354
|
-
type: :development
|
355
340
|
prerelease: false
|
341
|
+
type: :development
|
356
342
|
version_requirements: !ruby/object:Gem::Requirement
|
357
343
|
requirements:
|
358
344
|
- - ">="
|
@@ -365,8 +351,8 @@ dependencies:
|
|
365
351
|
- !ruby/object:Gem::Version
|
366
352
|
version: '0.6'
|
367
353
|
name: rack-test
|
368
|
-
type: :development
|
369
354
|
prerelease: false
|
355
|
+
type: :development
|
370
356
|
version_requirements: !ruby/object:Gem::Requirement
|
371
357
|
requirements:
|
372
358
|
- - ">="
|
@@ -379,8 +365,8 @@ dependencies:
|
|
379
365
|
- !ruby/object:Gem::Version
|
380
366
|
version: '3.2'
|
381
367
|
name: rspec
|
382
|
-
type: :development
|
383
368
|
prerelease: false
|
369
|
+
type: :development
|
384
370
|
version_requirements: !ruby/object:Gem::Requirement
|
385
371
|
requirements:
|
386
372
|
- - ">="
|
@@ -391,15 +377,15 @@ dependencies:
|
|
391
377
|
requirements:
|
392
378
|
- - "~>"
|
393
379
|
- !ruby/object:Gem::Version
|
394
|
-
version: 1.
|
380
|
+
version: 1.28.2
|
395
381
|
name: rubocop
|
396
|
-
type: :development
|
397
382
|
prerelease: false
|
383
|
+
type: :development
|
398
384
|
version_requirements: !ruby/object:Gem::Requirement
|
399
385
|
requirements:
|
400
386
|
- - "~>"
|
401
387
|
- !ruby/object:Gem::Version
|
402
|
-
version: 1.
|
388
|
+
version: 1.28.2
|
403
389
|
- !ruby/object:Gem::Dependency
|
404
390
|
requirement: !ruby/object:Gem::Requirement
|
405
391
|
requirements:
|
@@ -407,8 +393,8 @@ dependencies:
|
|
407
393
|
- !ruby/object:Gem::Version
|
408
394
|
version: 0.11.2
|
409
395
|
name: simplecov
|
410
|
-
type: :development
|
411
396
|
prerelease: false
|
397
|
+
type: :development
|
412
398
|
version_requirements: !ruby/object:Gem::Requirement
|
413
399
|
requirements:
|
414
400
|
- - ">="
|
@@ -424,8 +410,8 @@ dependencies:
|
|
424
410
|
- !ruby/object:Gem::Version
|
425
411
|
version: 1.0.1
|
426
412
|
name: thor
|
427
|
-
type: :development
|
428
413
|
prerelease: false
|
414
|
+
type: :development
|
429
415
|
version_requirements: !ruby/object:Gem::Requirement
|
430
416
|
requirements:
|
431
417
|
- - "~>"
|
@@ -441,8 +427,8 @@ dependencies:
|
|
441
427
|
- !ruby/object:Gem::Version
|
442
428
|
version: '2.0'
|
443
429
|
name: yarjuf
|
444
|
-
type: :development
|
445
430
|
prerelease: false
|
431
|
+
type: :development
|
446
432
|
version_requirements: !ruby/object:Gem::Requirement
|
447
433
|
requirements:
|
448
434
|
- - ">="
|
@@ -507,14 +493,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
507
493
|
requirements:
|
508
494
|
- - ">="
|
509
495
|
- !ruby/object:Gem::Version
|
510
|
-
version:
|
496
|
+
version: '0'
|
511
497
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
512
498
|
requirements:
|
513
499
|
- - ">="
|
514
500
|
- !ruby/object:Gem::Version
|
515
501
|
version: '0'
|
516
502
|
requirements: []
|
517
|
-
rubygems_version: 3.
|
503
|
+
rubygems_version: 3.2.29
|
518
504
|
signing_key:
|
519
505
|
specification_version: 4
|
520
506
|
summary: vmpooler provides configurable pools of instantly-available (running) virtual
|