]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RESTful implementation to dump regionmap implementation
authorBabu Shanmugam <anbu@enovance.com>
Fri, 28 Jun 2013 13:10:52 +0000 (18:40 +0530)
committerYehuda Sadeh <yehuda@inktank.com>
Tue, 2 Jul 2013 19:39:12 +0000 (12:39 -0700)
Signed-off-by: Babu Shanmugam <anbu@enovance.com>
src/Makefile.am
src/rgw/rgw_main.cc
src/rgw/rgw_rest_config.cc [new file with mode: 0644]
src/rgw/rgw_rest_config.h [new file with mode: 0644]

index ffb416c35821215e820d85aa2b73a4dfc330c4d2..8f25a3517282707c3c358c79b6233a264cbde2dd 100644 (file)
@@ -426,6 +426,7 @@ radosgw_SOURCES = \
         rgw/rgw_rest_log.cc \
         rgw/rgw_rest_opstate.cc \
         rgw/rgw_rest_replica_log.cc \
+        rgw/rgw_rest_config.cc \
         rgw/rgw_http_client.cc \
         rgw/rgw_swift.cc \
        rgw/rgw_swift_auth.cc \
@@ -2158,6 +2159,7 @@ noinst_HEADERS = \
        rgw/rgw_rest_log.h\
        rgw/rgw_rest_opstate.h\
        rgw/rgw_rest_replica_log.h\
+       rgw/rgw_rest_config.h\
        rgw/rgw_usage.h\
        rgw/rgw_user.h\
        rgw/rgw_bucket.h\
index 289a269e5a4de09383d0fa8923be0fd71d52fa9e..c1f48579f9a883e703208c338ba5d655ad273f91 100644 (file)
@@ -45,6 +45,7 @@
 #include "rgw_rest_opstate.h"
 #include "rgw_replica_log.h"
 #include "rgw_rest_replica_log.h"
+#include "rgw_rest_config.h"
 #include "rgw_swift_auth.h"
 #include "rgw_swift.h"
 #include "rgw_log.h"
@@ -511,6 +512,7 @@ int main(int argc, const char **argv)
     admin_resource->register_resource("log", new RGWRESTMgr_Log);
     admin_resource->register_resource("opstate", new RGWRESTMgr_Opstate);
     admin_resource->register_resource("replica_log", new RGWRESTMgr_ReplicaLog);
+    admin_resource->register_resource("config", new RGWRESTMgr_Config);
     rest.register_resource(g_conf->rgw_admin_entry, admin_resource);
   }
 
diff --git a/src/rgw/rgw_rest_config.cc b/src/rgw/rgw_rest_config.cc
new file mode 100644 (file)
index 0000000..27cc989
--- /dev/null
@@ -0,0 +1,47 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation. See file COPYING.
+ *
+ */
+#include "common/ceph_json.h"
+#include "common/strtol.h"
+#include "rgw_rest.h"
+#include "rgw_op.h"
+#include "rgw_rados.h"
+#include "rgw_rest_s3.h"
+#include "rgw_rest_config.h"
+#include "rgw_client_io.h"
+#include "common/errno.h"
+
+#define dout_subsys ceph_subsys_rgw
+
+void RGWOp_RegionMap_Get::execute() {
+  http_ret = regionmap.read(g_ceph_context, store);
+  if (http_ret < 0) {
+    dout(5) << "failed to read region map" << dendl;
+  }
+}
+
+void RGWOp_RegionMap_Get::send_response() {
+  set_req_state_err(s, http_ret);
+  dump_errno(s);
+  end_header(s);
+
+  if (http_ret < 0)
+    return;
+  
+  encode_json("region-map", regionmap, s->formatter);
+  flusher.flush(); 
+}
+
+RGWOp* RGWHandler_Config::op_get() {
+  return new RGWOp_RegionMap_Get;
+}
diff --git a/src/rgw/rgw_rest_config.h b/src/rgw/rgw_rest_config.h
new file mode 100644 (file)
index 0000000..cb1712a
--- /dev/null
@@ -0,0 +1,55 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation. See file COPYING.
+ *
+ */
+#ifndef CEPH_RGW_REST_CONFIG_H
+#define CEPH_RGW_REST_CONFIG_H
+
+class RGWOp_RegionMap_Get : public RGWRESTOp {
+  RGWRegionMap regionmap;
+public:
+  RGWOp_RegionMap_Get() {}
+  ~RGWOp_RegionMap_Get() {}
+
+  int verify_permission() {
+    return 0; 
+  }
+  void execute();
+  virtual void send_response();
+  virtual const char *name() {
+    return "get_region_map";
+  }
+};
+
+class RGWHandler_Config : public RGWHandler_Auth_S3 {
+protected:
+  RGWOp *op_get();
+
+  int read_permissions(RGWOp*) {
+    return 0;
+  }
+public:
+  RGWHandler_Config() : RGWHandler_Auth_S3() {}
+  virtual ~RGWHandler_Config() {}
+};
+
+class RGWRESTMgr_Config : public RGWRESTMgr {
+public:
+  RGWRESTMgr_Config() {}
+  virtual ~RGWRESTMgr_Config() {}
+
+  virtual RGWHandler *get_handler(struct req_state *s){
+    return new RGWHandler_Config;
+  }
+};
+
+#endif