Skip to content

Commit d011a87

Browse files
committed
Support cancel on system jobs
1 parent f945719 commit d011a87

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

Diff for: awx/api/serializers.py

+9
Original file line numberDiff line numberDiff line change
@@ -1717,8 +1717,17 @@ def get_related(self, obj):
17171717
if obj.system_job_template and obj.system_job_template.active:
17181718
res['system_job_template'] = reverse('api:system_job_template_detail',
17191719
args=(obj.system_job_template.pk,))
1720+
if obj.can_cancel or True:
1721+
res['cancel'] = reverse('api:system_job_cancel', args=(obj.pk,))
17201722
return res
17211723

1724+
class SystemJobCancelSerializer(SystemJobSerializer):
1725+
1726+
can_cancel = serializers.BooleanField(source='can_cancel', read_only=True)
1727+
1728+
class Meta:
1729+
fields = ('can_cancel',)
1730+
17221731
class JobListSerializer(JobSerializer, UnifiedJobListSerializer):
17231732
pass
17241733

Diff for: awx/api/urls.py

+1
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ def url(regex, view, kwargs=None, name=None, prefix=''):
206206
system_job_urls = patterns('awx.api.views',
207207
url(r'^$', 'system_job_list'),
208208
url(r'^(?P<pk>[0-9]+)/$', 'system_job_detail'),
209+
url(r'^(?P<pk>[0-9]+)/cancel/$', 'system_job_cancel'),
209210
)
210211

211212
schedule_urls = patterns('awx.api.views',

Diff for: awx/api/views.py

+15
Original file line numberDiff line numberDiff line change
@@ -2745,6 +2745,21 @@ class SystemJobDetail(RetrieveDestroyAPIView):
27452745
model = SystemJob
27462746
serializer_class = SystemJobSerializer
27472747

2748+
class SystemJobCancel(RetrieveAPIView):
2749+
2750+
model = SystemJob
2751+
serializer_class = SystemJobCancelSerializer
2752+
is_job_cancel = True
2753+
2754+
def post(self, request, *args, **kwargs):
2755+
obj = self.get_object()
2756+
if obj.can_cancel:
2757+
obj.cancel()
2758+
return Response(status=status.HTTP_202_ACCEPTED)
2759+
else:
2760+
return self.http_method_not_allowed(request, *args, **kwargs)
2761+
2762+
27482763
class UnifiedJobTemplateList(ListAPIView):
27492764

27502765
model = UnifiedJobTemplate

0 commit comments

Comments
 (0)