vmpooler 2.1.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 +365 -299
- data/lib/vmpooler/api/reroute.rb +16 -0
- data/lib/vmpooler/api/v1.rb +501 -378
- data/lib/vmpooler/api/v2.rb +505 -0
- data/lib/vmpooler/api.rb +2 -1
- data/lib/vmpooler/pool_manager.rb +84 -63
- data/lib/vmpooler/providers/base.rb +1 -1
- data/lib/vmpooler/util/parsing.rb +21 -1
- data/lib/vmpooler/version.rb +1 -1
- data/lib/vmpooler.rb +6 -1
- metadata +103 -83
metadata
CHANGED
@@ -1,185 +1,204 @@
|
|
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
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: concurrent-ruby
|
15
14
|
requirement: !ruby/object:Gem::Requirement
|
16
15
|
requirements:
|
17
16
|
- - "~>"
|
18
17
|
- !ruby/object:Gem::Version
|
19
18
|
version: '1.1'
|
20
|
-
|
19
|
+
name: concurrent-ruby
|
21
20
|
prerelease: false
|
21
|
+
type: :runtime
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name: connection_pool
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
30
29
|
requirements:
|
31
30
|
- - "~>"
|
32
31
|
- !ruby/object:Gem::Version
|
33
32
|
version: '2.2'
|
34
|
-
|
33
|
+
name: connection_pool
|
35
34
|
prerelease: false
|
35
|
+
type: :runtime
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: net-ldap
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
44
43
|
requirements:
|
45
44
|
- - "~>"
|
46
45
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
|
46
|
+
version: '1.2'
|
47
|
+
name: deep_merge
|
49
48
|
prerelease: false
|
49
|
+
type: :runtime
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '1.2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: nokogiri
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
58
57
|
requirements:
|
59
58
|
- - "~>"
|
60
59
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
-
|
60
|
+
version: '0.16'
|
61
|
+
name: net-ldap
|
63
62
|
prerelease: false
|
63
|
+
type: :runtime
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0.16'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name: opentelemetry-exporter-jaeger
|
71
70
|
requirement: !ruby/object:Gem::Requirement
|
72
71
|
requirements:
|
73
72
|
- - '='
|
74
73
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
76
|
-
|
74
|
+
version: 0.20.1
|
75
|
+
name: opentelemetry-exporter-jaeger
|
77
76
|
prerelease: false
|
77
|
+
type: :runtime
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 0.20.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: opentelemetry-instrumentation-concurrent_ruby
|
85
84
|
requirement: !ruby/object:Gem::Requirement
|
86
85
|
requirements:
|
87
86
|
- - '='
|
88
87
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
90
|
-
|
88
|
+
version: 0.19.2
|
89
|
+
name: opentelemetry-instrumentation-concurrent_ruby
|
91
90
|
prerelease: false
|
91
|
+
type: :runtime
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - '='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
96
|
+
version: 0.19.2
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name: opentelemetry-instrumentation-redis
|
99
98
|
requirement: !ruby/object:Gem::Requirement
|
100
99
|
requirements:
|
101
100
|
- - '='
|
102
101
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
104
|
-
|
102
|
+
version: 0.19.4
|
103
|
+
name: opentelemetry-instrumentation-http_client
|
105
104
|
prerelease: false
|
105
|
+
type: :runtime
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
110
|
+
version: 0.19.4
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name: opentelemetry-instrumentation-sinatra
|
113
112
|
requirement: !ruby/object:Gem::Requirement
|
114
113
|
requirements:
|
115
114
|
- - '='
|
116
115
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
118
|
-
|
116
|
+
version: 0.21.3
|
117
|
+
name: opentelemetry-instrumentation-redis
|
119
118
|
prerelease: false
|
119
|
+
type: :runtime
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
124
|
+
version: 0.21.3
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: opentelemetry-resource_detectors
|
127
126
|
requirement: !ruby/object:Gem::Requirement
|
128
127
|
requirements:
|
129
128
|
- - '='
|
130
129
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
132
|
-
|
130
|
+
version: 0.19.3
|
131
|
+
name: opentelemetry-instrumentation-sinatra
|
133
132
|
prerelease: false
|
133
|
+
type: :runtime
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - '='
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
138
|
+
version: 0.19.3
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name: opentelemetry-sdk
|
141
140
|
requirement: !ruby/object:Gem::Requirement
|
142
141
|
requirements:
|
143
142
|
- - '='
|
144
143
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
146
|
-
|
144
|
+
version: 0.19.1
|
145
|
+
name: opentelemetry-resource_detectors
|
147
146
|
prerelease: false
|
147
|
+
type: :runtime
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - '='
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.
|
152
|
+
version: 0.19.1
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name: pickup
|
155
154
|
requirement: !ruby/object:Gem::Requirement
|
156
155
|
requirements:
|
157
156
|
- - "~>"
|
158
157
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
158
|
+
version: '1.0'
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: 1.0.2
|
162
|
+
name: opentelemetry-sdk
|
163
|
+
prerelease: false
|
160
164
|
type: :runtime
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - "~>"
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '1.0'
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: 1.0.2
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
requirement: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - "~>"
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: 0.0.11
|
179
|
+
name: pickup
|
161
180
|
prerelease: false
|
181
|
+
type: :runtime
|
162
182
|
version_requirements: !ruby/object:Gem::Requirement
|
163
183
|
requirements:
|
164
184
|
- - "~>"
|
165
185
|
- !ruby/object:Gem::Version
|
166
186
|
version: 0.0.11
|
167
187
|
- !ruby/object:Gem::Dependency
|
168
|
-
name: prometheus-client
|
169
188
|
requirement: !ruby/object:Gem::Requirement
|
170
189
|
requirements:
|
171
190
|
- - "~>"
|
172
191
|
- !ruby/object:Gem::Version
|
173
192
|
version: '2.0'
|
174
|
-
|
193
|
+
name: prometheus-client
|
175
194
|
prerelease: false
|
195
|
+
type: :runtime
|
176
196
|
version_requirements: !ruby/object:Gem::Requirement
|
177
197
|
requirements:
|
178
198
|
- - "~>"
|
179
199
|
- !ruby/object:Gem::Version
|
180
200
|
version: '2.0'
|
181
201
|
- !ruby/object:Gem::Dependency
|
182
|
-
name: puma
|
183
202
|
requirement: !ruby/object:Gem::Requirement
|
184
203
|
requirements:
|
185
204
|
- - "~>"
|
@@ -188,8 +207,9 @@ dependencies:
|
|
188
207
|
- - ">="
|
189
208
|
- !ruby/object:Gem::Version
|
190
209
|
version: 5.0.4
|
191
|
-
|
210
|
+
name: puma
|
192
211
|
prerelease: false
|
212
|
+
type: :runtime
|
193
213
|
version_requirements: !ruby/object:Gem::Requirement
|
194
214
|
requirements:
|
195
215
|
- - "~>"
|
@@ -199,189 +219,188 @@ dependencies:
|
|
199
219
|
- !ruby/object:Gem::Version
|
200
220
|
version: 5.0.4
|
201
221
|
- !ruby/object:Gem::Dependency
|
202
|
-
name: rack
|
203
222
|
requirement: !ruby/object:Gem::Requirement
|
204
223
|
requirements:
|
205
224
|
- - "~>"
|
206
225
|
- !ruby/object:Gem::Version
|
207
226
|
version: '2.2'
|
208
|
-
|
227
|
+
name: rack
|
209
228
|
prerelease: false
|
229
|
+
type: :runtime
|
210
230
|
version_requirements: !ruby/object:Gem::Requirement
|
211
231
|
requirements:
|
212
232
|
- - "~>"
|
213
233
|
- !ruby/object:Gem::Version
|
214
234
|
version: '2.2'
|
215
235
|
- !ruby/object:Gem::Dependency
|
216
|
-
name: rake
|
217
236
|
requirement: !ruby/object:Gem::Requirement
|
218
237
|
requirements:
|
219
238
|
- - "~>"
|
220
239
|
- !ruby/object:Gem::Version
|
221
240
|
version: '13.0'
|
222
|
-
|
241
|
+
name: rake
|
223
242
|
prerelease: false
|
243
|
+
type: :runtime
|
224
244
|
version_requirements: !ruby/object:Gem::Requirement
|
225
245
|
requirements:
|
226
246
|
- - "~>"
|
227
247
|
- !ruby/object:Gem::Version
|
228
248
|
version: '13.0'
|
229
249
|
- !ruby/object:Gem::Dependency
|
230
|
-
name: redis
|
231
250
|
requirement: !ruby/object:Gem::Requirement
|
232
251
|
requirements:
|
233
252
|
- - "~>"
|
234
253
|
- !ruby/object:Gem::Version
|
235
254
|
version: '4.1'
|
236
|
-
|
255
|
+
name: redis
|
237
256
|
prerelease: false
|
257
|
+
type: :runtime
|
238
258
|
version_requirements: !ruby/object:Gem::Requirement
|
239
259
|
requirements:
|
240
260
|
- - "~>"
|
241
261
|
- !ruby/object:Gem::Version
|
242
262
|
version: '4.1'
|
243
263
|
- !ruby/object:Gem::Dependency
|
244
|
-
name: sinatra
|
245
264
|
requirement: !ruby/object:Gem::Requirement
|
246
265
|
requirements:
|
247
266
|
- - "~>"
|
248
267
|
- !ruby/object:Gem::Version
|
249
268
|
version: '2.0'
|
250
|
-
|
269
|
+
name: sinatra
|
251
270
|
prerelease: false
|
271
|
+
type: :runtime
|
252
272
|
version_requirements: !ruby/object:Gem::Requirement
|
253
273
|
requirements:
|
254
274
|
- - "~>"
|
255
275
|
- !ruby/object:Gem::Version
|
256
276
|
version: '2.0'
|
257
277
|
- !ruby/object:Gem::Dependency
|
258
|
-
name: spicy-proton
|
259
278
|
requirement: !ruby/object:Gem::Requirement
|
260
279
|
requirements:
|
261
280
|
- - "~>"
|
262
281
|
- !ruby/object:Gem::Version
|
263
282
|
version: '2.1'
|
264
|
-
|
283
|
+
name: spicy-proton
|
265
284
|
prerelease: false
|
285
|
+
type: :runtime
|
266
286
|
version_requirements: !ruby/object:Gem::Requirement
|
267
287
|
requirements:
|
268
288
|
- - "~>"
|
269
289
|
- !ruby/object:Gem::Version
|
270
290
|
version: '2.1'
|
271
291
|
- !ruby/object:Gem::Dependency
|
272
|
-
name: statsd-ruby
|
273
292
|
requirement: !ruby/object:Gem::Requirement
|
274
293
|
requirements:
|
275
294
|
- - "~>"
|
276
295
|
- !ruby/object:Gem::Version
|
277
296
|
version: '1.4'
|
278
|
-
|
297
|
+
name: statsd-ruby
|
279
298
|
prerelease: false
|
299
|
+
type: :runtime
|
280
300
|
version_requirements: !ruby/object:Gem::Requirement
|
281
301
|
requirements:
|
282
302
|
- - "~>"
|
283
303
|
- !ruby/object:Gem::Version
|
284
304
|
version: '1.4'
|
285
305
|
- !ruby/object:Gem::Dependency
|
286
|
-
name: climate_control
|
287
306
|
requirement: !ruby/object:Gem::Requirement
|
288
307
|
requirements:
|
289
308
|
- - ">="
|
290
309
|
- !ruby/object:Gem::Version
|
291
310
|
version: 0.2.0
|
292
|
-
|
311
|
+
name: climate_control
|
293
312
|
prerelease: false
|
313
|
+
type: :development
|
294
314
|
version_requirements: !ruby/object:Gem::Requirement
|
295
315
|
requirements:
|
296
316
|
- - ">="
|
297
317
|
- !ruby/object:Gem::Version
|
298
318
|
version: 0.2.0
|
299
319
|
- !ruby/object:Gem::Dependency
|
300
|
-
name: mock_redis
|
301
320
|
requirement: !ruby/object:Gem::Requirement
|
302
321
|
requirements:
|
303
322
|
- - ">="
|
304
323
|
- !ruby/object:Gem::Version
|
305
324
|
version: 0.17.0
|
306
|
-
|
325
|
+
name: mock_redis
|
307
326
|
prerelease: false
|
327
|
+
type: :development
|
308
328
|
version_requirements: !ruby/object:Gem::Requirement
|
309
329
|
requirements:
|
310
330
|
- - ">="
|
311
331
|
- !ruby/object:Gem::Version
|
312
332
|
version: 0.17.0
|
313
333
|
- !ruby/object:Gem::Dependency
|
314
|
-
name: pry
|
315
334
|
requirement: !ruby/object:Gem::Requirement
|
316
335
|
requirements:
|
317
336
|
- - ">="
|
318
337
|
- !ruby/object:Gem::Version
|
319
338
|
version: '0'
|
320
|
-
|
339
|
+
name: pry
|
321
340
|
prerelease: false
|
341
|
+
type: :development
|
322
342
|
version_requirements: !ruby/object:Gem::Requirement
|
323
343
|
requirements:
|
324
344
|
- - ">="
|
325
345
|
- !ruby/object:Gem::Version
|
326
346
|
version: '0'
|
327
347
|
- !ruby/object:Gem::Dependency
|
328
|
-
name: rack-test
|
329
348
|
requirement: !ruby/object:Gem::Requirement
|
330
349
|
requirements:
|
331
350
|
- - ">="
|
332
351
|
- !ruby/object:Gem::Version
|
333
352
|
version: '0.6'
|
334
|
-
|
353
|
+
name: rack-test
|
335
354
|
prerelease: false
|
355
|
+
type: :development
|
336
356
|
version_requirements: !ruby/object:Gem::Requirement
|
337
357
|
requirements:
|
338
358
|
- - ">="
|
339
359
|
- !ruby/object:Gem::Version
|
340
360
|
version: '0.6'
|
341
361
|
- !ruby/object:Gem::Dependency
|
342
|
-
name: rspec
|
343
362
|
requirement: !ruby/object:Gem::Requirement
|
344
363
|
requirements:
|
345
364
|
- - ">="
|
346
365
|
- !ruby/object:Gem::Version
|
347
366
|
version: '3.2'
|
348
|
-
|
367
|
+
name: rspec
|
349
368
|
prerelease: false
|
369
|
+
type: :development
|
350
370
|
version_requirements: !ruby/object:Gem::Requirement
|
351
371
|
requirements:
|
352
372
|
- - ">="
|
353
373
|
- !ruby/object:Gem::Version
|
354
374
|
version: '3.2'
|
355
375
|
- !ruby/object:Gem::Dependency
|
356
|
-
name: rubocop
|
357
376
|
requirement: !ruby/object:Gem::Requirement
|
358
377
|
requirements:
|
359
378
|
- - "~>"
|
360
379
|
- !ruby/object:Gem::Version
|
361
|
-
version: 1.
|
362
|
-
|
380
|
+
version: 1.28.2
|
381
|
+
name: rubocop
|
363
382
|
prerelease: false
|
383
|
+
type: :development
|
364
384
|
version_requirements: !ruby/object:Gem::Requirement
|
365
385
|
requirements:
|
366
386
|
- - "~>"
|
367
387
|
- !ruby/object:Gem::Version
|
368
|
-
version: 1.
|
388
|
+
version: 1.28.2
|
369
389
|
- !ruby/object:Gem::Dependency
|
370
|
-
name: simplecov
|
371
390
|
requirement: !ruby/object:Gem::Requirement
|
372
391
|
requirements:
|
373
392
|
- - ">="
|
374
393
|
- !ruby/object:Gem::Version
|
375
394
|
version: 0.11.2
|
376
|
-
|
395
|
+
name: simplecov
|
377
396
|
prerelease: false
|
397
|
+
type: :development
|
378
398
|
version_requirements: !ruby/object:Gem::Requirement
|
379
399
|
requirements:
|
380
400
|
- - ">="
|
381
401
|
- !ruby/object:Gem::Version
|
382
402
|
version: 0.11.2
|
383
403
|
- !ruby/object:Gem::Dependency
|
384
|
-
name: thor
|
385
404
|
requirement: !ruby/object:Gem::Requirement
|
386
405
|
requirements:
|
387
406
|
- - "~>"
|
@@ -390,8 +409,9 @@ dependencies:
|
|
390
409
|
- - ">="
|
391
410
|
- !ruby/object:Gem::Version
|
392
411
|
version: 1.0.1
|
393
|
-
|
412
|
+
name: thor
|
394
413
|
prerelease: false
|
414
|
+
type: :development
|
395
415
|
version_requirements: !ruby/object:Gem::Requirement
|
396
416
|
requirements:
|
397
417
|
- - "~>"
|
@@ -401,20 +421,20 @@ dependencies:
|
|
401
421
|
- !ruby/object:Gem::Version
|
402
422
|
version: 1.0.1
|
403
423
|
- !ruby/object:Gem::Dependency
|
404
|
-
name: yarjuf
|
405
424
|
requirement: !ruby/object:Gem::Requirement
|
406
425
|
requirements:
|
407
426
|
- - ">="
|
408
427
|
- !ruby/object:Gem::Version
|
409
428
|
version: '2.0'
|
410
|
-
|
429
|
+
name: yarjuf
|
411
430
|
prerelease: false
|
431
|
+
type: :development
|
412
432
|
version_requirements: !ruby/object:Gem::Requirement
|
413
433
|
requirements:
|
414
434
|
- - ">="
|
415
435
|
- !ruby/object:Gem::Version
|
416
436
|
version: '2.0'
|
417
|
-
description:
|
437
|
+
description:
|
418
438
|
email:
|
419
439
|
- support@puppet.com
|
420
440
|
executables:
|
@@ -431,6 +451,7 @@ files:
|
|
431
451
|
- lib/vmpooler/api/request_logger.rb
|
432
452
|
- lib/vmpooler/api/reroute.rb
|
433
453
|
- lib/vmpooler/api/v1.rb
|
454
|
+
- lib/vmpooler/api/v2.rb
|
434
455
|
- lib/vmpooler/dashboard.rb
|
435
456
|
- lib/vmpooler/generic_connection_pool.rb
|
436
457
|
- lib/vmpooler/logger.rb
|
@@ -464,7 +485,7 @@ homepage: https://github.com/puppetlabs/vmpooler
|
|
464
485
|
licenses:
|
465
486
|
- Apache-2.0
|
466
487
|
metadata: {}
|
467
|
-
post_install_message:
|
488
|
+
post_install_message:
|
468
489
|
rdoc_options: []
|
469
490
|
require_paths:
|
470
491
|
- lib
|
@@ -472,16 +493,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
472
493
|
requirements:
|
473
494
|
- - ">="
|
474
495
|
- !ruby/object:Gem::Version
|
475
|
-
version:
|
496
|
+
version: '0'
|
476
497
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
477
498
|
requirements:
|
478
499
|
- - ">="
|
479
500
|
- !ruby/object:Gem::Version
|
480
501
|
version: '0'
|
481
502
|
requirements: []
|
482
|
-
|
483
|
-
|
484
|
-
signing_key:
|
503
|
+
rubygems_version: 3.2.29
|
504
|
+
signing_key:
|
485
505
|
specification_version: 4
|
486
506
|
summary: vmpooler provides configurable pools of instantly-available (running) virtual
|
487
507
|
machines
|