from marshmallow import Schema, fields, post_load, validate from master.models.instancemodel import InstanceModel from master.schema.serverschema import ServerSchema class InstanceSchema(Schema): id = fields.String( required=True ) version = fields.Float( required=True, validate=validate.Range(1.0, 10.0, 'invalid version number') ) servers = fields.Nested( ServerSchema, many=True, validate=validate.Length(0, 32, 'invalid server count') ) uptime = fields.Int( required=True, validate=validate.Range(0, 2147483647, 'invalid uptime') ) last_heartbeat = fields.Int( required=False ) @post_load def make_instance(self, data): return InstanceModel(**data)