7 #include <rados/librados.h>
11 #define DPRINTF(fmt, ...)\
12 do { if (DEBUG_RADOS) { printf("debug: " fmt, ## __VA_ARGS__); } } while (0)
14 MODULE = PVE::RADOS PACKAGE = PVE::RADOS
17 pve_rados_create(user)
29 int ret = rados_create(&clu, u);
34 die("rados_create failed - %s\n", strerror(-ret));
41 pve_rados_conf_set(cluster, key, value)
48 DPRINTF("pve_rados_conf_set %s = %s\n", key, value);
50 int res = rados_conf_set(cluster, key, value);
52 die("rados_conf_set failed - %s\n", strerror(-res));
57 pve_rados_conf_read_file(cluster, path)
69 DPRINTF("pve_rados_conf_read_file %s\n", p);
71 int res = rados_conf_read_file(cluster, p);
73 die("rados_conf_read_file failed - %s\n", strerror(-res));
78 pve_rados_connect(cluster)
83 DPRINTF("pve_rados_connect\n");
85 int res = rados_connect(cluster);
87 die("rados_connect failed - %s\n", strerror(-res));
92 pve_rados_shutdown(cluster)
97 DPRINTF("pve_rados_shutdown");
98 rados_shutdown(cluster);
102 pve_rados_mon_command(cluster, cmds)
112 size_t outbuflen = 0;
118 while ((arg = av_pop(cmds)) && (arg != &PL_sv_undef)) {
120 die("too many arguments");
122 cmd[cmdlen] = SvPV_nolen(arg);
123 DPRINTF("pve_rados_mon_command%zd %s\n", cmdlen, cmd[cmdlen]);
127 int ret = rados_mon_command(
139 HV * rh = (HV *)sv_2mortal((SV *)newHV());
141 (void)hv_store(rh, "return_code", 11, newSViv(ret), 0);
142 (void)hv_store(rh, "status_message", 14, newSVpv(outs, outslen), 0);
143 (void)hv_store(rh, "data", 4, newSVpv(outbuf, outbuflen), 0);
146 rados_buffer_free(outbuf);
147 rados_buffer_free(outs);
152 pve_rados_cluster_stat(cluster)
157 struct rados_cluster_stat_t result;
159 DPRINTF("pve_rados_cluster_stat");
161 int ret = rados_cluster_stat(cluster, &result);
164 warn("rados_cluster_stat failed (ret=%d)\n", ret);
167 HV * rh = (HV *)sv_2mortal((SV *)newHV());
169 (void)hv_store(rh, "kb", 2, newSViv(result.kb), 0);
170 (void)hv_store(rh, "kb_used", 7, newSViv(result.kb_used), 0);
171 (void)hv_store(rh, "kb_avail", 8, newSViv(result.kb_avail), 0);
172 (void)hv_store(rh, "num_objects", 11, newSViv(result.num_objects), 0);