Merge pull request #22 from sschneid/configurable_host_lifetime

Configurable host lifetimes
This commit is contained in:
Roger Ignazio 2014-08-22 11:45:05 -07:00
commit 65c1908c4e
3 changed files with 43 additions and 4 deletions

View file

@ -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/&lt;pool&gt;
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/&lt;hostname&gt;
Modify a checked-out VM.
```
$ curl -X PUT -d '{"lifetime":"2"}' --url vmpooler.company.com/vm/fq6qlpjlsskycq6
```
```json
{
"ok": true
}
```
#### DELETE /vm/&lt;hostname&gt;
Schedule a checked-out VM for deletion.

View file

@ -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!

View file

@ -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)