def cancel_superceded_jobs(self, new_job): # check for unfinished jobs that might be cancellable packageinstance = new_job.packageinstance unfinished_jobs_list = myDb.get_unfinished_jobs() # print "UNFINISHED JOB LIST", unfinished_jobs_list for unfinished_job in unfinished_jobs_list: unfinished_job_package_name = unfinished_job.packageinstance.package.name if unfinished_job_package_name == packageinstance.package.name: if new_job.id != unfinished_job.id: unfinished_job_package_version = unfinished_job.packageinstance.package.version command = "dpkg --compare-versions %s '<<' %s" % ( packageinstance.package.version, unfinished_job_package_version, ) if (unfinished_job_package_version == packageinstance.package.version) or (os.system(command)): unfinished_job_dist_id = unfinished_job.packageinstance.distribution.id unfinished_job_arch_id = unfinished_job.packageinstance.arch.id unfinished_job_suite_id = unfinished_job.packageinstance.suite.id if ( (unfinished_job_dist_id == packageinstance.distribution.id) and (unfinished_job_arch_id == packageinstance.arch.id) and (unfinished_job_suite_id == packageinstance.suite.id) ): self.process_cancel(unfinished_job) # else : # print "IGNORING UNFINISHED JOB", unfinished_job.id, unfinished_job_package_name, unfinished_job_package_version, "(dist/arch/suite differs)" # else : # print "IGNORING UNFINISHED JOB", unfinished_job.id, unfinished_job_package_name, unfinished_job_package_version, "(version differs)" # else : # print "IGNORING NEW JOB", unfinished_job.id # else : # print "IGNORING UNFINISHED JOB", unfinished_job.id, unfinished_job_package_name return
def get_jobstatuses(): try: response.content_type = "application/json" #return list of UNFINISHED jobs" res = myDb.get_unfinished_jobs() return jsonpickle.encode(res) except Exception as e: raise Exception('Exception encountered: ' + str(e)) return None
def cancel_package(self, package_id): # cancels all instances of a package package = myDb.get_package_id(package_id) if not package.id: response.status = "404 - no package matching package_id" else: unfinished_jobs_list = myDb.get_unfinished_jobs() for unfinished_job in unfinished_jobs_list: if (unfinished_job.packageinstance.package.name == package.name) and ( unfinished_job.packageinstance.package.version == package.version ): self.process_cancel(unfinished_job) return
def cancel_all_builds(self): # cancels all packages/jobs unfinished_jobs_list = myDb.get_unfinished_jobs() for unfinished_job in unfinished_jobs_list: self.process_cancel(unfinished_job) return