class AdjustStorageResourcePoolsValidator(serializers.Serializer): """ 校验调整存储资源池接口输入 """ owner = serializers.CharField( max_length=20, default="cloudin", error_messages=serializers.CommonErrorMessages(_(u"所有者")) ) zone = serializers.CharField( max_length=20, default="yz", error_messages=serializers.CommonErrorMessages(_(u"区信息")) ) name = serializers.CharField( max_length=20, required=True, error_messages=serializers.CommonErrorMessages(_(u"存储池名称")) ) new_name = serializers.CharField( max_length=20, required=False, error_messages=serializers.CommonErrorMessages(_(u"存储池新名称")) ) adjust_size = serializers.IntegerField( min_value=-1, required=False, error_messages=serializers.CommonErrorMessages(_(u"存储池调整大小")) )
class DescribeBoardValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) zone = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages('zone') ) location = serializers.CharField( max_length=64, error_messages=serializers.CommonErrorMessages('location') ) def handler(self, validated_data): board_list = BoardModel.objects.describe_board( validated_data['owner'], validated_data['zone'], validated_data['location'] ) serializer = BoardListSerializer(board_list) return ConsoleResponse(total_count=len(serializer.data), ret_set=serializer.data)
class DescribeDisksValidator(serializers.Serializer): # 硬盘的唯一id, 非api disk id disk_id = serializers.CharField(required=False, max_length=11, validators=[disk_id_validator]) # 特定的要展示的硬盘id disks = serializers.ListField(required=False, validators=[disk_id_validator]) sort_key = serializers.CharField(required=False, max_length=20, validators=[disk_sort_key_valiator]) limit = serializers.IntegerField(required=False, min_value=0) offset = serializers.IntegerField(required=False, min_value=0) availability_zone = serializers.CharField(required=False, max_length=64) search_key = serializers.CharField(required=False, max_length=64, allow_blank=True) status = serializers.ChoiceField( required=False, choices=(('available', u'available'), ('in-use', u'in-use'), ('creating', u'creating'), ('deleting', u'deleting'), ('attaching', u'attaching'), ('detaching', u'detaching'), ('error', u'error'), ('error_deleting', u'error_deleting'), ('backing-up', u'backing-up'), ('restoring-backup', u'restoring-backup')))
class ChangeBoardValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) zone = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages('zone') ) board_id = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('board_id') ) def handler(self, validated_data): ret = True try: board = BoardModel.objects.get_board( validated_data['board_id'] ) if not board.current: curr_board = BoardModel.objects.current_board( validated_data['owner'], validated_data['zone'], board.location ) curr_board.current = False curr_board.save() board.current = True board.save() except Exception as exp: logger.error(exp) ret = False return ConsoleResponse(code=ret)
class CreateBoardFrameValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) board_id = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('board_id') ) frame_infos = serializers.ListField( error_messages=serializers.CommonErrorMessages('frame_infos') ) def handler(self, validated_data): board = BoardModel.objects.get_board(validated_data['board_id']) frame_infos = validated_data['frame_infos'] result_set = list() for frame_info in frame_infos: ref_action = frame_info.get("ref_action") meta_data = frame_info.get("meta_data") frame = FrameModel.objects.create_frame( board, ref_action, meta_data, ) serializer = FrameSerializer(frame) result_set.append(serializer.data) return ConsoleResponse(ret_set=result_set)
class SetRouterSwitchValidator(serializers.Serializer): action = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"执行动作")) ) owner = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"owner")) ) zone = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"zone")) ) router_id = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"路由名字")) ) enable_snat = serializers.CharField( max_length=40, required=False, error_messages=serializers.CommonErrorMessages(_(u"允许地址转换")) )
class CreateLoadbalancerMemberSerializer(serializers.Serializer): lb_id = serializers.CharField(required=True, allow_blank=False, max_length=20, validators=[lb_id_validator]) lbl_id = serializers.CharField(required=True, allow_blank=False, max_length=20, validators=[lbl_id_validator]) instance_id = serializers.CharField(required=True, max_length=20, validators=[instance_id_validator]) #ip_address = serializers.IPAddressField( # protocol='IPv4' #) port = serializers.IntegerField( required=True, min_value=1, max_value=65536, ) weight = serializers.IntegerField( required=False, allow_null=False, max_value=100, min_value=1, )
class SystemValidator(serializers.Serializer): id = serializers.IntegerField( required=False, error_messages=serializers.CommonErrorMessages('id')) cfg_id = serializers.CharField( required=False, default=lambda: 'app-' + uuid.uuid4().get_hex(), max_length=100, error_messages=serializers.CommonErrorMessages(_(u'编号'))) name = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'系统名称'))) version = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'版本'))) man = serializers.CharField(max_length=100, error_messages=serializers.CommonErrorMessages( _(u'责任人'))) weight = serializers.ChoiceField( choices=WEIGHT_CHOICES, error_messages=serializers.CommonErrorMessages(_(u'重要级别'))) hosts = serializers.CharField( required=False, default='*', max_length=100, error_messages=serializers.CommonErrorMessages(_(u'所在主机')))
class VirtServValidator(serializers.Serializer): id = serializers.IntegerField( required=False, error_messages=serializers.CommonErrorMessages('id')) cfg_id = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'主机 ID'))) name = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'主机名'))) cpu = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'CPU 数'))) memory = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'内存数'))) net = serializers.RegexField( regex=REGEXP_NET, max_length=100, error_messages=serializers.CommonErrorMessages(_(u'网络'))) wan_ip = serializers.RegexField( regex=REGEXP_IPS, max_length=100, error_messages=serializers.CommonErrorMessages(_(u'公网 IP'))) os = serializers.CharField(max_length=100, error_messages=serializers.CommonErrorMessages( _(u'操作系统'))) sys = serializers.CharField(max_length=100, error_messages=serializers.CommonErrorMessages( _(u'应用系统')))
class PhysServValidator(serializers.Serializer): id = serializers.IntegerField( required=False, error_messages=serializers.CommonErrorMessages('id')) cfg_id = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'编号'))) name = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'名称'))) cpu = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'CPU 数'))) memory = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'内存数'))) cabinet = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'所在机柜'))) gbe = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'千兆网卡接口'))) gbex10 = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'万兆网卡接口'))) lan_ip = serializers.RegexField( regex=REGEXP_IPS, max_length=100, error_messages=serializers.CommonErrorMessages(_(u'内网 IP'))) wan_ip = serializers.RegexField( regex=REGEXP_IPS, max_length=100, error_messages=serializers.CommonErrorMessages(_(u'外网 IP')))
class DataBaseValidator(serializers.Serializer): id = serializers.IntegerField( required=False, error_messages=serializers.CommonErrorMessages('id')) cfg_id = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'编号'))) name = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'数据库名'))) version = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'版本'))) memo = serializers.CharField( required=False, default='', max_length=100, error_messages=serializers.CommonErrorMessages(_(u'备注'))) instance = serializers.CharField( max_length=100, error_messages=serializers.CommonErrorMessages(_(u'所在实例'))) net = serializers.RegexField( regex=REGEXP_NET, max_length=100, error_messages=serializers.CommonErrorMessages(_(u'所属网络'))) capacity = serializers.IntegerField( error_messages=serializers.CommonErrorMessages(_(u'实例容量')))
class WafBaseSerializer(serializers.Serializer): """ 每秒查询频率、HTTP连接数、CPU使用率、内存使用率 请求次数统计、响应时间统计、安全防护日志 基础防护、HTTP协议防护、防错误信息泄露、WAF规则 url白名单 系统信息 """ owner = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"用户")) zone = serializers.ChoiceField( required=True, choices=["dev", "prod", "test"], error_messages=serializers.CommonErrorMessages(u"分区")) waf_id = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"waf_id")) smc_ip = serializers.IPAddressField( required=True, error_messages=serializers.CommonErrorMessages(u"smc_ip")) page_index = serializers.IntegerField(default=1, required=False) page_size = serializers.IntegerField(default=0, required=False)
class CreateWafSeniorSerializer(DescribeWafSeniorSerializer): """ 新建高级防护 """ url = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"url")) time = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"统计时间")) blocktime = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"阻断时间")) threshold = serializers.CharField( required=True, error_messages=serializers.CommonErrorMessages(u"阈值")) process_action = serializers.ChoiceField( required=True, choices=["pass", "notify", "deny", "captcha", "all"], error_messages=serializers.CommonErrorMessages(u"防护动作")) matchtype = serializers.ChoiceField( required=True, choices=["equ", "cnt", "regex", "prefix"], error_messages=serializers.CommonErrorMessages(u"关系"))
class GetImageFileValidator(serializers.Serializer): owner = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"owner"))) name = serializers.CharField( max_length=2048, required=True, error_messages=serializers.CommonErrorMessages(_(u"name"))) index = serializers.IntegerField( required=True, error_messages=serializers.CommonErrorMessages(_(u"index"))) total_size = serializers.IntegerField( required=True, error_messages=serializers.CommonErrorMessages(_(u"total_size"))) fileSplitSize = serializers.IntegerField( required=True, error_messages=serializers.CommonErrorMessages(_(u"fileSplitSize"))) md5 = serializers.CharField(max_length=100, required=True, error_messages=serializers.CommonErrorMessages( _(u"md5"))) date = serializers.IntegerField( required=True, error_messages=serializers.CommonErrorMessages(_(u"date")))
class DescribeBackupsValidator(serializers.Serializer): backup_type = serializers.ChoiceField(choices=BACKUP_TYPE_CHOICES) resource_id = serializers.CharField( max_length=20, required=False, default=None, ) status = serializers.CharField( max_length=100, required=False, default=None, ) backup_id = serializers.CharField( max_length=20, required=False, default=None, ) instance_to_image = serializers.IntegerField(required=False, min_value=0) hypervisor_type = serializers.CharField(required=False, ) search_key = serializers.CharField( required=False, default='', allow_blank=True, max_length=64, ) limit = serializers.IntegerField(required=False, min_value=0) offset = serializers.IntegerField(required=False, min_value=0)
class CreateInstanceBySuiteValidator(serializers.Serializer): id = serializers.CharField(max_length=128) count = serializers.IntegerField(min_value=0) passwd = serializers.CharField(max_length=128) biz = serializers.IntegerField(required=False, min_value=0, default=None) compute = serializers.CharField(max_length=100) storage = serializers.CharField(max_length=100)
class UpdateRouterValidator(serializers.Serializer): action = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"执行动作")) ) owner = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"owner")) ) zone = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"zone")) ) router_id = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"路由旧名字")) ) name = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"路由新名字")) )
class DescribeResourceIppoolValidator(serializers.Serializer): owner = serializers.CharField(required=True, max_length=20) zone = serializers.CharField(required=True, max_length=20) ext_net = serializers.IntegerField(required=True, min_value=0)
class JoinRouterValidator(serializers.Serializer): action = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"执行动作")) ) owner = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"owner")) ) zone = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"zone")) ) router_id = serializers.CharField( max_length=40, required=True, error_messages=serializers.CommonErrorMessages(_(u"路由号")) ) subnet_list = serializers.ListField( child=serializers.CharField(max_length=50, error_messages=serializers.CommonErrorMessages(_(u"子网号")) ) )
class DeleteResourceIppoolValidator(serializers.Serializer): owner = serializers.CharField(required=True, max_length=20) zone = serializers.CharField(required=True, max_length=20) network_name = serializers.CharField(required=True, max_length=40)
class DetachInstanceDisksSerializer(InstanceIDSerializer): disks = serializers.ListField(child=serializers.CharField( max_length=20, required=True, validators=[disk_id_validator])) disk_type = serializers.CharField( required=False, max_length=100, )
class DescribeRecordsValidator(serializers.Serializer): """ 获取用户的操作日志 """ # 服务 service = serializers.CharField(max_length=20, required=False, validators=[service_name_validator]) # 开始日期 start_date = serializers.DateField(required=False) # 结束日期 end_date = serializers.DateField(required=False) # 页数 page = serializers.IntegerField(required=True, max_value=settings.MAX_PAGE_NUM, validators=[page_validator]) # 每页数量 page_size = serializers.IntegerField(required=True, max_value=settings.MAX_PAGE_SIZE) # 动作 action = serializers.CharField(max_length=20, required=False, validators=[]) # 状态 status = serializers.CharField( max_length=20, required=False, )
class CreateBoardValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) zone = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages('zone') ) name = serializers.CharField( max_length=128, error_messages=serializers.CommonErrorMessages('name') ) # 背景颜色 background = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('background') ) # 显示位置 location = serializers.CharField( max_length=128, error_messages=serializers.CommonErrorMessages('location') ) def handler(self, validated_data): board = BoardModel.objects.create_board( validated_data['owner'], validated_data['zone'], validated_data['name'], validated_data['background'], validated_data['location'], ) serializer = BoardSerializer(board) return ConsoleResponse(ret_set=serializer.data)
class ChangePasswordValidator(serializers.Serializer): def __init__(self, user, *args, **kwargs): self.user = user super(ChangePasswordValidator, self).__init__(*args, **kwargs) # 原密码 old_password = serializers.CharField( max_length=128, required=False, error_messages=serializers.CommonErrorMessages(_(u"原密码"))) # 新密码 new_password = serializers.CharField( max_length=128, required=True, error_messages=serializers.CommonErrorMessages(_(u"新密码"))) # 确认密码 confirm_password = serializers.CharField( max_length=128, required=True, error_messages=serializers.CommonErrorMessages(_(u"确认密码"))) def validate(self, attrs): if authenticate(username=self.user.username, password=attrs["old_password"]) is None: raise serializers.ValidationError(_(u"原密码不正确")) if attrs["new_password"] != attrs["confirm_password"]: raise serializers.ValidationError(_(u"两次密码输入不一致")) if attrs["old_password"] == attrs["new_password"]: raise serializers.ValidationError(_(u"新密码不能和原密码相同")) return attrs
class ArrangeBoardFrameValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) frame_id = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('frame_id') ) direction = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('direction') ) step = serializers.IntegerField( max_value=MAX_FRAME_NUM, error_messages=serializers.CommonErrorMessages('step') ) def handler(self, validated_data): ret = FrameModel.objects.arrange_frame( validated_data['owner'], validated_data['frame_id'], validated_data['direction'], validated_data['step'], ) return ConsoleResponse(code=ret)
class SendVerifyCodeCaptchaValidator(serializers.Serializer): # 验证码类型 code_type = serializers.ChoiceField(choices=CODE_TYPE_CHOICES, required=True) # 手机号 cell_phone = serializers.CharField(required=True, validators=[cell_phone_validator]) # ####### 用于申请专用通道 ############# # 图片验证码hash key captcha_key = serializers.CharField(max_length=40, required=True, write_only=True) # 图片验证码的值 captcha_value = serializers.CharField(max_length=10, required=True, write_only=True) def validate(self, attrs): captcha_key = attrs["captcha_key"] captcha_value = attrs["captcha_value"] captcha_inst, error = captcha_validator(captcha_key=captcha_key, captcha_value=captcha_value) if error is not None: raise serializers.ValidationError(error) return attrs
class UpdateBoardValidator(ValidatorBase): owner = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('owner') ) zone = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages('zone') ) board_id = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('board') ) name = serializers.CharField( max_length=64, error_messages=serializers.CommonErrorMessages('name') ) background = serializers.CharField( max_length=32, error_messages=serializers.CommonErrorMessages('background') ) def handler(self, validated_data): board = BoardModel.objects.update_board( validated_data['owner'], validated_data['zone'], validated_data['board_id'], validated_data['name'], validated_data['background'] ) serializer = BoardSerializer(board) return ConsoleResponse(ret_set=serializer.data)
class ChangeCellPhoneValidator(CodeVerifyValidatorBase): """ """ def __init__(self, request, redis_conn, *args, **kwargs): self.request = request self._redis = redis_conn self._code_type = "verify_code" super(ChangeCellPhoneValidator, self).__init__(*args, **kwargs) # 用户手机号 cell_phone = serializers.CharField( required=True, max_length=100, validators=[cell_phone_validator], error_messages=serializers.CommonErrorMessages(_(u"手机号"))) # 验证码 code = serializers.CharField( required=True, max_length=10, validators=[verify_code_validator], error_messages=serializers.CommonErrorMessages(_(u"验证码"))) def validate(self, attrs): cell_phone = attrs["cell_phone"] code = attrs["code"] status, error = self._check_code(cell_phone=cell_phone, code=code) if not status: raise serializers.ValidationError(error) return attrs
class CreateNoticeValidator(serializers.Serializer): title = serializers.CharField( error_messages=serializers.CommonErrorMessages('title')) content = serializers.CharField( error_messages=serializers.CommonErrorMessages('content')) notice_list = serializers.ListField( error_messages=serializers.CommonErrorMessages('notice_list'))
class CreateStorageResourcePoolsValidator(serializers.Serializer): """ 校验创建存储资源池接口输入 """ owner = serializers.CharField( max_length=20, default="cloudin", error_messages=serializers.CommonErrorMessages(_(u"所有者")) ) zone = serializers.CharField( max_length=20, default="yz", error_messages=serializers.CommonErrorMessages(_(u"区信息")) ) name = serializers.CharField( max_length=20, error_messages=serializers.CommonErrorMessages(_(u"存储池名称")) ) kind = serializers.ChoiceField( choices=['ssd', 'sata'], error_messages=serializers.CommonErrorMessages(_(u"存储池类型")) ) size = serializers.IntegerField( min_value=2, error_messages=serializers.CommonErrorMessages(_(u"存储池名称")) )