mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-27 02:18:41 -05:00
Add new disks via API
Add an additional disk to a running VM via the vmpooler API.
````
$ curl -X POST -H X-AUTH-TOKEN:a9znth9dn01t416hrguu56ze37t790bl --url vmpooler.company.com/api/v1/vm/fq6qlpjlsskycq6/disk/8
````
````json
{
"ok": true,
"fq6qlpjlsskycq6": {
"disk": "+8mb"
}
}
````
Provisioning and attaching disks can take a moment, but once the task completes it will be reflected in a `GET /vm/<hostname>` query:
````
$ curl --url vmpooler.company.com/api/v1/vm/fq6qlpjlsskycq6
````
````json
{
"ok": true,
"fq6qlpjlsskycq6": {
"template": "debian-7-x86_64",
"lifetime": 2,
"running": 0.08,
"state": "running",
"disk": [
"+8mb"
],
"domain": "delivery.puppetlabs.net"
}
}
This commit is contained in:
parent
7d0f7254ae
commit
48a1a8d621
4 changed files with 146 additions and 1 deletions
|
|
@ -62,6 +62,10 @@ module Vmpooler
|
|||
post '/vm/:hostname/snapshot/:snapshot/?' do
|
||||
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm/#{params[:hostname]}/snapshot/#{params[:snapshot]}")
|
||||
end
|
||||
|
||||
put '/vm/:hostname/disk/:size/?' do
|
||||
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm/#{params[:hostname]}/disk/#{params[:size]}")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -455,6 +455,10 @@ module Vmpooler
|
|||
end
|
||||
end
|
||||
|
||||
if rdata['disk']
|
||||
result[params[:hostname]]['disk'] = rdata['disk'].split(':')
|
||||
end
|
||||
|
||||
if config['domain']
|
||||
result[params[:hostname]]['domain'] = config['domain']
|
||||
end
|
||||
|
|
@ -552,6 +556,29 @@ module Vmpooler
|
|||
JSON.pretty_generate(result)
|
||||
end
|
||||
|
||||
post "#{api_prefix}/vm/:hostname/disk/:size/?" do
|
||||
content_type :json
|
||||
|
||||
need_token! if Vmpooler::API.settings.config[:auth]
|
||||
|
||||
status 404
|
||||
result = { 'ok' => false }
|
||||
|
||||
params[:hostname] = hostname_shorten(params[:hostname], config['domain'])
|
||||
|
||||
if ((params[:size].to_i > 0 )and (backend.exists('vmpooler__vm__' + params[:hostname])))
|
||||
result[params[:hostname]] = {}
|
||||
result[params[:hostname]]['disk'] = "+#{params[:size]}gb"
|
||||
|
||||
backend.sadd('vmpooler__tasks__disk', params[:hostname] + ':' + params[:size])
|
||||
|
||||
status 202
|
||||
result['ok'] = true
|
||||
end
|
||||
|
||||
JSON.pretty_generate(result)
|
||||
end
|
||||
|
||||
post "#{api_prefix}/vm/:hostname/snapshot/?" do
|
||||
content_type :json
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue