]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/MgrMonitor: store services in map and expose with command
authorJohn Spray <john.spray@redhat.com>
Thu, 27 Jul 2017 15:49:45 +0000 (11:49 -0400)
committerJohn Spray <john.spray@redhat.com>
Wed, 1 Nov 2017 12:20:20 +0000 (08:20 -0400)
Signed-off-by: John Spray <john.spray@redhat.com>
src/mon/MgrMonitor.cc
src/mon/MonCommands.h

index 9a340d950eff710f8046636b88061413107b62c3..a1a2b2b94fd62bba31cb907292b8ffd1521de8cd 100644 (file)
@@ -302,6 +302,13 @@ bool MgrMonitor::prepare_beacon(MonOpRequestRef op)
   bool updated = false;
 
   if (pending_map.active_gid == m->get_gid()) {
+    if (pending_map.services != m->get_services()) {
+      dout(4) << "updated services from mgr." << m->get_name()
+              << ": " << m->get_services() << dendl;
+      pending_map.services = m->get_services();
+      updated = true;
+    }
+
     // A beacon from the currently active daemon
     if (pending_map.active_addr != m->get_server_addr()) {
       dout(4) << "learned address " << m->get_server_addr()
@@ -695,6 +702,13 @@ bool MgrMonitor::preprocess_command(MonOpRequestRef op)
     }
     f->close_section();
     f->flush(rdata);
+  } else if (prefix == "mgr services") {
+    f->open_object_section("services");
+    for (const auto &i : map.services) {
+      f->dump_string(i.first.c_str(), i.second);
+    }
+    f->close_section();
+    f->flush(rdata);
   } else if (prefix == "mgr metadata") {
     string name;
     cmd_getval(g_ceph_context, cmdmap, "id", name);
index 40c843ef641220d8b38e0b398e2d294a0c427ac8..4694c1102b4622d032b1444d7e1a19602a0e1b33 100644 (file)
@@ -1064,6 +1064,9 @@ COMMAND("mgr fail name=who,type=CephString", \
        "treat the named manager daemon as failed", "mgr", "rw", "cli,rest")
 COMMAND("mgr module ls",
        "list active mgr modules", "mgr", "r", "cli,rest")
+COMMAND("mgr services",
+       "list service endpoints provided by mgr modules",
+        "mgr", "r", "cli,rest")
 COMMAND("mgr module enable "                                           \
        "name=module,type=CephString "                                  \
        "name=force,type=CephChoices,strings=--force,req=false",