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
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
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']
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']
'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'] = {