From a2a52d53ee2e0dd32b993c112200cfd1c927aafa Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Mon, 25 Jul 2011 12:48:03 +0530 Subject: Story #38 - CPU Usage graph --- .../management/gui/views/ClusterSummaryView.java | 37 +++++++++++----------- 1 file changed, 19 insertions(+), 18 deletions(-) (limited to 'src/com.gluster.storage.management.gui') diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java index 3a9ff740..51b8f4da 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/ClusterSummaryView.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.birt.chart.util.CDateTime; +import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.graphics.Image; @@ -53,9 +54,11 @@ import com.gluster.storage.management.core.model.ServerStats; import com.gluster.storage.management.core.model.ServerStatsRow; import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.utils.NumberUtil; +import com.gluster.storage.management.gui.Activator; import com.gluster.storage.management.gui.GlusterDataModelManager; import com.gluster.storage.management.gui.IImageKeys; import com.gluster.storage.management.gui.actions.IActionConstants; +import com.gluster.storage.management.gui.preferences.PreferenceConstants; import com.gluster.storage.management.gui.utils.ChartViewerComposite; import com.gluster.storage.management.gui.utils.GUIHelper; import com.ibm.icu.util.Calendar; @@ -246,31 +249,24 @@ public class ClusterSummaryView extends ViewPart { parent.layout(); // IMP: lays out the form properly } - private void createCPUUsageSection() { - ServerStats stats; - try { - stats = new GlusterServersClient().getAggregatedCPUStats(); - } catch(Exception e) { + private void createAreaChartSection(ServerStats stats, String sectionTitle, int dataColumnIndex, String unit) { + Composite section = guiHelper.createSection(form, toolkit, sectionTitle, null, 1, false); + + List timestamps = new ArrayList(); + List data = new ArrayList(); + extractChartData(stats, timestamps, data, dataColumnIndex); + + if(timestamps.size() == 0) { + toolkit.createLabel(section, "Server statistics not available!\n Please check if all services are running properly on the cluster servers."); return; } - - Composite section = guiHelper.createSection(form, toolkit, "CPU Usage (aggregated)", null, 1, false); + if (cluster.getServers().size() == 0) { toolkit.createLabel(section, "This section will be populated after at least\none server is added to the storage cloud."); return; } - List timestamps = new ArrayList(); - List data = new ArrayList(); - for(ServerStatsRow row : stats.getRows()) { - // in case of CPU usage, there are three elements in usage data: user, system and total. we use total. - Double cpuUsage = row.getUsageData().get(2); - if(!cpuUsage.isNaN()) { - timestamps.add(new CDateTime(row.getTimestamp() * 1000)); - data.add(cpuUsage); - } - } - createLineChart(section, timestamps.toArray(new Calendar[0]), data.toArray(new Double[0]), "%"); + createLineChart(section, timestamps.toArray(new Calendar[0]), data.toArray(new Double[0]), unit); // Calendar[] timestamps = new Calendar[] { new CDateTime(1000l*1310468100), new CDateTime(1000l*1310468400), new CDateTime(1000l*1310468700), // new CDateTime(1000l*1310469000), new CDateTime(1000l*1310469300), new CDateTime(1000l*1310469600), new CDateTime(1000l*1310469900), @@ -284,6 +280,11 @@ public class ClusterSummaryView extends ViewPart { createChartLinks(section, 4); } + private void createCPUUsageSection() { + // in case of CPU usage, there are three elements in usage data: user, system and total. we use total. + createAreaChartSection(cluster.getAggregatedCpuStats(), "CPU Usage (Aggregated)", 2, "%"); + } + private void extractChartData(ServerStats stats, List timestamps, List data, int dataColumnIndex) { for(ServerStatsRow row : stats.getRows()) { Double cpuUsage = row.getUsageData().get(dataColumnIndex); -- cgit