package com.bocloud.ims.entity.resource.azure.redis;

import com.bocloud.entity.annotations.Column;
import com.bocloud.entity.annotations.IgnoreAll;
import com.bocloud.entity.annotations.PK;
import com.bocloud.entity.annotations.Table;
import com.bocloud.entity.bean.GenericEntity;
import com.bocloud.entity.meta.PKStrategy;
import lombok.Data;

/**
 * @Company: 博云 www.bocloud.com
 * @ClassName: CloudRedis
 * @Description:
 * @author: zhenpingLi/李振平
 * @date: 2021/3/1 14:24
 */

@Table("cloud_redis")
@Data
public class CloudRedis extends GenericEntity {
    @PK(value = PKStrategy.AUTO)
    private Long id; // ID
    @Column("redis_uuid")
    private String redisUuid;
    @Column("vendor_id")
    private Long vendorId; // 平台id
    @Column("tenant_id")
    private Long tenantId;
    @Column("project_id")
    private Long projectId;
    @Column("user_id")
    private Long userId;
    @Column("type")
    private String type;
    @Column("region_id")
    private String regionId;
    @Column("resource_group_id")
    private Long resourceGroupId;
    @Column("public_network_access")
    private String publicNetworkAccess; //是否允许访问此服务器的公共网络。 "Enabled" 或 "Disabled"
    @Column("enable_non_ssl_port")
    private Boolean enableNonSslPort; //指定是否启用非 ssl Redis 服务器端口 (6379)
    @Column("minimum_tls_version")
    private String minimumTlsVersion;  //可选：要求客户端使用指定的 TLS 版本 (或更高版本) 连接 (e、g、"1.0"、"1.1"、"1.2" )
    @Column("replicas_per_master")
    private Integer replicasPerMaster;  //每个 master 要创建的副本数。
    @Column("shard_count")
    private Integer shardCount;   //要在高级群集缓存上创建的分片数。
    //使用虚拟机网络
    @Column("static_ip")
    private String staticIp; //静态 IP 地址。 在现有的 Azure 虚拟网络中部署 Redis 缓存时是必需的。
    @Column("vpc_id")
    private Long vpcId;
    @Column("subnet_id")
    private Long subnetId;
    @Column("primary_key")
    private String primaryKey;//主密钥
    @Column("secondary_key")
    private String secondaryKey;//辅助密钥
    @Column("primary_connection_string")
    private String primaryConnectionString;//主要连接字符串
    @Column("secondary_connection_string")
    private String secondaryConnectionString;//辅助连接字符串
    @Column("redis_version")
    private String redisVersion;   //Redis 版本。
    @Column("host_name")
    private String hostName; //Redis 主机名。
    @Column("port")
    private Integer port;  //Redis 非 SSL 端口。
    @Column("ssl_port")
    private Integer sslPort; //Redis SSL 端口。
    @Column("sku_name")
    private String skuName;//Basic、Premium、Standard
    @Column("sku_family")
    private String skuFamily;//要使用的 SKU 系列。有效值： (C，P)。(C = 基本/标准，P = 高级)
    @Column("sku_capacity")
    private String skuCapacity;//要部署的 Redis 缓存的大小。 有效值：对于 C (基本/标准) 系列 (0、1、2、3、4、5、6) ，P (高级) (1，2，3，4) 。

    //redis Configuration
    @Column("maxclients")
    private Integer maxclients;
    @Column("maxmemory_policy")
    private String maxmemoryPolicy;
    @Column("maxmemory_reserved")
    private Integer maxmemoryReserved;
    @Column("maxfragmentationmemory_reserved")
    private Integer maxfragmentationmemoryReserved;
    @Column("rdb_backup_enabled")
    private String rdbBackupEnabled;
    @Column("rdb_backup_frequency")
    private String rdbBackupFrequency;
    @Column("rdb_backup_max_snapshot_count")
    private Integer rdbBackupMaxSnapshotCount;
    @Column("maxmemory_delta")
    private Integer maxmemoryDelta;
    @Column("rdb_storage_connection_string")
    private String rdbStorageConnectionString;
    @Column("locked")
    private Boolean locked;
    @IgnoreAll
    private String regionName;
    @IgnoreAll
    private String resourceGroupName;
    @IgnoreAll
    private String tenantName;
    @IgnoreAll
    private String projectName;
    @IgnoreAll
    private String vpcName;
    @IgnoreAll
    private String subnetName;

}