Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 25 additions & 2 deletions src/pybind/mgr/mgr_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
NamedTuple,
no_type_check,
Optional,
overload,
Sequence,
Set,
TYPE_CHECKING,
Expand Down Expand Up @@ -1729,6 +1730,26 @@ def list_servers(self) -> List[ServerInfoT]:
"""
return cast(List[ServerInfoT], self._ceph_get_server(None))

@overload
def get_metadata(self,
svc_type: str,
svc_id: str) -> Optional[Dict[str, str]]:
...

@overload
def get_metadata(self,
svc_type: str,
svc_id: str,
default: None) -> Optional[Dict[str, str]]:
...

@overload
def get_metadata(self,
svc_type: str,
svc_id: str,
default: Dict[str, str]) -> Dict[str, str]:
...

def get_metadata(self,
svc_type: str,
svc_id: str,
Expand All @@ -1738,12 +1759,14 @@ def get_metadata(self,

ceph-mgr fetches metadata asynchronously, so are windows of time during
addition/removal of services where the metadata is not available to
modules. ``None`` is returned if no metadata is available.
modules. ``None`` is returned if no metadata is available, unless
``default`` is provided, in which case ``default`` is returned.

:param str svc_type: service type (e.g., 'mds', 'osd', 'mon')
:param str svc_id: service id. convert OSD integer IDs to strings when
calling this
:rtype: dict, or None if no metadata found
:param default: value to return when no metadata is available
:rtype: dict, or None if no metadata found and no default given
"""
metadata = self._ceph_get_metadata(svc_type, svc_id)
if not metadata:
Expand Down
4 changes: 0 additions & 4 deletions src/pybind/mgr/status/module.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ def handle_fs_status(self,

metadata = self.get_metadata('mds', info['name'],
default=defaultdict(lambda: 'unknown'))
assert metadata
mds_versions[metadata['ceph_version']].append(info['name'])

if output_format in ('json', 'json-pretty'):
Expand Down Expand Up @@ -159,7 +158,6 @@ def handle_fs_status(self,

metadata = self.get_metadata('mds', daemon_info['name'],
default=defaultdict(lambda: 'unknown'))
assert metadata
mds_versions[metadata['ceph_version']].append(daemon_info['name'])

if output_format in ('json', 'json-pretty'):
Expand Down Expand Up @@ -234,7 +232,6 @@ def handle_fs_status(self,
for standby in fsmap['standbys']:
metadata = self.get_metadata('mds', standby['name'],
default=defaultdict(lambda: 'unknown'))
assert metadata
mds_versions[metadata['ceph_version']].append(standby['name'])

if output_format in ('json', 'json-pretty'):
Expand Down Expand Up @@ -337,7 +334,6 @@ def handle_osd_status(self, bucket: Optional[str] = None, format: str = 'plain')
if osd_id in osd_stats:
metadata = self.get_metadata('osd', str(osd_id), default=defaultdict(str))
stats = osd_stats[osd_id]
assert metadata
hostname = metadata['hostname']
kb_used = stats['kb_used'] * 1024
kb_avail = stats['kb_avail'] * 1024
Expand Down
Loading