From: Bassam Tabbara Date: Mon, 21 Nov 2016 04:14:04 +0000 (-0800) Subject: embedded: add RGW to libcephd X-Git-Tag: v12.0.0~179^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cf8c782f6cdbf27c916861daf7be942740d62744;p=ceph.git embedded: add RGW to libcephd added RGW and rgw-admin to libcephd. Signed-off-by: Bassam Tabbara --- diff --git a/src/include/cephd/libcephd.h b/src/include/cephd/libcephd.h index 5538c058ad15..0ec6bb7694b1 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 0eb06371f2a0..c2805ea75309 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 1139b5eb5db1..c653879d6c91 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 2ba6267326e4..cd8a8f519315 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 594fdc62f43b..325de4f58884 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 4c4685ec1434..88be22651f10 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.