package com.bocloud.cmp.model;

import com.alibaba.fastjson.JSONArray;

import lombok.Data;

import java.util.List;

/**
 * 负载均衡监听器业务类
 *
 * @author wangyu
 * @version 1.0
 * @since 2017年8月28日
 */
@Data
public class LbListenerModel {

    private String listenerUuid;// 监听器ID
    private String name;// 名称
    private Integer connLimit;// 连接限制
    private String defaultPoolUuid;// 默认池ID
    private String remark;// 描述
    private List<String> lbUuids;// 该监听器所绑定的所有负载均衡器
    private String lbUuid;// 负载均衡器ID
    private String protocol;// 监听器协议
    private Integer port;// 监听器端口
    private String tenantUuid;// 租户ID
    private Boolean adminStateUp;// 网络管理状态
    private List<String> snicontainerRefs;
    private String defTlsContainerRef;
    private List<LbMemberModel> models;
    private Long vendorId;// 云平台ID
    private String vendorUuid;// 云平台UUID
    private LbPoolModel poolModel;
    private Integer sniSwitch;
    private List<LbListenerRulesModel> listenerRulesModel;
    private JSONArray certificates;
    private String sslPolicy;
    private JSONArray alpnPolicy;
    private JSONArray defaultActions;
    private List<String> sniContainerRefs; // SNI证书
    // 阿里云
    private Integer bandwidth;// 监听的带宽峰值
    private String scheduler; // 调度算法
    private Integer persistenceTimeout;// 会话保持的超时时间
    private Integer healthyThreshold;// 健康检查连续成功多少次后，将后端服务器的健康检查状态由fail判定为success
    private Integer unhealthyThreshold;// 健康检查连续失败多少次后，将后端服务器的健康检查状态由success判定为fail
    private Integer healthCheckConnectTimeout;// 每次健康检查响应的最大超时时间
    private Integer healthCheckConnectPort;// 健康检查使用的端口
    private Integer healthCheckInterval;// 健康检查的时间间隔
    private String healthCheckType;// 健康检查类型
    private String masterSlaveServerGroupId;// 主备服务器组ID
    private String healthCheckURI;// 健康检查的URI
    private String healthCheckDomain;// 健康检查的域名
    private String healthCheckHttpCode;// 健康检查正常的HTTP状态码，多个状态码用逗号（,）分割
    private Boolean aclStatus;// 是否开启访问控制功能
    private String aclType;// 访问控制类型
    private String aclId;// 监听绑定的访问策略组ID
    private String healthCheckReq; // UDP监听健康检查的请求串
    private String healthCheckExp; // UDP监听健康检查的响应串
    private String listenerForward;// 是否开启HTTP至HTTPS的转发
    private Integer forwardPort;// HTTP至HTTPS的监听转发端口
    private Boolean stickySession;// 是否开启会话保持
    private String stickySessionType;// cookie的处理方式
    private String cookie;// 服务器上配置的Cookie
    private Integer cookieTimeout;// Cookie超时时间
    private Integer idleTimeout;// 指定连接空闲超时时间
    private Integer requestTimeout;// 指定请求超时时间
    private Boolean gzip;// 是否开启Gzip压缩，对特定文件类型进行压缩
    private Boolean xForwardedFor;
    private Boolean xForwardedFor_SLBID;// 是否通过SLB-ID头字段获取负载均衡实例ID
    private Boolean xForwardedFor_SLBIP;// 是否通过SLB-IP头字段获取客户端请求的真实IP
    private Boolean xForwardedFor_proto;// 是否通过X-Forwarded-Proto头字段获取负载均衡实例的监听协议
    private Boolean healthCheck;// 否开启健康检查
    private Integer healthCheckTimeout;// 接收来自运行状况检查的响应需要等待的时间
    private String enableHttp2;// 是否开启HTTP/2特性
    private String status;// 状态
    private String hash;
    private Long poolId;
    private String regionId;

    //火山云 健康检查参数信息
    private Object configuration;
    private String lbScheduler;//调度算法
    private List<LbListenerRuleModel> listenerRuleModels;

}
