def handle_job_metrics(self, line, job): job_metrics = summarize_job_metrics(self.trans, job) metrics_by_plugin = {} for job_metric in job_metrics: plugin = job_metric["plugin"] if plugin not in metrics_by_plugin: metrics_by_plugin[plugin] = {} metrics_by_plugin[plugin][job_metric["title"]] = job_metric["value"] markdown = "" for metric_plugin, metrics_for_plugin in metrics_by_plugin.items(): markdown += f"**{metric_plugin}**\n\n" markdown += "| | |\n|---|--|\n" for title, value in metrics_for_plugin.items(): markdown += f"| {title} | {value} |\n" return (markdown, True)
def handle_job_metrics(self, line, job): job_metrics = summarize_job_metrics(self.trans, job) metrics_by_plugin = OrderedDict() for job_metric in job_metrics: plugin = job_metric["plugin"] if plugin not in metrics_by_plugin: metrics_by_plugin[plugin] = OrderedDict() metrics_by_plugin[plugin][job_metric["title"]] = job_metric["value"] markdown = "" for metric_plugin, metrics_for_plugin in metrics_by_plugin.items(): markdown += "**%s**\n\n" % metric_plugin markdown += "| | |\n|---|--|\n" for title, value in metrics_for_plugin.items(): markdown += "| %s | %s |\n" % (title, value) return (markdown, True)
def metrics(self, trans, **kwd): """ * GET /api/jobs/{job_id}/metrics * GET /api/datasets/{dataset_id}/metrics Return job metrics for specified job. Job accessibility checks are slightly different than dataset checks, so both methods are available. :type job_id: string :param job_id: Encoded job id :type dataset_id: string :param dataset_id: Encoded HDA or LDDA id :type hda_ldda: string :param hda_ldda: hda if dataset_id is an HDA id (default), ldda if it is an ldda id. :rtype: list :returns: list containing job metrics """ job = self.__get_job(trans, **kwd) return summarize_job_metrics(trans, job)
def show(self, trans, id, **kwd): """ show( trans, id ) * GET /api/jobs/{id}: return jobs for current user :type id: string :param id: Specific job id :type full: boolean :param full: whether to return extra information :rtype: dictionary :returns: dictionary containing full description of job data """ job = self.__get_job(trans, id) is_admin = trans.user_is_admin job_dict = self.encode_all_ids( trans, job.to_dict('element', system_details=is_admin), True) full_output = util.asbool(kwd.get('full', 'false')) if full_output: job_dict.update( dict(tool_stdout=job.tool_stdout, tool_stderr=job.tool_stderr, job_stdout=job.job_stdout, job_stderr=job.job_stderr, stderr=job.stderr, stdout=job.stdout, job_messages=job.job_messages)) if is_admin: if job.user: job_dict['user_email'] = job.user.email else: job_dict['user_email'] = None job_dict['job_metrics'] = summarize_job_metrics(trans, job) return job_dict