Remove global domain usage from pool manager

This commit is contained in:
Jake Spain 2023-02-16 07:47:42 -05:00
parent 268ff9f981
commit aeabb7e134
No known key found for this signature in database
GPG key ID: BC1C4DA0A085E113
2 changed files with 25 additions and 9 deletions

View file

@ -30,6 +30,26 @@ module Vmpooler
plugin_class plugin_class
end end
# Returns the domain for the specified pool
#
# @param config [String] - the full config structure
# @param pool_name [String] - the name of the pool
# @return [String] - domain name for pool, which is set via reference to the dns_configs block
def self.get_domain_for_pool(config, pool_name)
pool = config[:pools].find { |p| p['name'] == pool_name }
pool_dns_config = pool['dns_plugin']
dns_configs = config[:dns_configs].keys
pool_domain = ''
dns_configs.map do |dns_config_name|
if dns_config_name.to_s == pool_dns_config
pool_domain = config[:dns_configs][dns_config_name]['domain']
end
end
pool_domain
end
# Returns the plugin domain for the specified dns config by name # Returns the plugin domain for the specified dns config by name
# #
# @param config [Object] The entire VMPooler config object # @param config [Object] The entire VMPooler config object

View file

@ -67,7 +67,7 @@ module Vmpooler
to_set[k] = pool[k] to_set[k] = pool[k]
end end
to_set['alias'] = pool['alias'].join(',') if to_set.key?('alias') to_set['alias'] = pool['alias'].join(',') if to_set.key?('alias')
to_set['domain'] = Parsing.get_domain_for_pool(config, pool['name']) to_set['domain'] = Vmpooler::Dns.get_domain_for_pool(config, pool['name'])
redis.hmset("vmpooler__pool__#{pool['name']}", to_set.to_a.flatten) unless to_set.empty? redis.hmset("vmpooler__pool__#{pool['name']}", to_set.to_a.flatten) unless to_set.empty?
end end
previously_configured_pools.each do |pool| previously_configured_pools.each do |pool|
@ -380,12 +380,8 @@ module Vmpooler
max_hostname_retries = 3 max_hostname_retries = 3
while hostname_retries < max_hostname_retries while hostname_retries < max_hostname_retries
hostname, hostname_available = generate_and_check_hostname hostname, hostname_available = generate_and_check_hostname
domain = Parsing.get_domain_for_pool(config, pool_name) domain = Vmpooler::Dns.get_domain_for_pool(config, pool_name)
if domain
fqdn = "#{hostname}.#{domain}" fqdn = "#{hostname}.#{domain}"
else
fqdn = hostname
end
# skip dns check if the provider is set to skip_dns_check_before_creating_vm # skip dns check if the provider is set to skip_dns_check_before_creating_vm
provider = get_provider_for_pool(pool_name) provider = get_provider_for_pool(pool_name)
@ -428,7 +424,7 @@ module Vmpooler
def _clone_vm(pool_name, provider, dns_plugin, request_id = nil, pool_alias = nil) def _clone_vm(pool_name, provider, dns_plugin, request_id = nil, pool_alias = nil)
new_vmname = find_unique_hostname(pool_name) new_vmname = find_unique_hostname(pool_name)
pool_domain = Parsing.get_domain_for_pool(config, pool_name) pool_domain = Vmpooler::Dns.get_domain_for_pool(config, pool_name)
mutex = vm_mutex(new_vmname) mutex = vm_mutex(new_vmname)
mutex.synchronize do mutex.synchronize do
@redis.with_metrics do |redis| @redis.with_metrics do |redis|
@ -438,7 +434,7 @@ module Vmpooler
redis.hset("vmpooler__vm__#{new_vmname}", 'clone', Time.now) redis.hset("vmpooler__vm__#{new_vmname}", 'clone', Time.now)
redis.hset("vmpooler__vm__#{new_vmname}", 'template', pool_name) # This value is used to represent the pool. redis.hset("vmpooler__vm__#{new_vmname}", 'template', pool_name) # This value is used to represent the pool.
redis.hset("vmpooler__vm__#{new_vmname}", 'pool', pool_name) redis.hset("vmpooler__vm__#{new_vmname}", 'pool', pool_name)
redis.hset("vmpooler__vm__#{new_vmname}", 'domain', pool_domain) if pool_domain redis.hset("vmpooler__vm__#{new_vmname}", 'domain', pool_domain)
redis.hset("vmpooler__vm__#{new_vmname}", 'request_id', request_id) if request_id redis.hset("vmpooler__vm__#{new_vmname}", 'request_id', request_id) if request_id
redis.hset("vmpooler__vm__#{new_vmname}", 'pool_alias', pool_alias) if pool_alias redis.hset("vmpooler__vm__#{new_vmname}", 'pool_alias', pool_alias) if pool_alias
redis.exec redis.exec