/*
* RHQ Management Platform
* Copyright (C) 2005-2013 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
* published by the Free Software Foundation, and/or the GNU Lesser
* General Public License, version 2.1, also as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License and the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU Lesser General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.rhq.core.domain.cloud;
import java.io.Serializable;
import org.rhq.core.domain.measurement.MeasurementAggregate;
import org.rhq.core.domain.measurement.MeasurementUnits;
/**
* @author Jiri Kremser
*/
public class StorageNodeLoadComposite implements Serializable {
private static final long serialVersionUID = 1L;
private StorageNode storageNode;
private long beginTime;
private long endTime;
private int unackAlerts;
private String hostname;
private MeasurementAggregateWithUnits heapCommitted;
private MeasurementAggregateWithUnits heapUsed;
private MeasurementAggregateWithUnits heapPercentageUsed;
private MeasurementAggregateWithUnits load;
private MeasurementAggregateWithUnits dataDiskUsed;
private MeasurementAggregate tokens;
private MeasurementAggregateWithUnits dataDiskUsedPercentage;
private MeasurementAggregateWithUnits totalDiskUsedPercentage;
private MeasurementAggregate freeDiskToDataSizeRatio;
private MeasurementAggregateWithUnits actuallyOwns;
public StorageNodeLoadComposite() {
// GWT needs this
}
public StorageNodeLoadComposite(StorageNode storageNode, long beginTime, long endTime) {
this.storageNode = storageNode;
this.beginTime = beginTime;
this.endTime = endTime;
this.hostname = storageNode.getAddress();
}
public StorageNode getStorageNode() {
return storageNode;
}
public void setStorageNode(StorageNode storageNode) {
this.storageNode = storageNode;
}
public long getBeginTime() {
return beginTime;
}
public void setBeginTime(long beginTime) {
this.beginTime = beginTime;
}
public long getEndTime() {
return endTime;
}
public void setEndTime(long endTime) {
this.endTime = endTime;
}
public int getUnackAlerts() {
return unackAlerts;
}
public void setUnackAlerts(int unackAlerts) {
this.unackAlerts = unackAlerts;
}
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
/**
* @return heapCommitted A computed metric for the amount of memory that is committed for the JVM to use.
*/
public MeasurementAggregateWithUnits getHeapCommitted() {
return heapCommitted;
}
public void setHeapCommitted(MeasurementAggregateWithUnits heapCommitted) {
this.heapCommitted = heapCommitted;
}
/**
* @return A computed metric for the amount of JVM heap memory used
*/
public MeasurementAggregateWithUnits getHeapUsed() {
return heapUsed;
}
public void setHeapUsed(MeasurementAggregateWithUnits heapUsed) {
this.heapUsed = heapUsed;
}
/**
* @return A computed metric for the {@link #getHeapUsed() heapUsed} divided by the
* {@link #getHeapCommitted() heapCommitted} expressed as a percentage.
*/
public MeasurementAggregateWithUnits getHeapPercentageUsed() {
return heapPercentageUsed;
}
public void setHeapPercentageUsed(MeasurementAggregateWithUnits heapPercentageUsed) {
this.heapPercentageUsed = heapPercentageUsed;
}
/**
* @deprecated use {@link #getDataDiskUsedPercentage() getPartitionDiskUsedPercentage()} instead
*
* @return partitionDiskUsedPercentage
*/
public MeasurementAggregateWithUnits getDiskSpacePercentageUsed() {
return getDataDiskUsedPercentage();
}
/**
* @deprecated use {@link #setDataDiskUsedPercentage(MeasurementAggregateWithUnits)} instead
*
* @param diskUsedPercentage
*/
public void setDiskSpacePercentageUsed(MeasurementAggregateWithUnits diskUsedPercentage) {
setDataDiskUsedPercentage(diskUsedPercentage);
}
/**
* @return A computed metric for the percentage of disk space used by data file on the corresponding partitions.
* If multiple data locations are configured then the aggregate is calculated.
*/
public MeasurementAggregateWithUnits getDataDiskUsedPercentage() {
return dataDiskUsedPercentage;
}
public void setDataDiskUsedPercentage(MeasurementAggregateWithUnits dataDiskUsedPercentage) {
this.dataDiskUsedPercentage = dataDiskUsedPercentage;
}
/**
* @return A computed metric for the percentage of total (system + Storage Node data file) disk space used the partitions where data files are stored.
* If multiple data locations are configured then the aggregate is calculated.
*/
public MeasurementAggregateWithUnits getTotalDiskUsedPercentage() {
return totalDiskUsedPercentage;
}
public void setTotalDiskUsedPercentage(MeasurementAggregateWithUnits totalDiskUsedPercentage) {
this.totalDiskUsedPercentage = totalDiskUsedPercentage;
}
/**
* @return A computed metric for the percentage of total (system + Storage Node data file) disk space used the partitions where data files are stored.
* If multiple data locations are configured then the aggregate is calculated.
*/
public MeasurementAggregate getFreeDiskToDataSizeRatio() {
return freeDiskToDataSizeRatio;
}
public void setFreeDiskToDataSizeRatio(MeasurementAggregate freeDiskToDataSizeRatio) {
this.freeDiskToDataSizeRatio = freeDiskToDataSizeRatio;
}
/**
* @return A computed metric for the space used on disk by all data files, commit logs, and saved caches.
*/
public MeasurementAggregateWithUnits getDataDiskUsed() {
return dataDiskUsed;
}
public void setDataDiskUsed(MeasurementAggregateWithUnits dataDiskUsed) {
this.dataDiskUsed = dataDiskUsed;
}
/**
* @return A computed metric for the the reported disk space used by all SSTables on disk for all column families.
*/
public MeasurementAggregateWithUnits getLoad() {
return load;
}
public void setLoad(MeasurementAggregateWithUnits load) {
this.load = load;
}
/**
* @return A computed metric for the number of tokens owned by this node. The range of values between two tokens is
* the range of possible keys for that portion of the token ring.
*/
public MeasurementAggregate getTokens() {
return tokens;
}
public void setTokens(MeasurementAggregate tokens) {
this.tokens = tokens;
}
/**
* @return A computed metric for a percentage of keys owned by this node. This directly correlates to the
* number of {@link #getTokens() tokens}. For example, if you have a a two node cluster with each node having 256
* tokens, then with an even distribution, this metric should be right around 50%.
*/
public MeasurementAggregateWithUnits getActuallyOwns() {
return actuallyOwns;
}
public void setActuallyOwns(MeasurementAggregateWithUnits actuallyOwns) {
this.actuallyOwns = actuallyOwns;
}
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("storageNode.addresss=").append(storageNode.getAddress()).append(", ");
builder.append("hostname=").append(hostname).append(", ");
builder.append("beginTime=").append(beginTime).append(", ");
builder.append("beginTime=").append(beginTime).append(", ");
builder.append("unackAlerts=").append(unackAlerts).append(", ");
builder.append("heapUsed=").append(heapUsed).append(", ");
builder.append("heapPercentageUsed=").append(heapPercentageUsed).append(", ");
builder.append("load=").append(load).append(", ");
builder.append("dataUsedPercentage=").append(dataDiskUsedPercentage).append(", ");
builder.append("dataDiskUsed=").append(dataDiskUsed).append(", ");
builder.append("tokens=").append(tokens).append(", ");
builder.append("actuallyOwns=").append(actuallyOwns);
return builder.toString();
}
public static class MeasurementAggregateWithUnits implements Serializable {
private static final long serialVersionUID = 1L;
private MeasurementAggregate aggregate;
private MeasurementUnits units;
private String formattedValue;
public MeasurementAggregateWithUnits() {
// GWT needs this
}
public MeasurementAggregateWithUnits(MeasurementAggregate aggregate, MeasurementUnits units) {
this.aggregate = aggregate;
this.units = units;
}
public MeasurementAggregate getAggregate() {
return aggregate;
}
public MeasurementUnits getUnits() {
return units;
}
public void setFormattedValue(String formattedValue) {
this.formattedValue = formattedValue;
}
@Override
public String toString() {
if (formattedValue != null) {
return formattedValue;
}
return aggregate.toString() + " (" + units.toString() + ")";
}
}
}