]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/OSDMap: add per-osd flag OSD_FLAGS check
authorSage Weil <sage@redhat.com>
Tue, 27 Jun 2017 19:01:16 +0000 (15:01 -0400)
committerSage Weil <sage@redhat.com>
Wed, 12 Jul 2017 16:52:02 +0000 (12:52 -0400)
rename OSD_FLAGS to OSDMAP_FLAGS

Signed-off-by: Sage Weil <sage@redhat.com>
qa/workunits/cephtool/test.sh
src/osd/OSDMap.cc

index 34c48697c4ba879a513ce2746df69c2b6e07b9bd..009b7c5130d389a8a42459169c62c4e815f7b9fb 100755 (executable)
@@ -1439,21 +1439,21 @@ function test_mon_osd()
   ceph osd find 0
 
   ceph osd add-nodown 0 1
-  ceph health detail | grep 'nodown osd(s).*0.*1'
+  ceph health detail | grep 'NODOWN'
   ceph osd rm-nodown 0 1
-  ! ceph health detail | grep 'nodown osd(s).*0.*1'
+  ! ceph health detail | grep 'NODOWN'
 
   ceph osd out 0 # so we can mark it as noin later
   ceph osd add-noin 0
-  ceph health detail | grep 'noin osd(s).*0'
+  ceph health detail | grep 'NOIN'
   ceph osd rm-noin 0
-  ! ceph health detail | grep 'noin osd(s).*0'
+  ! ceph health detail | grep 'NOIN'
   ceph osd in 0
 
   ceph osd add-noout 0
-  ceph health detail | grep 'noout osd(s).*0'
+  ceph health detail | grep 'NOOUT'
   ceph osd rm-noout 0
-  ! ceph health detail | grep 'noout osds(s).*0'
+  ! ceph health detail | grep 'NOOUT'
 
   # test osd id parse
   expect_false ceph osd add-noup 797er
@@ -1472,12 +1472,12 @@ function test_mon_osd()
     ceph osd add-nodown $osd
     ceph osd add-noout $osd
   done
-  ceph -s | grep 'nodown osd(s)'
-  ceph -s | grep 'noout osd(s)'
+  ceph -s | grep 'NODOWN'
+  ceph -s | grep 'NOOUT'
   ceph osd rm-nodown any
   ceph osd rm-noout all
-  ! ceph -s | grep 'nodown osd(s)'
-  ! ceph -s | grep 'noout osd(s)'
+  ! ceph -s | grep 'NODOWN'
+  ! ceph -s | grep 'NOOUT'
 
   # make sure mark out preserves weight
   ceph osd reweight osd.0 .5
index 1bc20e7a48e61f293bd5c3686635e4b6243d0a29..2f441eb9a66ad287dc713f31b4fa42e6bfea03b2 100644 (file)
@@ -4493,7 +4493,7 @@ void OSDMap::check_health(health_check_map_t *checks) const
     }
   }
 
-  // OSD_FLAGS
+  // OSDMAP_FLAGS
   {
     // warn about flags
     uint64_t warn_flags =
@@ -4515,7 +4515,32 @@ void OSDMap::check_health(health_check_map_t *checks) const
       ostringstream ss;
       ss << get_flag_string(get_flags() & warn_flags)
         << " flag(s) set";
-      checks->add("OSD_FLAGS", HEALTH_WARN, ss.str());
+      checks->add("OSDMAP_FLAGS", HEALTH_WARN, ss.str());
+    }
+  }
+
+  // OSD_FLAGS
+  {
+    list<string> detail;
+    const unsigned flags =
+      CEPH_OSD_NOUP |
+      CEPH_OSD_NOIN |
+      CEPH_OSD_NODOWN |
+      CEPH_OSD_NOOUT;
+    for (int i = 0; i < max_osd; ++i) {
+      if (osd_state[i] & flags) {
+       ostringstream ss;
+       set<string> states;
+       OSDMap::calc_state_set(osd_state[i] & flags, states);
+       ss << "osd." << i << " has flags " << states;
+       detail.push_back(ss.str());
+      }
+    }
+    if (!detail.empty()) {
+      ostringstream ss;
+      ss << detail.size() << " osd(s) have {NOUP,NODOWN,NOIN,NOOUT} flags set";
+      auto& d = checks->add("OSD_FLAGS", HEALTH_WARN, ss.str());
+      d.detail.swap(detail);
     }
   }