mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 01:58:41 -05:00
Merge pull request #22 from sschneid/configurable_host_lifetime
Configurable host lifetimes
This commit is contained in:
commit
65c1908c4e
3 changed files with 43 additions and 4 deletions
19
README.md
19
README.md
|
|
@ -85,6 +85,7 @@ $ curl --url vmpooler.company.com/vm
|
|||
```
|
||||
|
||||
#### POST /vm
|
||||
|
||||
Useful for batch operations; post JSON (see format below), get back VMs.
|
||||
|
||||
```
|
||||
|
|
@ -105,7 +106,8 @@ $ curl -d '{"debian-7-i386":"2","debian-7-x86_64":"1"}' --url vmpooler.company.c
|
|||
}
|
||||
```
|
||||
|
||||
#### POST /vm/<pool>
|
||||
#### POST /vm/<pool>
|
||||
|
||||
Check-out a VM or VMs.
|
||||
|
||||
```
|
||||
|
|
@ -141,7 +143,20 @@ $ curl -d --url vmpooler.company.com/vm/debian-7-i386+debian-7-i386+debian-7-x86
|
|||
}
|
||||
```
|
||||
|
||||
#### DELETE /vm/<hostnamename>
|
||||
#### PUT /vm/<hostname>
|
||||
|
||||
Modify a checked-out VM.
|
||||
|
||||
```
|
||||
$ curl -X PUT -d '{"lifetime":"2"}' --url vmpooler.company.com/vm/fq6qlpjlsskycq6
|
||||
```
|
||||
```json
|
||||
{
|
||||
"ok": true
|
||||
}
|
||||
```
|
||||
|
||||
#### DELETE /vm/<hostname>
|
||||
|
||||
Schedule a checked-out VM for deletion.
|
||||
|
||||
|
|
|
|||
|
|
@ -305,6 +305,28 @@ module Vmpooler
|
|||
|
||||
JSON.pretty_generate(result)
|
||||
end
|
||||
|
||||
put '/vm/:hostname/?' do
|
||||
content_type :json
|
||||
|
||||
result = {}
|
||||
|
||||
result['ok'] = false
|
||||
|
||||
if $redis.exists('vmpooler__vm__'+params[:hostname])
|
||||
jdata = JSON.parse(request.body.read)
|
||||
|
||||
jdata.each do |param, arg|
|
||||
case param
|
||||
when 'lifetime'
|
||||
$redis.hset('vmpooler__vm__'+params[:hostname], param, arg)
|
||||
result['ok'] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
JSON.pretty_generate(result)
|
||||
end
|
||||
}
|
||||
|
||||
my_app.run!
|
||||
|
|
|
|||
|
|
@ -380,9 +380,11 @@ module Vmpooler
|
|||
$redis.smembers('vmpooler__running__'+pool['name']).each do |vm|
|
||||
if ($redis.hget('vmpooler__active__'+pool['name'], vm))
|
||||
running = (Time.now - Time.parse($redis.hget('vmpooler__active__'+pool['name'], vm)))/60/60
|
||||
lifetime = $redis.hget('vmpooler__vm__'+vm, 'lifetime') || $config[:config]['vm_lifetime']
|
||||
|
||||
if (
|
||||
($config[:config]['vm_lifetime'] > 0) and
|
||||
(running > $config[:config]['vm_lifetime'])
|
||||
(lifetime.to_i > 0) and
|
||||
(running.to_i > lifetime.to_i)
|
||||
)
|
||||
$redis.smove('vmpooler__running__'+pool['name'], 'vmpooler__completed__'+pool['name'], vm)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue