package com.bocloud.ims.entity.resource;

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;

/**
 * 存储服务器
 *
 * @author luyanchao
 * @since 2019/1/25 13:48
 */
@Table("storage")
public class Storage extends GenericEntity {

    @PK(value = PKStrategy.AUTO)
    private Long id; // ID
    @Column("vendor_id")
    private Long vendorId; // 云供应商ID
    @Column("uuid")
    private String uuid; // 唯一标识
    @Column("ip")
    private String ip; // ip地址
    @Column("port")
    private Integer port; // 端口
    @Column("host")
    private String host; // 主机名
    @Column("username")
    private String username; // 主机名
    @Column("password")
    private String password; // 主机名
    @Column("type")
    private String type; // 存储类型

    @Column("total_capacity")
    private Double totalCapacity; // 总容量
    @Column("used_capacity")
    private Double usedCapacity; // 已用容量
    @Column("free_capaticy")
    private Double freeCapaticy; // 可用容量

    @Column("hdd_total_capacity")
    private Double hddTotalCapacity; // hdd总容量
    @Column("hdd_used_capacity")
    private Double hddUsedCapacity; // hdd已用容量
    @Column("hdd_free_capaticy")
    private Double hddFreeCapaticy; // hdd可用容量

    @Column("ssd_total_capacity")
    private Double ssdTotalCapacity; // ssd总容量
    @Column("ssd_used_capacity")
    private Double ssdUsedCapacity; // ssd已用容量
    @Column("ssd_free_capaticy")
    private Double ssdFreeCapaticy; // ssd可用容量

    @Column("mdisk_capacity")
    private Double mdiskCapacity; // mdisk中容量
    @Column("pool_capacity")
    private Double poolCapacity; // 存储池中容量
    @Column("vdisk_capacity")
    private Double vdiskCapacity; // 分配给卷的容量
    @Column("vdisk_total_capacity")
    private Double vdiskTotalCapacity; // 存储卷总容量
    @Column("vdisk_copy_capacity")
    private Double vdiskCopyCapacity; // 存储卷拷贝容量
    @Column("over_allocation")
    private Integer overAllocation; // 总超量分配百分比
    @Column("pool_name")
    private String poolName;

    @Column("compression_suppoerd")
    private Boolean compressionSuppoerd; // 是否支持压缩
    @Column("default_template_id")
    private Long defaultTemplateId; // 默认存储器模板id
    @Column("default_template_uuid")
    private String defaultTemplateUuid; // 默认存储器模板id
    @IgnoreAll
    private VolumePool volumePool; // 存储池的信息
    @Column("identifier")
    private String identifier; // 系统标识
    @Column("code_version")
    private String codeVersion; // 软件版本
    @Column("storage_uuid")
    private String storageUuid; // 唯一标识
    @Column("key_path")
    private String keyPath; // smis传参用
    @Column("operational_status")
    private String operationalStatus; // 运行状态
    @Column("sn")
    private String sn; // 序列号
    @Column("version")
    private String version; // 设备版本
    @IgnoreAll
    private Integer diskAllCount; // 总硬盘数量
    @IgnoreAll
    private Integer diskUseCount; // 已用硬盘数量
    @IgnoreAll
    private Double diskCapacity; // disk中容量
    /**
     * 监控相关
     */
    @IgnoreAll
    private Long ruleRelationId;// 资源告警规则关联关系id
    @IgnoreAll
    private String thresholdGroupName;// 阈值组名称
    @IgnoreAll
    private String policyName;// 分发策略名称
    @IgnoreAll
    private Long thresholdGroupId;  //阈值组ID
    @IgnoreAll
    private Long policyId; //分发策略ID

    @Column("discovery_username")
    private String discoveryUsername; // iSCSI客户端发现时需要填写的用户名
    @Column("discovery_password")
    private String discoveryPassword; // iSCSI客户端发现时需要填写的密码
    @Column("discovery_encrypted")
    private Boolean discoveryEncrypted; // iSCSI客户端发现时需要填写的密码是否加密
    @Column("discovery_chap")
    private Boolean discoveryChap; // iSCSI客户端发现时是否使用双向认证
    @Column("discovery_mutual_username")
    private String discoveryMutualUsername; // iSCSI客户端用户名
    @Column("discovery_mutual_password")
    private String discoveryMutualPassword; // iSCSI客户端密码
    @Column("discovery_mutual_encrypted")
    private Boolean discoveryMutualEncrypted; // iSCSI客户端密码是否加密

    //深信服v6.8字段
    @Column("online_status")
    private Long onlineStatus;
    @Column("ssd_remaining_life")
    private String ssdRemainingLife;
    @Column("is_sangfor_system_disk")
    private String isSangforSystemDisk;

    @Column("storage_tag_id")
    private String storageTagId;
    @Column("storage_tag_name")
    private String storageTagName;
    @Column("storage_label")
    private String storageLabel;
    @Column("cluster_id")
    private String clusterId;
    @Column("cluster_name")
    private String clusterName;
    @Column("cluster_type")
    private String clusterType;
    @Column("az_id")
    private String azId;
    @Column("target")
    private Long target;
    @Column("total_mb")
    private Long totalMb;
    @Column("used_mb")
    private Long usedMb;
    @Column("ratio")
    private String ratio;
    @Column("sangfor_type")
    private String sangforType;
    @Column("guid")
    private String guid;

    public String getSangforType() {
        return sangforType;
    }

    public void setSangforType(String sangforType) {
        this.sangforType = sangforType;
    }

    public String getGuid() {
        return guid;
    }

    public void setGuid(String guid) {
        this.guid = guid;
    }

    public String getStorageTagId() {
        return storageTagId;
    }

    public void setStorageTagId(String storageTagId) {
        this.storageTagId = storageTagId;
    }

    public String getStorageTagName() {
        return storageTagName;
    }

    public void setStorageTagName(String storageTagName) {
        this.storageTagName = storageTagName;
    }

    public String getStorageLabel() {
        return storageLabel;
    }

    public void setStorageLabel(String storageLabel) {
        this.storageLabel = storageLabel;
    }

    public String getClusterId() {
        return clusterId;
    }

    public void setClusterId(String clusterId) {
        this.clusterId = clusterId;
    }

    public String getClusterName() {
        return clusterName;
    }

    public void setClusterName(String clusterName) {
        this.clusterName = clusterName;
    }

    public String getClusterType() {
        return clusterType;
    }

    public void setClusterType(String clusterType) {
        this.clusterType = clusterType;
    }

    public String getAzId() {
        return azId;
    }

    public void setAzId(String azId) {
        this.azId = azId;
    }

    public Long getTarget() {
        return target;
    }

    public void setTarget(Long target) {
        this.target = target;
    }

    public Long getTotalMb() {
        return totalMb;
    }

    public void setTotalMb(Long totalMb) {
        this.totalMb = totalMb;
    }

    public Long getUsedMb() {
        return usedMb;
    }

    public void setUsedMb(Long usedMb) {
        this.usedMb = usedMb;
    }

    public String getRatio() {
        return ratio;
    }

    public void setRatio(String ratio) {
        this.ratio = ratio;
    }

    public String getIsSangforSystemDisk() {
        return isSangforSystemDisk;
    }

    public void setIsSangforSystemDisk(String isSangforSystemDisk) {
        this.isSangforSystemDisk = isSangforSystemDisk;
    }

    public Long getOnlineStatus() {
        return onlineStatus;
    }

    public void setOnlineStatus(Long onlineStatus) {
        this.onlineStatus = onlineStatus;
    }

    public String getSsdRemainingLife() {
        return ssdRemainingLife;
    }

    public void setSsdRemainingLife(String ssdRemainingLife) {
        this.ssdRemainingLife = ssdRemainingLife;
    }

    public String getKeyPath() {
        return keyPath;
    }

    public void setKeyPath(String keyPath) {
        this.keyPath = keyPath;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getVendorId() {
        return vendorId;
    }

    public void setVendorId(Long vendorId) {
        this.vendorId = vendorId;
    }

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Double getTotalCapacity() {
        return totalCapacity;
    }

    public void setTotalCapacity(Double totalCapacity) {
        this.totalCapacity = totalCapacity;
    }

    public Double getFreeCapaticy() {
        return freeCapaticy;
    }

    public void setFreeCapaticy(Double freeCapaticy) {
        this.freeCapaticy = freeCapaticy;
    }

    public Boolean getCompressionSuppoerd() {
        return compressionSuppoerd;
    }

    public void setCompressionSuppoerd(Boolean compressionSuppoerd) {
        this.compressionSuppoerd = compressionSuppoerd;
    }

    public VolumePool getVolumePool() {
        return volumePool;
    }

    public void setVolumePool(VolumePool volumePool) {
        this.volumePool = volumePool;
    }

    public Long getDefaultTemplateId() {
        return defaultTemplateId;
    }

    public void setDefaultTemplateId(Long defaultTemplateId) {
        this.defaultTemplateId = defaultTemplateId;
    }

    public String getDefaultTemplateUuid() {
        return defaultTemplateUuid;
    }

    public void setDefaultTemplateUuid(String defaultTemplateUuid) {
        this.defaultTemplateUuid = defaultTemplateUuid;
    }

    public String getIdentifier() {
        return identifier;
    }

    public void setIdentifier(String identifier) {
        this.identifier = identifier;
    }

    public String getCodeVersion() {
        return codeVersion;
    }

    public void setCodeVersion(String codeVersion) {
        this.codeVersion = codeVersion;
    }

    public String getStorageUuid() {
        return storageUuid;
    }

    public void setStorageUuid(String storageUuid) {
        this.storageUuid = storageUuid;
    }

    public Double getUsedCapacity() {
        return usedCapacity;
    }

    public void setUsedCapacity(Double usedCapacity) {
        this.usedCapacity = usedCapacity;
    }

    public Double getMdiskCapacity() {
        return mdiskCapacity;
    }

    public void setMdiskCapacity(Double mdiskCapacity) {
        this.mdiskCapacity = mdiskCapacity;
    }

    public Double getPoolCapacity() {
        return poolCapacity;
    }

    public void setPoolCapacity(Double poolCapacity) {
        this.poolCapacity = poolCapacity;
    }

    public Double getVdiskCapacity() {
        return vdiskCapacity;
    }

    public void setVdiskCapacity(Double vdiskCapacity) {
        this.vdiskCapacity = vdiskCapacity;
    }

    public Double getVdiskTotalCapacity() {
        return vdiskTotalCapacity;
    }

    public void setVdiskTotalCapacity(Double vdiskTotalCapacity) {
        this.vdiskTotalCapacity = vdiskTotalCapacity;
    }

    public Double getVdiskCopyCapacity() {
        return vdiskCopyCapacity;
    }

    public void setVdiskCopyCapacity(Double vdiskCopyCapacity) {
        this.vdiskCopyCapacity = vdiskCopyCapacity;
    }

    public Integer getOverAllocation() {
        return overAllocation;
    }

    public void setOverAllocation(Integer overAllocation) {
        this.overAllocation = overAllocation;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    public String getOperationalStatus() {
        return operationalStatus;
    }

    public void setOperationalStatus(String operationalStatus) {
        this.operationalStatus = operationalStatus;
    }

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public Integer getDiskAllCount() {
        return diskAllCount;
    }

    public void setDiskAllCount(Integer diskAllCount) {
        this.diskAllCount = diskAllCount;
    }

    public Integer getDiskUseCount() {
        return diskUseCount;
    }

    public void setDiskUseCount(Integer diskUseCount) {
        this.diskUseCount = diskUseCount;
    }

    public Double getDiskCapacity() {
        return diskCapacity;
    }

    public void setDiskCapacity(Double diskCapacity) {
        this.diskCapacity = diskCapacity;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public Long getRuleRelationId() {
        return ruleRelationId;
    }

    public void setRuleRelationId(Long ruleRelationId) {
        this.ruleRelationId = ruleRelationId;
    }

    public String getThresholdGroupName() {
        return thresholdGroupName;
    }

    public void setThresholdGroupName(String thresholdGroupName) {
        this.thresholdGroupName = thresholdGroupName;
    }

    public String getPolicyName() {
        return policyName;
    }

    public void setPolicyName(String policyName) {
        this.policyName = policyName;
    }

    public Long getThresholdGroupId() {
        return thresholdGroupId;
    }

    public void setThresholdGroupId(Long thresholdGroupId) {
        this.thresholdGroupId = thresholdGroupId;
    }

    public Long getPolicyId() {
        return policyId;
    }

    public void setPolicyId(Long policyId) {
        this.policyId = policyId;
    }

    public String getDiscoveryUsername() {
        return discoveryUsername;
    }

    public void setDiscoveryUsername(String discoveryUsername) {
        this.discoveryUsername = discoveryUsername;
    }

    public String getDiscoveryPassword() {
        return discoveryPassword;
    }

    public void setDiscoveryPassword(String discoveryPassword) {
        this.discoveryPassword = discoveryPassword;
    }

    public Boolean getDiscoveryEncrypted() {
        return discoveryEncrypted;
    }

    public void setDiscoveryEncrypted(Boolean discoveryEncrypted) {
        this.discoveryEncrypted = discoveryEncrypted;
    }

    public Boolean getDiscoveryChap() {
        return discoveryChap;
    }

    public void setDiscoveryChap(Boolean discoveryChap) {
        this.discoveryChap = discoveryChap;
    }

    public String getDiscoveryMutualUsername() {
        return discoveryMutualUsername;
    }

    public void setDiscoveryMutualUsername(String discoveryMutualUsername) {
        this.discoveryMutualUsername = discoveryMutualUsername;
    }

    public String getDiscoveryMutualPassword() {
        return discoveryMutualPassword;
    }

    public void setDiscoveryMutualPassword(String discoveryMutualPassword) {
        this.discoveryMutualPassword = discoveryMutualPassword;
    }

    public Boolean getDiscoveryMutualEncrypted() {
        return discoveryMutualEncrypted;
    }

    public void setDiscoveryMutualEncrypted(Boolean discoveryMutualEncrypted) {
        this.discoveryMutualEncrypted = discoveryMutualEncrypted;
    }

    public Double getHddTotalCapacity() {
        return hddTotalCapacity;
    }

    public void setHddTotalCapacity(Double hddTotalCapacity) {
        this.hddTotalCapacity = hddTotalCapacity;
    }

    public Double getHddUsedCapacity() {
        return hddUsedCapacity;
    }

    public void setHddUsedCapacity(Double hddUsedCapacity) {
        this.hddUsedCapacity = hddUsedCapacity;
    }

    public Double getHddFreeCapaticy() {
        return hddFreeCapaticy;
    }

    public void setHddFreeCapaticy(Double hddFreeCapaticy) {
        this.hddFreeCapaticy = hddFreeCapaticy;
    }

    public Double getSsdTotalCapacity() {
        return ssdTotalCapacity;
    }

    public void setSsdTotalCapacity(Double ssdTotalCapacity) {
        this.ssdTotalCapacity = ssdTotalCapacity;
    }

    public Double getSsdUsedCapacity() {
        return ssdUsedCapacity;
    }

    public void setSsdUsedCapacity(Double ssdUsedCapacity) {
        this.ssdUsedCapacity = ssdUsedCapacity;
    }

    public Double getSsdFreeCapaticy() {
        return ssdFreeCapaticy;
    }

    public void setSsdFreeCapaticy(Double ssdFreeCapaticy) {
        this.ssdFreeCapaticy = ssdFreeCapaticy;
    }

	public String getPoolName() {
		return poolName;
	}

	public void setPoolName(String poolName) {
		this.poolName = poolName;
	}
    
}
