mirror of
https://github.com/ansible/awx.git
synced 2026-05-20 07:17:40 -02:30
Mutex validator added.
This commit is contained in:
@@ -2657,6 +2657,11 @@ class WorkflowJobTemplateNodeChildrenBaseList(EnforceParentRelationshipMixin, Su
|
|||||||
return getattr(parent, self.relationship).all()
|
return getattr(parent, self.relationship).all()
|
||||||
|
|
||||||
def is_valid_relation(self, parent, sub, created=False):
|
def is_valid_relation(self, parent, sub, created=False):
|
||||||
|
mutex_list = ('success_nodes', 'failure_nodes') if self.relationship == 'always_nodes' else ('always_nodes',)
|
||||||
|
for relation in mutex_list:
|
||||||
|
if getattr(parent, relation).all().exists():
|
||||||
|
return {'Error': 'Cannot associate {0} when {1} have been associated.'.format(self.relationship, relation)}
|
||||||
|
|
||||||
if created:
|
if created:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,11 @@ class TestWorkflowJobTemplate:
|
|||||||
assert test_view.is_valid_relation(node_assoc, nodes[0]) == {'Error': 'Cycle detected!'}
|
assert test_view.is_valid_relation(node_assoc, nodes[0]) == {'Error': 'Cycle detected!'}
|
||||||
# test multi-ancestor validation
|
# test multi-ancestor validation
|
||||||
assert test_view.is_valid_relation(node_assoc, nodes[1]) == {'Error': 'Multiple ancestor detected!'}
|
assert test_view.is_valid_relation(node_assoc, nodes[1]) == {'Error': 'Multiple ancestor detected!'}
|
||||||
|
# test mutex validation
|
||||||
|
test_view.relationship = 'failure_nodes'
|
||||||
|
node_assoc_1 = WorkflowJobTemplateNode.objects.create(workflow_job_template=wfjt)
|
||||||
|
assert (test_view.is_valid_relation(nodes[2], node_assoc_1) ==
|
||||||
|
{'Error': 'Cannot associate failure_nodes when always_nodes have been associated.'})
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
class TestWorkflowJobFailure:
|
class TestWorkflowJobFailure:
|
||||||
|
|||||||
Reference in New Issue
Block a user