Prevent altering certain fields on Instance

- Prevents changing hostname, listener_port, or node_type for instances
that already exist
- API default node_type is execution
- API default node_state is installed
This commit is contained in:
Seth Foster
2022-09-13 23:53:58 -04:00
committed by Jeff Bradberry
parent 9c6aa93093
commit e0c9013d9c

View File

@@ -4884,12 +4884,12 @@ class InstanceSerializer(BaseSerializer):
read_only_fields = ('ip_address', 'uuid', 'version') read_only_fields = ('ip_address', 'uuid', 'version')
fields = ( fields = (
'id', 'id',
'hostname',
'type', 'type',
'url', 'url',
'related', 'related',
'summary_fields', 'summary_fields',
'uuid', 'uuid',
'hostname',
'created', 'created',
'modified', 'modified',
'last_seen', 'last_seen',
@@ -4913,6 +4913,7 @@ class InstanceSerializer(BaseSerializer):
'ip_address', 'ip_address',
'listener_port', 'listener_port',
) )
extra_kwargs = {'node_type': {'default': 'execution'}, 'node_state': {'default': 'installed'}}
def get_related(self, obj): def get_related(self, obj):
res = super(InstanceSerializer, self).get_related(obj) res = super(InstanceSerializer, self).get_related(obj)
@@ -4974,6 +4975,18 @@ class InstanceSerializer(BaseSerializer):
return value return value
def validate_hostname(self, value):
if self.instance and self.instance.hostname != value:
raise serializers.ValidationError("Cannot change hostname.")
return value
def validate_listener_port(self, value):
if self.instance and self.instance.listener_port != value:
raise serializers.ValidationError("Cannot change listener port.")
return value
class InstanceHealthCheckSerializer(BaseSerializer): class InstanceHealthCheckSerializer(BaseSerializer):
class Meta: class Meta: