Updated the messaging and UI to clarify unavailability of host-level metrics, such as CPU, RAM, and disk space, in agentless mode. Added clear formatting and new functions to handle missing metrics gracefully in the frontend.
30 lines
834 B
Python
30 lines
834 B
Python
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class DiskSpaceProbeResult:
|
|
source: str
|
|
status: str
|
|
free_bytes: int | None = None
|
|
message: str | None = None
|
|
|
|
|
|
class DiskSpaceProvider:
|
|
async def get_free_bytes(self, target_host: str) -> DiskSpaceProbeResult:
|
|
raise NotImplementedError
|
|
|
|
|
|
class NullDiskSpaceProvider(DiskSpaceProvider):
|
|
async def get_free_bytes(self, target_host: str) -> DiskSpaceProbeResult:
|
|
return DiskSpaceProbeResult(
|
|
source="agentless",
|
|
status="unavailable",
|
|
free_bytes=None,
|
|
message=f"Agentless mode: host-level free disk is not available for {target_host}.",
|
|
)
|
|
|
|
|
|
def get_disk_space_provider() -> DiskSpaceProvider:
|
|
# Extension point: replace by SSH/Agent backed implementation.
|
|
return NullDiskSpaceProvider()
|