def accept_dud(session, dud, builder): fire = dud.get_firehose() failed = True if dud.get('X-Debile-Failed', None) == "Yes" else False job = session.query(Job).get(dud['X-Debile-Job']) fire, _ = idify(fire) fire = uniquify(session, fire) result = Result.from_job(job) result.failed = failed result.firehose = fire session.merge(result) # Needed because a *lot* of the Firehose is # going to need unique ${WORLD}. job.dud_uploaded(session, result) session.commit() # Neato. repo = result.get_repo() try: repo.add_dud(dud) except FilesAlreadyRegistered: return reject_dud(session, dud, "dud-files-already-registered") emit('receive', 'result', result.debilize())
def insert_analysis(session, xml_file): """ Given a file object and a session, creates a Firehose Analysis() object and inserts it to the db linked to session """ try: analysis = fhm.Analysis.from_xml(xml_file) except XmlParseError: return # if file is empty for example except Exception as e: print("ERROR while parsing xml: %s" % e) return #idify: try: (analysis, analysishash) = idify(analysis) except Exception as e: print("ERROR while idify Analysis: %s" % e) import sys; sys.exit() # unicity: try: analysis = uniquify(session, analysis) except Exception as e: print("ERROR while uniquify Analysis: %s" % e) import sys; sys.exit() session.merge(analysis) session.commit()
def accept_dud(session, dud, builder): fire = dud.get_firehose() failed = True if dud['X-Debile-Failed'] == "Yes" else False job = session.query(Job).get(dud['X-Debile-Job']) fire, _ = idify(fire) fire = uniquify(session, fire) result = Result() result.job = job result.source = job.source result.check = job.check result.firehose = fire # result.binary = # XXX: FIX THIS session.merge(result) # Needed because a *lot* of the Firehose is # going to need unique ${WORLD}. session.commit() # Neato. # OK. It's safely in the database and repo. Let's cleanup. for fp in [dud.get_filename()] + dud.get_files(): os.unlink(fp)
def accept_dud(config, session, dud, builder): fire = dud.get_firehose() failed = True if dud.get('X-Debile-Failed', None) == "Yes" else False job = session.query(Job).get(dud['X-Debile-Job']) fire, _ = idify(fire) fire = uniquify(session.bind, fire) result = job.new_result(fire, failed) session.add(result) try: repo = FileRepo() repo.add_dud(result.path, dud, config['filerepo_chmod_mode']) except FilesAlreadyRegistered: return reject_dud(session, dud, "dud-files-already-registered") emit('receive', 'result', result.debilize()) # OK. It's safely in the database and repo. Let's cleanup. for fp in [dud.get_dud_file()] + dud.get_files(): os.unlink(fp)