]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: add conf_parse_argv, use in tests
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Wed, 6 Jul 2011 22:41:34 +0000 (15:41 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Thu, 7 Jul 2011 21:24:52 +0000 (14:24 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/include/rados/librados.h
src/include/rados/librados.hpp
src/librados.cc
src/test/system/rados_list_parallel.cc

index 7708f5d897d52b68a018a253f536875737c8df69..f3c52161afe6872ce137a60647d75f7527236a8e 100644 (file)
@@ -71,6 +71,9 @@ void rados_shutdown(rados_t cluster);
  */
 int rados_conf_read_file(rados_t cluster, const char *path);
 
+/* Parse argv */
+void rados_conf_parse_argv(rados_t cluster, int argc, const char **argv);
+
 /* Sets a configuration value from a string.
  * Returns 0 on success, error code otherwise. */
 int rados_conf_set(rados_t cluster, const char *option, const char *value);
index f6319b5d910f41b86871b5a5831da5524a762c2e..df09b7d7990632a81b5af074af078c2df47b1947 100644 (file)
@@ -284,6 +284,7 @@ namespace librados
     int connect();
     void shutdown();
     int conf_read_file(const char * const path) const;
+    void conf_parse_argv(int argc, const char ** argv) const;
     int conf_set(const char *option, const char *value);
     int conf_get(const char *option, std::string &val);
 
index a77c43d821858abeae0408ec99c283a7e61abf9f..041e8a10777fad81b4ac2fd915a83b23ce1c381d 100644 (file)
@@ -3010,6 +3010,12 @@ conf_read_file(const char * const path) const
   return rados_conf_read_file((rados_t)client, path);
 }
 
+void librados::Rados::
+conf_parse_argv(int argc, const char ** argv) const
+{
+  rados_conf_parse_argv((rados_t)client, argc, argv);
+}
+
 int librados::Rados::
 conf_set(const char *option, const char *value)
 {
@@ -3223,6 +3229,16 @@ extern "C" int rados_conf_read_file(rados_t cluster, const char *path_list)
   return 0;
 }
 
+extern "C" void rados_conf_parse_argv(rados_t cluster, int argc, const char **argv)
+{
+  librados::RadosClient *client = (librados::RadosClient *)cluster;
+  md_config_t *conf = client->cct->_conf;
+  vector<const char*> args;
+  argv_to_vec(argc, argv, args);
+  conf->parse_argv(args);
+  conf->apply_changes();
+}
+
 extern "C" int rados_conf_set(rados_t cluster, const char *option, const char *value)
 {
   librados::RadosClient *client = (librados::RadosClient *)cluster;
index 69fc42ad32e71058e7350ca76789562e3c1cf5ac..2823e8b0ee91c3b918fc3ba4cacfd07fed21efe9 100644 (file)
@@ -63,6 +63,7 @@ public:
   {
     rados_t cl;
     RETURN_IF_NONZERO(rados_create(&cl, NULL));
+    rados_conf_parse_argv(cl, m_argc, m_argv);
     RETURN_IF_NONZERO(rados_conf_read_file(cl, NULL));
     RETURN_IF_NONZERO(rados_connect(cl));
     int ret = rados_pool_delete(cl, "foo");
@@ -127,6 +128,7 @@ public:
   {
     rados_t cl;
     RETURN_IF_NONZERO(rados_create(&cl, NULL));
+    rados_conf_parse_argv(cl, m_argc, m_argv);
     RETURN_IF_NONZERO(rados_conf_read_file(cl, NULL));
     RETURN_IF_NONZERO(rados_connect(cl));
     pool_setup_sem->wait();
@@ -187,6 +189,7 @@ public:
     int ret;
     rados_t cl;
     RETURN_IF_NONZERO(rados_create(&cl, NULL));
+    rados_conf_parse_argv(cl, m_argc, m_argv);
     RETURN_IF_NONZERO(rados_conf_read_file(cl, NULL));
     RETURN_IF_NONZERO(rados_connect(cl));
     pool_setup_sem->wait();