do not pass artifacts to non-job nodes

This commit is contained in:
AlanCoding
2018-11-27 10:07:31 -05:00
parent d1d97598e2
commit d6e89689ae
2 changed files with 10 additions and 9 deletions

View File

@@ -264,12 +264,13 @@ class WorkflowJobNode(WorkflowNodeBase):
data['survey_passwords'] = password_dict data['survey_passwords'] = password_dict
# process extra_vars # process extra_vars
extra_vars = data.get('extra_vars', {}) extra_vars = data.get('extra_vars', {})
if aa_dict: if ujt_obj and isinstance(ujt_obj, (JobTemplate, WorkflowJobTemplate)):
functional_aa_dict = copy(aa_dict) if aa_dict:
functional_aa_dict.pop('_ansible_no_log', None) functional_aa_dict = copy(aa_dict)
extra_vars.update(functional_aa_dict) functional_aa_dict.pop('_ansible_no_log', None)
# Workflow Job extra_vars higher precedence than ancestor artifacts extra_vars.update(functional_aa_dict)
if ujt_obj and isinstance(ujt_obj, JobTemplate): if ujt_obj and isinstance(ujt_obj, JobTemplate):
# Workflow Job extra_vars higher precedence than ancestor artifacts
if self.workflow_job and self.workflow_job.extra_vars: if self.workflow_job and self.workflow_job.extra_vars:
extra_vars.update(self.workflow_job.extra_vars_dict) extra_vars.update(self.workflow_job.extra_vars_dict)
if extra_vars: if extra_vars:

View File

@@ -186,7 +186,7 @@ class TestWorkflowJob:
assert nodes[0].failure_nodes.filter(id=nodes[3].id).exists() assert nodes[0].failure_nodes.filter(id=nodes[3].id).exists()
assert nodes[3].failure_nodes.filter(id=nodes[4].id).exists() assert nodes[3].failure_nodes.filter(id=nodes[4].id).exists()
def test_inherit_ancestor_artifacts_from_job(self, project, mocker): def test_inherit_ancestor_artifacts_from_job(self, job_template, mocker):
""" """
Assure that nodes along the line of execution inherit artifacts Assure that nodes along the line of execution inherit artifacts
from both jobs ran, and from the accumulation of old jobs from both jobs ran, and from the accumulation of old jobs
@@ -197,13 +197,13 @@ class TestWorkflowJob:
# Workflow job nodes # Workflow job nodes
job_node = WorkflowJobNode.objects.create(workflow_job=wfj, job=job, job_node = WorkflowJobNode.objects.create(workflow_job=wfj, job=job,
ancestor_artifacts={'a': 42}) ancestor_artifacts={'a': 42})
queued_node = WorkflowJobNode.objects.create(workflow_job=wfj) queued_node = WorkflowJobNode.objects.create(workflow_job=wfj, unified_job_template=job_template)
# Connect old job -> new job # Connect old job -> new job
mocker.patch.object(queued_node, 'get_parent_nodes', lambda: [job_node]) mocker.patch.object(queued_node, 'get_parent_nodes', lambda: [job_node])
assert queued_node.get_job_kwargs()['extra_vars'] == {'a': 42, 'b': 43} assert queued_node.get_job_kwargs()['extra_vars'] == {'a': 42, 'b': 43}
assert queued_node.ancestor_artifacts == {'a': 42, 'b': 43} assert queued_node.ancestor_artifacts == {'a': 42, 'b': 43}
def test_inherit_ancestor_artifacts_from_project_update(self, project, mocker): def test_inherit_ancestor_artifacts_from_project_update(self, project, job_template, mocker):
""" """
Test that the existence of a project update (no artifacts) does Test that the existence of a project update (no artifacts) does
not break the flow of ancestor_artifacts not break the flow of ancestor_artifacts
@@ -214,7 +214,7 @@ class TestWorkflowJob:
# Workflow job nodes # Workflow job nodes
project_node = WorkflowJobNode.objects.create(workflow_job=wfj, job=update, project_node = WorkflowJobNode.objects.create(workflow_job=wfj, job=update,
ancestor_artifacts={'a': 42, 'b': 43}) ancestor_artifacts={'a': 42, 'b': 43})
queued_node = WorkflowJobNode.objects.create(workflow_job=wfj) queued_node = WorkflowJobNode.objects.create(workflow_job=wfj, unified_job_template=job_template)
# Connect project update -> new job # Connect project update -> new job
mocker.patch.object(queued_node, 'get_parent_nodes', lambda: [project_node]) mocker.patch.object(queued_node, 'get_parent_nodes', lambda: [project_node])
assert queued_node.get_job_kwargs()['extra_vars'] == {'a': 42, 'b': 43} assert queued_node.get_job_kwargs()['extra_vars'] == {'a': 42, 'b': 43}