mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 01:58:41 -05:00
Merge pull request #71 from sschneid/historic_redis_vm_metadata
(QENG-2057) Historic Redis VM metadata
This commit is contained in:
commit
91563c0408
6 changed files with 50 additions and 4 deletions
|
|
@ -11,7 +11,7 @@ module Vmpooler
|
|||
require 'timeout'
|
||||
require 'yaml'
|
||||
|
||||
%w( api graphite logger pool_manager vsphere_helper ).each do |lib|
|
||||
%w( api graphite janitor logger pool_manager vsphere_helper ).each do |lib|
|
||||
begin
|
||||
require "vmpooler/#{lib}"
|
||||
rescue LoadError
|
||||
|
|
|
|||
|
|
@ -340,6 +340,7 @@ module Vmpooler
|
|||
unless vm.nil?
|
||||
$redis.sadd('vmpooler__running__' + key, vm)
|
||||
$redis.hset('vmpooler__active__' + key, vm, Time.now)
|
||||
$redis.hset('vmpooler__vm__' + vm, 'checkout', Time.now)
|
||||
|
||||
result[key] ||= {}
|
||||
|
||||
|
|
@ -403,6 +404,7 @@ module Vmpooler
|
|||
unless vm.nil?
|
||||
$redis.sadd('vmpooler__running__' + template, vm)
|
||||
$redis.hset('vmpooler__active__' + template, vm, Time.now)
|
||||
$redis.hset('vmpooler__vm__' + vm, 'checkout', Time.now)
|
||||
|
||||
result[template] ||= {}
|
||||
|
||||
|
|
|
|||
39
lib/vmpooler/janitor.rb
Normal file
39
lib/vmpooler/janitor.rb
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
module Vmpooler
|
||||
class Janitor
|
||||
def initialize
|
||||
# Load the configuration file
|
||||
config_file = File.expand_path('vmpooler.yaml')
|
||||
$config = YAML.load_file(config_file)
|
||||
|
||||
# Set some defaults
|
||||
$config[:redis] ||= {}
|
||||
$config[:redis]['server'] ||= 'localhost'
|
||||
$config[:redis]['data_ttl'] ||= 168
|
||||
|
||||
# Load logger library
|
||||
$logger = Vmpooler::Logger.new $config[:config]['logfile']
|
||||
|
||||
# Connect to Redis
|
||||
$redis = Redis.new(host: $config[:redis]['server'])
|
||||
end
|
||||
|
||||
def execute!
|
||||
|
||||
loop do
|
||||
$redis.keys('vmpooler__vm__*').each do |key|
|
||||
data = $redis.hgetall(key);
|
||||
|
||||
if data['destroy']
|
||||
lifetime = (Time.now - Time.parse(data['destroy'])) / 60 / 60
|
||||
|
||||
if lifetime > $config[:redis]['data_ttl']
|
||||
$redis.del(key)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
sleep(600)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -11,8 +11,8 @@ module Vmpooler
|
|||
$config[:config]['task_limit'] ||= 10
|
||||
$config[:config]['vm_checktime'] ||= 15
|
||||
$config[:config]['vm_lifetime'] ||= 24
|
||||
$config[:redis] ||= {}
|
||||
$config[:redis]['server'] ||= 'localhost'
|
||||
$config[:redis] ||= {}
|
||||
$config[:redis]['server'] ||= 'localhost'
|
||||
|
||||
# Load logger library
|
||||
$logger = Vmpooler::Logger.new $config[:config]['logfile']
|
||||
|
|
@ -256,7 +256,7 @@ module Vmpooler
|
|||
Thread.new do
|
||||
$redis.srem('vmpooler__completed__' + pool, vm)
|
||||
$redis.hdel('vmpooler__active__' + pool, vm)
|
||||
$redis.del('vmpooler__vm__' + vm)
|
||||
$redis.hset('vmpooler__vm__' + vm, 'destroy', Time.now)
|
||||
|
||||
host = $vsphere[pool].find_vm(vm) ||
|
||||
$vsphere[pool].find_vm_heavy(vm)[vm]
|
||||
|
|
|
|||
1
vmpooler
1
vmpooler
|
|
@ -6,6 +6,7 @@ require 'rubygems' unless defined?(Gem)
|
|||
require 'lib/vmpooler'
|
||||
|
||||
Thread.new { Vmpooler::API.new.execute! }
|
||||
Thread.new { Vmpooler::Janitor.new.execute! }
|
||||
Thread.new { Vmpooler::PoolManager.new.execute! }
|
||||
|
||||
loop do
|
||||
|
|
|
|||
|
|
@ -43,6 +43,10 @@
|
|||
# - password
|
||||
# The password used to authenticate Redis.
|
||||
# (optional)
|
||||
#
|
||||
# - data_ttl
|
||||
# How long (in hours) to retain metadata in Redis after VM destruction.
|
||||
# (optional; default: '168')
|
||||
|
||||
# Example:
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue