mirror of
https://github.com/ansible/awx.git
synced 2026-02-24 14:36:00 -03:30
new WFJT launch schema and cleanup
This commit is contained in:
@@ -2709,18 +2709,15 @@ class WorkflowJobLaunchSerializer(BaseSerializer):
|
|||||||
variables_needed_to_start = serializers.ReadOnlyField()
|
variables_needed_to_start = serializers.ReadOnlyField()
|
||||||
survey_enabled = serializers.SerializerMethodField()
|
survey_enabled = serializers.SerializerMethodField()
|
||||||
extra_vars = VerbatimField(required=False, write_only=True)
|
extra_vars = VerbatimField(required=False, write_only=True)
|
||||||
warnings = serializers.SerializerMethodField()
|
|
||||||
workflow_job_template_data = serializers.SerializerMethodField()
|
workflow_job_template_data = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = WorkflowJobTemplate
|
model = WorkflowJobTemplate
|
||||||
fields = ('can_start_without_user_input', 'extra_vars', 'warnings',
|
fields = ('can_start_without_user_input', 'extra_vars',
|
||||||
'survey_enabled', 'variables_needed_to_start',
|
'survey_enabled', 'variables_needed_to_start',
|
||||||
|
'node_templates_missing', 'node_prompts_rejected',
|
||||||
'workflow_job_template_data')
|
'workflow_job_template_data')
|
||||||
|
|
||||||
def get_warnings(self, obj):
|
|
||||||
return obj.get_warnings()
|
|
||||||
|
|
||||||
def get_survey_enabled(self, obj):
|
def get_survey_enabled(self, obj):
|
||||||
if obj:
|
if obj:
|
||||||
return obj.survey_enabled and 'spec' in obj.survey_spec
|
return obj.survey_enabled and 'spec' in obj.survey_spec
|
||||||
|
|||||||
@@ -2946,7 +2946,10 @@ class WorkflowJobTemplateLaunch(WorkflowsEnforcementMixin, RetrieveAPIView):
|
|||||||
always_allow_superuser = False
|
always_allow_superuser = False
|
||||||
|
|
||||||
def update_raw_data(self, data):
|
def update_raw_data(self, data):
|
||||||
obj = self.get_object()
|
try:
|
||||||
|
obj = self.get_object()
|
||||||
|
except PermissionDenied:
|
||||||
|
return data
|
||||||
extra_vars = data.pop('extra_vars', None) or {}
|
extra_vars = data.pop('extra_vars', None) or {}
|
||||||
if obj:
|
if obj:
|
||||||
for v in obj.variables_needed_to_start:
|
for v in obj.variables_needed_to_start:
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ class WorkflowNodeBase(CreatedModifiedModel):
|
|||||||
scan_errors = ujt_obj._extra_job_type_errors(accepted_fields)
|
scan_errors = ujt_obj._extra_job_type_errors(accepted_fields)
|
||||||
ignored_dict.update(scan_errors)
|
ignored_dict.update(scan_errors)
|
||||||
for fd in ['inventory', 'credential']:
|
for fd in ['inventory', 'credential']:
|
||||||
if getattr(ujt_obj, fd) is None and not (ask_for_vars_dict.get(fd, False) and fd in prompts_dict):
|
if getattr(ujt_obj, "{}_id".format(fd)) is None and not (ask_for_vars_dict.get(fd, False) and fd in prompts_dict):
|
||||||
missing_dict[fd] = 'Job Template does not have this field and workflow node does not provide it'
|
missing_dict[fd] = 'Job Template does not have this field and workflow node does not provide it'
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
@@ -421,18 +421,22 @@ class WorkflowJobTemplate(UnifiedJobTemplate, WorkflowJobOptions, SurveyJobTempl
|
|||||||
|
|
||||||
def can_start_without_user_input(self):
|
def can_start_without_user_input(self):
|
||||||
'''Return whether WFJT can be launched without survey passwords.'''
|
'''Return whether WFJT can be launched without survey passwords.'''
|
||||||
return not bool(self.variables_needed_to_start)
|
return not bool(
|
||||||
|
self.variables_needed_to_start or
|
||||||
|
self.node_templates_missing() or
|
||||||
|
self.node_prompts_rejected())
|
||||||
|
|
||||||
def get_warnings(self):
|
def node_templates_missing(self):
|
||||||
warning_data = {}
|
return [node.pk for node in self.workflow_job_template_nodes.filter(
|
||||||
for node in self.workflow_job_template_nodes.all():
|
unified_job_template__isnull=True).all()]
|
||||||
if node.unified_job_template is None:
|
|
||||||
warning_data[node.pk] = 'Node is missing a linked unified_job_template'
|
def node_prompts_rejected(self):
|
||||||
continue
|
node_list = []
|
||||||
|
for node in self.workflow_job_template_nodes.select_related('unified_job_template').all():
|
||||||
node_prompts_warnings = node.get_prompts_warnings()
|
node_prompts_warnings = node.get_prompts_warnings()
|
||||||
if node_prompts_warnings:
|
if node_prompts_warnings:
|
||||||
warning_data[node.pk] = node_prompts_warnings
|
node_list.append(node.pk)
|
||||||
return warning_data
|
return node_list
|
||||||
|
|
||||||
def user_copy(self, user):
|
def user_copy(self, user):
|
||||||
new_wfjt = self.copy_unified_jt()
|
new_wfjt = self.copy_unified_jt()
|
||||||
|
|||||||
Reference in New Issue
Block a user