]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
src/common/options: add config option for availability score
authorShraddha Agrawal <shraddha.agrawal000@gmail.com>
Tue, 6 May 2025 06:20:59 +0000 (11:50 +0530)
committerShraddha Agrawal <shraddha.agrawal000@gmail.com>
Thu, 12 Jun 2025 10:49:50 +0000 (16:19 +0530)
This commit modifies src/common/options/mon.yaml.in to add a
new config option to enable/disable tracking availability
score. This config option can be modified dynamically at
runtime as well.

To enable tracking availability score, we can run the
following command:

  ceph config set mon enable_availability_tracking true

By default, tracking availability score is enabled.

To disable tracking availability score:

  ceph config set mon enable_availablity_tracking false

When the feature is turned off, invoking the
`availability-status` command will display an error, prompting
the user to turn on the feature using the config option.

Fixes: https://tracker.ceph.com/issues/71494
Signed-off-by: Shraddha Agrawal <shraddhaag@ibm.com>
src/common/options/mon.yaml.in
src/mon/OSDMonitor.cc

index 334113feb5d22758593bb3c1c6996c591f18e667..2c337fcea70721b73abd548bb9657fcd15300bb1 100644 (file)
@@ -1402,3 +1402,14 @@ options:
   default: 2
   services:
   - mon
+- name: enable_availability_tracking
+  type: bool
+  level: advanced
+  desc: Calculate and store availablity score for each pool in the 
+    cluster at regular intervals
+  default: true
+  services :
+  - mon
+  flags:
+  - runtime
\ No newline at end of file
index bc23cdff9091b3bfe640036679fc1d61963c10d2..0804efb362b801d94abb10cac9668f6a55df9ad4 100644 (file)
@@ -14407,6 +14407,11 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
                                                   get_last_committed() + 1));
     return true;
   } else if (prefix == "osd pool availability-status") {
+    if (!g_conf().get_val<bool>("enable_availability_tracking")) {
+      ss << "availability tracking is disabled; you can enable it by setting the config option enable_availability_tracking";
+      err = -EPERM;
+      goto reply_no_propose;
+    }
     TextTable tbl;
     tbl.define_column("POOL", TextTable::LEFT, TextTable::LEFT);
     tbl.define_column("UPTIME", TextTable::LEFT, TextTable::RIGHT);