Tips on update docker to right version, > 1.8 27/34027/1
authorgrkiss <grakiss.wanglei@huawei.com>
Mon, 1 May 2017 22:50:20 +0000 (15:50 -0700)
committergrkiss <grakiss.wanglei@huawei.com>
Mon, 1 May 2017 22:50:20 +0000 (15:50 -0700)
JIRA: DOVETAIL-414

Dovetail requires docker at version > 1.8, so add some validation in code, and also versions of client and server should match
with each other, or there will be unpredictable errors.

Gives a notice to user to decide whether to update the docker to the latest version(1.17)

Change-Id: I1331f5c19943a73e8fe25f76bd21628233e556f3
Signed-off-by: grakiss <grakiss.wanglei@huawei.com>
docker/Dockerfile
dovetail/run.py
dovetail/utils/dovetail_utils.py

index 8cc15e0..7b3d99e 100644 (file)
@@ -13,9 +13,12 @@ RUN \
         python-mock \
         python-pip \
         apt-transport-https \
+        wget \
         --no-install-recommends \
 && \
-    apt-get update &&  apt-get -y install docker.io
+    apt-get update
+
+RUN wget -qO- https://get.docker.com/ | sh
 
 ENV HOME /home/opnfv
 ENV REPOS_DIR ${HOME}/dovetail
index 607e1b1..4bea9b5 100755 (executable)
@@ -204,6 +204,7 @@ def main(*args, **kwargs):
     logger.info('Dovetail compliance: %s!', (kwargs['testsuite']))
     logger.info('================================================')
     logger.info('Build tag: %s', dt_cfg.dovetail_config['build_tag'])
+    dt_utils.check_docker_version(logger)
     validate_input(kwargs, dt_cfg.dovetail_config['validate_input'], logger)
     configs = filter_config(kwargs, logger)
 
index 020617b..7b61348 100644 (file)
@@ -17,6 +17,7 @@ from collections import Mapping, Set, Sequence
 import json
 import urllib2
 from datetime import datetime
+from distutils.version import LooseVersion
 
 
 def exec_log(verbose, logger, msg, level, flush=False):
@@ -165,3 +166,27 @@ def show_progress_bar(length):
     sys.stdout.flush()
     sys.stdout.write('Running ' + '.' * length + '\r')
     sys.stdout.flush()
+
+
+def check_docker_version(logger=None):
+    ret, server_ver = exec_cmd("docker version -f'{{.Server.Version}}'",
+                               logger=logger)
+    ret, client_ver = exec_cmd("docker version -f'{{.Client.Version}}'",
+                               logger=logger)
+    logger.info("\ndocker version: \nclient:%s\nservr:%s", client_ver,
+                server_ver)
+    if(LooseVersion(client_ver) <= LooseVersion('1.8.0') or
+       LooseVersion(server_ver) <= LooseVersion('1.8.0')):
+        logger.warn("\n\nDocker version is too old, may cause unpredictable "
+                    "errors, you can update or install the lastest docker "
+                    "for both host and container as below:\nwget -qO- "
+                    "https://get.docker.com/ | sh\n\nClient:%s\nServer:%s",
+                    client_ver, server_ver)
+        exit(-1)
+
+    if(client_ver != server_ver):
+        logger.warn("\n\nVersion mismatch, may cause unpredictable "
+                    "errors, you can update or install the lastest "
+                    "docker for both host and container as below:\nwget "
+                    "-qO- https://get.docker.com/ | "
+                    "sh\n\nClient:%s\nServer:%s", client_ver, server_ver)