package com.bocloud.cmp.model.azure.redis;

import lombok.Data;

import java.util.List;

/**
 * @Company: 博云 www.bocloud.com
 * @ClassName: RedisModel
 * @Description:
 * @author: zhenpingLi/李振平
 * @date: 2021/2/25 14:12
 */
@Data
public class RedisModel {
    private String redisUuid;
    private String name;
    private String regionId;
    private String resourceGroupName;
    private String type;
    private String status;
    private Boolean enableNonSslPort; //指定是否启用非 ssl Redis 服务器端口 (6379)
    private String minimumTlsVersion;  //可选：要求客户端使用指定的 TLS 版本 (或更高版本) 连接 (e、g、"1.0"、"1.1"、"1.2" )
    private String publicNetworkAccess;  //此缓存是否允许公共终结点访问。 值是可选的，但是如果传入了，则必须为 "Enabled" 或 "Disabled"。 如果为 "Disabled"，则专用终结点是独占访问方法。 默认值为 "Enabled"
    private Integer replicasPerMaster;  //每个 master 要创建的副本数。
    private Integer shardCount;   //要在高级群集缓存上创建的分片数。
    //使用虚拟机网络
    private String staticIp; //静态 IP 地址。 在现有的 Azure 虚拟网络中部署 Redis 缓存时是必需的。
    private String subnetUuid;//要在其中部署 Redis 缓存的虚拟网络中子网的完整资源
    private String primaryKey;//主密钥
    private String secondaryKey;//辅助密钥
    private String primaryConnectionString;//主要连接字符串
    private String secondaryConnectionString;//辅助连接字符串
    private String redisVersion;   //Redis 版本。
    private String hostName; //Redis 主机名。
    private Integer port;  //Redis 非 SSL 端口。
    private Integer sslPort; //Redis SSL 端口。
    private String skuName;//Basic、Premium、Standard
    private String skuFamily;//要使用的 SKU 系列。有效值： (C，P)。(C = 基本/标准，P = 高级)
    private String skuCapacity;//要部署的 Redis 缓存的大小。 有效值：对于 C (基本/标准) 系列 (0、1、2、3、4、5、6) ，P (高级) (1，2，3，4) 。
    //redis Configuration
    private Integer maxclients;
    private String maxmemoryPolicy;
    private Integer maxmemoryReserved;
    private Integer maxfragmentationmemoryReserved;
    private String rdbBackupEnabled;
    private String rdbBackupFrequency;
    private Integer rdbBackupMaxSnapshotCount;
    private Integer maxmemoryDelta;
    private String rdbStorageConnectionString;

    private List<Instance> instances;
    private List<String> zones;   //用于表示资源需要来源的可用性区域的列表。
    private List<RedisFirewallRuleModel> redisFirewallRuleModels;

    //用于再生密钥，区分主副
    private String keyType;

    @Data
    public class Instance {
        //Redis 实例 SSL 端口。
        private Integer sslPort;
        //如果 enableNonSslPort 为 true，则提供 Redis 实例非 SSL 端口。
        private Integer nonSslPort;
        //如果启用了聚类分析，则 Redis 实例的分片 ID
        private Integer shardId;
        //指定实例是否为主节点
        private Boolean isMaster;
        //如果缓存使用可用性区域，则指定此实例所在的可用性区域。
        private String zone;
    }


}