From 54fb04afc42a43d5951742bf86eccc01be104437 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Fri, 27 Mar 2015 15:41:02 -0400 Subject: [PATCH] made sequence more flexible, can handle descending and negative sequences and is skipped if start==end --- lib/ansible/runner/lookup_plugins/sequence.py | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/ansible/runner/lookup_plugins/sequence.py b/lib/ansible/runner/lookup_plugins/sequence.py index 3bd84a7c304..68b0bbec90d 100644 --- a/lib/ansible/runner/lookup_plugins/sequence.py +++ b/lib/ansible/runner/lookup_plugins/sequence.py @@ -151,10 +151,17 @@ class LookupModule(object): ) elif self.count is not None: # convert count to end - self.end = self.start + self.count * self.stride - 1 + if self.count != 0: + self.end = self.start + self.count * self.stride - 1 + else: + self.start = 0 + self.end = 0 + self.stride = 0 del self.count - if self.end < self.start: - raise AnsibleError("can't count backwards") + if self.stride > 0 and self.end < self.start: + raise AnsibleError("to count backwards make stride negative") + if self.stride < 0 and self.end > self.start: + raise AnsibleError("to count forward don't make stride negative") if self.format.count('%') != 1: raise AnsibleError("bad formatting string: %s" % self.format) @@ -197,12 +204,13 @@ class LookupModule(object): self.sanity_check() - results.extend(self.generate_sequence()) + if self.start != self.end: + results.extend(self.generate_sequence()) except AnsibleError: raise - except Exception: + except Exception, e: raise AnsibleError( - "unknown error generating sequence" + "unknown error generating sequence: %s" % str(e) ) return results