"""Models for accessing details from varlink server."""
import collections

import pkg_resources

from . import cached_property


class System():
    """Model for accessing system resources."""

    def __init__(self, client):
        """Construct system model."""
        self._client = client

    @cached_property
    def versions(self):
        """Access versions."""
        with self._client() as podman:
            vers = podman.GetVersion()

        client = '0.0.0'
        try:
            client = pkg_resources.get_distribution('podman').version
        except Exception:  # pylint: disable=broad-except
            pass
        vers['client_version'] = client
        return collections.namedtuple('Version', vers.keys())(**vers)

    def info(self):
        """Return podman info."""
        with self._client() as podman:
            info = podman.GetInfo()['info']
        return collections.namedtuple('Info', info.keys())(**info)

    def ping(self):
        """Return True if server awake."""
        with self._client() as podman:
            response = podman.GetVersion()
        return 'version' in response