mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
(POOLER-166) Vmpooler should check DNS to ensure a record does not exist before VM creation
initial draft
This commit is contained in:
parent
46af69f67b
commit
616db575f8
5 changed files with 65 additions and 1 deletions
|
|
@ -498,6 +498,19 @@ module Vmpooler
|
|||
|
||||
true
|
||||
end
|
||||
|
||||
def dns_live?(vn_name, domain = nil)
|
||||
require 'resolv' #ruby standard lib
|
||||
fqdn = vm_name
|
||||
fqdn = "#{fqdn}.#{domain}" if domain
|
||||
begin
|
||||
dnsip = Resolv.getaddress(fqdn)
|
||||
rescue
|
||||
dnsip = "N/A"
|
||||
end
|
||||
dnsip
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ module Vmpooler
|
|||
end
|
||||
|
||||
def fetch_single_vm(template)
|
||||
require 'vmpooler/providers/vsphere'
|
||||
template_backends = [template]
|
||||
aliases = Vmpooler::API.settings.config[:alias]
|
||||
if aliases
|
||||
|
|
@ -144,6 +145,8 @@ module Vmpooler
|
|||
|
||||
vms.reverse.each do |vm|
|
||||
ready = vm_ready?(vm, config['domain'])
|
||||
dnsip = dns_live?(vm, config['domain'])
|
||||
ips = get_all_ip_for_nics(template_backend, vm)
|
||||
if ready
|
||||
smoved = backend.smove("vmpooler__ready__#{template_backend}", "vmpooler__running__#{template_backend}", vm)
|
||||
if smoved
|
||||
|
|
|
|||
|
|
@ -1093,6 +1093,27 @@ module Vmpooler
|
|||
return true if pool['create_linked_clone']
|
||||
return true if @config[:config]['create_linked_clones']
|
||||
end
|
||||
|
||||
def _get_all_ip_for_nics(pool_name, vm_name, connection)
|
||||
result = []
|
||||
vm_object = find_vm(pool_name, vm_name, connection)
|
||||
vm_object.guest.net.each do |nic|
|
||||
addresses = nic.ipAddress
|
||||
|
||||
addresses.each do |adr|
|
||||
puts adr
|
||||
result << adr
|
||||
end
|
||||
end
|
||||
result
|
||||
end
|
||||
|
||||
def get_all_ip_for_nics(pool_name, vm_name)
|
||||
@connection_pool.with_metrics do |pool_object|
|
||||
connection = ensured_vsphere_connection(pool_object)
|
||||
_get_all_ip_for_nics(pool_name, vm_name, connection)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue