def execute(self): warnings = list() changed = ('tmsh modify', 'tmsh create', 'tmsh delete') commands = self.parse_commands(warnings) wait_for = self.want.wait_for or list() retries = self.want.retries conditionals = [Conditional(c) for c in wait_for] if self.client.check_mode: return while retries > 0: if self.client.module.params[ 'transport'] == 'cli' and HAS_CLI_TRANSPORT: responses = run_commands(self.client.module, self.want.commands) else: responses = self.execute_on_device(commands) for item in list(conditionals): if item(responses): if self.want.match == 'any': conditionals = list() break conditionals.remove(item) if not conditionals: break time.sleep(self.want.interval) retries -= 1 else: failed_conditions = [item.raw for item in conditionals] errmsg = 'One or more conditional statements have not been satisfied' raise FailedConditionsError(errmsg, failed_conditions) self.changes = Parameters({ 'stdout': responses, 'stdout_lines': self._to_lines(responses), 'warnings': warnings }) if any(x for x in self.want.user_commands if x.startswith(changed)): return True return False
def _run_commands(self, module, commands): return run_commands(module, commands)