]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: `stats` might return `--` for containers
authorSebastian Wagner <sewagner@redhat.com>
Mon, 19 Jul 2021 10:13:11 +0000 (12:13 +0200)
committerSebastian Wagner <sewagner@redhat.com>
Tue, 10 Aug 2021 14:36:33 +0000 (16:36 +0200)
Signed-off-by: Sebastian Wagner <sewagner@redhat.com>
(cherry picked from commit d183661be552acf7f30fce2e038173c5bdfa8421)

src/cephadm/cephadm
src/cephadm/tests/test_cephadm.py

index 468ae6ec660d1bf6900b2774deea5329640d71ae..1182bddd6b4716ee152d21c3f45d696a8867ca8e 100755 (executable)
@@ -4932,14 +4932,7 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
         [container_path, 'stats', '--format', '{{.ID}},{{.MemUsage}}', '--no-stream'],
         verbosity=CallVerbosity.DEBUG
     )
-    seen_memusage_cid_len = 0
-    if not code:
-        for line in out.splitlines():
-            (cid, usage) = line.split(',')
-            (used, limit) = usage.split(' / ')
-            seen_memusage[cid] = with_units_to_int(used)
-            if not seen_memusage_cid_len:
-                seen_memusage_cid_len = len(cid)
+    seen_memusage_cid_len, seen_memusage = _parse_mem_usage(code, out)
 
     # /var/lib/ceph
     if os.path.exists(data_dir):
@@ -5122,6 +5115,24 @@ def list_daemons(ctx, detail=True, legacy_dir=None):
     return ls
 
 
+def _parse_mem_usage(code: int, out: str) -> Tuple[int, Dict[str, int]]:
+    # keep track of memory usage we've seen
+    seen_memusage = {}  # type: Dict[str, int]
+    seen_memusage_cid_len = 0
+    if not code:
+        for line in out.splitlines():
+            (cid, usage) = line.split(',')
+            (used, limit) = usage.split(' / ')
+            try:
+                seen_memusage[cid] = with_units_to_int(used)
+                if not seen_memusage_cid_len:
+                    seen_memusage_cid_len = len(cid)
+            except ValueError:
+                logger.info('unable to parse memory usage line\n>{}'.format(line))
+                pass
+    return seen_memusage_cid_len, seen_memusage
+
+
 def get_daemon_description(ctx, fsid, name, detail=False, legacy_dir=None):
     # type: (CephadmContext, str, str, bool, Optional[str]) -> Dict[str, str]
 
index a6b077aab9b4fff9cd99c53b8bac07ce7f107966..7a91f4b4b85cfb302d389bfff77b22fa2b7b7315 100644 (file)
@@ -159,6 +159,11 @@ class TestCephAdm(object):
         args = cd._parse_args(['--image', 'foo', 'version'])
         assert args.image == 'foo'
 
+    def test_parse_mem_usage(self):
+        cd.logger = mock.Mock()
+        len, summary = cd._parse_mem_usage(0, 'c6290e3f1489,-- / --')
+        assert summary == {}
+
     def test_CustomValidation(self):
         assert cd._parse_args(['deploy', '--name', 'mon.a', '--fsid', 'fsid'])