]> git.proxmox.com Git - librados2-perl.git/blobdiff - RADOS.xs
bump version to 1.0-5
[librados2-perl.git] / RADOS.xs
index a9f6bc36c55337a9b0c565fc3819401a345c439c..f3f55162dcbdb1fa2ca612c8915d57a6a7737562 100644 (file)
--- a/RADOS.xs
+++ b/RADOS.xs
 
 MODULE = PVE::RADOS            PACKAGE = PVE::RADOS
 
-rados_t 
-pve_rados_create() 
-PROTOTYPE:
+rados_t
+pve_rados_create(user)
+SV *user
+PROTOTYPE: $
 CODE:
-{      
-    rados_t clu = NULL;         
-    int ret = rados_create(&clu, NULL);
-    
+{
+    char *u = NULL;
+    rados_t clu = NULL;
+
+    if (SvOK(user)) {
+       u = SvPV_nolen(user);
+    }
+
+    int ret = rados_create(&clu, u);
+
     if (ret == 0)
         RETVAL = clu;
     else {
@@ -31,7 +38,7 @@ CODE:
 OUTPUT: RETVAL
 
 void
-pve_rados_conf_set(cluster, key, value) 
+pve_rados_conf_set(cluster, key, value)
 rados_t cluster
 char *key
 char *value
@@ -41,32 +48,48 @@ CODE:
     DPRINTF("pve_rados_conf_set %s = %s\n", key, value);
 
     int res = rados_conf_set(cluster, key, value);
-    if (res < 0) {              
+    if (res < 0) {
         die("rados_conf_set failed - %s\n", strerror(-res));
     }
 }
 
 void
-pve_rados_connect(cluster) 
+pve_rados_conf_read_file(cluster, path)
 rados_t cluster
-PROTOTYPE: $
+SV *path
+PROTOTYPE: $$
 CODE:
 {
-    DPRINTF("pve_rados_connect\n");
+    char *p = NULL;
+
+    if (SvOK(path)) {
+       p = SvPV_nolen(path);
+    }
+
+    DPRINTF("pve_rados_conf_read_file %s\n", p);
 
-    int res = rados_conf_read_file(cluster, NULL);
+    int res = rados_conf_read_file(cluster, p);
     if (res < 0) {
         die("rados_conf_read_file failed - %s\n", strerror(-res));
     }
-    res = rados_connect(cluster);
+}
+
+void
+pve_rados_connect(cluster)
+rados_t cluster
+PROTOTYPE: $
+CODE:
+{
+    DPRINTF("pve_rados_connect\n");
+
+    int res = rados_connect(cluster);
     if (res < 0) {
         die("rados_connect failed - %s\n", strerror(-res));
     }
 }
 
 void
-pve_rados_shutdown(cluster) 
+pve_rados_shutdown(cluster)
 rados_t cluster
 PROTOTYPE: $
 CODE:
@@ -76,7 +99,7 @@ CODE:
 }
 
 SV *
-pve_rados_mon_command(cluster, cmds) 
+pve_rados_mon_command(cluster, cmds)
 rados_t cluster
 AV *cmds
 PROTOTYPE: $$
@@ -99,7 +122,7 @@ CODE:
         cmd[cmdlen] = SvPV_nolen(arg);
         DPRINTF("pve_rados_mon_command%zd %s\n", cmdlen, cmd[cmdlen]);
         cmdlen++;
-    } 
+    }
 
     int ret = rados_mon_command(cluster, cmd, cmdlen,
                                 NULL, 0,
@@ -112,15 +135,15 @@ CODE:
         rados_buffer_free(outs);
         die(msg);
     }
+
     RETVAL = newSVpv(outbuf, outbuflen);
 
     rados_buffer_free(outbuf);
 }
 OUTPUT: RETVAL
 
-HV * 
-pve_rados_cluster_stat(cluster) 
+HV *
+pve_rados_cluster_stat(cluster)
 rados_t cluster
 PROTOTYPE: $
 CODE:
@@ -130,7 +153,7 @@ CODE:
     DPRINTF("pve_rados_cluster_stat");
 
     int ret = rados_cluster_stat(cluster, &result);
-  
+
     if(ret != 0) {
         warn("rados_cluster_stat failed (ret=%d)\n", ret);
         XSRETURN_UNDEF;