# -*- 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): widgets = bumblebee.output.Widget(full_text=self.status) super(Module, self).__init__(engine, config, widgets) self._status = self.status self._state = self.state def update(self, widgets): self._status = self.status self._state = self.state def state(self, widget): state = [] status = self.status(widget) if status == "OK - 0": state.append("warning") elif status in ["n/a", "Daemon off"]: state.append("critical") return state def status(self, widget): 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"})))