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 11:03
 */
@Table("volume_template")
public class VolumeTemplate extends GenericEntity {

    @PK(value = PKStrategy.AUTO)
    private Long id; // ID
    @Column("vendor_id")
    private Long vendorId; // 云供应商ID
    @Column("storage_id")
    private Long storageId; // 存储服务器ID
    @Column("storage_name")
    @IgnoreAll
    private String storageName;
    @Column("uuid")
    private String uuid; // 唯一标识
    @Column("description")
    private String description; // 卷描述
    @Column("is_public")
    private Boolean isPublic; // isPublic
    @Column("auto_expand")
    private Boolean autoExpand; // 是否自动扩展
    @Column("compress")
    private Boolean compress; // 是否压缩卷
    @Column("io_group")
    private String ioGroup; // 所属io组
    @Column("pool_id")
    private Long poolId; // 所属存储id
    @Column("pool_name")
    @IgnoreAll
    private String poolName;
    @Column(value = "pool_free_capacity")
    @IgnoreAll
    private Double poolFreeCapacity;
    @Column("copy_count")
    private Integer copyCount; // 拷贝数量
    @Column("copy_pool_id")
    private Long copyPoolId; // 拷贝所属存储池id
    @Column("copy_pool_name")
    @IgnoreAll
    private String copyPoolName;
    @Column(value = "copy_pool_free_capacity")
    @IgnoreAll
    private Double copyPoolFreeCapacity;
    @Column("multipath")
    private Boolean multipath;
    @Column("capacity_percent")
    private Float capacityPercent; // 实际容量占虚拟容量的百分比
    @Column("warning_percent")
    private Float warningPercent; // 告警阈值占虚拟容量的百分比
    @Column("grainsize")
    private Float grainsize; // 精简卷颗粒大小
    @Column("type")
    private String type; // 存储卷类型
    @Column("origin_name")
    private String originName; // 初始名称,即创建改存储器模板时的名称

    public Long getId() {
        return id;
    }

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

    public String getUuid() {
        return uuid;
    }

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

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Boolean getIsPublic() {
        return isPublic;
    }

    public void setIsPublic(Boolean aPublic) {
        isPublic = aPublic;
    }

    public Boolean getAutoExpand() {
        return autoExpand;
    }

    public void setAutoExpand(Boolean autoExpand) {
        this.autoExpand = autoExpand;
    }

    public Boolean getCompress() {
        return compress;
    }

    public void setCompress(Boolean compress) {
        this.compress = compress;
    }

    public String getIoGroup() {
        return ioGroup;
    }

    public void setIoGroup(String ioGroup) {
        this.ioGroup = ioGroup;
    }

    public Integer getCopyCount() {
        return copyCount;
    }

    public void setCopyCount(Integer copyCount) {
        this.copyCount = copyCount;
    }

    public Boolean getMultipath() {
        return multipath;
    }

    public void setMultipath(Boolean multipath) {
        this.multipath = multipath;
    }

    public Float getCapacityPercent() {
        return capacityPercent;
    }

    public void setCapacityPercent(Float capacityPercent) {
        this.capacityPercent = capacityPercent;
    }

    public Float getWarningPercent() {
        return warningPercent;
    }

    public void setWarningPercent(Float warningPercent) {
        this.warningPercent = warningPercent;
    }

    public Float getGrainsize() {
        return grainsize;
    }

    public void setGrainsize(Float grainsize) {
        this.grainsize = grainsize;
    }

    public Long getVendorId() {
        return vendorId;
    }

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

    public Long getStorageId() {
        return storageId;
    }

    public void setStorageId(Long storageId) {
        this.storageId = storageId;
    }

    public Long getPoolId() {
        return poolId;
    }

    public void setPoolId(Long poolId) {
        this.poolId = poolId;
    }
    public Long getCopyPoolId() {
        return copyPoolId;
    }

    public void setCopyPoolId(Long copyPoolId) {
        this.copyPoolId = copyPoolId;
    }

    public String getType() {
        return type;
    }

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

    public String getStorageName() {
        return storageName;
    }

    public void setStorageName(String storageName) {
        this.storageName = storageName;
    }

    public String getPoolName() {
        return poolName;
    }

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

    public String getCopyPoolName() {
        return copyPoolName;
    }

    public void setCopyPoolName(String copyPoolName) {
        this.copyPoolName = copyPoolName;
    }

    public String getOriginName() {
        return originName;
    }

    public void setOriginName(String originName) {
        this.originName = originName;
    }

    public Double getPoolFreeCapacity() {
        return poolFreeCapacity;
    }

    public void setPoolFreeCapacity(Double poolFreeCapacity) {
        this.poolFreeCapacity = poolFreeCapacity;
    }

    public Double getCopyPoolFreeCapacity() {
        return copyPoolFreeCapacity;
    }

    public void setCopyPoolFreeCapacity(Double copyPoolFreeCapacity) {
        this.copyPoolFreeCapacity = copyPoolFreeCapacity;
    }
}
