summaryrefslogtreecommitdiff
path: root/src/pmchart/gadget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pmchart/gadget.cpp')
-rw-r--r--src/pmchart/gadget.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/pmchart/gadget.cpp b/src/pmchart/gadget.cpp
new file mode 100644
index 0000000..0646ffa
--- /dev/null
+++ b/src/pmchart/gadget.cpp
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2014, Red Hat.
+ * Copyright (c) 2008, Aconex. 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 as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * 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
+ * for more details.
+ */
+#include "gadget.h"
+
+Gadget::Gadget(QWidget *widget)
+{
+ my.widget = widget;
+}
+
+QStringList Gadget::hosts()
+{
+ QStringList hosts;
+
+ for (int m = 0; m < metricCount(); m++) {
+ if (activeMetric(m) == false)
+ continue;
+ QString host = metricContext(m)->source().host();
+ if (!hosts.contains(host))
+ hosts.append(host);
+ }
+ return hosts;
+}
+
+QString Gadget::pmloggerMetricSyntax(int m)
+{
+ QmcMetric *mp = metric(m);
+ QString config = mp->name();
+
+ if (mp->numInst() == 1) {
+ config.append(" [ \"");
+ config.append(metricInstance(m));
+ config.append("\" ]");
+ }
+ return config;
+}
+
+QString Gadget::pmloggerSyntax()
+{
+ QString config;
+ bool beDiscrete = false;
+ bool nonDiscrete = false;
+
+ // discover whether we need separate log-once/log-every sections
+ for (int m = 0; m < metricCount(); m++) {
+ if (activeMetric(m) == false)
+ continue;
+ if (metricDesc(m)->desc().sem == PM_SEM_DISCRETE)
+ beDiscrete = true;
+ else
+ nonDiscrete = true;
+ }
+
+ if (beDiscrete) {
+ config.append("log mandatory on once {\n");
+ for (int m = 0; m < metricCount(); m++) {
+ if (activeMetric(m) == false)
+ continue;
+ if (metricDesc(m)->desc().sem != PM_SEM_DISCRETE)
+ continue;
+ config.append('\t');
+ config.append(pmloggerMetricSyntax(m));
+ config.append('\n');
+ }
+ config.append("}\n");
+ }
+ if (nonDiscrete) {
+ config.append("log mandatory on default {\n");
+ for (int m = 0; m < metricCount(); m++) {
+ if (activeMetric(m) == false)
+ continue;
+ if (metricDesc(m)->desc().sem == PM_SEM_DISCRETE)
+ continue;
+ config.append('\t');
+ config.append(pmloggerMetricSyntax(m));
+ config.append('\n');
+ }
+ config.append("}\n");
+ }
+ return config;
+}