mirror of
https://github.com/ansible/awx.git
synced 2026-03-01 00:38:45 -03:30
Add name field for ad hoc commands, get relaunch working.
This commit is contained in:
@@ -1483,12 +1483,14 @@ class JobCancelSerializer(JobSerializer):
|
|||||||
|
|
||||||
class AdHocCommandSerializer(UnifiedJobSerializer):
|
class AdHocCommandSerializer(UnifiedJobSerializer):
|
||||||
|
|
||||||
|
name = serializers.CharField(source='name', read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = AdHocCommand
|
model = AdHocCommand
|
||||||
fields = ('*', 'job_type', 'inventory', 'limit', 'credential',
|
fields = ('*', 'job_type', 'inventory', 'limit', 'credential',
|
||||||
'module_name', 'module_args', 'forks', 'verbosity',
|
'module_name', 'module_args', 'forks', 'verbosity',
|
||||||
'privilege_escalation')
|
'privilege_escalation')
|
||||||
exclude = ('unified_job_template', 'name', 'description')
|
exclude = ('unified_job_template', 'description')
|
||||||
|
|
||||||
def get_related(self, obj):
|
def get_related(self, obj):
|
||||||
res = super(AdHocCommandSerializer, self).get_related(obj)
|
res = super(AdHocCommandSerializer, self).get_related(obj)
|
||||||
|
|||||||
@@ -1232,6 +1232,15 @@ class AdHocCommandAccess(BaseAccess):
|
|||||||
def can_delete(self, obj):
|
def can_delete(self, obj):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def can_start(self, obj):
|
||||||
|
return self.can_add({
|
||||||
|
'credential': obj.credential_id,
|
||||||
|
'inventory': obj.inventory_id,
|
||||||
|
})
|
||||||
|
|
||||||
|
def can_cancel(self, obj):
|
||||||
|
return self.can_read(obj) and obj.can_cancel
|
||||||
|
|
||||||
class AdHocCommandEventAccess(BaseAccess):
|
class AdHocCommandEventAccess(BaseAccess):
|
||||||
'''
|
'''
|
||||||
I can see ad hoc command event records whenever I can read both ad hoc
|
I can see ad hoc command event records whenever I can read both ad hoc
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import logging
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
from django.utils.text import Truncator
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
@@ -199,11 +200,20 @@ class AdHocCommand(UnifiedJob):
|
|||||||
return dependencies
|
return dependencies
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
raise NotImplementedError
|
data = {}
|
||||||
presets = {}
|
for field in ('job_type', 'inventory_id', 'limit', 'credential_id',
|
||||||
for kw in self.job_template._get_unified_job_field_names():
|
'module_name', 'module_args', 'forks', 'verbosity',
|
||||||
presets[kw] = getattr(self, kw)
|
'privilege_escalation'):
|
||||||
return self.job_template.create_unified_job(**presets)
|
data[field] = getattr(self, field)
|
||||||
|
return AdHocCommand.objects.create(**data)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
update_fields = kwargs.get('update_fields', [])
|
||||||
|
if not self.name:
|
||||||
|
self.name = Truncator(u'%s: %s' % (self.module_name, self.module_args)).chars(512)
|
||||||
|
if 'name' not in update_fields:
|
||||||
|
update_fields.append('name')
|
||||||
|
super(AdHocCommand, self).save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class AdHocCommandEvent(CreatedModifiedModel):
|
class AdHocCommandEvent(CreatedModifiedModel):
|
||||||
|
|||||||
Reference in New Issue
Block a user