diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 09066a4871..00a90b2653 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -4801,6 +4801,18 @@ class InstanceGroupSerializer(BaseSerializer): raise serializers.ValidationError(_('Isolated instances may not be added or removed from instances groups via the API.')) if self.instance and self.instance.controller_id is not None: raise serializers.ValidationError(_('Isolated instance group membership may not be managed via the API.')) + if value and self.instance.is_containerized: + raise serializers.ValidationError(_('Containerized instances may not be managed via the API')) + return value + + def validate_policy_instance_percentage(self, value): + if value and self.instance.is_containerized: + raise serializers.ValidationError(_('Containerized instances may not be managed via the API')) + return value + + def validate_policy_instance_minimum(self, value): + if value and self.instance.is_containerized: + raise serializers.ValidationError(_('Containerized instances may not be managed via the API')) return value def validate_name(self, value): diff --git a/awx/api/views/__init__.py b/awx/api/views/__init__.py index 23e66810fe..dd31948acf 100644 --- a/awx/api/views/__init__.py +++ b/awx/api/views/__init__.py @@ -383,6 +383,13 @@ class InstanceGroupDetail(RelatedJobsPreventDeleteMixin, RetrieveUpdateDestroyAP serializer_class = serializers.InstanceGroupSerializer permission_classes = (InstanceGroupTowerPermission,) + def update_raw_data(self, data): + if self.get_object().is_containerized: + data.pop('policy_instance_percentage', None) + data.pop('policy_instance_minimum', None) + data.pop('policy_instance_list', None) + return super(InstanceGroupDetail, self).update_raw_data(data) + def destroy(self, request, *args, **kwargs): instance = self.get_object() if instance.controller is not None: