mirror of
https://github.com/ansible/awx.git
synced 2026-03-09 13:39:27 -02:30
prevent remove iso instance from iso instance groups
This commit is contained in:
@@ -194,9 +194,17 @@ class InstanceGroupMembershipMixin(object):
|
|||||||
return {'error': _('Isolated instances may not be added or removed from instances groups via the API.')}
|
return {'error': _('Isolated instances may not be added or removed from instances groups via the API.')}
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def unattach_validate(self, request):
|
||||||
|
(sub_id, res) = super(InstanceGroupMembershipMixin, self).unattach_validate(request)
|
||||||
|
if res:
|
||||||
|
return res
|
||||||
|
sub = get_object_or_400(self.model, pk=sub_id)
|
||||||
|
attach_errors = self.is_valid_relation(None, sub)
|
||||||
|
if attach_errors:
|
||||||
|
return (sub_id, Response(attach_errors, status=status.HTTP_400_BAD_REQUEST))
|
||||||
|
|
||||||
def unattach(self, request, *args, **kwargs):
|
def unattach(self, request, *args, **kwargs):
|
||||||
response = super(InstanceGroupMembershipMixin, self).unattach(request, *args, **kwargs)
|
response = super(InstanceGroupMembershipMixin, self).unattach(request, *args, **kwargs)
|
||||||
sub_id, res = self.unattach_validate(request)
|
|
||||||
if status.is_success(response.status_code):
|
if status.is_success(response.status_code):
|
||||||
if self.parent_model is Instance:
|
if self.parent_model is Instance:
|
||||||
ig_obj = get_object_or_400(self.model, pk=sub_id)
|
ig_obj = get_object_or_400(self.model, pk=sub_id)
|
||||||
|
|||||||
@@ -125,10 +125,19 @@ def test_prevent_delete_iso_and_control_groups(delete, isolated_instance_group,
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_prevent_isolated_instance_in_non_isolated_instance_group(post, admin, instance, instance_group, isolated_instance_group):
|
def test_prevent_isolated_instance_added_to_non_isolated_instance_group(post, admin, instance, instance_group, isolated_instance_group):
|
||||||
url = reverse("api:instance_group_instance_list", kwargs={'pk': instance_group.pk})
|
url = reverse("api:instance_group_instance_list", kwargs={'pk': instance_group.pk})
|
||||||
|
|
||||||
assert True is instance.is_isolated()
|
assert True is instance.is_isolated()
|
||||||
resp = post(url, {'associate': True, 'id': instance.id}, admin, expect=400)
|
resp = post(url, {'associate': True, 'id': instance.id}, admin, expect=400)
|
||||||
assert u"Isolated instances may not be added or removed from instances groups via the API." == resp.data['error']
|
assert u"Isolated instances may not be added or removed from instances groups via the API." == resp.data['error']
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.django_db
|
||||||
|
def test_prevent_isolated_instance_removal_from_isolated_instance_group(post, admin, instance, instance_group, isolated_instance_group):
|
||||||
|
url = reverse("api:instance_group_instance_list", kwargs={'pk': isolated_instance_group.pk})
|
||||||
|
|
||||||
|
assert True is instance.is_isolated()
|
||||||
|
resp = post(url, {'disassociate': True, 'id': instance.id}, admin, expect=400)
|
||||||
|
assert u"Isolated instances may not be added or removed from instances groups via the API." == resp.data['error']
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user