예제 #1
0
    def run(self):
        self.logger = log.get_logger('CancelJob')

        self.tasks = Tasks()

        rows_affected = 0
        if self.options.multiple:
            rows_affected = self.tasks.bulk_finish(
                extra_predicate=("job_id LIKE :job_id", {
                    'job_id': self.options.job_id + '%%'
                }))
        else:
            loader_storage = LoaderStorage()
            with loader_storage.transaction() as cursor:
                jobs = apsw_helpers.query(cursor,
                                          '''
                    SELECT id FROM jobs WHERE id LIKE :job_id
                ''',
                                          job_id=self.options.job_id + '%')

            if len(jobs) > 1:
                print len(jobs), 'jobs match this job ID:'
                print '\n'.join([row.id for row in jobs])
                print 'Please use a more specific prefix or specify the `--multiple` flag if you'
                print 'would like to cancel more than one job.'
                sys.exit(1)
            elif len(jobs) == 0:
                print '0 jobs match this job ID.'
                sys.exit(1)
            else:
                rows_affected = self.tasks.bulk_finish(
                    extra_predicate=("job_id = :job_id", {
                        'job_id': jobs[0].id
                    }))

        job_suffix = '(s)' if self.options.multiple else ''
        task_suffix = 's' if not rows_affected == 1 else ''
        print CANCEL_JOB_MESSAGE % (job_suffix, self.options.job_id,
                                    rows_affected, task_suffix)
예제 #2
0
    def __init__(self):
        super(Servers, self).__init__(LoaderStorage())

        self._define_table(PRIMARY_TABLE)
예제 #3
0
 def __init__(self):
     self.logger = log.get_logger(self.name or 'api')
     self.storage = LoaderStorage()