diff --git a/apps/assets/models/base.py b/apps/assets/models/base.py index b03010905..af59f000c 100644 --- a/apps/assets/models/base.py +++ b/apps/assets/models/base.py @@ -105,6 +105,9 @@ class AssetUser(OrgModelMixin): if update_fields: self.save(update_fields=update_fields) + def get_auth(self, asset=None): + pass + def clear_auth(self): self._password = '' self._private_key = '' diff --git a/apps/ops/ansible/callback.py b/apps/ops/ansible/callback.py index c666ce294..96db5456c 100644 --- a/apps/ops/ansible/callback.py +++ b/apps/ops/ansible/callback.py @@ -139,16 +139,17 @@ class AdHocResultCallback(CallbackMixin, CallbackModule, CMDCallBackModule): class CommandResultCallback(AdHocResultCallback): """ Command result callback + + results_command: { + "cmd": "", + "stderr": "", + "stdout": "", + "rc": 0, + "delta": 0:0:0.123 + } """ def __init__(self, display=None, **kwargs): - # results_command: { - # "cmd": "", - # "stderr": "", - # "stdout": "", - # "rc": 0, - # "delta": 0:0:0.123 - # } - # + self.results_command = dict() super().__init__(display) @@ -156,6 +157,15 @@ class CommandResultCallback(AdHocResultCallback): super().gather_result(t, res) self.gather_cmd(t, res) + def v2_playbook_on_play_start(self, play): + now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + msg = '$ {} ({})'.format('echo', now) + self._play = play + self._display.banner(msg) + + def _print_task_banner(self, task): + pass + def gather_cmd(self, t, res): host = res._host.get_name() cmd = {} diff --git a/apps/ops/ansible/runner.py b/apps/ops/ansible/runner.py index cc48b2447..d13f05fa2 100644 --- a/apps/ops/ansible/runner.py +++ b/apps/ops/ansible/runner.py @@ -135,6 +135,7 @@ class AdHocRunner: loader_class = DataLoader variable_manager_class = VariableManager default_options = get_default_options() + command_modules_choices = ('shell', 'raw', 'command', 'script', 'win_shell') def __init__(self, inventory, options=None): self.options = self.update_options(options) @@ -163,10 +164,28 @@ class AdHocRunner: "pattern: %s dose not match any hosts." % pattern ) + def clean_args(self, module, args): + if module not in self.command_modules_choices: + return args + if isinstance(args, str): + if args.startswith('executable='): + _args = args.split(' ') + executable, command = _args[0].split('=')[1], ' '.join(_args[1:]) + args = {'executable': executable, '_raw_params': command} + else: + args = {'_raw_params': args} + return args + else: + return args + def clean_tasks(self, tasks): cleaned_tasks = [] for task in tasks: - self.check_module_args(task['action']['module'], task['action'].get('args')) + module = task['action']['module'] + args = task['action'].get('args') + cleaned_args = self.clean_args(module, args) + task['action']['args'] = cleaned_args + self.check_module_args(module, cleaned_args) cleaned_tasks.append(task) return cleaned_tasks diff --git a/apps/ops/templates/ops/command_execution_create.html b/apps/ops/templates/ops/command_execution_create.html index 250acc4ea..7d1e49c32 100644 --- a/apps/ops/templates/ops/command_execution_create.html +++ b/apps/ops/templates/ops/command_execution_create.html @@ -46,7 +46,7 @@
-
+
@@ -180,16 +180,7 @@ function initResultTerminal() { term.write("选择左侧资产, 选择运行的系统用户,批量执行命令\r\n") } -$(document).ready(function(){ - systemUserId = $('#system-users-select').val(); - $(".select2").select2().on('select2:select', function(evt) { - var data = evt.params.data; - systemUserId = data.id; - initTree(); - }); - initTree(); - initResultTerminal(); -}).on('click', '.btn-execute', function () { +function execute() { if (!term) { initResultTerminal() } @@ -247,8 +238,21 @@ $(document).ready(function(){ writeExecutionOutput() }, interval); } - }) + }); + return false; +} + +$(document).ready(function(){ + systemUserId = $('#system-users-select').val(); + $(".select2").select2().on('select2:select', function(evt) { + var data = evt.params.data; + systemUserId = data.id; + initTree(); + }); + initTree(); + initResultTerminal(); +}).on('click', '.btn-execute', function () { + execute() }) - {% endblock %} \ No newline at end of file diff --git a/apps/templates/_nav.html b/apps/templates/_nav.html index 61acada82..9a9b54d56 100644 --- a/apps/templates/_nav.html +++ b/apps/templates/_nav.html @@ -64,6 +64,7 @@