]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librgw: s/rgw_rest_lib.{h,cc}/rgw_os_lib.{h,cc}
authorMatt Benjamin <mbenjamin@redhat.com>
Wed, 7 Oct 2015 17:50:26 +0000 (13:50 -0400)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 12 Feb 2016 17:04:52 +0000 (12:04 -0500)
There is no longer an explicit (e.g., inherited) dependency on REST
implementations.

The remaining coupling (via RGWLibEnv, and struct req_state), can
be factored out later.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/CMakeLists.txt
src/rgw/Makefile.am
src/rgw/librgw.cc
src/rgw/rgw_file.cc
src/rgw/rgw_os_lib.cc [new file with mode: 0644]
src/rgw/rgw_os_lib.h [new file with mode: 0644]
src/rgw/rgw_rest_lib.cc [deleted file]
src/rgw/rgw_rest_lib.h [deleted file]

index 0e2b02ee4d5b7162878bb9fd5fcc587f7b2dcc07..d7486bd596ed8e086262cc9c99099c368379edb9 100644 (file)
@@ -1158,6 +1158,7 @@ if(${WITH_RADOSGW})
     rgw/rgw_multi_del.cc
     rgw/rgw_object_expirer_core.cc
     rgw/rgw_op.cc
+    rgw/rgw_os_lib.cc
     rgw/rgw_policy_s3.cc
     rgw/rgw_process.cc
     rgw/rgw_quota.cc
@@ -1170,7 +1171,6 @@ if(${WITH_RADOSGW})
     rgw/rgw_rest_client.cc
     rgw/rgw_rest_config.cc
     rgw/rgw_rest_conn.cc
-    rgw/rgw_rest_lib.cc
     rgw/rgw_rest_log.cc
     rgw/rgw_rest_metadata.cc
     rgw/rgw_rest_opstate.cc
index 494483b2974963bd59a95f92cdca199761da8c8f..8a04cfa648e3c0a8794193f2d21e67c68317b8c1 100644 (file)
@@ -54,6 +54,7 @@ librgw_la_SOURCES =  \
        rgw/rgw_frontend.cc \
        rgw/rgw_object_expirer_core.cc \
        rgw/rgw_website.cc
+       rgw/rgw_os_lib.cc
 
 librgw_la_CXXFLAGS = -Woverloaded-virtual ${AM_CXXFLAGS}
 noinst_LTLIBRARIES += librgw.la
@@ -105,7 +106,7 @@ radosgw_SOURCES = \
        rgw/rgw_swift.cc \
        rgw/rgw_swift_auth.cc \
        rgw/rgw_loadgen.cc \
-       rgw/rgw_rest_lib.cc \
+       rgw/rgw_os_lib.cc \
        rgw/rgw_main.cc
 radosgw_CFLAGS = -I$(srcdir)/civetweb/include
 radosgw_LDADD = $(LIBRGW) $(LIBCIVETWEB) $(LIBRGW_DEPS) $(RESOLV_LIBS) $(CEPH_GLOBAL)
index 4c861c7a1922da629247501358467ae3b13dec4c..6905672619de860ae29dde867751c1d86efc1cb8 100644 (file)
@@ -40,7 +40,7 @@
 #include "rgw_process.h"
 #include "rgw_rest_user.h"
 #include "rgw_rest_s3.h"
-#include "rgw_rest_lib.h"
+#include "rgw_os_lib.h"
 #include "rgw_auth_s3.h"
 #include "rgw_lib.h"
 
index 025d2ba420dca683dd47555ba886fb5d2a89a0be..41878125d91c57c27ec9a38e07dad53660a37e06 100644 (file)
@@ -15,7 +15,7 @@
 #include "rgw_process.h"
 #include "rgw_rest_user.h"
 #include "rgw_rest_s3.h"
-#include "rgw_rest_lib.h"
+#include "rgw_os_lib.h"
 #include "rgw_auth_s3.h"
 #include "rgw_user.h"
 #include "rgw_bucket.h"
diff --git a/src/rgw/rgw_os_lib.cc b/src/rgw/rgw_os_lib.cc
new file mode 100644 (file)
index 0000000..35b7328
--- /dev/null
@@ -0,0 +1,123 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "rgw_rest.h"
+#include "rgw_rest_s3.h"
+#include "rgw_rest_user.h"
+#include "rgw_os_lib.h"
+#include "rgw_file.h"
+
+
+/* static */
+int RGWHandler_Lib::init_from_header(struct req_state *s)
+{
+  string req;
+  string first;
+
+  const char *req_name = s->relative_uri.c_str();
+  const char *p;
+
+  /* skip request_params parsing, rgw_file should not be
+   * seeing any */
+  if (*req_name == '?') {
+    p = req_name;
+  } else {
+    p = s->info.request_params.c_str();
+  }
+
+  s->info.args.set(p);
+  s->info.args.parse();
+
+  if (*req_name != '/')
+    return 0;
+
+  req_name++;
+
+  if (!*req_name)
+    return 0;
+
+  req = req_name;
+  int pos = req.find('/');
+  if (pos >= 0) {
+    first = req.substr(0, pos);
+  } else {
+    first = req;
+  }
+
+  if (s->bucket_name.empty()) {
+    s->bucket_name = std::move(first);
+    if (pos >= 0) {
+      // XXX ugh, another copy
+      string encoded_obj_str = req.substr(pos+1);
+      s->object = rgw_obj_key(encoded_obj_str, s->info.args.get("versionId"));
+    }
+  } else {
+    s->object = rgw_obj_key(req_name, s->info.args.get("versionId"));
+  }
+  return 0;
+} /* init_from_header */
+
+/* RGWOps */
+
+void RGWListBuckets_ObjStore_Lib::send_response_begin(bool has_buckets)
+{
+  sent_data = true;
+}
+
+void RGWListBuckets_ObjStore_Lib::send_response_data(RGWUserBuckets& buckets)
+{
+  if (!sent_data)
+    return;
+
+  // XXX if necessary, we can remove the need for dynamic_cast
+  RGWListBucketsRequest* req
+    = dynamic_cast<RGWListBucketsRequest*>(this);
+
+  map<string, RGWBucketEnt>& m = buckets.get_buckets();
+  for (const auto& iter : m) {
+    const std::string& marker = iter.first; // XXX may need later
+    const RGWBucketEnt& ent = iter.second;
+    /* call me maybe */
+    req->operator()(ent.bucket.name, marker); // XXX attributes
+  }
+} /* send_response_data */
+
+void RGWListBuckets_ObjStore_Lib::send_response_end()
+{
+  // do nothing
+}
+
+int RGWListBucket_ObjStore_Lib::get_params()
+{
+  // XXX S3
+  list_versions = s->info.args.exists("versions");
+  prefix = s->info.args.get("prefix");
+  if (!list_versions) {
+    marker = s->info.args.get("marker");
+  } else {
+    marker.name = s->info.args.get("key-marker");
+    marker.instance = s->info.args.get("version-id-marker");
+  }
+  max_keys = s->info.args.get("max-keys");
+  op_ret = parse_max_keys();
+  if (op_ret < 0) {
+    return op_ret;
+  }
+#if 0
+  delimiter = s->info.args.get("delimiter");
+  encoding_type = s->info.args.get("encoding-type");
+#endif
+  return 0;
+}
+
+void RGWListBucket_ObjStore_Lib::send_response()
+{
+  // XXX if necessary, we can remove the need for dynamic_cast
+  RGWListBucketRequest* req
+    = dynamic_cast<RGWListBucketRequest*>(this);
+
+  for (const auto& iter : objs) {
+    /* call me maybe */
+    req->operator()(iter.key.name, iter.key.name); // XXX attributes
+  }
+}
diff --git a/src/rgw/rgw_os_lib.h b/src/rgw/rgw_os_lib.h
new file mode 100644 (file)
index 0000000..639fc99
--- /dev/null
@@ -0,0 +1,54 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef CEPH_RGW_OS_LIB_H
+#define CEPH_RGW_OS_LIB_H
+
+#include <functional>
+#include "rgw_common.h"
+#include "rgw_lib.h"
+
+/* RGWOps */
+
+class RGWListBuckets_ObjStore_Lib : public RGWListBuckets_ObjStore {
+public:
+
+  RGWListBuckets_ObjStore_Lib() {}
+  ~RGWListBuckets_ObjStore_Lib() {}
+
+  virtual void send_response_begin(bool has_buckets);
+  virtual void send_response_data(RGWUserBuckets& buckets);
+  virtual void send_response_end();
+
+  int get_params() {
+    limit = -1; /* no limit */
+    return 0;
+  }
+}; /* RGWListBuckets_ObjStore_Lib */
+
+class RGWListBucket_ObjStore_Lib : public RGWListBucket_ObjStore {
+public:
+  RGWListBucket_ObjStore_Lib() {
+    default_max = 1000;
+  }
+
+  ~RGWListBucket_ObjStore_Lib() {}
+
+  int get_params();
+  virtual void send_response();
+
+  virtual void send_versioned_response() {
+    send_response();
+  }
+}; /* RGWListBucket_ObjStore_Lib */
+
+class RGWStatBucket_ObjStore_Lib : public RGWStatBucket_ObjStore {
+public:
+  RGWStatBucket_ObjStore_Lib() {}
+  ~RGWStatBucket_ObjStore_Lib() {}
+
+  virtual void send_response();
+
+}; /* RGWListBucket_ObjStore_Lib */
+
+#endif /* CEPH_RGW_OS_LIB_H */
diff --git a/src/rgw/rgw_rest_lib.cc b/src/rgw/rgw_rest_lib.cc
deleted file mode 100644 (file)
index 55078bc..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#include "rgw_rest.h"
-#include "rgw_rest_s3.h"
-#include "rgw_rest_user.h"
-#include "rgw_rest_lib.h"
-#include "rgw_file.h"
-
-
-/* static */
-int RGWHandler_Lib::init_from_header(struct req_state *s)
-{
-  string req;
-  string first;
-
-  const char *req_name = s->relative_uri.c_str();
-  const char *p;
-
-  /* skip request_params parsing, rgw_file should not be
-   * seeing any */
-  if (*req_name == '?') {
-    p = req_name;
-  } else {
-    p = s->info.request_params.c_str();
-  }
-
-  s->info.args.set(p);
-  s->info.args.parse();
-
-  if (*req_name != '/')
-    return 0;
-
-  req_name++;
-
-  if (!*req_name)
-    return 0;
-
-  req = req_name;
-  int pos = req.find('/');
-  if (pos >= 0) {
-    first = req.substr(0, pos);
-  } else {
-    first = req;
-  }
-
-  if (s->bucket_name.empty()) {
-    s->bucket_name = std::move(first);
-    if (pos >= 0) {
-      // XXX ugh, another copy
-      string encoded_obj_str = req.substr(pos+1);
-      s->object = rgw_obj_key(encoded_obj_str, s->info.args.get("versionId"));
-    }
-  } else {
-    s->object = rgw_obj_key(req_name, s->info.args.get("versionId"));
-  }
-  return 0;
-} /* init_from_header */
-
-/* RGWOps */
-
-void RGWListBuckets_ObjStore_Lib::send_response_begin(bool has_buckets)
-{
-  sent_data = true;
-}
-
-void RGWListBuckets_ObjStore_Lib::send_response_data(RGWUserBuckets& buckets)
-{
-  if (!sent_data)
-    return;
-
-  // XXX if necessary, we can remove the need for dynamic_cast
-  RGWListBucketsRequest* req
-    = dynamic_cast<RGWListBucketsRequest*>(this);
-
-  map<string, RGWBucketEnt>& m = buckets.get_buckets();
-  for (const auto& iter : m) {
-    const std::string& marker = iter.first; // XXX may need later
-    const RGWBucketEnt& ent = iter.second;
-    /* call me maybe */
-    req->operator()(ent.bucket.name, marker); // XXX attributes
-  }
-} /* send_response_data */
-
-void RGWListBuckets_ObjStore_Lib::send_response_end()
-{
-  // do nothing
-}
-
-int RGWListBucket_ObjStore_Lib::get_params()
-{
-  // XXX S3
-  list_versions = s->info.args.exists("versions");
-  prefix = s->info.args.get("prefix");
-  if (!list_versions) {
-    marker = s->info.args.get("marker");
-  } else {
-    marker.name = s->info.args.get("key-marker");
-    marker.instance = s->info.args.get("version-id-marker");
-  }
-  max_keys = s->info.args.get("max-keys");
-  op_ret = parse_max_keys();
-  if (op_ret < 0) {
-    return op_ret;
-  }
-#if 0
-  delimiter = s->info.args.get("delimiter");
-  encoding_type = s->info.args.get("encoding-type");
-#endif
-  return 0;
-}
-
-void RGWListBucket_ObjStore_Lib::send_response()
-{
-  // XXX if necessary, we can remove the need for dynamic_cast
-  RGWListBucketRequest* req
-    = dynamic_cast<RGWListBucketRequest*>(this);
-
-  for (const auto& iter : objs) {
-    /* call me maybe */
-    req->operator()(iter.key.name, iter.key.name); // XXX attributes
-  }
-}
diff --git a/src/rgw/rgw_rest_lib.h b/src/rgw/rgw_rest_lib.h
deleted file mode 100644 (file)
index 6ea5e72..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#ifndef CEPH_RGW_REST_LIB_H
-#define CEPH_RGW_REST_LIB_H
-
-#include <functional>
-#include "rgw_rest.h"
-#include "rgw_common.h"
-#include "rgw_lib.h"
-
-#warning move to rgw_file...I think...there is no REST here
-
-
-/* RGWOps */
-
-class RGWListBuckets_ObjStore_Lib : public RGWListBuckets_ObjStore {
-public:
-
-  RGWListBuckets_ObjStore_Lib() {}
-  ~RGWListBuckets_ObjStore_Lib() {}
-
-  virtual void send_response_begin(bool has_buckets);
-  virtual void send_response_data(RGWUserBuckets& buckets);
-  virtual void send_response_end();
-
-  int get_params() {
-    limit = -1; /* no limit */
-    return 0;
-  }
-}; /* RGWListBuckets_ObjStore_Lib */
-
-class RGWListBucket_ObjStore_Lib : public RGWListBucket_ObjStore {
-public:
-  RGWListBucket_ObjStore_Lib() {
-    default_max = 1000;
-  }
-
-  ~RGWListBucket_ObjStore_Lib() {}
-
-  int get_params();
-  virtual void send_response();
-
-  virtual void send_versioned_response() {
-    send_response();
-  }
-}; /* RGWListBucket_ObjStore_Lib */
-
-class RGWStatBucket_ObjStore_Lib : public RGWStatBucket_ObjStore {
-public:
-  RGWStatBucket_ObjStore_Lib() {}
-  ~RGWStatBucket_ObjStore_Lib() {}
-
-  virtual void send_response();
-
-}; /* RGWListBucket_ObjStore_Lib */
-
-#endif /* CEPH_RGW_REST_LIB_H */