]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: more API cleanup; rados_conf_ stubs
authorSage Weil <sage.weil@dreamhost.com>
Sat, 12 Feb 2011 22:20:16 +0000 (14:20 -0800)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Tue, 22 Feb 2011 16:09:32 +0000 (08:09 -0800)
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/include/rados/librados.h
src/librados-config.cc
src/librados.cc
src/testrados.c

index 27865a052630d00f37532197dbf413bbb786b46c..2e0120c2966ade8986855dde4f51fc62d76303a0 100644 (file)
@@ -25,7 +25,7 @@ extern "C" {
 
 #define LIBRADOS_SUPPORTS_WATCH 1
 
-typedef void *rados_cluster_t;
+typedef void *rados_t;
 typedef void *rados_pool_t;
 typedef void *rados_list_ctx_t;
 typedef uint64_t rados_snap_t;
@@ -48,46 +48,52 @@ struct rados_statfs_t {
 };
 
 
-void librados_version(int *major, int *minor, int *extra);
+void rados_version(int *major, int *minor, int *extra);
 
 /* initialization */
-int rados_initialize(int argc, const char **argv, rados_cluster_t *cluster); /* arguments are optional */
-void rados_deinitialize(rados_cluster_t cluster);
+int rados_init(rados_t *cluster);
+void rados_release(rados_t cluster);
+
+/* config */
+int rados_conf_parse_argv(rados_t cluster, int argc, const char **argv);
+int rados_conf_read_file(rados_t cluster, const char *path);
+int rados_conf_set(rados_t cluster, const char *option, const char *value);
+const char *rados_conf_get(rados_t cluster, const char *option);
 
 /* pools */
-int rados_open_pool(rados_cluster_t cluster, const char *name, rados_pool_t *pool);
-int rados_close_pool(rados_pool_t pool);
-int rados_lookup_pool(rados_cluster_t cluster, const char *name);
+int rados_pool_open(rados_t cluster, const char *name, rados_pool_t *pool);
+int rados_pool_close(rados_pool_t pool);
+int rados_pool_lookup(rados_t cluster, const char *name);
 
-int rados_stat_pool(rados_pool_t pool, struct rados_pool_stat_t *stats);
+int rados_pool_stat(rados_pool_t pool, struct rados_pool_stat_t *stats);
 
-void rados_set_snap(rados_pool_t pool, rados_snap_t snap);
-int rados_set_snap_context(rados_pool_t pool, rados_snap_t seq, rados_snap_t *snaps, int num_snaps);
+void rados_snap_set_read(rados_pool_t pool, rados_snap_t snap);
+int rados_snap_set_write_context(rados_pool_t pool, rados_snap_t seq, rados_snap_t *snaps, int num_snaps);
 
-int rados_create_pool(rados_cluster_t cluster, const char *name);
-int rados_create_pool_with_auid(rados_cluster_t cluster, const char *name, uint64_t auid);
-int rados_create_pool_with_crush_rule(rados_cluster_t cluster, const char *name, __u8 crush_rule);
-int rados_create_pool_with_all(rados_cluster_t cluster, const char *name, uint64_t auid,
+int rados_pool_create(rados_t cluster, const char *name);
+int rados_pool_create_with_auid(rados_t cluster, const char *name, uint64_t auid);
+int rados_pool_create_with_crush_rule(rados_t cluster, const char *name, __u8 crush_rule);
+int rados_pool_create_with_all(rados_t cluster, const char *name, uint64_t auid,
                               __u8 crush_rule);
-int rados_delete_pool(rados_pool_t pool);
-int rados_change_pool_auid(rados_pool_t pool, uint64_t auid);
+int rados_pool_delete(rados_pool_t pool);
+int rados_pool_set_auid(rados_pool_t pool, uint64_t auid);
 
 /* objects */
-int rados_list_objects_open(rados_pool_t pool, rados_list_ctx_t *ctx);
-int rados_list_objects_next(rados_list_ctx_t ctx, const char **entry);
-void rados_list_objects_close(rados_list_ctx_t ctx);
+int rados_objects_list_open(rados_pool_t pool, rados_list_ctx_t *ctx);
+int rados_object_list_next(rados_list_ctx_t ctx, const char **entry);
+void rados_objects_list_close(rados_list_ctx_t ctx);
 
 
 /* snapshots */
-int rados_snap_create(rados_pool_t pool, const char *snapname);
-int rados_snap_remove(rados_pool_t pool, const char *snapname);
-int rados_snap_rollback_object(rados_pool_t pool, const char *oid,
+int rados_pool_snap_create(rados_pool_t pool, const char *snapname);
+int rados_pool_snap_remove(rados_pool_t pool, const char *snapname);
+int rados_pool_snap_rollback_object(rados_pool_t pool, const char *oid,
                          const char *snapname);
-int rados_selfmanaged_snap_create(rados_pool_t pool, uint64_t *snapid);
-int rados_selfmanaged_snap_remove(rados_pool_t pool, uint64_t snapid);
-int rados_snap_list(rados_pool_t pool, rados_snap_t *snaps, int maxlen);
-int rados_snap_lookup(rados_pool_t pool, const char *name, rados_snap_t *id);
-int rados_snap_get_name(rados_pool_t pool, rados_snap_t id, char *name, int maxlen);
+int rados_pool_selfmanaged_snap_create(rados_pool_t pool, uint64_t *snapid);
+int rados_pool_selfmanaged_snap_remove(rados_pool_t pool, uint64_t snapid);
+int rados_pool_snap_list(rados_pool_t pool, rados_snap_t *snaps, int maxlen);
+int rados_pool_snap_lookup(rados_pool_t pool, const char *name, rados_snap_t *id);
+int rados_pool_snap_get_name(rados_pool_t pool, rados_snap_t id, char *name, int maxlen);
 
 /* sync io */
 uint64_t rados_get_last_version(rados_pool_t pool);
index 2b229761702c75abdf5bdbd44ca9853ca4ff5775..0a12881a641f0f5d45b8e1da7038e22d1a437c6b 100644 (file)
@@ -68,7 +68,7 @@ int main(int argc, const char **argv)
 
   if (opt_version) {
     int maj, min, ext;
-    librados_version(&maj, &min, &ext);
+    rados_version(&maj, &min, &ext);
     cout << maj << "." << min << "." << ext << std::endl;
   } else if (opt_vernum) {
     cout << hex << LIBRADOS_VERSION_CODE << dec << std::endl;
index df47833aa91654538c080075fbe24ee9e9160aed..1f46f48a700eed6e3c66604fdc599f1e3fbcf386 100644 (file)
@@ -1834,7 +1834,7 @@ void Rados::shutdown()
 
 void Rados::version(int *major, int *minor, int *extra)
 {
-  librados_version(major, minor, extra);
+  rados_version(major, minor, extra);
 }
 
 int Rados::list_pools(std::list<string>& v)
@@ -2345,51 +2345,44 @@ void Rados::set_notify_timeout(pool_t pool, uint32_t timeout)
 
 // ---------------------------------------------
 
-static void __rados_init(int argc, const char *argv[])
-{
-  vector<const char*> args;
-
-  if (argc && argv) {
-    argv_to_vec(argc, argv, args);
-    env_to_vec(args);
-  }
-  common_set_defaults(false);
-  common_init(args, "librados", STARTUP_FLAG_INIT_KEYS);
-}
-
 static Mutex rados_init_mutex("rados_init");
 static int rados_initialized = 0;
 
-extern "C" int rados_initialize(int argc, const char **argv, rados_cluster_t *pcluster) 
+extern "C" int rados_init(rados_t *pcluster) 
 {
   int ret = 0;
 
   rados_init_mutex.Lock();
-
   if (!rados_initialized) {
-    __rados_init(argc, argv);
-   ++rados_initialized;
+    // parse environment
+    vector<const char*> args;
+    env_to_vec(args);
+
+    common_set_defaults(false);
+    common_init(args, "librados", STARTUP_FLAG_INIT_KEYS);
+
+    ++rados_initialized;
   }
-  
+  rados_init_mutex.Unlock();
+
   RadosClient *radosp = new RadosClient;
   ret = radosp->init();
-  if (ret < 0)
-    goto done;
-  *pcluster = (void *)radosp;
-
-done:
-  rados_init_mutex.Unlock();
+  if (ret < 0) {
+    delete radosp;
+  } else {
+    *pcluster = (void *)radosp;
+  }
   return ret;
 }
 
-extern "C" void rados_deinitialize(rados_cluster_t cluster)
+extern "C" void rados_release(rados_t cluster)
 {
   RadosClient *radosp = (RadosClient *)cluster;
   radosp->shutdown();
   delete radosp;
 }
 
-extern "C" void librados_version(int *major, int *minor, int *extra)
+extern "C" void rados_version(int *major, int *minor, int *extra)
 {
   if (major)
     *major = LIBRADOS_VER_MAJOR;
@@ -2399,13 +2392,43 @@ extern "C" void librados_version(int *major, int *minor, int *extra)
     *extra = LIBRADOS_VER_EXTRA;
 }
 
-extern "C" int rados_lookup_pool(rados_cluster_t cluster, const char *name)
+
+// -- config --
+extern "C" int rados_conf_parse_argv(rados_t cluster, int argc, const char **argv)
+{
+  vector<const char*> args;
+
+  argv_to_vec(argc, argv, args);
+  common_init(args, "librados", STARTUP_FLAG_INIT_KEYS);
+
+  return 0;
+}
+
+
+extern "C" int rados_conf_read_file(rados_t cluster, const char *path)
+{
+  return 0;
+}
+
+extern "C" int rados_conf_set(rados_t cluster, const char *option, const char *value)
+{
+  return 0;
+}
+
+extern "C" const char *rados_conf_get(rados_t cluster, const char *option)
+{
+  return 0;
+}
+
+
+
+extern "C" int rados_lookup_pool(rados_t cluster, const char *name)
 {
   RadosClient *radosp = (RadosClient *)cluster;
   return radosp->lookup_pool(name);
 }
 
-extern "C" int rados_open_pool(rados_cluster_t cluster, const char *name, rados_pool_t *pool)
+extern "C" int rados_open_pool(rados_t cluster, const char *name, rados_pool_t *pool)
 {
   RadosClient *radosp = (RadosClient *)cluster;
   int poolid = radosp->lookup_pool(name);
@@ -2532,21 +2555,21 @@ extern "C" uint64_t rados_get_last_version(rados_pool_t pool)
   return ver.version;
 }
 
-extern "C" int rados_create_pool(rados_cluster_t cluster, const char *name)
+extern "C" int rados_create_pool(rados_t cluster, const char *name)
 {
   RadosClient *radosp = (RadosClient *)cluster;
   string sname(name);
   return radosp->create_pool(sname);
 }
 
-extern "C" int rados_create_pool_with_auid(rados_cluster_t cluster, const char *name, uint64_t auid)
+extern "C" int rados_create_pool_with_auid(rados_t cluster, const char *name, uint64_t auid)
 {
   RadosClient *radosp = (RadosClient *)cluster;
   string sname(name);
   return radosp->create_pool(sname, auid);
 }
 
-extern "C" int rados_create_pool_with_crush_rule(rados_cluster_t cluster, const char *name,
+extern "C" int rados_create_pool_with_crush_rule(rados_t cluster, const char *name,
                                                 __u8 crush_rule)
 {
   RadosClient *radosp = (RadosClient *)cluster;
@@ -2554,7 +2577,7 @@ extern "C" int rados_create_pool_with_crush_rule(rados_cluster_t cluster, const
   return radosp->create_pool(sname, 0, crush_rule);
 }
 
-extern "C" int rados_create_pool_with_all(rados_cluster_t cluster, const char *name, uint64_t auid,
+extern "C" int rados_create_pool_with_all(rados_t cluster, const char *name, uint64_t auid,
                                          __u8 crush_rule)
 {
   RadosClient *radosp = (RadosClient *)cluster;
index 01d06023af36da07effe7272723c023e13908082..5259b24e3ee848c23a1b836d083ed6553d12d9d6 100644 (file)
 int main(int argc, const char **argv) 
 {
   int i, r;
+  rados_t cl;
 
-  if (rados_initialize(argc, argv) < 0) {
+  if (rados_init(&cl) < 0) {
     printf("error initializing\n");
     exit(1);
   }
 
+  rados_conf_parse_argv(cl, argc, argv);
+
   /* create a pool */
   r = rados_create_pool("foo");
   printf("rados_create_pool = %d\n", r);