def do_execute(self, diagnostics_parameters: DiagnosticsParameters, job_interface: BackgroundProcessInterface) -> None: job_interface.send_progress_update(_("Diagnostics dump started...")) job_interface.send_progress_update(repr(diagnostics_parameters)) job_interface.send_progress_update(repr(serialize_wato_parameters(diagnostics_parameters))) site = diagnostics_parameters["site"] timeout = html.request.request_timeout - 2 result = check_mk_automation(site, "create-diagnostics-dump", args=serialize_wato_parameters(diagnostics_parameters), timeout=timeout, non_blocking_http=True) job_interface.send_progress_update(result["output"]) if result["tarfile_created"]: tarfile_path = result['tarfile_path'] download_url = html.makeuri_contextless([("site", site), ("tarfile_name", str(Path(tarfile_path)))], "download_diagnostics_dump.py") button = html.render_icon_button(download_url, _("Download"), "diagnostics_dump_file") job_interface.send_progress_update(_("Dump file: %s") % tarfile_path) job_interface.send_result_message(_("%s Creating dump file successfully") % button) else: job_interface.send_result_message(_("Creating dump file failed"))
def do_execute( self, diagnostics_parameters: DiagnosticsParameters, job_interface: BackgroundProcessInterface, ) -> None: job_interface.send_progress_update(_("Diagnostics dump started...")) site = diagnostics_parameters["site"] timeout = request.request_timeout - 2 result = create_diagnostics_dump( site, serialize_wato_parameters(diagnostics_parameters), timeout, ) job_interface.send_progress_update(result.output) if result.tarfile_created: tarfile_path = result.tarfile_path download_url = makeuri_contextless( request, [("site", site), ("tarfile_name", str(Path(tarfile_path).name))], filename="download_diagnostics_dump.py", ) button = html.render_icon_button(download_url, _("Download"), "diagnostics_dump_file") job_interface.send_progress_update(_("Dump file: %s") % tarfile_path) job_interface.send_result_message(_("%s Retrieve created dump file") % button) else: job_interface.send_result_message(_("Creating dump file failed"))
def test_diagnostics_serialize_wato_parameters_boolean(): assert sorted( diagnostics.serialize_wato_parameters({ "opt_info": { diagnostics.OPT_LOCAL_FILES: "ANY", diagnostics.OPT_OMD_CONFIG: "ANY", diagnostics.OPT_PERFORMANCE_GRAPHS: "ANY", diagnostics.OPT_CHECKMK_OVERVIEW: "ANY", }, })) == sorted([ diagnostics.OPT_LOCAL_FILES, diagnostics.OPT_OMD_CONFIG, diagnostics.OPT_PERFORMANCE_GRAPHS, diagnostics.OPT_CHECKMK_OVERVIEW, ])
def do_execute( self, diagnostics_parameters: DiagnosticsParameters, job_interface: BackgroundProcessInterface, ) -> None: job_interface.send_progress_update(_("Diagnostics dump started...")) chunks = serialize_wato_parameters(diagnostics_parameters) # TODO: Currently, selecting multiple sites is not possible. # sites = diagnostics_parameters["sites"][1] site = diagnostics_parameters["site"] timeout = request.request_timeout - 2 results = [] for chunk in chunks: chunk_result = create_diagnostics_dump( site, chunk, timeout, ) results.append(chunk_result) # for site in sites: # for chunk in chunks: # chunk_result = create_diagnostics_dump( # site, # chunk, # timeout, # ) # results.append(chunk_result) if len(results) > 1: result = _merge_results(results) elif len(results) == 1: result = results[0] else: job_interface.send_result_message( _("Got no result to create dump file")) return job_interface.send_progress_update(result.output) if result.tarfile_created: tarfile_path = result.tarfile_path download_url = makeuri_contextless( request, [("site", site), ("tarfile_name", str(Path(tarfile_path).name))], filename="download_diagnostics_dump.py", ) button = html.render_icon_button(download_url, _("Download"), "diagnostics_dump_file") job_interface.send_progress_update( _("Dump file: %s") % tarfile_path) job_interface.send_result_message( _("%s Retrieve created dump file") % button) else: job_interface.send_result_message(_("Creating dump file failed"))
def test_diagnostics_serialize_wato_parameters_files(wato_parameters, expected_parameters): assert diagnostics.serialize_wato_parameters( wato_parameters) == expected_parameters
def test_diagnostics_serialize_wato_parameters_files(mocker, wato_parameters, expected_parameters): mocker.patch("cmk.utils.diagnostics._get_max_args", return_value=5) assert diagnostics.serialize_wato_parameters( wato_parameters) == expected_parameters