VMware: Check if datastore is valid (#58872)
Check validation of datastore selected using autoselect_datastore API. Fixes: #58541 Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
parent
57dc7ec265
commit
647b78a09c
3 changed files with 24 additions and 1 deletions
|
@ -1252,6 +1252,20 @@ class PyVmomi(object):
|
|||
"""
|
||||
return find_datacenter_by_name(self.content, datacenter_name=datacenter_name)
|
||||
|
||||
def is_datastore_valid(self, datastore_obj=None):
|
||||
"""
|
||||
Check if datastore selected is valid or not
|
||||
Args:
|
||||
datastore_obj: datastore managed object
|
||||
|
||||
Returns: True if datastore is valid, False if not
|
||||
"""
|
||||
if not datastore_obj \
|
||||
or datastore_obj.summary.maintenanceMode != 'normal' \
|
||||
or not datastore_obj.summary.accessible:
|
||||
return False
|
||||
return True
|
||||
|
||||
def find_datastore_by_name(self, datastore_name):
|
||||
"""
|
||||
Get datastore managed object by name
|
||||
|
|
|
@ -1893,6 +1893,9 @@ class PyVmomiHelper(PyVmomi):
|
|||
|
||||
datastore_freespace = 0
|
||||
for ds in datastores:
|
||||
if not self.is_datastore_valid(datastore_obj=ds):
|
||||
continue
|
||||
|
||||
if ds.summary.freeSpace > datastore_freespace:
|
||||
datastore = ds
|
||||
datastore_freespace = ds.summary.freeSpace
|
||||
|
@ -1932,6 +1935,9 @@ class PyVmomiHelper(PyVmomi):
|
|||
for ds in datastore_cluster_obj.childEntity:
|
||||
if isinstance(ds, vim.Datastore) and ds.summary.freeSpace > datastore_freespace:
|
||||
# If datastore field is provided, filter destination datastores
|
||||
if not self.is_datastore_valid(datastore_obj=ds):
|
||||
continue
|
||||
|
||||
datastore = ds
|
||||
datastore_freespace = ds.summary.freeSpace
|
||||
if datastore:
|
||||
|
@ -1952,6 +1958,9 @@ class PyVmomiHelper(PyVmomi):
|
|||
|
||||
datastore_freespace = 0
|
||||
for ds in datastores:
|
||||
if not self.is_datastore_valid(datastore_obj=ds):
|
||||
continue
|
||||
|
||||
if (ds.summary.freeSpace > datastore_freespace) or (ds.summary.freeSpace == datastore_freespace and not datastore):
|
||||
# If datastore field is provided, filter destination datastores
|
||||
if 'datastore' in self.params['disk'][0] and \
|
||||
|
|
|
@ -51,7 +51,7 @@ class VcenterProvider(CloudProvider):
|
|||
if os.environ.get('ANSIBLE_VCSIM_CONTAINER'):
|
||||
self.image = os.environ.get('ANSIBLE_VCSIM_CONTAINER')
|
||||
else:
|
||||
self.image = 'quay.io/ansible/vcenter-test-container:1.5.0'
|
||||
self.image = 'quay.io/ansible/vcenter-test-container:1.7.0'
|
||||
self.container_name = ''
|
||||
|
||||
# VMware tests can be run on govcsim or baremetal, either BYO with a static config
|
||||
|
|
Loading…
Reference in a new issue