diff --git a/changelogs/fragments/54123-vmware_guest-string_compat.yml b/changelogs/fragments/54123-vmware_guest-string_compat.yml new file mode 100644 index 00000000000..0d82ade7e13 --- /dev/null +++ b/changelogs/fragments/54123-vmware_guest-string_compat.yml @@ -0,0 +1,2 @@ +minor_changes: +- vmware_guest now accepts Python 2 and Python 3 compatible string translate method (https://github.com/ansible/ansible/issues/54118). diff --git a/lib/ansible/modules/cloud/vmware/vmware_guest.py b/lib/ansible/modules/cloud/vmware/vmware_guest.py index cb1365ea97d..70180d23e9c 100644 --- a/lib/ansible/modules/cloud/vmware/vmware_guest.py +++ b/lib/ansible/modules/cloud/vmware/vmware_guest.py @@ -1580,7 +1580,8 @@ class PyVmomiHelper(PyVmomi): # Setting hostName, orgName and fullName is mandatory, so we set some default when missing ident.userData.computerName = vim.vm.customization.FixedName() # computer name will be truncated to 15 characters if using VM name - default_name = self.params['name'].translate(None, string.punctuation) + default_name = self.params['name'].replace(' ', '') + default_name = ''.join([c for c in default_name if c not in string.punctuation]) ident.userData.computerName.name = str(self.params['customization'].get('hostname', default_name[0:15])) ident.userData.fullName = str(self.params['customization'].get('fullname', 'Administrator')) ident.userData.orgName = str(self.params['customization'].get('orgname', 'ACME'))