]> git.proxmox.com Git - librados2-perl.git/blame - RADOS.xs
avoid unnecessary warning
[librados2-perl.git] / RADOS.xs
CommitLineData
27bfc7c6
DM
1#include "EXTERN.h"
2#include "perl.h"
3#include "XSUB.h"
4
5#include "ppport.h"
6
7#include <rados/librados.h>
8
9MODULE = PVE::RADOS PACKAGE = PVE::RADOS
10
612779b1
DM
11rados_t
12pve_rados_create()
27bfc7c6
DM
13PROTOTYPE:
14CODE:
15{
16 rados_t clu = NULL;
17 int ret = rados_create(&clu, NULL);
18
19 if (ret == 0)
20 RETVAL = clu;
21 else {
22 warn("rados_create failed (ret=%d)\n", ret);
23 RETVAL = NULL;
24 }
25}
26OUTPUT: RETVAL
27
94ea1b8f 28void
612779b1
DM
29pve_rados_conf_set(cluster, key, value)
30rados_t cluster
31char *key
32char *value
33PROTOTYPE: $$$
34CODE:
35{
94ea1b8f
DM
36 int res = rados_conf_set(cluster, key, value);
37 if (res < 0) {
38 die("rados_conf_set failed - %s\n", strerror(-res));
39 }
612779b1 40}
612779b1
DM
41
42
94ea1b8f
DM
43
44void
45pve_rados_connect(cluster)
27bfc7c6
DM
46rados_t cluster
47PROTOTYPE: $
48CODE:
49{
50 rados_conf_read_file(cluster, NULL);
51
94ea1b8f
DM
52 int res = rados_connect(cluster);
53 if (res < 0) {
54 die("rados_connect failed - %s\n", strerror(-res));
27bfc7c6
DM
55 }
56}
27bfc7c6
DM
57
58void
59pve_rados_shutdown(cluster)
60rados_t cluster
61PROTOTYPE: $
62CODE:
63{
64 rados_shutdown(cluster);
65}
66
67SV *
68pve_rados_mon_command(cluster, cmds)
69rados_t cluster
70AV *cmds
71PROTOTYPE: $$
72CODE:
73{
74 const char *cmd[64];
75 size_t cmdlen = 0;
76
77 char *outbuf =NULL;
78 size_t outbuflen = 0;
79 char *outs = NULL;
80 size_t outslen = 0;
81
82 SV *arg;
83
84 while ((arg = av_pop(cmds)) && (arg != &PL_sv_undef)) {
85 if (cmdlen >= 63) {
86 die("too many arguments");
87 }
88 cmd[cmdlen] = SvPV_nolen(arg);
89 cmdlen++;
90 }
91
92 int ret = rados_mon_command(cluster, cmd, cmdlen,
93 NULL, 0,
94 &outbuf, &outbuflen,
95 &outs, &outslen);
96
97 if (ret < 0) {
98 die("mon_command failed - %s\n", outs);
99 rados_buffer_free(outs);
100 }
101
27bfc7c6
DM
102 RETVAL = newSVpv(outbuf, outbuflen);
103
104 rados_buffer_free(outbuf);
105}
106OUTPUT: RETVAL
107
108HV *
109pve_rados_cluster_stat(cluster)
110rados_t cluster
111PROTOTYPE: $
112CODE:
113{
114 struct rados_cluster_stat_t result;
115 int ret = rados_cluster_stat(cluster, &result);
116
117 if(ret != 0) {
118 warn("rados_cluster_stat failed (ret=%d)\n", ret);
119 XSRETURN_UNDEF;
120 }
121 HV * rh = (HV *)sv_2mortal((SV *)newHV());
94ea1b8f 122 SV **t;
27bfc7c6 123
94ea1b8f
DM
124 t = hv_store(rh, "kb", 2, newSViv(result.kb), 0);
125 t = hv_store(rh, "kb_used", 7, newSViv(result.kb_used), 0);
126 t = hv_store(rh, "kb_avail", 8, newSViv(result.kb_avail), 0);
127 t = hv_store(rh, "num_objects", 11, newSViv(result.num_objects), 0);
27bfc7c6
DM
128
129 RETVAL = rh;
130}
131OUTPUT: RETVAL