From a5cd4ebea2dad7ea32d2d766ddd54711d3aac29f Mon Sep 17 00:00:00 2001 From: Aaron Sowry Date: Tue, 30 Jan 2024 07:08:34 +1300 Subject: [PATCH] Simplify regex for identifying order number in DN (#7646) (#7697) Assume that if a string of digits occurs between curly braces anywhere in the first component of the DN, that this is an order number. The sequence does not necessarily have to occur after an equals sign. --- .../fragments/7646-fix-order-number-detection-in-dn.yml | 2 ++ plugins/module_utils/ldap.py | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/7646-fix-order-number-detection-in-dn.yml diff --git a/changelogs/fragments/7646-fix-order-number-detection-in-dn.yml b/changelogs/fragments/7646-fix-order-number-detection-in-dn.yml new file mode 100644 index 0000000000..f2d2379872 --- /dev/null +++ b/changelogs/fragments/7646-fix-order-number-detection-in-dn.yml @@ -0,0 +1,2 @@ +bugfixes: + - ldap - previously the order number (if present) was expected to follow an equals sign in the DN. This makes it so the order number string is identified correctly anywhere within the DN (https://github.com/ansible-collections/community.general/issues/7646). diff --git a/plugins/module_utils/ldap.py b/plugins/module_utils/ldap.py index ef444e9778..fccf073047 100644 --- a/plugins/module_utils/ldap.py +++ b/plugins/module_utils/ldap.py @@ -139,5 +139,7 @@ class LdapGeneric(object): def _xorder_dn(self): # match X_ORDERed DNs - regex = r"\w+=\{\d+\}.+" - return re.match(regex, self.module.params['dn']) is not None + regex = r".+\{\d+\}.+" + explode_dn = ldap.dn.explode_dn(self.module.params['dn']) + + return re.match(regex, explode_dn[0]) is not None