filename = '/var/lib/ais/jobs/%s%s' % (self.id, extension)
return os.path.getsize(filename)
+ def get_log_size(self):
+ filename = '/var/lib/ais/jobs/%s.log' % self.id
+ try:
+ return os.path.getsize(filename)
+ except OSError, err:
+ if err.errno == 2:
+ return 0
+ raise
+
class Meta:
db_table = u'job'
ordering = ('queue_time',)
return jobid
-def jobid_ext_to_filename(jobid, friendly_filename):
+def jobid_ext_to_filenames(jobid, friendly_filename):
extension = os.path.splitext(friendly_filename)[-1]
- return RESULT_DIR + jobid + extension
+ return RESULT_DIR + jobid + extension, RESULT_DIR + jobid + '.log'
def startup_clean():
sqlexec(u'SELECT id, pid, start_time, finish_time FROM job WHERE pid IS NOT NULL OR (start_time IS NOT NULL AND finish_time IS NULL)')
row = get_common_cursor().fetchone()
if row is None:
break
- filename = jobid_ext_to_filename(*row)
+ filename, logfilename = jobid_ext_to_filenames(*row)
try:
os.unlink(filename)
except OSError, err:
logging.error('unlinking %s: %s', filename, err)
+ try:
+ os.unlink(logfilename)
+ except OSError, err:
+ logging.error('unlinking %s: %s', logfilename, err)
deleted_jobs.append(row[0])
for jobid in deleted_jobs:
sqlexec(u"UPDATE job SET start_time=now() AT TIME ZONE 'GMT' WHERE id=%(jobid)s", {'jobid': jobid})
dbcommit()
- filename = jobid_ext_to_filename(jobid, friendly_filename)
+ filename, logfilename = jobid_ext_to_filenames(jobid, friendly_filename)
output = file(filename, 'wb')
+ logfile = file(logfilename, 'wb')
- p = subprocess.Popen(command, stdout=output, shell=True)
+ p = subprocess.Popen(command, stdout=output, stderr=logfile, shell=True)
logging.debug('System process id = %s', p.pid)
sqlexec(u'UPDATE job SET pid=' + unicode(p.pid) + ' WHERE id=%(jobid)s', {'jobid': jobid})
dbcommit()
Status: <b>Completed</b> at {{ job.finish_time|date:"Y-m-d H:i:s" }} UTC in {{ job.process_time }}<br>
Result: {% if job.result %}<b>Error {{ job.result }}</b>{% else %}<b>Success</b><br>
Result size: {{ job.get_sucess_size|filesizeformat }}<br>
+Log size: {{ job.get_log_size|filesizeformat }}<br>
<a href="/job/{{ job.id }}/download" class=button>download</a>{% endif %}<br>
{% else %}
{% if job.start_time %}