mirror of
https://github.com/ansible/awx.git
synced 2026-01-16 12:20:45 -03:30
implement labels for workflows JT and workflow jobs
This commit is contained in:
parent
330d3d3f6c
commit
41d7bd84a8
@ -1783,7 +1783,17 @@ class OrganizationCredentialSerializerCreate(CredentialSerializerCreate):
|
|||||||
fields = ('*', '-user', '-team')
|
fields = ('*', '-user', '-team')
|
||||||
|
|
||||||
|
|
||||||
class JobOptionsSerializer(BaseSerializer):
|
class LabelsListMixin(object):
|
||||||
|
|
||||||
|
def _summary_field_labels(self, obj):
|
||||||
|
return {'count': obj.labels.count(), 'results': [{'id': x.id, 'name': x.name} for x in obj.labels.all().order_by('name')[:10]]}
|
||||||
|
|
||||||
|
def get_summary_fields(self, obj):
|
||||||
|
res = super(LabelsListMixin, self).get_summary_fields(obj)
|
||||||
|
res['labels'] = self._summary_field_labels(obj)
|
||||||
|
return res
|
||||||
|
|
||||||
|
class JobOptionsSerializer(LabelsListMixin, BaseSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
fields = ('*', 'job_type', 'inventory', 'project', 'playbook',
|
fields = ('*', 'job_type', 'inventory', 'project', 'playbook',
|
||||||
@ -1808,14 +1818,6 @@ class JobOptionsSerializer(BaseSerializer):
|
|||||||
args=(obj.network_credential.pk,))
|
args=(obj.network_credential.pk,))
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def _summary_field_labels(self, obj):
|
|
||||||
return {'count': obj.labels.count(), 'results': [{'id': x.id, 'name': x.name} for x in obj.labels.all().order_by('name')[:10]]}
|
|
||||||
|
|
||||||
def get_summary_fields(self, obj):
|
|
||||||
res = super(JobOptionsSerializer, self).get_summary_fields(obj)
|
|
||||||
res['labels'] = self._summary_field_labels(obj)
|
|
||||||
return res
|
|
||||||
|
|
||||||
def to_representation(self, obj):
|
def to_representation(self, obj):
|
||||||
ret = super(JobOptionsSerializer, self).to_representation(obj)
|
ret = super(JobOptionsSerializer, self).to_representation(obj)
|
||||||
if obj is None:
|
if obj is None:
|
||||||
@ -2178,7 +2180,7 @@ class SystemJobCancelSerializer(SystemJobSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
fields = ('can_cancel',)
|
fields = ('can_cancel',)
|
||||||
|
|
||||||
class WorkflowJobTemplateSerializer(UnifiedJobTemplateSerializer):
|
class WorkflowJobTemplateSerializer(LabelsListMixin, UnifiedJobTemplateSerializer):
|
||||||
show_capabilities = ['start', 'edit', 'delete']
|
show_capabilities = ['start', 'edit', 'delete']
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -2192,6 +2194,7 @@ class WorkflowJobTemplateSerializer(UnifiedJobTemplateSerializer):
|
|||||||
#schedules = reverse('api:workflow_job_template_schedules_list', args=(obj.pk,)),
|
#schedules = reverse('api:workflow_job_template_schedules_list', args=(obj.pk,)),
|
||||||
launch = reverse('api:workflow_job_template_launch', args=(obj.pk,)),
|
launch = reverse('api:workflow_job_template_launch', args=(obj.pk,)),
|
||||||
workflow_nodes = reverse('api:workflow_job_template_workflow_nodes_list', args=(obj.pk,)),
|
workflow_nodes = reverse('api:workflow_job_template_workflow_nodes_list', args=(obj.pk,)),
|
||||||
|
labels = reverse('api:workflow_job_template_label_list', args=(obj.pk,)),
|
||||||
# TODO: Implement notifications
|
# TODO: Implement notifications
|
||||||
#notification_templates_any = reverse('api:system_job_template_notification_templates_any_list', args=(obj.pk,)),
|
#notification_templates_any = reverse('api:system_job_template_notification_templates_any_list', args=(obj.pk,)),
|
||||||
#notification_templates_success = reverse('api:system_job_template_notification_templates_success_list', args=(obj.pk,)),
|
#notification_templates_success = reverse('api:system_job_template_notification_templates_success_list', args=(obj.pk,)),
|
||||||
@ -2208,7 +2211,7 @@ class WorkflowJobTemplateListSerializer(WorkflowJobTemplateSerializer):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# TODO:
|
# TODO:
|
||||||
class WorkflowJobSerializer(UnifiedJobSerializer):
|
class WorkflowJobSerializer(LabelsListMixin, UnifiedJobSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = WorkflowJob
|
model = WorkflowJob
|
||||||
@ -2222,6 +2225,7 @@ class WorkflowJobSerializer(UnifiedJobSerializer):
|
|||||||
# TODO:
|
# TODO:
|
||||||
#res['notifications'] = reverse('api:system_job_notifications_list', args=(obj.pk,))
|
#res['notifications'] = reverse('api:system_job_notifications_list', args=(obj.pk,))
|
||||||
res['workflow_nodes'] = reverse('api:workflow_job_workflow_nodes_list', args=(obj.pk,))
|
res['workflow_nodes'] = reverse('api:workflow_job_workflow_nodes_list', args=(obj.pk,))
|
||||||
|
res['labels'] = reverse('api:workflow_job_label_list', args=(obj.pk,))
|
||||||
# TODO: Cancel job
|
# TODO: Cancel job
|
||||||
'''
|
'''
|
||||||
if obj.can_cancel or True:
|
if obj.can_cancel or True:
|
||||||
|
|||||||
@ -263,6 +263,7 @@ workflow_job_template_urls = patterns('awx.api.views',
|
|||||||
url(r'^(?P<pk>[0-9]+)/jobs/$', 'workflow_job_template_jobs_list'),
|
url(r'^(?P<pk>[0-9]+)/jobs/$', 'workflow_job_template_jobs_list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/launch/$', 'workflow_job_template_launch'),
|
url(r'^(?P<pk>[0-9]+)/launch/$', 'workflow_job_template_launch'),
|
||||||
url(r'^(?P<pk>[0-9]+)/workflow_nodes/$', 'workflow_job_template_workflow_nodes_list'),
|
url(r'^(?P<pk>[0-9]+)/workflow_nodes/$', 'workflow_job_template_workflow_nodes_list'),
|
||||||
|
url(r'^(?P<pk>[0-9]+)/labels/$', 'workflow_job_template_label_list'),
|
||||||
# url(r'^(?P<pk>[0-9]+)/cancel/$', 'workflow_job_template_cancel'),
|
# url(r'^(?P<pk>[0-9]+)/cancel/$', 'workflow_job_template_cancel'),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -270,6 +271,7 @@ workflow_job_urls = patterns('awx.api.views',
|
|||||||
url(r'^$', 'workflow_job_list'),
|
url(r'^$', 'workflow_job_list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/$', 'workflow_job_detail'),
|
url(r'^(?P<pk>[0-9]+)/$', 'workflow_job_detail'),
|
||||||
url(r'^(?P<pk>[0-9]+)/workflow_nodes/$', 'workflow_job_workflow_nodes_list'),
|
url(r'^(?P<pk>[0-9]+)/workflow_nodes/$', 'workflow_job_workflow_nodes_list'),
|
||||||
|
url(r'^(?P<pk>[0-9]+)/labels/$', 'workflow_job_label_list'),
|
||||||
# url(r'^(?P<pk>[0-9]+)/cancel/$', 'workflow_job_cancel'),
|
# url(r'^(?P<pk>[0-9]+)/cancel/$', 'workflow_job_cancel'),
|
||||||
#url(r'^(?P<pk>[0-9]+)/notifications/$', 'workflow_job_notifications_list'),
|
#url(r'^(?P<pk>[0-9]+)/notifications/$', 'workflow_job_notifications_list'),
|
||||||
)
|
)
|
||||||
|
|||||||
@ -2726,6 +2726,11 @@ class WorkflowJobTemplateDetail(RetrieveUpdateDestroyAPIView):
|
|||||||
serializer_class = WorkflowJobTemplateSerializer
|
serializer_class = WorkflowJobTemplateSerializer
|
||||||
always_allow_superuser = False
|
always_allow_superuser = False
|
||||||
|
|
||||||
|
|
||||||
|
class WorkflowJobTemplateLabelList(JobTemplateLabelList):
|
||||||
|
parent_model = WorkflowJobTemplate
|
||||||
|
|
||||||
|
|
||||||
# TODO:
|
# TODO:
|
||||||
class WorkflowJobTemplateLaunch(GenericAPIView):
|
class WorkflowJobTemplateLaunch(GenericAPIView):
|
||||||
|
|
||||||
@ -2883,6 +2888,9 @@ class JobLabelList(SubListAPIView):
|
|||||||
relationship = 'labels'
|
relationship = 'labels'
|
||||||
parent_key = 'job'
|
parent_key = 'job'
|
||||||
|
|
||||||
|
class WorkflowJobLabelList(JobLabelList):
|
||||||
|
parent_model = WorkflowJob
|
||||||
|
|
||||||
class JobActivityStreamList(SubListAPIView):
|
class JobActivityStreamList(SubListAPIView):
|
||||||
|
|
||||||
model = ActivityStream
|
model = ActivityStream
|
||||||
|
|||||||
@ -1474,6 +1474,8 @@ class WorkflowJobTemplateAccess(BaseAccess):
|
|||||||
|
|
||||||
if self.user.is_superuser:
|
if self.user.is_superuser:
|
||||||
return True
|
return True
|
||||||
|
if data is None:
|
||||||
|
return self.user in obj.admin_role
|
||||||
|
|
||||||
org_pk = get_pk_from_dict(data, 'organization')
|
org_pk = get_pk_from_dict(data, 'organization')
|
||||||
if ('organization' not in data or
|
if ('organization' not in data or
|
||||||
|
|||||||
@ -275,8 +275,7 @@ class WorkflowJobTemplate(UnifiedJobTemplate, WorkflowJobOptions, ResourceMixin)
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _get_unified_job_field_names(cls):
|
def _get_unified_job_field_names(cls):
|
||||||
# TODO: ADD LABELS
|
return ['name', 'description', 'extra_vars', 'labels',]
|
||||||
return ['name', 'description', 'extra_vars',]
|
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('api:workflow_job_template_detail', args=(self.pk,))
|
return reverse('api:workflow_job_template_detail', args=(self.pk,))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user