Beispiel #1
0
    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
Beispiel #2
0
 def _run_commands(self, module, commands):
     return run_commands(module, commands)