Source code for podman.domain.system

"""SystemManager to provide system level information from Podman service."""

import logging
from typing import Any, Dict, Optional

from podman.api.client import APIClient
from podman import api

logger = logging.getLogger("podman.system")


[docs] class SystemManager: """SystemManager to provide system level information from Podman service.""" def __init__(self, client: APIClient) -> None: """Initialize SystemManager object. Args: client: Connection to Podman service. """ self.client = client
[docs] def df(self) -> Dict[str, Any]: # pylint: disable=invalid-name """Disk usage by Podman resources. Returns: dict: Keyed by resource categories and their data usage. """ response = self.client.get("/system/df") response.raise_for_status() return response.json()
[docs] def info(self, *_, **__) -> Dict[str, Any]: """Returns information on Podman service.""" response = self.client.get("/info") response.raise_for_status() return response.json()
[docs] def login( self, username: str, password: Optional[str] = None, email: Optional[str] = None, registry: Optional[str] = None, reauth: Optional[bool] = False, # pylint: disable=unused-argument dockercfg_path: Optional[str] = None, # pylint: disable=unused-argument ) -> Dict[str, Any]: """Log into Podman service. Args: username: Registry username password: Registry plaintext password email: Registry account email address registry: URL for registry access. For example, reauth: Ignored: If True, refresh existing authentication. Default: False dockercfg_path: Ignored: Path to custom configuration file. https://quay.io/v2 """ payload = { "username": username, "password": password, "email": email, "serveraddress": registry, } payload = api.prepare_body(payload) response = self.client.post( path="/auth", headers={"Content-type": "application/json"}, data=payload, compatible=True, ) response.raise_for_status() return response.json()
[docs] def ping(self) -> bool: """Returns True if service responded with OK.""" response = self.client.head("/_ping") return response.ok
[docs] def version(self, **kwargs) -> Dict[str, Any]: """Get version information from service. Keyword Args: api_version (bool): When True include API version """ response = self.client.get("/version") response.raise_for_status() body = response.json() if not kwargs.get("api_version", True): del body["APIVersion"] return body