blob: 78a4542946362ea42984939166bbf54a652993fd [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.api.query.vo;
import java.util.Arrays;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.cloud.host.Host.Type;
import com.cloud.host.Status;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.org.Cluster;
import com.cloud.resource.ResourceState;
import com.cloud.utils.db.GenericDao;
import org.apache.cloudstack.api.Identity;
import org.apache.cloudstack.api.InternalIdentity;
import org.apache.cloudstack.ha.HAConfig;
import org.apache.cloudstack.outofbandmanagement.OutOfBandManagement;
import org.apache.commons.lang3.StringUtils;
/**
* Host DB view.
*
*/
@Entity
@Table(name = "host_view")
public class HostJoinVO extends BaseViewVO implements InternalIdentity, Identity {
@Id
@Column(name = "id")
private long id;
@Column(name = "uuid")
private String uuid;
@Column(name = "name")
private String name;
@Column(name = "status")
private Status status = null;
@Column(name = "type")
@Enumerated(value = EnumType.STRING)
private Type type;
@Column(name = "private_ip_address")
private String privateIpAddress;
@Column(name = "disconnected")
@Temporal(value = TemporalType.TIMESTAMP)
private Date disconnectedOn;
@Column(name = "version")
private String version;
@Column(name = "hypervisor_type")
@Enumerated(value = EnumType.STRING)
private HypervisorType hypervisorType;
@Column(name = "hypervisor_version")
private String hypervisorVersion;
@Column(name = "capabilities")
private String caps;
@Column(name = "last_ping")
private long lastPinged;
@Column(name = GenericDao.CREATED_COLUMN)
private Date created;
@Column(name = GenericDao.REMOVED_COLUMN)
private Date removed;
@Column(name = "oobm_enabled")
private boolean outOfBandManagementEnabled = false;
@Column(name = "oobm_power_state")
@Enumerated(value = EnumType.STRING)
private OutOfBandManagement.PowerState outOfBandManagementPowerState;
@Column(name = "ha_enabled")
private boolean hostHAEnabled = false;
@Column(name = "ha_state")
private HAConfig.HAState hostHAState;
@Column(name = "ha_provider")
private String hostHAProvider;
@Column(name = "resource_state")
@Enumerated(value = EnumType.STRING)
private ResourceState resourceState;
@Column(name = "mgmt_server_id")
private Long managementServerId;
@Column(name = "cpu_sockets")
private Integer cpuSockets;
@Column(name = "cpus")
private Integer cpus;
@Column(name = "speed")
private Long speed;
@Column(name = "ram")
private long totalMemory;
@Column(name = "cluster_id")
private long clusterId;
@Column(name = "cluster_uuid")
private String clusterUuid;
@Column(name = "cluster_name")
private String clusterName;
@Column(name = "cluster_type")
@Enumerated(value = EnumType.STRING)
Cluster.ClusterType clusterType;
@Column(name = "data_center_id")
private long zoneId;
@Column(name = "data_center_uuid")
private String zoneUuid;
@Column(name = "data_center_name")
private String zoneName;
@Column(name = "pod_id")
private long podId;
@Column(name = "pod_uuid")
private String podUuid;
@Column(name = "pod_name")
private String podName;
@Column(name = "guest_os_category_id")
private long osCategoryId;
@Column(name = "guest_os_category_uuid")
private String osCategoryUuid;
@Column(name = "guest_os_category_name")
private String osCategoryName;
@Column(name = "tag")
private String tag;
@Column(name = "is_tag_a_rule")
private Boolean isTagARule;
@Column(name = "memory_used_capacity")
private long memUsedCapacity;
@Column(name = "memory_reserved_capacity")
private long memReservedCapacity;
@Column(name = "cpu_used_capacity")
private long cpuUsedCapacity;
@Column(name = "cpu_reserved_capacity")
private long cpuReservedCapacity;
@Column(name = "job_id")
private Long jobId;
@Column(name = "job_uuid")
private String jobUuid;
@Column(name = "job_status")
private int jobStatus;
@Column(name = "annotation")
private String annotation;
@Column(name = "last_annotated")
private Date lastAnnotated;
@Column(name = "username")
private String username;
@Override
public long getId() {
return this.id;
}
@Override
public String getUuid() {
return uuid;
}
public String getVersion() {
return version;
}
public long getZoneId() {
return zoneId;
}
public String getZoneUuid() {
return zoneUuid;
}
public String getZoneName() {
return zoneName;
}
public String getName() {
return name;
}
public Status getStatus() {
return status;
}
public Type getType() {
return type;
}
public String getPrivateIpAddress() {
return privateIpAddress;
}
public Date getDisconnectedOn() {
return disconnectedOn;
}
public HypervisorType getHypervisorType() {
return hypervisorType;
}
public String getHypervisorVersion() {
return hypervisorVersion;
}
public String getCapabilities() {
return caps;
}
public long getLastPinged() {
return lastPinged;
}
public Date getCreated() {
return created;
}
public Date getRemoved() {
return removed;
}
public boolean isOutOfBandManagementEnabled() {
return outOfBandManagementEnabled;
}
public OutOfBandManagement.PowerState getOutOfBandManagementPowerState() {
return outOfBandManagementPowerState;
}
public boolean isHostHAEnabled() {
return hostHAEnabled;
}
public HAConfig.HAState getHostHAState() {
return hostHAState;
}
public String getHostHAProvider() {
return hostHAProvider;
}
public ResourceState getResourceState() {
return resourceState;
}
public Long getManagementServerId() {
return managementServerId;
}
public Integer getCpuSockets() {
return cpuSockets;
}
public Integer getCpus() {
return cpus;
}
public Long getSpeed() {
return speed;
}
public long getTotalMemory() {
return totalMemory;
}
public long getClusterId() {
return clusterId;
}
public String getClusterUuid() {
return clusterUuid;
}
public String getClusterName() {
return clusterName;
}
public Cluster.ClusterType getClusterType() {
return clusterType;
}
public long getOsCategoryId() {
return osCategoryId;
}
public String getOsCategoryUuid() {
return osCategoryUuid;
}
public String getOsCategoryName() {
return osCategoryName;
}
public Long getJobId() {
return jobId;
}
public String getJobUuid() {
return jobUuid;
}
public int getJobStatus() {
return jobStatus;
}
public long getPodId() {
return podId;
}
public String getPodUuid() {
return podUuid;
}
public String getPodName() {
return podName;
}
public long getMemUsedCapacity() {
return memUsedCapacity;
}
public long getMemReservedCapacity() {
return memReservedCapacity;
}
public long getCpuUsedCapacity() {
return cpuUsedCapacity;
}
public long getCpuReservedCapacity() {
return cpuReservedCapacity;
}
public String getTag() {
return tag;
}
public Boolean getIsTagARule() {
return isTagARule;
}
public String getAnnotation() {
return annotation;
}
public Date getLastAnnotated() {
return lastAnnotated;
}
public String getUsername() {
return username;
}
public boolean isAnnotated() {
return StringUtils.isNotBlank(annotation);
}
public boolean isInMaintenanceStates() {
return Arrays.asList(
ResourceState.Maintenance, ResourceState.ErrorInMaintenance, ResourceState.PrepareForMaintenance)
.contains(getResourceState());
}
}