mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 01:57:35 -03: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:
parent
818e11dfdc
commit
904c6001e9
@ -5753,6 +5753,12 @@ class InstanceSerializer(BaseSerializer):
|
||||
|
||||
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 Meta:
|
||||
|
||||
@ -462,6 +462,33 @@ class TestPeers:
|
||||
|
||||
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'])
|
||||
def test_control_node_automatically_peers(self, node_type):
|
||||
"""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user