]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw,cmake: add option "WITH_RADOSGW_AMQP_ENDPOINT"
authorKefu Chai <kchai@redhat.com>
Thu, 21 Feb 2019 07:59:23 +0000 (15:59 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 21 Feb 2019 12:36:43 +0000 (20:36 +0800)
WITH_RADOSGW_AMQP_ENDPOINT is enabled by default.

Signed-off-by: Kefu Chai <kchai@redhat.com>
CMakeLists.txt
src/include/config-h.in.cmake
src/rgw/CMakeLists.txt
src/rgw/rgw_pubsub_push.cc
src/test/rgw/CMakeLists.txt

index 78dcfebb9be790f267b56772b36fa62435053c54..266dbb07e4fb90564bbfe073e02c9de2976c502c 100644 (file)
@@ -435,6 +435,7 @@ option(WITH_RADOSGW "Rados Gateway is enabled" ON)
 option(WITH_RADOSGW_FCGI_FRONTEND "Rados Gateway's FCGI frontend is enabled" OFF)
 option(WITH_RADOSGW_BEAST_FRONTEND "Rados Gateway's Beast frontend is enabled" ON)
 option(WITH_RADOSGW_BEAST_OPENSSL "Rados Gateway's Beast frontend uses OpenSSL" ON)
+option(WITH_RADOSGW_AMQP_ENDPOINT "Rados Gateway's pubsub support for AMQP push endpoint" ON)
 
 if(WITH_RADOSGW)
   find_package(EXPAT REQUIRED)
index cfbc80240cd6a980d55a86b15a9e5ad2fb9143c4..c5ee1e9a4fb5312a94e95a3b083f5fbbdb4dfed7 100644 (file)
 /* Defined if OpenSSL is available for the rgw beast frontend */
 #cmakedefine WITH_RADOSGW_BEAST_OPENSSL
 
+/* Defined if rabbitmq-c is available for rgw amqp push endpoint */
+#cmakedefine WITH_RADOSGW_AMQP_ENDPOINT
+
 /* Defined if std::map::merge() is supported */
 #cmakedefine HAVE_STDLIB_MAP_SPLICING
 
index c16caad4bd1068b5909a12e082e575afdfca8d5a..954836f09d25dcd1a9562a1ae85e043b1957704d 100644 (file)
@@ -90,7 +90,6 @@ set(librgw_common_srcs
   rgw_sync_module_log.cc
   rgw_sync_module_pubsub.cc
   rgw_pubsub_push.cc
-  rgw_amqp.cc
   rgw_sync_module_pubsub_rest.cc
   rgw_sync_log_trim.cc
   rgw_sync_trace.cc
@@ -137,6 +136,10 @@ set(librgw_common_srcs
   rgw_rest_sts.cc
   rgw_perf_counters.cc)
 
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  list(APPEND librgw_common_srcs rgw_amqp.cc)
+endif()
+
 add_library(rgw_common OBJECT ${librgw_common_srcs})
 
 target_include_directories(rgw_common SYSTEM PUBLIC "services")
@@ -194,7 +197,10 @@ add_dependencies(rgw_a civetweb_h)
 
 target_include_directories(rgw_a SYSTEM PUBLIC "../rapidjson/include")
 
-find_package(RabbitMQ REQUIRED)
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  find_package(RabbitMQ REQUIRED)
+endif()
+
 target_link_libraries(rgw_a
   PUBLIC dmclock::dmclock
   PRIVATE
@@ -233,11 +239,15 @@ endif()
 
 add_library(radosgw_a STATIC ${radosgw_srcs}
   $<TARGET_OBJECTS:civetweb_common_objs>)
-target_link_libraries(radosgw_a PRIVATE rgw_a RabbitMQ::RabbitMQ)
+target_link_libraries(radosgw_a PRIVATE rgw_a)
 if(WITH_RADOSGW_BEAST_FRONTEND AND WITH_RADOSGW_BEAST_OPENSSL)
   # used by rgw_asio_frontend.cc
   target_link_libraries(radosgw_a PRIVATE OpenSSL::SSL)
 endif()
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  # used by rgw_amqp.cc
+  target_link_libraries(radosgw_a PRIVATE RabbitMQ::RabbitMQ)
+endif()
 
 add_executable(radosgw rgw_main.cc)
 target_link_libraries(radosgw radosgw_a librados
@@ -259,7 +269,10 @@ target_link_libraries(radosgw-admin rgw_a librados
   cls_log_client cls_timeindex_client
   cls_version_client cls_user_client
   global ${FCGI_LIBRARY} ${LIB_RESOLV}
-  ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} RabbitMQ::RabbitMQ)
+  ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES})
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  target_link_libraries(radosgw-admin RabbitMQ::RabbitMQ)
+endif()
 install(TARGETS radosgw-admin DESTINATION bin)
 
 set(radosgw_es_srcs
@@ -270,7 +283,10 @@ target_link_libraries(radosgw-es rgw_a librados
   cls_log_client cls_timeindex_client
   cls_version_client cls_user_client
   global ${FCGI_LIBRARY} ${LIB_RESOLV}
-  ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} RabbitMQ::RabbitMQ)
+  ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES})
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  target_link_libraries(radosgw-es RabbitMQ::RabbitMQ)
+endif()
 install(TARGETS radosgw-es DESTINATION bin)
 
 set(radosgw_token_srcs
@@ -288,7 +304,10 @@ target_link_libraries(radosgw-object-expirer rgw_a librados
   cls_log_client cls_timeindex_client
   cls_version_client cls_user_client
   global ${FCGI_LIBRARY} ${LIB_RESOLV}
-  ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} RabbitMQ::RabbitMQ)
+  ${CURL_LIBRARIES} ${EXPAT_LIBRARIES})
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  target_link_libraries(radosgw-object-expirer RabbitMQ::RabbitMQ)
+endif()
 install(TARGETS radosgw-object-expirer DESTINATION bin)
 
 set(librgw_srcs
@@ -311,8 +330,10 @@ target_link_libraries(rgw
   global
   ${LIB_RESOLV}
   ${CURL_LIBRARIES}
-  ${EXPAT_LIBRARIES}
-  RabbitMQ::RabbitMQ)
+  ${EXPAT_LIBRARIES})
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  target_link_libraries(rgw PRIVATE RabbitMQ::RabbitMQ)
+endif()
 set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0
   SOVERSION 2)
 install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR})
@@ -341,11 +362,13 @@ target_link_libraries(rgw_admin_user PRIVATE
   ${CURL_LIBRARIES}
   ${EXPAT_LIBRARIES}
   ${OPENLDAP_LIBRARIES}
-  dmclock::dmclock
-  RabbitMQ::RabbitMQ)
+  dmclock::dmclock)
 set_target_properties(rgw_admin_user PROPERTIES OUTPUT_NAME rgw_admin_user VERSION 1.0.0
   SOVERSION 0)
 install(TARGETS rgw_admin_user DESTINATION ${CMAKE_INSTALL_LIBDIR})
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  target_link_libraries(rgw_admin_user PRIVATE RabbitMQ::RabbitMQ)
+endif()
 if(WITH_BOOST_CONTEXT)
   target_link_libraries(rgw_admin_user PRIVATE Boost::coroutine Boost::context)
 endif()
index 0d879e724c049a9a420d2ddb1f71bc79dd01e6c3..efc1823e748488bc225b224aa70e764a8063e4c6 100644 (file)
 #include "rgw_common.h"
 #include "rgw_data_sync.h"
 #include "rgw_pubsub.h"
+#include "acconfig.h"
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
 #include "rgw_amqp.h"
+#endif
 #include <boost/asio/yield.hpp>
 #include <boost/algorithm/string.hpp>
 #include <functional>
@@ -128,6 +131,7 @@ public:
   }
 };
 
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
 class RGWPubSubAMQPEndpoint : public RGWPubSubEndpoint {
   private:
     enum ack_level_t {
@@ -286,6 +290,7 @@ class RGWPubSubAMQPEndpoint : public RGWPubSubEndpoint {
 
 static const std::string AMQP_0_9_1("0-9-1");
 static const std::string AMQP_1_0("1-0");
+#endif // ifdef WITH_RADOSGW_AMQP_ENDPOINT
 
 RGWPubSubEndpoint::Ptr RGWPubSubEndpoint::create(const std::string& endpoint, 
     const std::string& topic, 
@@ -299,6 +304,7 @@ RGWPubSubEndpoint::Ptr RGWPubSubEndpoint::create(const std::string& endpoint,
   const auto& schema = endpoint.substr(0,pos);
   if (schema == "http" || schema == "https") {
     return Ptr(new RGWPubSubHTTPEndpoint(endpoint, args));
+#ifdef WITH_RADOSGW_AMQP_ENDPOINT
   } else if (schema == "amqp") {
     bool exists;
     std::string version = args.get("amqp-version", &exists);
@@ -317,6 +323,7 @@ RGWPubSubEndpoint::Ptr RGWPubSubEndpoint::create(const std::string& endpoint,
   } else if (schema == "amqps") {
     throw configuration_error("amqps not supported");
     return nullptr;
+#endif
   }
 
   throw configuration_error("unknown schema " + schema);
index 2b578149d01a64dadb7aba0261911c73ffc5cbd1..33a2607531a1f1654b4e7f4c9de5ce89949e861e 100644 (file)
@@ -1,7 +1,10 @@
-# amqp mock library
-set(amqp_mock_src
-  amqp_mock.cc amqp_url.c)
-add_library(amqp_mock STATIC ${amqp_mock_src})
+
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  # amqp mock library
+  set(amqp_mock_src
+    amqp_mock.cc amqp_url.c)
+  add_library(amqp_mock STATIC ${amqp_mock_src})
+endif()
 
 #unittest_rgw_bencode
 add_executable(unittest_rgw_bencode test_rgw_bencode.cc)
@@ -143,9 +146,8 @@ if(WITH_BOOST_CONTEXT)
   target_link_libraries(unittest_rgw_dmclock_scheduler Boost::coroutine Boost::context)
 endif()
 
-# unittest_rgw_amqp
-add_executable(unittest_rgw_amqp test_rgw_amqp.cc)
-add_ceph_unittest(unittest_rgw_amqp)
-
-target_link_libraries(unittest_rgw_amqp rgw_a amqp_mock)
-
+if(WITH_RADOSGW_AMQP_ENDPOINT)
+  add_executable(unittest_rgw_amqp test_rgw_amqp.cc)
+  add_ceph_unittest(unittest_rgw_amqp)
+  target_link_libraries(unittest_rgw_amqp rgw_a amqp_mock)
+endif()