diff --git a/awx/api/serializers.py b/awx/api/serializers.py index f74f44b0a0..0cca493965 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -1626,6 +1626,7 @@ class JobTemplateSerializer(UnifiedJobTemplateSerializer, JobOptionsSerializer): d['can_copy'] = False d['can_edit'] = False d['recent_jobs'] = [{'id': x.id, 'status': x.status, 'finished': x.finished} for x in obj.jobs.filter(active=True).order_by('-created')[:10]] + d['labels'] = [{'id': x.id, 'name': x.name} for x in obj.labels.all().order_by('-name')[:10]] return d def validate(self, attrs): @@ -1667,6 +1668,11 @@ class JobSerializer(UnifiedJobSerializer, JobOptionsSerializer): res['relaunch'] = reverse('api:job_relaunch', args=(obj.pk,)) return res + def get_summary_fields(self, obj): + d = super(JobSerializer, self).get_summary_fields(obj) + d['labels'] = [{'id': x.id, 'name': x.name} for x in obj.labels.all().order_by('-name')[:10]] + return d + def to_internal_value(self, data): # When creating a new job and a job template is specified, populate any # fields not provided in data from the job template. diff --git a/awx/api/views.py b/awx/api/views.py index f723ff843c..1fc123100c 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -133,6 +133,7 @@ class ApiV1RootView(APIView): data['schedules'] = reverse('api:schedule_list') data['notifiers'] = reverse('api:notifier_list') data['notifications'] = reverse('api:notification_list') + data['labels'] = reverse('api:label_list') data['unified_job_templates'] = reverse('api:unified_job_template_list') data['unified_jobs'] = reverse('api:unified_job_list') data['activity_stream'] = reverse('api:activity_stream_list')