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)
|
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):
|
def find_datastore_by_name(self, datastore_name):
|
||||||
"""
|
"""
|
||||||
Get datastore managed object by name
|
Get datastore managed object by name
|
||||||
|
|
|
@ -1893,6 +1893,9 @@ class PyVmomiHelper(PyVmomi):
|
||||||
|
|
||||||
datastore_freespace = 0
|
datastore_freespace = 0
|
||||||
for ds in datastores:
|
for ds in datastores:
|
||||||
|
if not self.is_datastore_valid(datastore_obj=ds):
|
||||||
|
continue
|
||||||
|
|
||||||
if ds.summary.freeSpace > datastore_freespace:
|
if ds.summary.freeSpace > datastore_freespace:
|
||||||
datastore = ds
|
datastore = ds
|
||||||
datastore_freespace = ds.summary.freeSpace
|
datastore_freespace = ds.summary.freeSpace
|
||||||
|
@ -1932,6 +1935,9 @@ class PyVmomiHelper(PyVmomi):
|
||||||
for ds in datastore_cluster_obj.childEntity:
|
for ds in datastore_cluster_obj.childEntity:
|
||||||
if isinstance(ds, vim.Datastore) and ds.summary.freeSpace > datastore_freespace:
|
if isinstance(ds, vim.Datastore) and ds.summary.freeSpace > datastore_freespace:
|
||||||
# If datastore field is provided, filter destination datastores
|
# If datastore field is provided, filter destination datastores
|
||||||
|
if not self.is_datastore_valid(datastore_obj=ds):
|
||||||
|
continue
|
||||||
|
|
||||||
datastore = ds
|
datastore = ds
|
||||||
datastore_freespace = ds.summary.freeSpace
|
datastore_freespace = ds.summary.freeSpace
|
||||||
if datastore:
|
if datastore:
|
||||||
|
@ -1952,6 +1958,9 @@ class PyVmomiHelper(PyVmomi):
|
||||||
|
|
||||||
datastore_freespace = 0
|
datastore_freespace = 0
|
||||||
for ds in datastores:
|
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 (ds.summary.freeSpace > datastore_freespace) or (ds.summary.freeSpace == datastore_freespace and not datastore):
|
||||||
# If datastore field is provided, filter destination datastores
|
# If datastore field is provided, filter destination datastores
|
||||||
if 'datastore' in self.params['disk'][0] and \
|
if 'datastore' in self.params['disk'][0] and \
|
||||||
|
|
|
@ -51,7 +51,7 @@ class VcenterProvider(CloudProvider):
|
||||||
if os.environ.get('ANSIBLE_VCSIM_CONTAINER'):
|
if os.environ.get('ANSIBLE_VCSIM_CONTAINER'):
|
||||||
self.image = os.environ.get('ANSIBLE_VCSIM_CONTAINER')
|
self.image = os.environ.get('ANSIBLE_VCSIM_CONTAINER')
|
||||||
else:
|
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 = ''
|
self.container_name = ''
|
||||||
|
|
||||||
# VMware tests can be run on govcsim or baremetal, either BYO with a static config
|
# VMware tests can be run on govcsim or baremetal, either BYO with a static config
|
||||||
|
|
Loading…
Reference in a new issue