mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
Move vsphere specific methods out of vmpooler
vmpooler has the vsphere provider taken out, moving some vsphere related methods to the provider: 1) pool_folders 2) get_base_folders At the same time renaming some configuration and code items to remove harmful terminology. purge_unconfigured_folders DEPRECATED, use purge_unconfigured_resources folder_whitelist DEPRECATED, use resources_allowlist the above configuration items are still supported but will be removed in the next major version. base class method purge_unconfigured_folders was renamed to purge_unconfigured_resources and requires the equivalent change in the provider classes abc
This commit is contained in:
parent
be72bb46d8
commit
f6bbef4245
7 changed files with 69 additions and 127 deletions
|
|
@ -31,7 +31,7 @@ module Vmpooler
|
|||
if ENV['VMPOOLER_CONFIG']
|
||||
config_string = ENV['VMPOOLER_CONFIG']
|
||||
# Parse the YAML config into a Hash
|
||||
# Whitelist the Symbol class
|
||||
# Allow the Symbol class
|
||||
parsed_config = YAML.safe_load(config_string, [Symbol])
|
||||
else
|
||||
# Take the name of the config file either from an ENV variable or from the filepath argument
|
||||
|
|
@ -81,7 +81,9 @@ module Vmpooler
|
|||
parsed_config[:config]['retry_factor'] = string_to_int(ENV['RETRY_FACTOR']) if ENV['RETRY_FACTOR']
|
||||
parsed_config[:config]['create_folders'] = true?(ENV['CREATE_FOLDERS']) if ENV['CREATE_FOLDERS']
|
||||
parsed_config[:config]['experimental_features'] = ENV['EXPERIMENTAL_FEATURES'] if ENV['EXPERIMENTAL_FEATURES']
|
||||
parsed_config[:config]['purge_unconfigured_folders'] = ENV['PURGE_UNCONFIGURED_FOLDERS'] if ENV['PURGE_UNCONFIGURED_FOLDERS']
|
||||
parsed_config[:config]['purge_unconfigured_resources'] = ENV['PURGE_UNCONFIGURED_RESOURCES'] if ENV['PURGE_UNCONFIGURED_RESOURCES']
|
||||
# ENV PURGE_UNCONFIGURED_FOLDERS deprecated, will be removed in version 3
|
||||
parsed_config[:config]['purge_unconfigured_resources'] = ENV['PURGE_UNCONFIGURED_FOLDERS'] if ENV['PURGE_UNCONFIGURED_FOLDERS']
|
||||
parsed_config[:config]['usage_stats'] = ENV['USAGE_STATS'] if ENV['USAGE_STATS']
|
||||
parsed_config[:config]['request_logger'] = ENV['REQUEST_LOGGER'] if ENV['REQUEST_LOGGER']
|
||||
parsed_config[:config]['create_template_delta_disks'] = ENV['CREATE_TEMPLATE_DELTA_DISKS'] if ENV['CREATE_TEMPLATE_DELTA_DISKS']
|
||||
|
|
|
|||
|
|
@ -478,15 +478,15 @@ module Vmpooler
|
|||
dereference_mutex(vm)
|
||||
end
|
||||
|
||||
def purge_unused_vms_and_folders
|
||||
global_purge = $config[:config]['purge_unconfigured_folders']
|
||||
def purge_unused_vms_and_resources
|
||||
global_purge = $config[:config]['purge_unconfigured_resources']
|
||||
providers = $config[:providers].keys
|
||||
providers.each do |provider_key|
|
||||
provider_purge = $config[:providers][provider_key]['purge_unconfigured_folders'] || global_purge
|
||||
provider_purge = $config[:providers][provider_key]['purge_unconfigured_resources'] || global_purge
|
||||
if provider_purge
|
||||
Thread.new do
|
||||
begin
|
||||
purge_vms_and_folders(provider_key)
|
||||
purge_vms_and_resources(provider_key)
|
||||
rescue StandardError => e
|
||||
$logger.log('s', "[!] failed while purging provider #{provider_key} VMs and folders with an error: #{e}")
|
||||
end
|
||||
|
|
@ -496,33 +496,16 @@ module Vmpooler
|
|||
nil
|
||||
end
|
||||
|
||||
# Return a list of pool folders
|
||||
def pool_folders(provider_name)
|
||||
folders = {}
|
||||
$config[:pools].each do |pool|
|
||||
next unless pool['provider'] == provider_name.to_s
|
||||
|
||||
folder_parts = pool['folder'].split('/')
|
||||
datacenter = $providers[provider_name.to_s].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_name)
|
||||
def purge_vms_and_resources(provider_name)
|
||||
provider = $providers[provider_name.to_s]
|
||||
configured_folders = pool_folders(provider_name)
|
||||
base_folders = get_base_folders(configured_folders)
|
||||
whitelist = provider.provider_config['folder_whitelist']
|
||||
provider.purge_unconfigured_folders(base_folders, configured_folders, whitelist)
|
||||
# Deprecated, will be removed in version 3
|
||||
if provider.provider_config['folder_whitelist']
|
||||
$logger.log('d', "[!] [deprecation] rename configuration 'folder_whitelist' to 'resources_allowlist' for provider #{provider_name}")
|
||||
allowlist = provider.provider_config['folder_whitelist']
|
||||
else
|
||||
allowlist = provider.provider_config['resources_allowlist']
|
||||
end
|
||||
provider.purge_unconfigured_resources(allowlist)
|
||||
end
|
||||
|
||||
def create_vm_disk(pool_name, vm, disk_size, provider)
|
||||
|
|
@ -1606,7 +1589,7 @@ module Vmpooler
|
|||
end
|
||||
end
|
||||
|
||||
purge_unused_vms_and_folders
|
||||
purge_unused_vms_and_resources
|
||||
|
||||
loop_count = 1
|
||||
loop do
|
||||
|
|
|
|||
|
|
@ -237,8 +237,15 @@ module Vmpooler
|
|||
raise("#{self.class.name} does not implement get_target_datacenter_from_config")
|
||||
end
|
||||
|
||||
def purge_unconfigured_folders(_base_folders, _configured_folders, _whitelist)
|
||||
raise("#{self.class.name} does not implement purge_unconfigured_folders")
|
||||
def purge_unconfigured_resources(_whitelist)
|
||||
raise("#{self.class.name} does not implement purge_unconfigured_resources")
|
||||
end
|
||||
|
||||
# DEPRECATED if a provider does not implement the new method, it will hit this base class method
|
||||
# and return a deprecation message
|
||||
def purge_unconfigured_folders(_deprecated, _deprecated2, whitelist)
|
||||
logger.log('s', "[!] purge_unconfigured_folders was renamed to purge_unconfigured_resources, please update your provider implementation")
|
||||
purge_unconfigured_resources(whitelist)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue