Skip to content

Commit

Permalink
(POOLER-81) Add time_remaining information (#276)
Browse files Browse the repository at this point in the history
* (POOLER-81) Add time_remaining information

Before, the only time calculation displayed for a given VM was the
lifetime parameter. Added the time_remaining parameter which will
display time until the VM is destroyed in hours, minutes, seconds.

Additionally, updated the running parameter to display in a similar
fashion as time_remaining.

* Add spec testing for testing time_remaining stat
  • Loading branch information
smcelmurry authored and mattkirby committed Jul 9, 2018
1 parent f27e2c1 commit 1910cff
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
5 changes: 4 additions & 1 deletion lib/vmpooler/api/v1.rb
Original file line number Diff line number Diff line change
Expand Up @@ -644,7 +644,10 @@ def invalid_template_or_path(payload)
result[params[:hostname]]['running'] = ((Time.parse(rdata['destroy']) - Time.parse(rdata['checkout'])) / 60 / 60).round(2)
result[params[:hostname]]['state'] = 'destroyed'
elsif rdata['checkout']
result[params[:hostname]]['running'] = ((Time.now - Time.parse(rdata['checkout'])) / 60 / 60).round(2)
running = Time.now - Time.parse(rdata['checkout'])
result[params[:hostname]]['running'] = format("%02dh %02dm %02ds", running / (60 * 60), (running / 60) % 60, running % 60)
remaining = Time.parse(rdata['checkout']) + rdata['lifetime'].to_i*60*60 - Time.now
result[params[:hostname]]['time_remaining'] = format("%02dh %02dm %02ds", remaining / (60 * 60), (remaining / 60) % 60, remaining % 60)
result[params[:hostname]]['state'] = 'running'
elsif rdata['check']
result[params[:hostname]]['state'] = 'ready'
Expand Down
20 changes: 20 additions & 0 deletions spec/integration/api/v1/vm_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,26 @@ def app()
create_token('abcdefghijklmnopqrstuvwxyz012345', 'jdoe', current_time)
end

describe 'GET /vm/:hostname' do
it 'returns correct information on a running vm' do
create_running_vm 'pool1', 'abcdefghijklmnop'
get "#{prefix}/vm/abcdefghijklmnop"
expect_json(ok = true, http = 200)
expected = {
ok: true,
abcdefghijklmnop: {
template: "pool1",
lifetime: 0,
running: "00h 00m ..s",
time_remaining: "00h ..m ..s",
state: "running",
ip: ""
}
}
expect(last_response.body).to match(JSON.pretty_generate(expected))
end
end

describe 'POST /vm' do
it 'returns a single VM' do
create_ready_vm 'pool1', 'abcdefghijklmnop'
Expand Down

0 comments on commit 1910cff

Please sign in to comment.