Source code for adles.interfaces.docker_interface

import logging

try:
    import docker  # NOTE(cgoes): has not been tested with Python 3.6 yet
except ImportError:
    logging.error("Could not import docker module. "
                  "Install it using 'pip install docker'")

from adles import utils
from adles.interfaces import Interface


[docs]class DockerInterface(Interface): """Generic interface for the Docker platform.""" def __init__(self, infra, spec): """ :param dict infra: Dict of infrastructure information :param dict spec: Dict of a parsed specification """ super(DockerInterface, self).__init__(infra=infra, spec=spec) self._log = logging.getLogger(str(self.__class__)) self._log.debug("Initializing %s", self.__class__) # If needed, a wrapper class that simplifies # the creation of containers will be made # Reference: # https://docker-py.readthedocs.io/en/stable/client.html#client-reference # Initialize the Docker client self.client = docker.DockerClient(base_url=infra.get("url", "unix:///var/run/" "docker.sock"), tls=bool(infra.get("tls", True))) # Verify the connection to the client self.client.ping() self._log.debug("System info : %s", str(self.client.info())) self._log.debug("System version : %s", str(self.client.version())) # Authenticate to registry, if configured if "registry" in self.infra: reg = self.infra["registry"] reg_logins = utils.read_json(reg["login-file"]) self.client.login(username=reg_logins["user"], password=reg_logins["pass"], registry=reg["url"]) # List images currently on the server self._log.debug("Images: %s", str(self.client.images.list()))
[docs] def create_masters(self): pass
[docs] def deploy_environment(self): pass
[docs] def cleanup_masters(self, network_cleanup=False): pass
[docs] def cleanup_environment(self, network_cleanup=False): pass
def __str__(self): return str(self.client.info() + "\nVersion:\t" + self.client.version()) def __eq__(self, other): return super(self.__class__, self).__eq__(other) \ and self.client == other.client