From cf8c782f6cdbf27c916861daf7be942740d62744 Mon Sep 17 00:00:00 2001 From: Bassam Tabbara Date: Sun, 20 Nov 2016 20:14:04 -0800 Subject: [PATCH] embedded: add RGW to libcephd added RGW and rgw-admin to libcephd. Signed-off-by: Bassam Tabbara --- src/include/cephd/libcephd.h | 18 ++++++++++++++++++ src/libcephd/CMakeLists.txt | 1 + src/libcephd/libcephd.cc | 13 +++++++++++++ src/rgw/CMakeLists.txt | 19 +++++++++++++++---- src/rgw/rgw_admin.cc | 6 +++++- src/rgw/rgw_main.cc | 8 ++++++-- 6 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/include/cephd/libcephd.h b/src/include/cephd/libcephd.h index 5538c058ad15d..0ec6bb7694b17 100644 --- a/src/include/cephd/libcephd.h +++ b/src/include/cephd/libcephd.h @@ -85,6 +85,24 @@ CEPH_LIBCEPHD_API int cephd_run_osd(int argc, const char **argv); */ CEPH_LIBCEPHD_API int cephd_run_mds(int argc, const char **argv); +/** + * Runs ceph-rgw passing in command line args + * + * @param argc number of parameters + * @param argv array of string arguments + * @returns 0 on success, negative error code on failure + */ +CEPH_LIBCEPHD_API int cephd_run_rgw(int argc, const char **argv); + +/** + * Runs radosgw-admin passing in command line args + * + * @param argc number of parameters + * @param argv array of string arguments + * @returns 0 on success, negative error code on failure + */ +CEPH_LIBCEPHD_API int cephd_run_rgw_admin(int argc, const char **argv); + #ifdef __cplusplus } #endif diff --git a/src/libcephd/CMakeLists.txt b/src/libcephd/CMakeLists.txt index 0eb06371f2a0f..c2805ea753099 100644 --- a/src/libcephd/CMakeLists.txt +++ b/src/libcephd/CMakeLists.txt @@ -16,6 +16,7 @@ set(merge_libs cephd_cls_kvs cephd_rados cephd_rbd + cephd_rgw cephd_common common_utf8 erasure_code diff --git a/src/libcephd/libcephd.cc b/src/libcephd/libcephd.cc index 1139b5eb5db13..c653879d6c910 100644 --- a/src/libcephd/libcephd.cc +++ b/src/libcephd/libcephd.cc @@ -224,6 +224,8 @@ void cephd_preload_rados_classes(OSD *osd) extern "C" int cephd_mon(int argc, const char **argv); extern "C" int cephd_osd(int argc, const char **argv); extern "C" int cephd_mds(int argc, const char **argv); +extern "C" int cephd_rgw(int argc, const char **argv); +extern "C" int cephd_rgw_admin(int argc, const char **argv); int cephd_run_mon(int argc, const char **argv) { @@ -239,3 +241,14 @@ int cephd_run_mds(int argc, const char **argv) { return cephd_mds(argc, argv); } + + +int cephd_run_rgw(int argc, const char **argv) +{ + return cephd_rgw(argc, argv); +} + +int cephd_run_rgw_admin(int argc, const char **argv) +{ + return cephd_rgw_admin(argc, argv); +} diff --git a/src/rgw/CMakeLists.txt b/src/rgw/CMakeLists.txt index 2ba6267326e47..cd8a8f5193157 100644 --- a/src/rgw/CMakeLists.txt +++ b/src/rgw/CMakeLists.txt @@ -121,8 +121,7 @@ set(radosgw_srcs rgw_loadgen_process.cc rgw_civetweb.cc rgw_civetweb_frontend.cc - rgw_civetweb_log.cc - rgw_main.cc) + rgw_civetweb_log.cc) if (WITH_RADOSGW_ASIO_FRONTEND) list(APPEND radosgw_srcs @@ -130,8 +129,12 @@ if (WITH_RADOSGW_ASIO_FRONTEND) rgw_asio_frontend.cc) endif (WITH_RADOSGW_ASIO_FRONTEND) -add_executable(radosgw ${radosgw_srcs} $) -target_link_libraries(radosgw rgw_a librados +add_library(radosgw_a STATIC ${radosgw_srcs} + $) +target_link_libraries(radosgw_a rgw_a) + +add_executable(radosgw rgw_main.cc) +target_link_libraries(radosgw radosgw_a librados cls_rgw_client cls_lock_client cls_refcount_client cls_log_client cls_statelog_client cls_timeindex_client cls_version_client cls_replica_log_client cls_user_client @@ -197,3 +200,11 @@ target_link_libraries(rgw LINK_PRIVATE set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0 SOVERSION 2) install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if(WITH_EMBEDDED) + include(MergeStaticLibraries) + add_library(cephd_rgw_base STATIC rgw_main.cc ${radosgw_admin_srcs}) + set_target_properties(cephd_rgw_base PROPERTIES COMPILE_DEFINITIONS BUILDING_FOR_EMBEDDED) + merge_static_libraries(cephd_rgw cephd_rgw_base rgw_a radosgw_a) + target_link_libraries(cephd_rgw fcgi) +endif() diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 594fdc62f43bc..325de4f588849 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -2238,7 +2238,11 @@ public: } }; -int main(int argc, char **argv) +#ifdef BUILDING_FOR_EMBEDDED +extern "C" int cephd_rgw_admin(int argc, const char **argv) +#else +int main(int argc, const char **argv) +#endif { vector args; argv_to_vec(argc, (const char **)argv, args); diff --git a/src/rgw/rgw_main.cc b/src/rgw/rgw_main.cc index 4c4685ec1434b..88be22651f101 100644 --- a/src/rgw/rgw_main.cc +++ b/src/rgw/rgw_main.cc @@ -96,7 +96,7 @@ static void wait_shutdown() } } -int signal_fd_init() +static int signal_fd_init() { return socketpair(AF_UNIX, SOCK_STREAM, 0, signal_fd); } @@ -153,7 +153,7 @@ public: } }; -int usage() +static int usage() { cerr << "usage: radosgw [options...]" << std::endl; cerr << "options:\n"; @@ -190,7 +190,11 @@ static void reloader_handler(int signum) /* * start up the RADOS connection and then handle HTTP messages as they come in */ +#ifdef BUILDING_FOR_EMBEDDED +extern "C" int cephd_rgw(int argc, const char **argv) +#else int main(int argc, const char **argv) +#endif { // dout() messages will be sent to stderr, but FCGX wants messages on stdout // Redirect stderr to stdout. -- 2.39.5