diff --git a/changelogs/fragments/47-api-split.yml b/changelogs/fragments/47-api-split.yml new file mode 100644 index 0000000..10e8033 --- /dev/null +++ b/changelogs/fragments/47-api-split.yml @@ -0,0 +1,3 @@ +bugfixes: + - "api - improve splitting of ``WHERE`` queries (https://github.com/ansible-collections/community.routeros/pull/47)." + - "api - when converting result lists to dictionaries, no longer removes second ``=`` and text following that if present (https://github.com/ansible-collections/community.routeros/pull/47)." diff --git a/plugins/modules/api.py b/plugins/modules/api.py index c25e6c8..6288834 100644 --- a/plugins/modules/api.py +++ b/plugins/modules/api.py @@ -321,12 +321,14 @@ class ROS_api_module: self.where = None self.query = self.module.params['query'] if self.query: - if 'WHERE' in self.query: - split = self.query.split('WHERE') - self.query = self.list_remove_empty(split[0].split(' ')) - self.where = self.list_remove_empty(split[1].split(' ')) - else: - self.query = self.list_remove_empty(self.module.params['query'].split(' ')) + self.query = self.list_remove_empty(self.query.split(' ')) + try: + idx = self.query.index('WHERE') + self.where = self.query[idx + 1:] + self.query = self.query[:idx] + except ValueError: + # Raised when WHERE has not been found + pass self.result = dict( message=[]) @@ -358,7 +360,7 @@ class ROS_api_module: for p in ldict: if '=' not in p: self.errors("missing '=' after '%s'" % p) - p = p.split('=') + p = p.split('=', 1) if p[1]: dict[p[0]] = p[1] return dict