Merge pull request #2430 from chrismeyersfsu/fix-do_not_touch_my_iso

deny topology changes to iso instances via api
This commit is contained in:
Chris Meyers
2018-07-09 11:04:19 -04:00
committed by GitHub
3 changed files with 45 additions and 2 deletions

View File

@@ -189,9 +189,22 @@ class InstanceGroupMembershipMixin(object):
ig_obj.save()
return response
def is_valid_relation(self, parent, sub, created=False):
if sub.is_isolated():
return {'error': _('Isolated instances may not be added or removed from instances groups via the API.')}
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):
response = super(InstanceGroupMembershipMixin, self).unattach(request, *args, **kwargs)
sub_id, res = self.attach_validate(request)
if status.is_success(response.status_code):
if self.parent_model is Instance:
ig_obj = get_object_or_400(self.model, pk=sub_id)