]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/status: Fix "ceph fs status" json format writing to stderr 34561/head
authorKotresh HR <khiremat@redhat.com>
Tue, 14 Apr 2020 17:16:54 +0000 (22:46 +0530)
committerKotresh HR <khiremat@redhat.com>
Wed, 15 Apr 2020 13:45:11 +0000 (19:15 +0530)
"ceph fs status" json format outputs to stderr instead of
stdout. This patch fixes the same.

Fixes: https://tracker.ceph.com/issues/44962
Signed-off-by: Kotresh HR <khiremat@redhat.com>
qa/tasks/cephfs/test_admin.py
src/pybind/mgr/status/module.py

index 374f75a72cf0c3a9c57a05054ed134ea848056d9..60a1f7e2c9af23a5f7cbefb73f6b59e1c3dd1f13 100644 (file)
@@ -1,3 +1,5 @@
+import json
+
 from teuthology.orchestra.run import CommandFailedError
 
 from tasks.cephfs.cephfs_test_case import CephFSTestCase
@@ -5,6 +7,7 @@ from tasks.cephfs.fuse_mount import FuseMount
 
 from tasks.cephfs.filesystem import FileLayout
 
+
 class TestAdminCommands(CephFSTestCase):
     """
     Tests for administration command.
@@ -21,6 +24,12 @@ class TestAdminCommands(CephFSTestCase):
         s = self.fs.mon_manager.raw_cluster_cmd("fs", "status")
         self.assertTrue("active" in s)
 
+        mdsmap = json.loads(self.fs.mon_manager.raw_cluster_cmd("fs", "status", "--format=json-pretty"))["mdsmap"]
+        self.assertEqual(mdsmap[0]["state"], "active")
+
+        mdsmap = json.loads(self.fs.mon_manager.raw_cluster_cmd("fs", "status", "--format=json"))["mdsmap"]
+        self.assertEqual(mdsmap[0]["state"], "active")
+
     def _setup_ec_pools(self, n, metadata=True, overwrites=True):
         if metadata:
             self.fs.mon_manager.raw_cluster_cmd('osd', 'pool', 'create', n+"-meta", "8")
index 3a0c3c2c918ca2890bbf3c26b5b5f168df8444dd..a53edc0e389d7024b8d1cfa098528477770f41ba 100644 (file)
@@ -12,7 +12,7 @@ import prettytable
 import six
 import json
 
-from mgr_module import MgrModule
+from mgr_module import MgrModule, HandleCommandResult
 
 
 class Module(MgrModule):
@@ -260,11 +260,11 @@ class Module(MgrModule):
                 output += version_table.get_string() + "\n"
 
         if output_format == "json":
-            return 0, "", json.dumps(json_output, sort_keys=True)
+            return HandleCommandResult(stdout=json.dumps(json_output, sort_keys=True))
         elif output_format == "json-pretty":
-            return 0, "", json.dumps(json_output, sort_keys=True, indent=4, separators=(',', ': '))
+            return HandleCommandResult(stdout=json.dumps(json_output, sort_keys=True, indent=4, separators=(',', ': ')))
         else:
-            return 0, output, ""
+            return HandleCommandResult(stdout=output)
 
     def handle_osd_status(self, cmd):
         osd_table = PrettyTable(['ID', 'HOST', 'USED', 'AVAIL', 'WR OPS',