@ -519,22 +519,74 @@ def deploy_template(vsphere_client, guest, resource_pool, template_src, esxi, mo
vmTemplate = vsphere_client . get_vm_by_name ( template_src )
vmTemplate = vsphere_client . get_vm_by_name ( template_src )
vmTarget = None
vmTarget = None
try :
if esxi :
cluster = [ k for k ,
datacenter = esxi [ ' datacenter ' ]
v in vsphere_client . get_clusters ( ) . items ( ) if v == cluster_name ] [ 0 ]
esxi_hostname = esxi [ ' hostname ' ]
except IndexError , e :
vsphere_client . disconnect ( )
# Datacenter managed object reference
module . fail_json ( msg = " Cannot find Cluster named: %s " %
dclist = [ k for k ,
cluster_name )
v in vsphere_client . get_datacenters ( ) . items ( ) if v == datacenter ]
if dclist :
dcmor = dclist [ 0 ]
else :
vsphere_client . disconnect ( )
module . fail_json ( msg = " Cannot find datacenter named: %s " % datacenter )
try :
dcprops = VIProperty ( vsphere_client , dcmor )
rpmor = [ k for k , v in vsphere_client . get_resource_pools (
from_mor = cluster ) . items ( )
# hostFolder managed reference
if v == resource_pool ] [ 0 ]
hfmor = dcprops . hostFolder . _obj
except IndexError , e :
vsphere_client . disconnect ( )
# Grab the computerResource name and host properties
module . fail_json ( msg = " Cannot find Resource Pool named: %s " %
crmors = vsphere_client . _retrieve_properties_traversal (
resource_pool )
property_names = [ ' name ' , ' host ' ] ,
from_node = hfmor ,
obj_type = ' ComputeResource ' )
# Grab the host managed object reference of the esxi_hostname
try :
hostmor = [ k for k ,
v in vsphere_client . get_hosts ( ) . items ( ) if v == esxi_hostname ] [ 0 ]
except IndexError , e :
vsphere_client . disconnect ( )
module . fail_json ( msg = " Cannot find esx host named: %s " % esxi_hostname )
# Grab the computeResource managed object reference of the host we are
# creating the VM on.
crmor = None
for cr in crmors :
if crmor :
break
for p in cr . PropSet :
if p . Name == " host " :
for h in p . Val . get_element_ManagedObjectReference ( ) :
if h == hostmor :
crmor = cr . Obj
break
if crmor :
break
crprops = VIProperty ( vsphere_client , crmor )
rpmor = crprops . resourcePool . _obj
elif resource_pool :
try :
cluster = [ k for k ,
v in vsphere_client . get_clusters ( ) . items ( ) if v == cluster_name ] [ 0 ]
except IndexError , e :
vsphere_client . disconnect ( )
module . fail_json ( msg = " Cannot find Cluster named: %s " %
cluster_name )
try :
rpmor = [ k for k , v in vsphere_client . get_resource_pools (
from_mor = cluster ) . items ( )
if v == resource_pool ] [ 0 ]
except IndexError , e :
vsphere_client . disconnect ( )
module . fail_json ( msg = " Cannot find Resource Pool named: %s " %
resource_pool )
else :
module . fail_json ( msg = " You need to specify either esxi:[datacenter,hostname] or [cluster,resource_pool] " )
try :
try :
vmTarget = vsphere_client . get_vm_by_name ( guest )
vmTarget = vsphere_client . get_vm_by_name ( guest )