Class: Debci::Job
Defined Under Namespace
Classes: InvalidStatusFile
Class Method Summary
collapse
Instance Method Summary
collapse
#prefix
#autopkgtest_dir, #cleanup, #debci_log, #result_json, #root
#expired?
#duration_human
Class Method Details
.history(package, suite, arch) ⇒ Object
51
52
53
54
55
56
57
|
# File 'lib/debci/job.rb', line 51
def self.history(package, suite, arch)
Debci::Job.where(
package: package,
suite: suite,
arch: arch
).where.not(status: nil).where(pin_packages: nil).order('date')
end
|
.import(status_file, suite, arch) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/debci/job.rb', line 23
def self.import(status_file, suite, arch)
status = Debci::Status.from_file(status_file, suite, arch)
status.run_id = status.run_id.to_i
job = Debci::Job.find(status.run_id)
if status.package != job.package
raise InvalidStatusFile.new("Data in %{file} is for package %{pkg}, while database says that job %{id} is for package %{origpkg}" % {
file: status_file,
pkg: status.package,
id: status.run_id,
origpkg: job.package,
})
end
job.duration_seconds = status.duration_seconds
job.date = status.date
job.last_pass_date = status.last_pass_date
job.last_pass_version = status.last_pass_version
job.message = status.message
job.previous_status = status.previous_status
job.version = status.version
job.status = status.status
job.save!
job
end
|
.pending ⇒ Object
47
48
49
|
# File 'lib/debci/job.rb', line 47
def self.pending
jobs = Debci::Job.where(status: nil).order(:created_at)
end
|
Instance Method Details
#as_json(options = nil) ⇒ Object
70
71
72
|
# File 'lib/debci/job.rb', line 70
def as_json(options = nil)
super(options).update("duration_human" => self.duration_human)
end
|
#enqueue(priority = 0) ⇒ Object
86
87
88
89
90
|
# File 'lib/debci/job.rb', line 86
def enqueue(priority = 0)
queue = Debci::AMQP.get_queue(arch)
parameters = enqueue_parameters
queue.publish("%s %s %s" % [package, suite, parameters.join(' ')], priority: priority)
end
|
#enqueue_parameters ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/debci/job.rb', line 74
def enqueue_parameters
parameters = ['run-id:%s' % id]
if self.trigger
parameters << "trigger:#{CGI.escape(trigger)}"
end
Array(self.pin_packages).each do |pin|
pkg, suite = pin
parameters << "pin-packages:#{suite}=#{pkg}"
end
parameters
end
|
#time ⇒ Object
Returns the amount of time since the date for this status object
60
61
62
63
64
65
66
67
68
|
# File 'lib/debci/job.rb', line 60
def time
days = (Time.now - self.created_at)/86400
if days >= 1 || days <= -1
"#{days.floor} day(s) ago"
else
"#{Time.at(Time.now - self.created_at).gmtime.strftime('%H')} hour(s) ago"
end
end
|
#to_s ⇒ Object
92
93
94
|
# File 'lib/debci/job.rb', line 92
def to_s
"%s %s/%s (%s)" % [package, suite, arch, status || 'pending']
end
|