mirror of
https://github.com/ZwareBear/awx.git
synced 2026-05-14 15:58:38 -05:00
Switch to using extra_vars for survey variables, fix up some unit tests
related to that and some issues with system jobs
This commit is contained in:
@@ -78,7 +78,10 @@ class VarsDictProperty(object):
|
||||
def __get__(self, obj, type=None):
|
||||
if obj is None:
|
||||
return self
|
||||
v = getattr(obj, self.field).encode('utf-8')
|
||||
v = getattr(obj, self.field)
|
||||
if hasattr(v, 'items'):
|
||||
return v
|
||||
v = v.encode('utf-8')
|
||||
d = None
|
||||
try:
|
||||
d = json.loads(v.strip() or '{}')
|
||||
|
||||
@@ -195,7 +195,7 @@ class JobTemplate(UnifiedJobTemplate, JobOptions):
|
||||
def _get_unified_job_field_names(cls):
|
||||
return ['name', 'description', 'job_type', 'inventory', 'project',
|
||||
'playbook', 'credential', 'cloud_credential', 'forks', 'schedule',
|
||||
'limit', 'verbosity', 'extra_vars', 'job_tags', 'launch_type',
|
||||
'limit', 'verbosity', 'job_tags', 'extra_vars', 'launch_type',
|
||||
'force_handlers', 'skip_tags', 'start_at_task']
|
||||
|
||||
def create_job(self, **kwargs):
|
||||
@@ -949,7 +949,7 @@ class SystemJobTemplate(UnifiedJobTemplate, SystemJobOptions):
|
||||
|
||||
@classmethod
|
||||
def _get_unified_job_field_names(cls):
|
||||
return ['name', 'description', 'job_type']
|
||||
return ['name', 'description', 'job_type', 'extra_vars']
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse('api:system_job_template_detail', args=(self.pk,))
|
||||
|
||||
@@ -306,7 +306,10 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique):
|
||||
value = value.id
|
||||
create_kwargs[id_field_name] = value
|
||||
elif field_name in kwargs:
|
||||
create_kwargs[field_name] = kwargs[field_name]
|
||||
if field_name == 'extra_vars' and type(kwargs[field_name]) == dict:
|
||||
create_kwargs[field_name] = json.dumps(kwargs['extra_vars'])
|
||||
else:
|
||||
create_kwargs[field_name] = kwargs[field_name]
|
||||
elif hasattr(self, field_name):
|
||||
create_kwargs[field_name] = getattr(self, field_name)
|
||||
kwargs = self._update_unified_job_kwargs(**create_kwargs)
|
||||
@@ -692,9 +695,10 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
|
||||
self.job_explanation = u'Missing needed fields: %s.' % missing_fields
|
||||
self.save(update_fields=['job_explanation'])
|
||||
return False
|
||||
extra_data = dict([(field, kwargs[field]) for field in kwargs
|
||||
if field not in needed])
|
||||
self.handle_extra_data(extra_data)
|
||||
#extra_data = dict([(field, kwargs[field]) for field in kwargs
|
||||
# if field not in needed])
|
||||
if 'extra_vars' in kwargs:
|
||||
self.handle_extra_data(kwargs['extra_vars'])
|
||||
task_class().apply_async((self.pk,), opts, link_error=error_callback)
|
||||
return True
|
||||
|
||||
@@ -715,9 +719,8 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
|
||||
opts = dict([(field, kwargs.get(field, '')) for field in needed])
|
||||
if not all(opts.values()):
|
||||
return False
|
||||
extra_data = dict([(field, kwargs[field]) for field in kwargs
|
||||
if field not in needed])
|
||||
self.handle_extra_data(extra_data)
|
||||
if 'extra_vars' in kwargs:
|
||||
self.handle_extra_data(kwargs['extra_vars'])
|
||||
|
||||
# Save the pending status, and inform the SocketIO listener.
|
||||
self.update_fields(start_args=json.dumps(kwargs), status='pending')
|
||||
|
||||
Reference in New Issue
Block a user