From b1f30ede2942771349edaad14503f1986db6e235 Mon Sep 17 00:00:00 2001 From: Christoffer Reijer Date: Wed, 3 Apr 2024 10:02:12 +0200 Subject: [PATCH] Support regexp for datastore autoselect When automatically selecting a datastore, use regular expression instead of a simple string search as this will support additional use cases such as when there are datastores with the prefix "DoNotUse_" which should not be selected automatically. --- changelogs/fragments/regexp-for-autoselect-datastore.yml | 2 ++ plugins/modules/vmware_guest.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/regexp-for-autoselect-datastore.yml diff --git a/changelogs/fragments/regexp-for-autoselect-datastore.yml b/changelogs/fragments/regexp-for-autoselect-datastore.yml new file mode 100644 index 0000000000..c2ec108cd1 --- /dev/null +++ b/changelogs/fragments/regexp-for-autoselect-datastore.yml @@ -0,0 +1,2 @@ +minor_changes: + - "Support for regular expression when using `autoselect_datastore: True`." diff --git a/plugins/modules/vmware_guest.py b/plugins/modules/vmware_guest.py index a8654849f5..76bdcbddb5 100644 --- a/plugins/modules/vmware_guest.py +++ b/plugins/modules/vmware_guest.py @@ -295,7 +295,7 @@ type: str description: - The name of datastore which will be used for the disk. - - If O(disk.autoselect_datastore) is set to True, will select the less used datastore whose name contains this "disk.datastore" string. + - If O(disk.autoselect_datastore) is set to True, will select the less used datastore whose name matches this "disk.datastore" pattern. filename: type: str description: @@ -2768,7 +2768,7 @@ def select_datastore(self, vm_obj=None): if (ds.summary.freeSpace > datastore_freespace) or (ds.summary.freeSpace == datastore_freespace and not datastore): # If datastore field is provided, filter destination datastores - if self.params['disk'][0]['datastore'] and ds.name.find(self.params['disk'][0]['datastore']) < 0: + if self.params['disk'][0]['datastore'] and re.search(self.params['disk'][0]['datastore'], ds.name): continue datastore = ds