mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-27 10:28:41 -05:00
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"
}
}
71 lines
2 KiB
Ruby
71 lines
2 KiB
Ruby
module Vmpooler
|
|
class API
|
|
class Reroute < Sinatra::Base
|
|
api_version = '1'
|
|
|
|
get '/status/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/status")
|
|
end
|
|
|
|
get '/summary/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/summary")
|
|
end
|
|
|
|
get '/summary/:route/?:key?/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/summary/#{params[:route]}/#{params[:key]}")
|
|
end
|
|
|
|
get '/token/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/token")
|
|
end
|
|
|
|
post '/token/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/token")
|
|
end
|
|
|
|
get '/token/:token/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/token/#{params[:token]}")
|
|
end
|
|
|
|
delete '/token/:token/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/token/#{params[:token]}")
|
|
end
|
|
|
|
get '/vm/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm")
|
|
end
|
|
|
|
post '/vm/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm")
|
|
end
|
|
|
|
post '/vm/:template/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm/#{params[:template]}")
|
|
end
|
|
|
|
get '/vm/:hostname/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm/#{params[:hostname]}")
|
|
end
|
|
|
|
delete '/vm/:hostname/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm/#{params[:hostname]}")
|
|
end
|
|
|
|
put '/vm/:hostname/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm/#{params[:hostname]}")
|
|
end
|
|
|
|
post '/vm/:hostname/snapshot/?' do
|
|
call env.merge("PATH_INFO" => "/api/v#{api_version}/vm/#{params[:hostname]}/snapshot")
|
|
end
|
|
|
|
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
|