def scan_cancel(frontend_scanid): try: log.info("scanid %s", frontend_scanid) rmqvhost = config.get_frontend_rmqvhost() user_id = user_ctrl.get_userid(rmqvhost) scan_id = scan_ctrl.get_scan_id(frontend_scanid, user_id) (status, progress_details) = scan_ctrl.progress(scan_id) scan_ctrl.cancelling(scan_id) pending_jobs = scan_ctrl.get_pending_jobs(scan_id) cancel_details = None if len(pending_jobs) != 0: celery_probe.job_cancel(pending_jobs) cancel_details = {} cancel_details['total'] = progress_details['total'] cancel_details['finished'] = progress_details['finished'] cancel_details['cancelled'] = len(pending_jobs) scan_ctrl.cancelled(scan_id) scan_flush(frontend_scanid) res = {} res['status'] = status res['cancel_details'] = cancel_details return IrmaTaskReturn.success(res) except: log.info("exception", exc_info=True) return IrmaTaskReturn.error("cancel error on brain")
def scan_progress(frontend_scanid): try: log.info("scanid %s", frontend_scanid) rmqvhost = config.get_frontend_rmqvhost() user_id = user_ctrl.get_userid(rmqvhost) scan_id = scan_ctrl.get_scan_id(frontend_scanid, user_id) (status, progress_details) = scan_ctrl.progress(scan_id) res = {} res['status'] = status res['progress_details'] = progress_details return IrmaTaskReturn.success(res) except: log.info("exception", exc_info=True) return IrmaTaskReturn.error("progress error on brain")
def test_scan_progress(self): scan_id = scan_ctrl.new(self.scanid, self.userid, 10) job_ids = [] for i in xrange(0, 10): for probe in ['probe1', 'probe2']: job_ids.append(job_ctrl.new(scan_id, "file-{0}".format(i), probe, 1)) scan_ctrl.launched(scan_id) shuffle(job_ids) for i, job_id in enumerate(job_ids[:-1]): job_ctrl.success(job_id) (status, progress_details) = scan_ctrl.progress(scan_id) self.assertEqual(status, IrmaScanStatus.label[IrmaScanStatus.launched]) self.assertIsNotNone(progress_details) self.assertEqual(progress_details['successful'], i + 1)