[pve-devel] r5650 - in pve-cluster/trunk/data: . perl src
svn-commits at proxmox.com
svn-commits at proxmox.com
Mon Mar 7 14:30:56 CET 2011
Author: dietmar
Date: 2011-03-07 14:30:56 +0100 (Mon, 07 Mar 2011)
New Revision: 5650
Modified:
pve-cluster/trunk/data/ChangeLog
pve-cluster/trunk/data/perl/Cluster.pm
pve-cluster/trunk/data/perl/IPCC.xs
pve-cluster/trunk/data/perl/test1.pl
pve-cluster/trunk/data/src/server.c
pve-cluster/trunk/data/src/status.c
pve-cluster/trunk/data/src/status.h
Log:
impl. rrd dump
Modified: pve-cluster/trunk/data/ChangeLog
===================================================================
--- pve-cluster/trunk/data/ChangeLog 2011-03-07 11:53:22 UTC (rev 5649)
+++ pve-cluster/trunk/data/ChangeLog 2011-03-07 13:30:56 UTC (rev 5650)
@@ -1,5 +1,7 @@
2011-03-07 Proxmox Support Team <support at proxmox.com>
+ * src/status.c (cfs_rrd_dump): impl. rrd dump
+
* perl/Cluster.pm (broadcast_rrd): start rrd integration
2011-02-25 Proxmox Support Team <support at proxmox.com>
Modified: pve-cluster/trunk/data/perl/Cluster.pm
===================================================================
--- pve-cluster/trunk/data/perl/Cluster.pm 2011-03-07 11:53:22 UTC (rev 5649)
+++ pve-cluster/trunk/data/perl/Cluster.pm 2011-03-07 13:30:56 UTC (rev 5650)
@@ -408,6 +408,18 @@
warn $err if $err;
}
+sub rrd_dump {
+ my $res;
+ eval {
+ $res = &$ipcc_send_rec(10);
+ };
+ my $err = $@;
+
+ warn $err if $err;
+
+ return $res;
+}
+
# a fast way to read files (avoid fuse overhead)
sub get_config {
my ($path) = @_;
Modified: pve-cluster/trunk/data/perl/IPCC.xs
===================================================================
--- pve-cluster/trunk/data/perl/IPCC.xs 2011-03-07 11:53:22 UTC (rev 5649)
+++ pve-cluster/trunk/data/perl/IPCC.xs 2011-03-07 13:30:56 UTC (rev 5650)
@@ -84,7 +84,12 @@
errno = -res_header->error;
XSRETURN_UNDEF;
} else {
- RETVAL = newSVpv(ipcbuffer + sizeof(struct qb_ipc_response_header), dsize);
+ if (dsize > 0) {
+ RETVAL = newSVpv(ipcbuffer + sizeof(struct qb_ipc_response_header), dsize);
+ } else {
+ errno = 0;
+ XSRETURN_UNDEF;
+ }
}
}
OUTPUT: RETVAL
Modified: pve-cluster/trunk/data/perl/test1.pl
===================================================================
--- pve-cluster/trunk/data/perl/test1.pl 2011-03-07 11:53:22 UTC (rev 5649)
+++ pve-cluster/trunk/data/perl/test1.pl 2011-03-07 13:30:56 UTC (rev 5650)
@@ -15,7 +15,7 @@
#print PVE::Cluster::get_system_log(undef, 0);
-PVE::Cluster::cfs_update();
+#PVE::Cluster::cfs_update();
#my $res = PVE::Cluster::get_vmlist();
#print "TEST1: " . Dumper($res->{ids});
@@ -24,11 +24,16 @@
while (1) {
+
+ print "update start\n";
PVE::Cluster::cfs_update();
+ print "update end\n";
- my $res = PVE::Cluster::cfs_file_version('user.cfg');
+ my $res = PVE::Cluster::rrd_dump();
+ print "RRDDATA:$res\n";
- print "VER $res\n";
+ #my $res = PVE::Cluster::cfs_file_version('user.cfg');
+ #print "VER $res\n";
sleep(1);
}
Modified: pve-cluster/trunk/data/src/server.c
===================================================================
--- pve-cluster/trunk/data/src/server.c 2011-03-07 11:53:22 UTC (rev 5649)
+++ pve-cluster/trunk/data/src/server.c 2011-03-07 13:30:56 UTC (rev 5650)
@@ -302,6 +302,14 @@
result = 0;
}
+ } else if (req_pt->id == 10) {
+
+ if (req_pt->size != sizeof(struct qb_ipc_request_header)) {
+ result = -EINVAL;
+ } else {
+ cfs_rrd_dump(outbuf);
+ result = 0;
+ }
}
cfs_debug("process result %d", result);
Modified: pve-cluster/trunk/data/src/status.c
===================================================================
--- pve-cluster/trunk/data/src/status.c 2011-03-07 11:53:22 UTC (rev 5649)
+++ pve-cluster/trunk/data/src/status.c 2011-03-07 13:30:56 UTC (rev 5650)
@@ -825,11 +825,6 @@
// fixme: when do we remove old entries ?
- /* make sure we are 0 terminated */
- char databuf[4096];
- memcpy(databuf, data, len);
- databuf[len] = 0;
-
if (strncmp(key, "pve-nodes/", 10) == 0) {
const char *node = key + 10;
g_return_if_fail(strchr(node, '/') == NULL);
@@ -862,7 +857,7 @@
}
char *update_args[] = {
- "update", filename, databuf,
+ "update", filename, data,
NULL,
};
@@ -874,17 +869,43 @@
}
}
+void
+cfs_rrd_dump(GString *str)
+{
+ // fixme: cache result
+ // fixme: remove old data
+
+ g_string_set_size(str, 0);
+
+ GHashTableIter iter;
+ gpointer key, value;
+
+ g_hash_table_iter_init (&iter, cfs_status.rrdhash);
+
+ while (g_hash_table_iter_next (&iter, &key, &value)) {
+ rrdentry_t *entry = (rrdentry_t *)value;
+ g_string_append(str, key);
+ g_string_append(str, ":");
+ g_string_append(str, entry->data);
+ g_string_append(str, "\n");
+ }
+
+ g_string_append_c(str, 0); // never return undef
+}
+
static gboolean
rrdentry_hash_set(
GHashTable *rrdhash,
const char *key,
- gconstpointer data,
+ const char *data,
size_t len)
{
g_return_val_if_fail(rrdhash != NULL, FALSE);
g_return_val_if_fail(key != NULL, FALSE);
g_return_val_if_fail(data != NULL, FALSE);
g_return_val_if_fail(len > 0, FALSE);
+ g_return_val_if_fail(len < 4096, FALSE);
+ g_return_val_if_fail(data[len] == 0, FALSE);
rrdentry_t *entry;
if ((entry = (rrdentry_t *)g_hash_table_lookup(rrdhash, key))) {
Modified: pve-cluster/trunk/data/src/status.h
===================================================================
--- pve-cluster/trunk/data/src/status.h 2011-03-07 11:53:22 UTC (rev 5649)
+++ pve-cluster/trunk/data/src/status.h 2011-03-07 13:30:56 UTC (rev 5650)
@@ -52,6 +52,9 @@
const char *user,
guint max_entries);
+void
+cfs_rrd_dump(GString *str);
+
int
cfs_status_set(
const char *key,
More information about the pve-devel
mailing list