(POOLER-123) Implement a max TTL

Before this change, we could checkout a vm and set the lifetime to a
very high number which would esssentially keep the vm running forever.
Now implementing a config setting max_lifetime_upper_limit which enforces
a maximum lifetime in hours both for initial checkout and extending a
running vm
This commit is contained in:
Samuel Beaulieu 2019-12-02 13:38:22 -06:00 committed by Brandon High
parent 86dbc783ef
commit ac17284a61
No known key found for this signature in database
GPG key ID: 270079C784FCAFDE
4 changed files with 63 additions and 1 deletions

View file

@ -892,6 +892,22 @@ module Vmpooler
when 'lifetime'
need_token! if Vmpooler::API.settings.config[:auth]
# in hours, defaults to one week
max_lifetime_upper_limit = config[:max_lifetime_upper_limit]
if max_lifetime_upper_limit
max_lifetime_upper_limit = max_lifetime_upper_limit.to_i
unless arg.to_i < max_lifetime_upper_limit
failure = true
end
# also make sure we do not extend past max_lifetime_upper_limit
rdata = backend.hgetall('vmpooler__vm__' + params[:hostname])
running = ((Time.now - Time.parse(rdata['checkout'])) / 60 / 60).round(2)
unless running + arg.to_i < max_lifetime_upper_limit
failure = true
end
end
# validate lifetime is within boundaries
unless arg.to_i > 0
failure = true
end