View Issue Details

IDProjectCategoryView StatusLast Update
0000619bareos-corestorage daemonpublic2016-02-11 09:53
Reportermatt01 Assigned Tomvwieringen  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionduplicate 
PlatformLinuxOSanyOS Version3
Summary0000619: Rados SD backend dosn't allow a clientid to be specified in the config
DescriptionThe rados SD back end doesn't allow a clientid to be specified in the admin and always default to using the admin id which may not be desirable.
TagsNo tags attached.

Activities

matt01

matt01

2016-02-10 23:55

reporter  

0001-allow-a-clientid-to-be-specified-to-set-the-rados-cl.patch (2,703 bytes)   
From b7134bdb28e92d97c1604e05ad9a2cb167a1b23a Mon Sep 17 00:00:00 2001
From: mr245 <mr245@bath.ac.uk>
Date: Wed, 10 Feb 2016 22:49:20 +0000
Subject: [PATCH] allow a clientid= to be specified to set the rados client id
 used to authenticate to ceph

---
 src/stored/backends/rados_device.c | 9 ++++++++-
 src/stored/backends/rados_device.h | 1 +
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/stored/backends/rados_device.c b/src/stored/backends/rados_device.c
index da6b64a..40309ac 100644
--- a/src/stored/backends/rados_device.c
+++ b/src/stored/backends/rados_device.c
@@ -37,6 +37,7 @@
 enum device_option_type {
    argument_none = 0,
    argument_conffile,
+   argument_clientid,
    argument_poolname,
    argument_striped,
    argument_stripe_unit,
@@ -52,6 +53,7 @@ struct device_option {
 static device_option device_options[] = {
    { "conffile=", argument_conffile, 9 },
    { "poolname=", argument_poolname, 9 },
+   { "clientid=", argument_clientid, 9 },
 #ifdef HAVE_RADOS_STRIPER
    { "striped", argument_striped, 7 },
    { "stripe_unit=", argument_stripe_unit, 11 },
@@ -104,6 +106,10 @@ int rados_device::d_open(const char *pathname, int flags, int mode)
                   m_rados_poolname = bp + device_options[i].compare_size;
                   done = true;
                   break;
+               case argument_clientid:
+                  m_rados_clientid = bp + device_options[i].compare_size;
+                  done = true;
+                  break;
 #ifdef HAVE_RADOS_STRIPER
                case argument_striped:
                   m_stripe_volume = true;
@@ -147,7 +153,7 @@ int rados_device::d_open(const char *pathname, int flags, int mode)
    }
 
    if (!m_cluster_initialized) {
-      status = rados_create(&m_cluster, NULL);
+      status = rados_create(&m_cluster, m_rados_clientid);
       if (status < 0) {
          Mmsg1(errmsg, _("Unable to create RADOS cluster: ERR=%s\n"), be.bstrerror(-status));
          Emsg0(M_FATAL, 0, errmsg);
@@ -468,6 +474,7 @@ rados_device::rados_device()
    m_rados_configstring = NULL;
    m_rados_conffile = NULL;
    m_rados_poolname = NULL;
+   m_rados_clientid = NULL;
    m_cluster_initialized = false;
    m_ctx = NULL;
 #ifdef HAVE_RADOS_STRIPER
diff --git a/src/stored/backends/rados_device.h b/src/stored/backends/rados_device.h
index cfd033b..df08a03 100644
--- a/src/stored/backends/rados_device.h
+++ b/src/stored/backends/rados_device.h
@@ -38,6 +38,7 @@ class rados_device: public DEVICE {
 private:
    char *m_rados_configstring;
    char *m_rados_conffile;
+   char *m_rados_clientid;
    char *m_rados_poolname;
    bool m_cluster_initialized;
 #ifdef HAVE_RADOS_STRIPER
-- 
2.4.10

mvwieringen

mvwieringen

2016-02-11 09:52

developer   ~0002188

Someone already send an fix for that so I'm going to ignore this one.

Issue History

Date Modified Username Field Change
2016-02-10 23:55 matt01 New Issue
2016-02-10 23:55 matt01 File Added: 0001-allow-a-clientid-to-be-specified-to-set-the-rados-cl.patch
2016-02-11 09:52 mvwieringen Note Added: 0002188
2016-02-11 09:53 mvwieringen Status new => closed
2016-02-11 09:53 mvwieringen Assigned To => mvwieringen
2016-02-11 09:53 mvwieringen Resolution open => duplicate