vmware_deploy_ovf: Use correct datastore in multi-datacenter environment

Fixes: #63920 

Need to pass the datacenter to assure we get the correct datastore managed object Id.
pull/65166/head
DaveD 5 years ago committed by Abhijeet Kasurde
parent 41b199a936
commit dc59880c31

@ -166,8 +166,8 @@ def get_parent_datacenter(obj):
return datacenter
def find_datastore_by_name(content, datastore_name):
return find_object_by_name(content, datastore_name, [vim.Datastore])
def find_datastore_by_name(content, datastore_name, datacenter_name=None):
return find_object_by_name(content, datastore_name, [vim.Datastore], datacenter_name)
def find_dvs_by_name(content, switch_name, folder=None):
@ -1311,16 +1311,18 @@ class PyVmomi(object):
return False
return True
def find_datastore_by_name(self, datastore_name):
def find_datastore_by_name(self, datastore_name, datacenter_name=None):
"""
Get datastore managed object by name
Args:
datastore_name: Name of datastore
datacenter_name: Name of datacenter where the datastore resides. This is needed because Datastores can be
shared across Datacenters, so we need to specify the datacenter to assure we get the correct Managed Object Reference
Returns: datastore managed object if found else None
"""
return find_datastore_by_name(self.content, datastore_name=datastore_name)
return find_datastore_by_name(self.content, datastore_name=datastore_name, datacenter_name=datacenter_name)
# Datastore cluster
def find_datastore_cluster_by_name(self, datastore_cluster_name):

@ -338,7 +338,7 @@ class VMwareDeployOvf(PyVmomi):
if datastore:
self.datastore = datastore
else:
self.datastore = self.find_datastore_by_name(self.params['datastore'])
self.datastore = self.find_datastore_by_name(self.params['datastore'], self.datacenter)
if not self.datastore:
self.module.fail_json(msg='%(datastore)s could not be located' % self.params)

Loading…
Cancel
Save