Source code for fastr.utils.cmd.dump

import argparse
import os
import zipfile

from fastr.utils.cmd import add_parser_doc_link


[docs]def get_parser(): parser = argparse.ArgumentParser( description="Create a dump of a network run directory that contains the" " most important information for debugging. This includes a" " serialization of the network, all the job command and" " result files, the extra job information files and the " " provenance files. No data files will be included, but note" " that if jobs get sensitive information passed via the " " command line this will be included in the job files.") parser.add_argument('indir', metavar='RUNDIR', help='The run directory to dump') parser.add_argument('outfile', metavar='DUMP.zip', help='The file to place the dump in') return parser
[docs]def create_zip(directory, output_file): with zipfile.ZipFile(output_file, 'w', compression=zipfile.ZIP_DEFLATED) as zip_file: zip_file.write(os.path.join(directory, './__sink_data__.json'), './__sink_data__.json') for path, _, files in os.walk(directory): for filename in files: if filename.startswith('__fastr'): file_path = os.path.join(path, filename) relative_path = file_path.replace(directory, './', 1) zip_file.write(file_path, relative_path)
[docs]def main(): """ Dump the contents of a network run tempdir into a zip for remote assistance """ parser = add_parser_doc_link(get_parser(), __file__) args = parser.parse_args() create_zip(args.indir, args.outfile)
if __name__ == '__main__': main()