# -*- coding: utf-8 -*-

"""Displays the number of docker containers running

Requires the following python packages:
    * docker

"""

try:
    import docker
except ImportError:
    pass

from requests.exceptions import ConnectionError

import bumblebee.input
import bumblebee.output
import bumblebee.engine


class Module(bumblebee.engine.Module):
    def __init__(self, engine, config):
        widget = bumblebee.output.Widget(full_text=self.status)
        super(Module, self).__init__(engine, config, widget)
        self._status = self.status

    def update(self, widgets):
        self._status = self.status

    def status(self, _):
        try:
            cli = docker.DockerClient(base_url='unix://var/run/docker.sock')
            cli.ping()
        except ConnectionError:
            return "Daemon off"
        except Exception:
            return "n/a"
        return "OK - {}".format(len(cli.containers.list(filters={'status': "running"})))