From: Sage Weil Date: Fri, 19 Mar 2021 12:25:23 +0000 (-0400) Subject: rgw: register daemons in servicemap by gid; include id X-Git-Tag: v17.1.0~2545^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=afc33758e076761b8d4ec004c8f9c49b80a48770;p=ceph.git rgw: register daemons in servicemap by gid; include id Registering by gid allows multiple radosgw instances to share an auth key/identity. Including the id in the metadata allows them to still be identified by name (even if not uniquely). Signed-off-by: Sage Weil --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 25f37cf83050..ca737e8e193b 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -1126,17 +1126,21 @@ int RGWRados::init_rados() int RGWRados::register_to_service_map(const string& daemon_type, const map& meta) { + string name = cct->_conf->name.get_id(); + if (name.compare(0, 4, "rgw.") == 0) { + name = name.substr(4); + } map metadata = meta; metadata["num_handles"] = "1"s; metadata["zonegroup_id"] = svc.zone->get_zonegroup().get_id(); metadata["zonegroup_name"] = svc.zone->get_zonegroup().get_name(); metadata["zone_name"] = svc.zone->zone_name(); metadata["zone_id"] = svc.zone->zone_id().id; - string name = cct->_conf->name.get_id(); - if (name.compare(0, 4, "rgw.") == 0) { - name = name.substr(4); - } - int ret = rados.service_daemon_register(daemon_type, name, metadata); + metadata["id"] = name; + int ret = rados.service_daemon_register( + daemon_type, + stringify(rados.get_instance_id()), + metadata); if (ret < 0) { ldout(cct, 0) << "ERROR: service_daemon_register() returned ret=" << ret << ": " << cpp_strerror(-ret) << dendl; return ret;