Merge pull request #274 from mattkirby/cleanup_unused_folders_and_vms

(POOLER-66) Purge vms and folders no longer configured
This commit is contained in:
Kevin Imber 2018-07-19 13:19:13 -07:00 committed by GitHub
commit 099b53f348
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 609 additions and 0 deletions

View file

@ -315,6 +315,53 @@ module Vmpooler
end
end
def purge_unused_vms_and_folders
global_purge = $config[:config]['purge_unconfigured_folders']
providers = $config[:providers].keys
providers.each do |provider|
provider_purge = $config[:providers][provider]['purge_unconfigured_folders']
provider_purge = global_purge if provider_purge.nil?
if provider_purge
Thread.new do
begin
purge_vms_and_folders($providers[provider.to_s])
rescue => err
$logger.log('s', "[!] failed while purging provider #{provider.to_s} VMs and folders with an error: #{err}")
end
end
end
end
return
end
# Return a list of pool folders
def pool_folders(provider)
provider_name = provider.name
folders = {}
$config[:pools].each do |pool|
next unless pool['provider'] == provider_name
folder_parts = pool['folder'].split('/')
datacenter = provider.get_target_datacenter_from_config(pool['name'])
folders[folder_parts.pop] = "#{datacenter}/vm/#{folder_parts.join('/')}"
end
folders
end
def get_base_folders(folders)
base = []
folders.each do |key, value|
base << value
end
base.uniq
end
def purge_vms_and_folders(provider)
configured_folders = pool_folders(provider)
base_folders = get_base_folders(configured_folders)
whitelist = provider.provider_config['folder_whitelist']
provider.purge_unconfigured_folders(base_folders, configured_folders, whitelist)
end
def create_vm_disk(pool_name, vm, disk_size, provider)
Thread.new do
begin
@ -992,6 +1039,8 @@ module Vmpooler
end
end
purge_unused_vms_and_folders
loop_count = 1
loop do
if !$threads['disk_manager']