From 19abd1e1f47da14dbd2be89e15b04d483e75a105 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 23 Feb 2021 11:50:48 +0800 Subject: [PATCH] mgr/{prometheus,telemetry}: appease mypy update to adapt the type annotation of MgrModule.list_servers() Signed-off-by: Kefu Chai --- src/pybind/mgr/prometheus/module.py | 8 ++++---- src/pybind/mgr/telemetry/module.py | 13 +++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/pybind/mgr/prometheus/module.py b/src/pybind/mgr/prometheus/module.py index f8438986123..e83f9191b11 100644 --- a/src/pybind/mgr/prometheus/module.py +++ b/src/pybind/mgr/prometheus/module.py @@ -9,12 +9,12 @@ import re import socket import threading import time -from mgr_module import MgrModule, MgrStandbyModule, PG_STATES, Option +from mgr_module import MgrModule, MgrStandbyModule, PG_STATES, Option, ServiceInfoT from mgr_util import get_default_addr, profile_method from rbd import RBD from collections import namedtuple try: - from typing import DefaultDict, Optional, Dict, Any, Set, cast + from typing import DefaultDict, Optional, Dict, Any, List, Set, cast except ImportError: pass @@ -691,7 +691,7 @@ class Module(MgrModule): for server in self.list_servers(): version = server.get('ceph_version', '') host = server.get('hostname', '') - for service in server.get('services', []): + for service in cast(List[ServiceInfoT], server.get('services', [])): ret.update({(service['id'], service['type']): (host, version)}) return ret @@ -1185,7 +1185,7 @@ class Module(MgrModule): targets = [] for server in servers: hostname = server.get('hostname', '') - for service in server.get('services', []): + for service in cast(List[ServiceInfoT], server.get('services', [])): if service['type'] != 'mgr': continue id_ = service['id'] diff --git a/src/pybind/mgr/telemetry/module.py b/src/pybind/mgr/telemetry/module.py index 70330a961f4..2c58fa89fd8 100644 --- a/src/pybind/mgr/telemetry/module.py +++ b/src/pybind/mgr/telemetry/module.py @@ -15,9 +15,9 @@ import time from datetime import datetime, timedelta from threading import Event from collections import defaultdict -from typing import cast, Any, DefaultDict, Dict, List, Optional, Tuple, TypeVar, TYPE_CHECKING +from typing import cast, Any, DefaultDict, Dict, List, Optional, Tuple, TypeVar, TYPE_CHECKING, Union -from mgr_module import CLICommand, CLIReadCommand, MgrModule, Option, OptionValue, Union +from mgr_module import CLICommand, CLIReadCommand, MgrModule, Option, OptionValue, ServiceInfoT ALL_CHANNELS = ['basic', 'ident', 'crash', 'device'] @@ -586,10 +586,11 @@ class Module(MgrModule): 'num': len([h for h in servers if h['hostname']]), } for t in ['mon', 'mds', 'osd', 'mgr']: - hosts['num_with_' + t] = len( - [h for h in servers - if len([s for s in h['services'] if s['type'] == t])] - ) + nr_services = sum(1 for host in servers if + any(service for service in cast(List[ServiceInfoT], + host['services']) + if service['type'] == t)) + hosts['num_with_' + t] = nr_services report['hosts'] = hosts report['usage'] = { -- 2.39.5