mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Avoid racing, only hand over VMs after a successful smove
This commit is contained in:
parent
72b1cd485e
commit
2f1a83eeb6
1 changed files with 18 additions and 6 deletions
|
|
@ -62,14 +62,26 @@ post '/vm/:template' do
|
||||||
result[params[:template]]['error'] = 'You must specify a destination \'folder\' and \'pool\''
|
result[params[:template]]['error'] = 'You must specify a destination \'folder\' and \'pool\''
|
||||||
else
|
else
|
||||||
if ( $redis.scard('vmware_host_pool__ready__'+params[:template]) > 0 )
|
if ( $redis.scard('vmware_host_pool__ready__'+params[:template]) > 0 )
|
||||||
vm = $redis.srandmember('vmware_host_pool__ready__'+params[:template])
|
vm = nil
|
||||||
$redis.srem('vmware_host_pool__ready__'+params[:template], vm)
|
|
||||||
$redis.sadd('vmware_host_pool__running__'+params[:template], vm)
|
|
||||||
|
|
||||||
logger.log('s', "[<] '#{vm}' moved to 'running' queue")
|
try = $redis.srandmember('vmware_host_pool__ready__'+params[:template])
|
||||||
|
|
||||||
result[params[:template]]['ok'] = true
|
if (
|
||||||
result[params[:template]]['hostname'] = vm
|
$redis.smove(
|
||||||
|
'vmware_host_pool__ready__'+params[:template],
|
||||||
|
'vmware_host_pool__running__'+params[:template],
|
||||||
|
try
|
||||||
|
)
|
||||||
|
)
|
||||||
|
vm = try
|
||||||
|
|
||||||
|
logger.log('s', "[<] '#{vm}' moved to 'running' queue")
|
||||||
|
|
||||||
|
result[params[:template]]['ok'] = true
|
||||||
|
result[params[:template]]['hostname'] = vm
|
||||||
|
else
|
||||||
|
result[params[:template]]['ok'] = false
|
||||||
|
end
|
||||||
else
|
else
|
||||||
result[params[:template]]['ok'] = false
|
result[params[:template]]['ok'] = false
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue