From: Sebastian Wagner Date: Mon, 19 Jul 2021 10:13:11 +0000 (+0200) Subject: cephadm: `stats` might return `--` for containers X-Git-Tag: v16.2.6~54^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=927f169e169bda8f428233ec673055a29ce7c68f;p=ceph.git cephadm: `stats` might return `--` for containers Signed-off-by: Sebastian Wagner (cherry picked from commit d183661be552acf7f30fce2e038173c5bdfa8421) --- diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index 468ae6ec660d..1182bddd6b47 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -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] diff --git a/src/cephadm/tests/test_cephadm.py b/src/cephadm/tests/test_cephadm.py index a6b077aab9b4..7a91f4b4b85c 100644 --- a/src/cephadm/tests/test_cephadm.py +++ b/src/cephadm/tests/test_cephadm.py @@ -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'])