Merge pull request #21 from sschneid/clone_target

Allow a 'clone_target' configuration setting
This commit is contained in:
Heath Seals 2014-07-28 13:01:39 -05:00
commit b52807f9f6
3 changed files with 34 additions and 0 deletions

View file

@ -195,9 +195,15 @@ module Vmpooler
}) })
) )
# Choose a clone target
if ($config[:config]['clone_target'])
$clone_target = $vsphere[vm['template']].find_least_used_host($config[:config]['clone_target'])
end
# Put the VM in the specified folder and resource pool # Put the VM in the specified folder and resource pool
relocateSpec = RbVmomi::VIM.VirtualMachineRelocateSpec( relocateSpec = RbVmomi::VIM.VirtualMachineRelocateSpec(
:datastore => $vsphere[vm['template']].find_datastore(datastore), :datastore => $vsphere[vm['template']].find_datastore(datastore),
:host => $clone_target,
:diskMoveType => :moveChildMostDiskBacking :diskMoveType => :moveChildMostDiskBacking
) )

View file

@ -51,6 +51,30 @@ module Vmpooler
def find_least_used_host cluster
begin
@connection.serviceInstance.CurrentTime
rescue
initialize()
end
hosts = Hash.new
hosts_sort = Hash.new
datacenter = @connection.serviceInstance.find_datacenter
datacenter.hostFolder.children.each do |folder|
next unless folder.name == cluster
folder.host.each do |host|
hosts[host.name] = host
hosts_sort[host.name] = host.vm.length
end
end
hosts[hosts_sort.sort_by { |k,v| v }[0][0]]
end
def find_pool poolname def find_pool poolname
begin begin
@connection.serviceInstance.CurrentTime @connection.serviceInstance.CurrentTime

View file

@ -83,6 +83,10 @@
# The path to vmpooler's log file. # The path to vmpooler's log file.
# (optional; default: '/var/log/vmpooler.log') # (optional; default: '/var/log/vmpooler.log')
# #
# - clone_target
# The target cluster VMs are cloned into (host with least VMs chosen)
# (optional; default: same cluster/host as origin template)
#
# - task_limit # - task_limit
# The number of concurrent VMware vSphere tasks to perform. # The number of concurrent VMware vSphere tasks to perform.
# (optional; default: '10') # (optional; default: '10')