fix a bug which breaks inventory update stdout downloads

see: https://github.com/ansible/ansible-tower/issues/7363
see: https://github.com/ansible/ansible-tower/issues/7337
This commit is contained in:
Ryan Petrello
2017-07-31 18:16:19 -04:00
parent 9c29b0a92f
commit d09872d13a

View File

@@ -4382,18 +4382,25 @@ class UnifiedJobStdout(RetrieveAPIView):
tablename, related_name = { tablename, related_name = {
Job: ('main_jobevent', 'job_id'), Job: ('main_jobevent', 'job_id'),
AdHocCommand: ('main_adhoccommandevent', 'ad_hoc_command_id'), AdHocCommand: ('main_adhoccommandevent', 'ad_hoc_command_id'),
}[unified_job.__class__] }.get(unified_job.__class__, (None, None))
cursor.copy_expert( if tablename is None:
"copy (select stdout from {} where {}={} order by start_line) to stdout".format( # stdout job event reconstruction isn't supported
tablename, # for certain job types (such as inventory syncs),
related_name, # so just grab the raw stdout from the DB
unified_job.id write_fd.write(unified_job.result_stdout_text)
), write_fd.close()
write_fd else:
) cursor.copy_expert(
write_fd.close() "copy (select stdout from {} where {}={} order by start_line) to stdout".format(
subprocess.Popen("sed -i 's/\\\\r\\\\n/\\n/g' {}".format(unified_job.result_stdout_file), tablename,
shell=True).wait() related_name,
unified_job.id
),
write_fd
)
write_fd.close()
subprocess.Popen("sed -i 's/\\\\r\\\\n/\\n/g' {}".format(unified_job.result_stdout_file),
shell=True).wait()
except Exception as e: except Exception as e:
return Response({"error": _("Error generating stdout download file: {}".format(e))}) return Response({"error": _("Error generating stdout download file: {}".format(e))})
try: try: