#include "common/safe_io.h"
#include "include/compat.h"
#include "include/str_list.h"
+#include "include/stringify.h"
#include "rgw_common.h"
#include "rgw_rados.h"
#include "rgw_user.h"
register_async_signal_handler(SIGUSR1, handle_sigterm);
sighandler_alrm = signal(SIGALRM, godown_alarm);
+ map<string, string> service_map_meta;
+ service_map_meta["pid"] = stringify(getpid());
+
list<RGWFrontend *> fes;
+ int fe_count = 0;
+
for (multimap<string, RGWFrontendConfig *>::iterator fiter = fe_map.begin();
- fiter != fe_map.end(); ++fiter) {
+ fiter != fe_map.end(); ++fiter, ++fe_count) {
RGWFrontendConfig *config = fiter->second;
string framework = config->get_framework();
RGWFrontend *fe = NULL;
if (framework == "civetweb" || framework == "mongoose") {
+ framework = "civetweb";
std::string uri_prefix;
config->get_val("prefix", "", &uri_prefix);
#endif /* WITH_RADOSGW_BEAST_FRONTEND */
#if defined(WITH_RADOSGW_FCGI_FRONTEND)
else if (framework == "fastcgi" || framework == "fcgi") {
+ framework = "fastcgi";
std::string uri_prefix;
config->get_val("prefix", "", &uri_prefix);
RGWProcessEnv fcgi_pe = { store, &rest, olog, 0, uri_prefix, auth_registry };
}
#endif /* WITH_RADOSGW_FCGI_FRONTEND */
+ service_map_meta["frontend_type#" + stringify(fe_count)] = framework;
+ service_map_meta["frontend_config#" + stringify(fe_count)] = config->get_config();
+
if (fe == NULL) {
dout(0) << "WARNING: skipping unknown framework: " << framework << dendl;
continue;
fes.push_back(fe);
}
+ r = store->register_to_service_map("rgw", service_map_meta);
+ if (r < 0) {
+ derr << "ERROR: failed to register to service map: " << cpp_strerror(-r) << dendl;
+
+ /* ignore error */
+ }
+
+
// add a watcher to respond to realm configuration changes
RGWPeriodPusher pusher(store);
RGWFrontendPauser pauser(fes, &pusher);
- RGWRealmReloader reloader(store, &pauser);
+ RGWRealmReloader reloader(store, service_map_meta, &pauser);
preloader = &reloader;