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

@@ -393,6 +393,12 @@ class UnifiedJobSerializer(BaseSerializer):
res['unified_job_template'] = obj.unified_job_template.get_absolute_url()
if obj.schedule and obj.schedule.active:
res['schedule'] = obj.schedule.get_absolute_url()
if isinstance(obj, ProjectUpdate):
res['stdout'] = reverse('api:project_update_stdout', args=(obj.pk,))
elif isinstance(obj, InventoryUpdate):
res['stdout'] = reverse('api:inventory_update_stdout', args=(obj.pk,))
elif isinstance(obj, Job):
res['stdout'] = reverse('api:job_stdout', args=(obj.pk,))
return res
def to_native(self, obj):
@@ -445,15 +451,20 @@ class UnifiedJobListSerializer(UnifiedJobSerializer):
return ret
class BaseTaskSerializer(BaseSerializer):
class UnifiedJobStdoutSerializer(UnifiedJobSerializer):
job_env = serializers.SerializerMethodField('get_job_env')
class Meta:
fields = ('result_stdout',)
def get_job_env(self, obj):
job_env_d = obj.job_env
if 'BROKER_URL' in job_env_d:
job_env_d.pop('BROKER_URL')
return job_env_d
def get_types(self):
if type(self) is UnifiedJobSerializer:
return ['project_update', 'inventory_update', 'job']
else:
return super(UnifiedJobSerializer, self).get_types()
def to_native(self, obj):
ret = super(UnifiedJobStdoutSerializer, self).to_native(obj)
return ret.get('result_stdout', '')
class UserSerializer(BaseSerializer):