package com.bocloud.cmp.model;

import com.bocloud.cmp.model.storage.CephMdsModel;
import com.bocloud.cmp.model.storage.CephMgrModel;
import com.bocloud.cmp.model.storage.CephMonModel;
import com.bocloud.cmp.model.storage.CephOsdModel;
import com.bocloud.cmp.model.storage.StorageDiskModel;
import com.bocloud.cmp.model.storage.StorageGroupModel;
import com.bocloud.cmp.model.storage.StorageHostModel;
import com.bocloud.cmp.model.storage.StorageIScsiPortModel;
import com.bocloud.cmp.model.storage.StorageMdiskModel;
import com.bocloud.cmp.model.storage.StorageNodeModel;
import com.bocloud.cmp.model.storage.StorageViewModel;

import java.util.List;

/**
 * 存储服务器
 *
 * @author luyanchao
 * @since 2019/1/25 13:53
 */
public class StorageModel {
    private String uuid; // 唯一标识
    private String name; // 名称
    private String status; // 状态
    private String operationalStatus; // 运行状态
    private String ip; // ip地址
    private Integer port; // 端口
    private String host; // 主机名
    private String username; // 用户名
    private String password; // 密码
    private String type; // 存储类型
    private Double totalCapacity; // 总容量
    private Double usedCapacity; // 已用容量
    private Double freeCapaticy; // 可用容量
    private Double hddTotalCapacity; // 总容量
    private Double hddUsedCapacity; // 已用容量
    private Double hddFreeCapaticy; // 可用容量
    private Double ssdTotalCapacity; // 总容量
    private Double ssdUsedCapacity; // 已用容量
    private Double ssdFreeCapaticy; // 可用容量
    private Double mdiskCapacity; // mdisk中容量
    private Double poolCapacity; // 存储池中容量
    private Double vdiskCapacity; // 分配给卷的容量
    private Double vdiskTotalCapacity; // 存储卷总容量
    private Double vdiskCopyCapacity; // 存储卷拷贝容量
    private Integer overAllocation; // 总超量分配百分比
    private Boolean compressionSuppoerd; // 是否支持压缩
    private String volumePool; // 创建卷时默认的存储池
    private String poolName;
    private String defaultTemplateUuid; // 默认存储器模板uuid
    private String identifier; // 系统标识
    private String codeVersion; // 软件版本
    private String storageUuid; // 唯一标识
    private String keyPath; // smis用来传参
    private String serialNumber; // 序列号
    private String version; // 设备版本
    private String model; // 设备型号
    private String discoveryUsername; // iSCSI客户端发现时需要填写的用户名
    private String discoveryPassword; // iSCSI客户端发现时需要填写的密码
    private Boolean discoveryEncrypted; // iSCSI客户端发现时需要填写的密码是否加密
    private Boolean discoveryChap; // iSCSI客户端发现时是否使用双向认证
    private String discoveryMutualUsername; // iSCSI客户端用户名
    private String discoveryMutualPassword; // iSCSI客户端密码
    private Boolean discoveryMutualEncrypted; // iSCSI客户端密码是否加密
    private String props; // 属性
    private List<StorageNodeModel> nodes; // 该存储服务器下的所有容器
    private List<StorageDiskModel> disks; // 该存储服务器下的所有硬盘
    private List<StorageMdiskModel> mdisks; // 该存储服务器下的所有mdisk
    private List<VolumePoolModel> pools; // 该存储服务器下的所有存储池
    private List<StorageHostModel> hosts; // 该存储服务器下的所有主机
    private List<StorageSyncedSetModel> syncedSets; // 该存储服务器下的所有一致性组
    private List<StorageGroupModel> volumeGroups; // 该存储服务器下的所有卷组
    private List<StorageGroupModel> hostGroups; // 该存储服务器下的所有主机组
    private List<StorageGroupModel> portGroups; // 该存储服务器下的所有端口组
    private List<StorageGroupModel> snapshotGroups; // 该存储服务器下的所有快照组
    private List<StorageGroupModel> sanCopyGroups; // 该存储服务器下的所有SAN拷贝组
    private List<StorageGroupModel> cloneGroups; // 该存储服务器下的所有克隆组
    private List<StorageGroupModel> flashCopyGroups; // 该存储服务器下的所有FlashCopy组
    private List<StorageViewModel> storageViewModels; // 该存储服务器下的所有映射视图
    private List<HostModel> servers; // 该存储服务器下的所有物理机
    private CephMdsModel mdsModel; // mds
    private CephMgrModel mgrModel; // mgr
    private CephMonModel monModel; // mon
    private CephOsdModel osdModel; // osd
    private List<VolumeModel> iscsiVolumes; // 添加到iSCSI服务的卷
    private List<String> gatewayHostnames; // 网关服务器主机名列表
    private List<StorageIScsiPortModel> iScsiPorts; // 该存储服务器下的所有iSCSI端口

    public String getKeyPath() {
        return keyPath;
    }

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

    public String getUuid() {
        return uuid;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getIp() {
        return ip;
    }

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

    public Integer getPort() {
        return port;
    }

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

    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 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 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 String getVolumePool() {
        return volumePool;
    }

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

    public List<VolumePoolModel> getPools() {
        return pools;
    }

    public void setPools(List<VolumePoolModel> pools) {
        this.pools = pools;
    }

    public String getDefaultTemplateUuid() {
        return defaultTemplateUuid;
    }

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

    public List<StorageMdiskModel> getMdisks() {
        return mdisks;
    }

    public void setMdisks(List<StorageMdiskModel> mdisks) {
        this.mdisks = mdisks;
    }

    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 List<StorageDiskModel> getDisks() {
        return disks;
    }

    public void setDisks(List<StorageDiskModel> disks) {
        this.disks = disks;
    }

    public List<StorageSyncedSetModel> getSyncedSets() {
        return syncedSets;
    }

    public void setSyncedSets(List<StorageSyncedSetModel> syncedSets) {
        this.syncedSets = syncedSets;
    }

    public List<StorageHostModel> getHosts() {
        return hosts;
    }

    public void setHosts(List<StorageHostModel> hosts) {
        this.hosts = hosts;
    }

    public List<StorageNodeModel> getNodes() {
        return nodes;
    }

    public void setNodes(List<StorageNodeModel> nodes) {
        this.nodes = nodes;
    }

    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 String getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(String serialNumber) {
        this.serialNumber = serialNumber;
    }

    public List<StorageGroupModel> getVolumeGroups() {
        return volumeGroups;
    }

    public void setVolumeGroups(List<StorageGroupModel> volumeGroups) {
        this.volumeGroups = volumeGroups;
    }

    public List<StorageGroupModel> getHostGroups() {
        return hostGroups;
    }

    public void setHostGroups(List<StorageGroupModel> hostGroups) {
        this.hostGroups = hostGroups;
    }

    public List<StorageGroupModel> getPortGroups() {
        return portGroups;
    }

    public void setPortGroups(List<StorageGroupModel> portGroups) {
        this.portGroups = portGroups;
    }

    public List<StorageViewModel> getStorageViewModels() {
        return storageViewModels;
    }

    public void setStorageViewModels(List<StorageViewModel> storageViewModels) {
        this.storageViewModels = storageViewModels;
    }

    public String getOperationalStatus() {
        return operationalStatus;
    }

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

    public String getVersion() {
        return version;
    }

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

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public CephMdsModel getMdsModel() {
        return mdsModel;
    }

    public void setMdsModel(CephMdsModel mdsModel) {
        this.mdsModel = mdsModel;
    }

    public CephMgrModel getMgrModel() {
        return mgrModel;
    }

    public void setMgrModel(CephMgrModel mgrModel) {
        this.mgrModel = mgrModel;
    }

    public CephMonModel getMonModel() {
        return monModel;
    }

    public void setMonModel(CephMonModel monModel) {
        this.monModel = monModel;
    }

    public CephOsdModel getOsdModel() {
        return osdModel;
    }

    public void setOsdModel(CephOsdModel osdModel) {
        this.osdModel = osdModel;
    }

    public List<HostModel> getServers() {
        return servers;
    }

    public void setServers(List<HostModel> servers) {
        this.servers = servers;
    }

    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 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 List<VolumeModel> getIscsiVolumes() {
        return iscsiVolumes;
    }

    public void setIscsiVolumes(List<VolumeModel> iscsiVolumes) {
        this.iscsiVolumes = iscsiVolumes;
    }

    public List<String> getGatewayHostnames() {
        return gatewayHostnames;
    }

    public void setGatewayHostnames(List<String> gatewayHostnames) {
        this.gatewayHostnames = gatewayHostnames;
    }

    public List<StorageIScsiPortModel> getiScsiPorts() {
        return iScsiPorts;
    }

    public void setiScsiPorts(List<StorageIScsiPortModel> iScsiPorts) {
        this.iScsiPorts = iScsiPorts;
    }

    public String getPoolName() {
        return poolName;
    }

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

    public List<StorageGroupModel> getSnapshotGroups() {
        return snapshotGroups;
    }

    public void setSnapshotGroups(List<StorageGroupModel> snapshotGroups) {
        this.snapshotGroups = snapshotGroups;
    }

    public List<StorageGroupModel> getSanCopyGroups() {
        return sanCopyGroups;
    }

    public void setSanCopyGroups(List<StorageGroupModel> sanCopyGroups) {
        this.sanCopyGroups = sanCopyGroups;
    }

    public List<StorageGroupModel> getCloneGroups() {
        return cloneGroups;
    }

    public void setCloneGroups(List<StorageGroupModel> cloneGroups) {
        this.cloneGroups = cloneGroups;
    }

    public String getProps() {
        return props;
    }

    public void setProps(String props) {
        this.props = props;
    }

    public List<StorageGroupModel> getFlashCopyGroups() {
        return flashCopyGroups;
    }

    public void setFlashCopyGroups(List<StorageGroupModel> flashCopyGroups) {
        this.flashCopyGroups = flashCopyGroups;
    }
}
