Source code for WorkflowWebTools.actionshistorylink

"""
The :py:mod:`actionshistorylink` module creates files that link
the action and the errors thrown for each task where the action and history
are both stored on the server.
The ``config.yml`` file is read to determine the locations of this history databases.

:author: Daniel Abercrombie <dabercro@mit.edu>
"""

import json

from . import serverconfig
from . import manageactions
from . import globalerrors


[docs]def dump_json(file_name=None): """ Dump a list of pairs into a file and returns the dictionary. The pairs are dictionary of errors, and action document. Each element in the list corresponds to a different subtask. :param str file_name: The location to place the json file, if set :returns: The errors and actions for each subtask :rtype: dict """ output = {} history = globalerrors.ErrorInfo(serverconfig.workflow_history_path()) actions = manageactions.get_actions(0, acted=None) session = {'info': history} for workflow in actions: for subtask in history.get_step_list(workflow): if actions[workflow]['Action'] in ['acdc', 'recovery']: parameters = actions[workflow]['Parameters'].get( '/'.join(subtask.split('/')[2:]), {}) else: parameters = actions[workflow]['Parameters'] output[subtask] = { 'errors': { 'good_sites': globalerrors.get_step_table( subtask, session, readymatch=['green'], sparse=True), 'bad_sites': globalerrors.get_step_table( subtask, session, readymatch=['yellow', 'red', 'none'], sparse=True) }, 'parameters': parameters } output[subtask]['parameters']['action'] = actions[workflow]['Action'] if file_name: with open(file_name, 'w') as output_file: json.dump(output, output_file) return output