Add deprecation notice, remove old code
[integration.git] / test / csit / libraries / Docker.py
diff --git a/test/csit/libraries/Docker.py b/test/csit/libraries/Docker.py
deleted file mode 100755 (executable)
index bc3d1e3..0000000
+++ /dev/null
@@ -1,388 +0,0 @@
-"""
-Docker library for OpenDaylight project robot system test framework.
-Authors: Marcus Williams - irc @ mgkwill - Intel Inc.
-Updated: 2015-05-05
-
-*Copyright (c) 2015 Intel Corp. and others.  All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-"""
-
-import docker
-from robot.api import logger
-
-
-def docker_create(docker_image_name, passed_args_dict=None):
-    """
-    Args:
-        :param docker_image_name: A string that describes the docker image to use
-            example 'socketplane/openvswitch'
-
-        :param passed_args_dict: keyword docker-py create container args. defaults to command=None,
-            hostname=None, user=None, detach=False, stdin_open=False, tty=False,
-            mem_limit=0, ports=None, environment=None, dns=None, volumes=None,
-            volumes_from=None, network_disabled=False, name=None, entrypoint=None,
-            cpu_shares=None, working_dir=None, domainname=None, memswap_limit=0,
-            cpuset=None, host_config=None
-
-    Returns:
-        :returns dict: docker-info - identifying info about docker container created
-    """
-    logger.info("Creating docker %s" % docker_image_name)
-    logger.info(passed_args_dict)
-    docker_client = docker_get_client()
-
-    default_args_dict = dict(command=None,
-                             hostname=None,
-                             user=None,
-                             detach=False,
-                             stdin_open=False,
-                             tty=False,
-                             mem_limit=0,
-                             ports=None,
-                             environment=None,
-                             dns=None,
-                             volumes=None,
-                             volumes_from=None,
-                             network_disabled=False,
-                             name=None,
-                             entrypoint=None,
-                             cpu_shares=None,
-                             working_dir=None,
-                             domainname=None,
-                             memswap_limit=0,
-                             cpuset=None,
-                             host_config=None
-                             )
-    args_dict = docker_process_args(passed_args_dict, default_args_dict, "docker_create")
-
-    docker_client.images(name=docker_image_name)
-    docker_uid_dict = docker_client\
-        .create_container(docker_image_name, **args_dict)
-    docker_info = docker_client.inspect_container(docker_uid_dict.get("Id"))
-    return docker_info
-
-
-def docker_start(docker_name, passed_args_dict=None):
-    """Start docker container.
-
-    Args:
-        :param docker_name: A string that describes the docker image to use.
-            Either the uid or docker container name must be used.
-
-        :param passed_args_dict: keyword docker-py start container args. defaults to binds=None,
-            port_bindings=None, lxc_conf=None, publish_all_ports=False,
-            links=None, privileged=False, dns=None, dns_search=None,
-            volumes_from=None, network_mode=None, restart_policy=None,
-            cap_add=None, cap_drop=None, devices=None, extra_hosts=None
-    Returns:
-        :returns bool: returns false if container fails to start
-            and true otherwise
-    """
-    logger.info("Starting docker %s" % docker_name)
-    logger.info(passed_args_dict)
-    docker_client = docker_get_client()
-
-    default_args_dict = dict(binds=None,
-                             port_bindings=None,
-                             lxc_conf=None,
-                             publish_all_ports=False,
-                             links=None,
-                             privileged=False,
-                             dns=None,
-                             dns_search=None,
-                             volumes_from=None,
-                             network_mode=None,
-                             restart_policy=None,
-                             cap_add=None,
-                             cap_drop=None,
-                             devices=None,
-                             extra_hosts=None
-                             )
-    args_dict = docker_process_args(passed_args_dict, default_args_dict, "docker_start")
-
-    docker_client.start(docker_name, **args_dict)
-
-    if "True" in str(docker_client.inspect_container(docker_name)
-                     .get("State").get("Running")):
-        logger.info("Started docker %s successfully" % docker_name)
-        return True
-    else:
-        logger.info("Starting docker %s failed" % docker_name)
-        return False
-
-
-def docker_remove(docker_name, passed_args_dict=None):
-    """Remove docker container.
-
-    Args:
-        :param docker_name: A string that describes the docker image to use
-            example 'socketplane/openvswitch'
-
-        :param passed_args_dict: keyword docker-py remove container args. defaults to v=False,
-            link=False, force=False
-
-    Returns:
-        :returns bool: True if container was removed false otherwise
-    """
-    logger.info("Removing docker %s" % docker_name)
-    logger.info(passed_args_dict)
-    docker_client = docker_get_client()
-
-    default_args_dict = dict(v=False,
-                             link=False,
-                             force=False
-                             )
-    args_dict = docker_process_args(passed_args_dict, default_args_dict, "docker_remove")
-
-    docker_client.remove_container(docker_name, **args_dict)
-    docker_containers = docker_client.containers(all=True)
-    for container in docker_containers:
-        if docker_name in container.get("Id") or docker_name in container.get("Names"):
-            logger.info("Removing docker %s failed" % docker_name)
-            return False
-    logger.info("Removed docker %s successfully" % docker_name)
-    return True
-
-
-def docker_stop(docker_name, timeout=10):
-    """Stop docker container.
-
-    Args:
-        :param docker_name: A string that describes the docker image to use.
-            Either the uid or docker container name must be used.
-
-        :param timeout: docker-py stop container args. defaults to timeout=10
-    Returns:
-        :returns bool: returns false if container fails to stop
-            and true otherwise
-    """
-    logger.info("Stopping docker %s with timeout %d" % (docker_name, timeout))
-    docker_client = docker_get_client()
-
-    docker_client.stop(docker_name, timeout)
-
-    if "False" in str(docker_client.inspect_container(docker_name)
-                      .get("State").get("Running")):
-        logger.info("Stopped docker %s successfully" % docker_name)
-        return True
-    else:
-        logger.debug("Stopping docker %s failed" % docker_name)
-        return False
-
-
-def docker_return_logs(docker_name, passed_args_dict=None):
-    """Return docker container logs.
-
-    Args:
-        :param docker_name: A string that describes the docker image to use.
-            Either the uid or docker container name must be used.
-
-        :param passed_args_dict: keyword docker-py logs container args. defaults to
-            stdout=True, stderr=True, stream=False, timestamps=False, tail='all'
-    Returns:
-        :returns string: returns a string containing docker logs
-    """
-    logger.info("Returning logs for docker %s" % docker_name)
-    logger.info(passed_args_dict)
-    docker_client = docker_get_client()
-
-    default_args_dict = dict(stdout=True,
-                             stderr=True,
-                             stream=False,
-                             timestamps=False,
-                             tail='all'
-                             )
-    args_dict = docker_process_args(passed_args_dict, default_args_dict, "docker_return_logs")
-
-    return docker_client.logs(docker_name, **args_dict)
-
-
-def docker_execute(docker_name, cmd, passed_args_dict=None):
-    """Run a command on a docker container.
-
-    Args:
-        :param docker_name: A string that describes the docker image to use.
-            Either the uid or docker container name must be used.
-
-        :param cmd: A string of the command to run
-            Example 'ip a'
-
-        :param passed_args_dict: dictionary of key word
-        docker-py exec container args. defaults to detach=False,
-            stdout=True, stderr=True, stream=False, tty=False
-    Returns:
-        :returns string: returns string representing the results of the command
-
-    NOTE: In docker-py version >=1.2 execute will be deprecated in
-        favor of exec_create and exec_start
-    """
-    logger.info("Executing command %s on docker %s" % (cmd, docker_name))
-    logger.info(passed_args_dict)
-    docker_client = docker_get_client()
-
-    default_args_dict = dict(detach=False,
-                             stdout=True,
-                             stderr=True,
-                             stream=False,
-                             tty=False
-                             )
-    args_dict = docker_process_args(passed_args_dict, default_args_dict, "docker_execute")
-
-    return docker_client.execute(docker_name, cmd, **args_dict)
-
-
-def docker_get_ip4(docker_name):
-    """Inspects a docker container and returns its IP address.
-
-    Args:
-        :param docker_name: A string that describes the docker image to use.
-            Either the uid or docker container name must be used.
-
-    Returns:
-        :returns string: returns string of IP address
-    """
-    logger.info("Getting IP of docker %s" % docker_name)
-    docker_client = docker_get_client()
-    return str(docker_client.inspect_container(docker_name)
-               .get("NetworkSettings")
-               .get("IPAddress"))
-
-
-def docker_ping(docker_name, ip, count=3):
-    """Pings from a docker container and returns results.
-
-    Args:
-        :param docker_name: A string that describes the docker image to use.
-            Either the uid or docker container name must be used.
-
-        :param ip: A string of the IP address to ping
-
-        :param count: An integer of the count to ping
-
-    Returns:
-        :returns string: returns string of results
-    """
-    logger.info("Pinging from docker %s to %s %d times" % (docker_name, ip, count))
-    ping_cmd = str(ip) + "ping -c " + str(count)
-    return docker_execute(docker_name, ping_cmd)
-
-
-def docker_list_containers(passed_args_dict=None):
-    """Return a list of docker containers.
-
-       Returns:
-        :returns list: returns list of docker
-            containers in following format:
-            [{'Id': u'069a56ec06f965f98efa752467737faa58431ebb471bc51e9b2bd485fcc4916c'},
-            {'Id': u'769aff6170eec78e7c502fea4770cfbb7b7e53a2dc44070566d01e18b6d57c14'}]
-    """
-    logger.info("Listing docker containers")
-    logger.info(passed_args_dict)
-
-    default_args_dict = dict(quiet=True,
-                             all=True,
-                             trunc=True,
-                             latest=False,
-                             since=None,
-                             before=None,
-                             limit=-1,
-                             size=False,
-                             filters=None
-                             )
-    args_dict = docker_process_args(passed_args_dict, default_args_dict,
-                                    "docker_list_containers")
-
-    return docker.Client(
-        base_url='unix://var/run/docker.sock',
-        timeout=10)\
-        .containers(**args_dict)
-
-
-def docker_create_host_config(passed_args_dict):
-    """Return a list of docker create host config for port bindings.
-
-       Parameters:
-        :param passed_args_dict: dictionary of the keyword values to use.
-
-       Returns:
-        :returns list: returns host config for a container
-            create command in following format:
-            {'PortBindings': {'6640/tcp': [{'HostIp': '', 'HostPort': '6640'}],
-            '6653/tcp': [{'HostIp': '', 'HostPort': '6653'}],
-            '9001/tcp': [{'HostIp': '', 'HostPort': '9001'}]}}
-    """
-    logger.info("Creating host config.")
-
-    default_args_dict = dict(binds=None,
-                             port_bindings=None,
-                             lxc_conf=None,
-                             publish_all_ports=False,
-                             links=None,
-                             privileged=False,
-                             dns=None,
-                             dns_search=None,
-                             volumes_from=None,
-                             network_mode=None,
-                             restart_policy=None,
-                             cap_add=None,
-                             cap_drop=None,
-                             devices=None,
-                             extra_hosts=None
-                             )
-    args_dict = docker_process_args(passed_args_dict, default_args_dict,
-                                    "docker_create_host_config")
-
-    return docker.utils.create_host_config(**args_dict)
-
-
-def docker_process_args(passed_args_dict, default_args_dict, method_name):
-    """Accepts two dicts and combines them preferring passed
-        args while filling unspecified args with default values.
-
-    Parameters:
-        :param passed_args_dict: A dict of the passed keyword args for the method.
-
-        :param default_args_dict: A dict of the default keyword args for the method.
-
-    Returns:
-        :returns dict: returns dict containing passed args, with
-        defaults for all other keyword args.
-    """
-    logger.info("Processing args for %s method" % method_name)
-    logger.info(passed_args_dict)
-    logger.info(default_args_dict)
-    processed_args_dict = {}
-
-    if passed_args_dict is None:
-        passed_args_dict = {}
-
-    try:
-        for key in default_args_dict:
-            if key in passed_args_dict:
-                processed_args_dict[key] = passed_args_dict[key]
-            else:
-                processed_args_dict[key] = default_args_dict[key]
-    except TypeError:
-        logger.debug("Error: One or both of the passed arguments is not a dictionary")
-
-    return processed_args_dict
-
-
-def docker_get_client(*passed_args_dict):
-    """Returns docker-py client.
-
-    Parameters:
-        :param passed_args_dict: dictionary of the keyword values to use.
-
-    Returns:
-        :returns obj: returns docker-py client object.
-    """
-    default_args_dict = dict(base_url="unix://var/run/docker.sock",
-                             version=None,
-                             timeout=10,
-                             tls=False)
-    args_dict = docker_process_args(passed_args_dict, default_args_dict, "docker_get_client")
-    return docker.Client(**args_dict)