mirror of
https://github.com/ansible/awx.git
synced 2026-05-10 19:07:36 -02:30
If managed, cannot modify peers_from_control_nodes
Adds validation to prevent changing peers_from_control_nodes if instance managed=True Signed-off-by: Seth Foster <fosterbseth@gmail.com>
This commit is contained in:
@@ -5753,6 +5753,12 @@ class InstanceSerializer(BaseSerializer):
|
|||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def validate_peers_from_control_nodes(self, value):
|
||||||
|
if self.instance and self.instance.managed and self.instance.canonical_address_peers_from_control_nodes != value:
|
||||||
|
raise serializers.ValidationError(_("Cannot change peers_from_control_nodes for managed nodes."))
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
class InstanceHealthCheckSerializer(BaseSerializer):
|
class InstanceHealthCheckSerializer(BaseSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
@@ -462,6 +462,33 @@ class TestPeers:
|
|||||||
|
|
||||||
assert 'Cannot deprovision managed nodes.' in str(resp.data)
|
assert 'Cannot deprovision managed nodes.' in str(resp.data)
|
||||||
|
|
||||||
|
def test_changing_managed_peers_from_control_nodes(self, admin_user, patch):
|
||||||
|
"""
|
||||||
|
cannot change peers_from_control_nodes of managed node
|
||||||
|
"""
|
||||||
|
hop = Instance.objects.create(hostname='hop', node_type='hop', managed=True)
|
||||||
|
ReceptorAddress.objects.create(instance=hop, address='hop', peers_from_control_nodes=True, canonical=True)
|
||||||
|
resp = patch(
|
||||||
|
url=reverse('api:instance_detail', kwargs={'pk': hop.pk}),
|
||||||
|
data={"peers_from_control_nodes": False},
|
||||||
|
user=admin_user,
|
||||||
|
expect=400,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert 'Cannot change peers_from_control_nodes for managed nodes.' in str(resp.data)
|
||||||
|
|
||||||
|
hop.peers_from_control_nodes = False
|
||||||
|
hop.save()
|
||||||
|
|
||||||
|
resp = patch(
|
||||||
|
url=reverse('api:instance_detail', kwargs={'pk': hop.pk}),
|
||||||
|
data={"peers_from_control_nodes": False},
|
||||||
|
user=admin_user,
|
||||||
|
expect=400,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert 'Cannot change peers_from_control_nodes for managed nodes.' in str(resp.data)
|
||||||
|
|
||||||
@pytest.mark.parametrize('node_type', ['control', 'hybrid'])
|
@pytest.mark.parametrize('node_type', ['control', 'hybrid'])
|
||||||
def test_control_node_automatically_peers(self, node_type):
|
def test_control_node_automatically_peers(self, node_type):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user