Add API resource for unified job stdout with HTML output of ANSI color codes.

This commit is contained in:
Chris Church
2014-04-01 20:15:36 -04:00
parent fb5b069273
commit 86599cf1e3
18 changed files with 747 additions and 18 deletions

View File

@@ -4,6 +4,7 @@
# Python
import json
import logging
import re
import shlex
import os
import os.path
@@ -492,15 +493,19 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
super(UnifiedJob, self).delete()
@property
def result_stdout(self):
def result_stdout_raw(self):
if self.result_stdout_file != "":
if not os.path.exists(self.result_stdout_file):
return "stdout capture is missing"
stdout_fd = open(self.result_stdout_file, "r")
output = stdout_fd.read()
stdout_fd.close()
return output
return self.result_stdout_text
with open(self.result_stdout_file, "r") as stdout_fd:
return stdout_fd.read()
else:
return self.result_stdout_text
@property
def result_stdout(self):
ansi_escape = re.compile(r'\x1b[^m]*m')
return ansi_escape.sub('', self.result_stdout_raw)
@property
def celery_task(self):

View File

@@ -201,7 +201,6 @@ class BaseTask(Task):
env[key] = str(value)
# Set environment variables needed for inventory and job event
# callbacks to work.
env['ANSIBLE_NOCOLOR'] = '1' # Prevent output of escape sequences.
# Update PYTHONPATH to use local site-packages.
python_paths = env.get('PYTHONPATH', '').split(os.pathsep)
local_site_packages = self.get_path_to('..', 'lib', 'site-packages')