package com.bocloud.cmp.model;

import com.bocloud.cmp.model.fusionsphere.HostPortModel;
import com.bocloud.cmp.model.h3c.entity.RsStoragePool;
import com.bocloud.cmp.model.h3c.entity.RsVSwitch;
import com.bocloud.cmp.model.storage.StorageDiskModel;
import lombok.Data;

import java.util.List;

@Data
public class HostModel {
	private Long id;
	private String name;
	private String uuid;
	private Long cpuHz;
	private Integer cpuNum;// 宿主机(物理机)cpu数量
	private Integer cpuCore;// 宿主机cpu核数
	private Long cpuTotal;
	private String cpuVendor;
	private Double memTotal;
	private Double memSwap;
	private Double diskTotal;
	private Long cpuUsed;
	private Double cpuUsedRate;
	private Double memUsed;
	private Double memReserved; // 保留内存
	private Double memUsedRate;
	private Double diskUsed;
	private String clusterUuid;
	private String category;
	private String catalog;
	private String osCategory;
	private String os;
	private String osName;
	private String osVersion;
	private String kernelVersion;
	private String cpuModel;
	private String vendor;
	private List<String> stores;
	private Integer vmNum;// 宿主机(物理机)上云主机数量
	private String powerState;// 宿主机(物理机)电源状态
	private Integer templateNum;
	private List<ServerModel> servers;// 云主机
	private Integer datastoreNum; // 宿主机(物理机)存储数量
	private String hostIp;
	private String serviceIp;
	private String status;
	private List<NetworkCardModel> netcards;// 宿主机(物理机)上的物理网卡
	private Boolean maintained;// 宿主机(物理机)是否处于维护模式
	private Boolean connected;// 宿主机是否处于连接状态
	private String hostName;
	private List<DataStoreModel> dataStores;
	private List<RsStoragePool> rsStoragePools;
	private List<NetworkModel> networks;
	private List<SwitchModel> switchers;
	private List<RsVSwitch> h3cSwitchers;
	private ResourcePoolModel resourcePool;
	private List<String> hmcUuids;
	private Double hmcCpu; // cmp单元数,适用于Hmc和Powervc
	private Double hmcCpuReserved; // 保留cpu单元数,适用于Hmc和Powervc
	private Double hmcCpuUsed; // 正在使用cpu单元数,适用于Hmc和Powervc
	private Boolean ipv6Enabled;
	private String evc;// evc信息
	private String assignedLicense;// license信息
	private String esxVersion;// esx版本
	private String vmotionIp;// vmotionIp
	private String role; // 角色
	private Long clockDiff; // 服务器时间差,毫秒
	private String props;
	private String services; // 主机上运行的服务
	private String cephVersion; // CEPH版本
	private String ipmiAddress;
	private String ipmiAccount;
	private String ipmiPassword;
	private String ipmiPort;
	private StorageDiskModel rootDisk; // 系统盘
	private List<StorageDiskModel> disks; // 所有磁盘
	private Integer gatewayPort; // 网关服务端口
	private String gatewayUsername; // 网关服务用户名
	private String gatewayPassword; // 网关服务密码
	private List<ScsiLunModel> scsiLunModels;
	private String modelName;

	private Long diskTotalSizeByte;
	private Long diskUsedSizeByte;
	private Long diskCacheSizeByte;
	private Integer hddCount;
	private Integer ssdCount;
	private Long hddTotalSizeByte;
	private Long ssdTotalSizeByte;

	//-----FusionSphere新增字段--------//
	private String uri;//访问主机的uri
	private String arch;
	private String remark; // 描述
	private Long nicTotal;//网卡数量(单位 个)
	private String vdcUri;
	private List<HostPortModel> hostPortModels;
	//-----FusionSphere新增字段--------//


	private Long totalCacheSizeByte;


	public Long getCpuHz() {
		return cpuHz;
	}

	public void setCpuHz(Long cpuHz) {
		this.cpuHz = cpuHz;
	}

	public String getCpuVendor() {
		return cpuVendor;
	}

	public void setCpuVendor(String cpuVendor) {
		this.cpuVendor = cpuVendor;
	}

	public String getHostName() {
		return hostName;
	}

	public void setHostName(String hostName) {
		this.hostName = hostName;
	}

	public String getHostIp() {
		return hostIp;
	}

	public void setHostIp(String hostIp) {
		this.hostIp = hostIp;
	}

	public String getServiceIp() {
		return serviceIp;
	}

	public void setServiceIp(String serviceIp) {
		this.serviceIp = serviceIp;
	}

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

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

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name
	 *            the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return the uuid
	 */
	public String getUuid() {
		return uuid;
	}

	/**
	 * @param uuid
	 *            the uuid to set
	 */
	public void setUuid(String uuid) {
		this.uuid = uuid;
	}

	/**
	 * @return the cpuNum
	 */
	public Integer getCpuNum() {
		return cpuNum;
	}

	/**
	 * @param cpuNum
	 *            the cpuNum to set
	 */
	public void setCpuNum(Integer cpuNum) {
		this.cpuNum = cpuNum;
	}

	/**
	 * @return the cpuTotal
	 */
	public Long getCpuTotal() {
		return cpuTotal;
	}

	/**
	 * @param cpuTotal
	 *            the cpuTotal to set
	 */
	public void setCpuTotal(Long cpuTotal) {
		this.cpuTotal = cpuTotal;
	}

	/**
	 * @return the memTotal
	 */
	public Double getMemTotal() {
		return memTotal;
	}

	/**
	 * @param memTotal
	 *            the memTotal to set
	 */
	public void setMemTotal(Double memTotal) {
		this.memTotal = memTotal;
	}

	/**
	 * @return the diskTotal
	 */
	public Double getDiskTotal() {
		return diskTotal;
	}

	/**
	 * @param diskTotal
	 *            the diskTotal to set
	 */
	public void setDiskTotal(Double diskTotal) {
		this.diskTotal = diskTotal;
	}

	/**
	 * @return the cpuUsed
	 */
	public Long getCpuUsed() {
		return cpuUsed;
	}

	/**
	 * @param cpuUsed
	 *            the cpuUsed to set
	 */
	public void setCpuUsed(Long cpuUsed) {
		this.cpuUsed = cpuUsed;
	}

	/**
	 * @return the memUsed
	 */
	public Double getMemUsed() {
		return memUsed;
	}

	/**
	 * @param memUsed
	 *            the memUsed to set
	 */
	public void setMemUsed(Double memUsed) {
		this.memUsed = memUsed;
	}

	/**
	 * @return the diskUsed
	 */
	public Double getDiskUsed() {
		return diskUsed;
	}

	/**
	 * @param diskUsed
	 *            the diskUsed to set
	 */
	public void setDiskUsed(Double diskUsed) {
		this.diskUsed = diskUsed;
	}

	/**
	 * @return the category
	 */
	public String getCategory() {
		return category;
	}

	/**
	 * @param category
	 *            the category to set
	 */
	public void setCategory(String category) {
		this.category = category;
	}

	/**
	 * @return the catalog
	 */
	public String getCatalog() {
		return catalog;
	}

	/**
	 * @param catalog
	 *            the catalog to set
	 */
	public void setCatalog(String catalog) {
		this.catalog = catalog;
	}

	/**
	 * @return the cpuModel
	 */
	public String getCpuModel() {
		return cpuModel;
	}

	/**
	 * @param cpuModel
	 *            the cpuModel to set
	 */
	public void setCpuModel(String cpuModel) {
		this.cpuModel = cpuModel;
	}

	/**
	 * @return the vendor
	 */
	public String getVendor() {
		return vendor;
	}

	/**
	 * @param vendor
	 *            the vendor to set
	 */
	public void setVendor(String vendor) {
		this.vendor = vendor;
	}

	/**
	 * @return the stores
	 */
	public List<String> getStores() {
		return stores;
	}

	/**
	 * @param stores
	 *            the stores to set
	 */
	public void setStores(List<String> stores) {
		this.stores = stores;
	}

	/**
	 * @return the vmNum
	 */
	public Integer getVmNum() {
		return vmNum;
	}

	/**
	 * @param vmNum
	 *            the vmNum to set
	 */
	public void setVmNum(Integer vmNum) {
		this.vmNum = vmNum;
	}

	/**
	 * @return the powerState
	 */
	public String getPowerState() {
		return powerState;
	}

	/**
	 * @param powerState
	 *            the powerState to set
	 */
	public void setPowerState(String powerState) {
		this.powerState = powerState;
	}

	/**
	 * @return the templateNum
	 */
	public Integer getTemplateNum() {
		return templateNum;
	}

	/**
	 * @param templateNum
	 *            the templateNum to set
	 */
	public void setTemplateNum(Integer templateNum) {
		this.templateNum = templateNum;
	}

	/**
	 * @return the datastoreNum
	 */
	public Integer getDatastoreNum() {
		return datastoreNum;
	}

	/**
	 * @param datastoreNum
	 *            the datastoreNum to set
	 */
	public void setDatastoreNum(Integer datastoreNum) {
		this.datastoreNum = datastoreNum;
	}

	/**
	 * @return the cpuCore
	 */
	public Integer getCpuCore() {
		return cpuCore;
	}

	/**
	 * @param cpuCore
	 *            the cpuCore to set
	 */
	public void setCpuCore(Integer cpuCore) {
		this.cpuCore = cpuCore;
	}

	/**
	 * @return the netcards
	 */
	public List<NetworkCardModel> getNetcards() {
		return netcards;
	}

	/**
	 * @param netcards
	 *            the netcards to set
	 */
	public void setNetcards(List<NetworkCardModel> netcards) {
		this.netcards = netcards;
	}

	public String getIpmiAddress() {
		return ipmiAddress;
	}

	public void setIpmiAddress(String ipmiAddress) {
		this.ipmiAddress = ipmiAddress;
	}

	public String getIpmiAccount() {
		return ipmiAccount;
	}

	public void setIpmiAccount(String ipmiAccount) {
		this.ipmiAccount = ipmiAccount;
	}

	public String getIpmiPassword() {
		return ipmiPassword;
	}

	public void setIpmiPassword(String ipmiPassword) {
		this.ipmiPassword = ipmiPassword;
	}

	public String getIpmiPort() {
		return ipmiPort;
	}

	public void setIpmiPort(String ipmiPort) {
		this.ipmiPort = ipmiPort;
	}

	/**
     *
     */
	public HostModel() {
		super();
	}

	/**
	 * @param name
	 * @param uuid
	 * @param cpuNum
	 * @param cpuCore
	 * @param cpuTotal
	 * @param memTotal
	 * @param diskTotal
	 * @param cpuUsed
	 * @param memUsed
	 * @param diskUsed
	 * @param category
	 * @param catalog
	 * @param cpuModel
	 * @param vendor
	 * @param stores
	 * @param vmNum
	 * @param powerState
	 * @param templateNum
	 * @param servers
	 * @param datastoreNum
	 * @param hostIp
	 * @param status
	 * @param netcards
	 * @param maintained
	 * @param connected
	 */
	public HostModel(String name, String uuid, Integer cpuNum, Integer cpuCore, Long cpuTotal, Double memTotal,
			Double diskTotal, Long cpuUsed, Double memUsed, Double diskUsed, String category, String catalog,
			String cpuModel, String vendor, List<String> stores, Integer vmNum, String powerState, Integer templateNum,
			List<ServerModel> servers, Integer datastoreNum, String hostIp, String status,
			List<NetworkCardModel> netcards, Boolean maintained, Boolean connected) {
		super();
		this.name = name;
		this.uuid = uuid;
		this.cpuNum = cpuNum;
		this.cpuCore = cpuCore;
		this.cpuTotal = cpuTotal;
		this.memTotal = memTotal;
		this.diskTotal = diskTotal;
		this.cpuUsed = cpuUsed;
		this.memUsed = memUsed;
		this.diskUsed = diskUsed;
		this.category = category;
		this.catalog = catalog;
		this.cpuModel = cpuModel;
		this.vendor = vendor;
		this.stores = stores;
		this.vmNum = vmNum;
		this.powerState = powerState;
		this.templateNum = templateNum;
		this.servers = servers;
		this.datastoreNum = datastoreNum;
		this.hostIp = hostIp;
		this.status = status;
		this.netcards = netcards;
		this.maintained = maintained;
		this.connected = connected;
	}

	public Long getId() {
		return id;
	}

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

	public String getStatus() {
		return status;
	}

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

	/**
	 * @return the maintained
	 */
	public Boolean getMaintained() {
		return maintained;
	}

	/**
	 * @param maintained
	 *            the maintained to set
	 */
	public void setMaintained(Boolean maintained) {
		this.maintained = maintained;
	}

	/**
	 * @return the connected
	 */
	public Boolean getConnected() {
		return connected;
	}

	/**
	 * @param connected
	 *            the connected to set
	 */
	public void setConnected(Boolean connected) {
		this.connected = connected;
	}

	/**
	 * @return the dataStores
	 */
	public List<DataStoreModel> getDataStores() {
		return dataStores;
	}

	/**
	 * @param dataStores
	 *            the dataStores to set
	 */
	public void setDataStores(List<DataStoreModel> dataStores) {
		this.dataStores = dataStores;
	}

	/**
	 * @return the networks
	 */
	public List<NetworkModel> getNetworks() {
		return networks;
	}

	/**
	 * @param networks
	 *            the networks to set
	 */
	public void setNetworks(List<NetworkModel> networks) {
		this.networks = networks;
	}

	/**
	 * @return the switchers
	 */
	public List<SwitchModel> getSwitchers() {
		return switchers;
	}

	/**
	 * @param switchers
	 *            the switchers to set
	 */
	public void setSwitchers(List<SwitchModel> switchers) {
		this.switchers = switchers;
	}

	/**
	 * @return the resourcePool
	 */
	public ResourcePoolModel getResourcePool() {
		return resourcePool;
	}

	/**
	 * @param resourcePool
	 *            the resourcePool to set
	 */
	public void setResourcePool(ResourcePoolModel resourcePool) {
		this.resourcePool = resourcePool;
	}

	public List<String> getHmcUuids() {
		return hmcUuids;
	}

	public void setHmcUuids(List<String> hmcUuids) {
		this.hmcUuids = hmcUuids;
	}

	public Double getHmcCpu() {
		return hmcCpu;
	}

	public void setHmcCpu(Double hmcCpu) {
		this.hmcCpu = hmcCpu;
	}

	public Double getHmcCpuReserved() {
		return hmcCpuReserved;
	}

	public void setHmcCpuReserved(Double hmcCpuReserved) {
		this.hmcCpuReserved = hmcCpuReserved;
	}

	public Double getHmcCpuUsed() {
		return hmcCpuUsed;
	}

	public void setHmcCpuUsed(Double hmcCpuUsed) {
		this.hmcCpuUsed = hmcCpuUsed;
	}

	public Double getMemReserved() {
		return memReserved;
	}

	public void setMemReserved(Double memReserved) {
		this.memReserved = memReserved;
	}

	/**
	 * @return the ipv6Enabled
	 */
	public Boolean getIpv6Enabled() {
		return ipv6Enabled;
	}

	/**
	 * @param ipv6Enabled
	 *            the ipv6Enabled to set
	 */
	public void setIpv6Enabled(Boolean ipv6Enabled) {
		this.ipv6Enabled = ipv6Enabled;
	}

	public String getEvc() {
		return evc;
	}

	public void setEvc(String evc) {
		this.evc = evc;
	}

	public String getAssignedLicense() {
		return assignedLicense;
	}

	public void setAssignedLicense(String assignedLicense) {
		this.assignedLicense = assignedLicense;
	}

	public String getEsxVersion() {
		return esxVersion;
	}

	public void setEsxVersion(String esxVersion) {
		this.esxVersion = esxVersion;
	}

	public String getVmotionIp() {
		return vmotionIp;
	}

	public void setVmotionIp(String vmotionIp) {
		this.vmotionIp = vmotionIp;
	}

	public String getRole() {
		return role;
	}

	public void setRole(String role) {
		this.role = role;
	}

	public Double getCpuUsedRate() {
		return cpuUsedRate;
	}

	public void setCpuUsedRate(Double cpuUsedRate) {
		this.cpuUsedRate = cpuUsedRate;
	}

	public Double getMemUsedRate() {
		return memUsedRate;
	}

	public void setMemUsedRate(Double memUsedRate) {
		this.memUsedRate = memUsedRate;
	}

	public Long getClockDiff() {
		return clockDiff;
	}

	public void setClockDiff(Long clockDiff) {
		this.clockDiff = clockDiff;
	}

	public String getProps() {
		return props;
	}

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

	public String getServices() {
		return services;
	}

	public void setServices(String services) {
		this.services = services;
	}

	public Double getMemSwap() {
		return memSwap;
	}

	public void setMemSwap(Double memSwap) {
		this.memSwap = memSwap;
	}

	public String getOsCategory() {
		return osCategory;
	}

	public void setOsCategory(String osCategory) {
		this.osCategory = osCategory;
	}

	public String getOs() {
		return os;
	}

	public void setOs(String os) {
		this.os = os;
	}

	public String getKernelVersion() {
		return kernelVersion;
	}

	public void setKernelVersion(String kernelVersion) {
		this.kernelVersion = kernelVersion;
	}

	public String getOsName() {
		return osName;
	}

	public void setOsName(String osName) {
		this.osName = osName;
	}

	public String getOsVersion() {
		return osVersion;
	}

	public void setOsVersion(String osVersion) {
		this.osVersion = osVersion;
	}

	public String getCephVersion() {
		return cephVersion;
	}

	public void setCephVersion(String cephVersion) {
		this.cephVersion = cephVersion;
	}

	public StorageDiskModel getRootDisk() {
		return rootDisk;
	}

	public void setRootDisk(StorageDiskModel rootDisk) {
		this.rootDisk = rootDisk;
	}

	public Integer getGatewayPort() {
		return gatewayPort;
	}

	public void setGatewayPort(Integer gatewayPort) {
		this.gatewayPort = gatewayPort;
	}

	public String getGatewayUsername() {
		return gatewayUsername;
	}

	public void setGatewayUsername(String gatewayUsername) {
		this.gatewayUsername = gatewayUsername;
	}

	public String getGatewayPassword() {
		return gatewayPassword;
	}

	public void setGatewayPassword(String gatewayPassword) {
		this.gatewayPassword = gatewayPassword;
	}

	public List<ScsiLunModel> getScsiLunModels() {
		return scsiLunModels;
	}

	public void setScsiLunModels(List<ScsiLunModel> scsiLunModels) {
		this.scsiLunModels = scsiLunModels;
	}

	public String getModelName() {
		return modelName;
	}

	public void setModelName(String modelName) {
		this.modelName = modelName;
	}

	public String getClusterUuid() {
		return clusterUuid;
	}

	public void setClusterUuid(String clusterUuid) {
		this.clusterUuid = clusterUuid;
	}

	public List<RsVSwitch> getH3cSwitchers() {
		return h3cSwitchers;
	}

	public void setH3cSwitchers(List<RsVSwitch> h3cSwitchers) {
		this.h3cSwitchers = h3cSwitchers;
	}

	public List<RsStoragePool> getRsStoragePools() {
		return rsStoragePools;
	}

	public void setRsStoragePools(List<RsStoragePool> rsStoragePools) {
		this.rsStoragePools = rsStoragePools;
	}

	public Long getDiskTotalSizeByte() {
		return diskTotalSizeByte;
	}

	public void setDiskTotalSizeByte(Long diskTotalSizeByte) {
		this.diskTotalSizeByte = diskTotalSizeByte;
	}

	public Long getDiskUsedSizeByte() {
		return diskUsedSizeByte;
	}

	public void setDiskUsedSizeByte(Long diskUsedSizeByte) {
		this.diskUsedSizeByte = diskUsedSizeByte;
	}

	public Long getDiskCacheSizeByte() {
		return diskCacheSizeByte;
	}

	public void setDiskCacheSizeByte(Long diskCacheSizeByte) {
		this.diskCacheSizeByte = diskCacheSizeByte;
	}

	public Integer getHddCount() {
		return hddCount;
	}

	public void setHddCount(Integer hddCount) {
		this.hddCount = hddCount;
	}

	public Integer getSsdCount() {
		return ssdCount;
	}

	public void setSsdCount(Integer ssdCount) {
		this.ssdCount = ssdCount;
	}

	public Long getHddTotalSizeByte() {
		return hddTotalSizeByte;
	}

	public void setHddTotalSizeByte(Long hddTotalSizeByte) {
		this.hddTotalSizeByte = hddTotalSizeByte;
	}

	public Long getSsdTotalSizeByte() {
		return ssdTotalSizeByte;
	}

	public void setSsdTotalSizeByte(Long ssdTotalSizeByte) {
		this.ssdTotalSizeByte = ssdTotalSizeByte;
	}

	public List<StorageDiskModel> getDisks() {
		return disks;
	}

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