summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dovetail/conf/cmd_config.yml5
-rw-r--r--dovetail/container.py6
-rwxr-xr-xdovetail/run.py5
-rw-r--r--dovetail/test_runner.py12
-rw-r--r--requirements.txt3
-rw-r--r--setup.py2
6 files changed, 29 insertions, 4 deletions
diff --git a/dovetail/conf/cmd_config.yml b/dovetail/conf/cmd_config.yml
index c0da5113..da8c4732 100644
--- a/dovetail/conf/cmd_config.yml
+++ b/dovetail/conf/cmd_config.yml
@@ -58,3 +58,8 @@ cli:
- '--report'
- '-r'
help: 'push results to DB (e.g. --report http://192.168.135.2:8000/api/v1)'
+ offline:
+ flags:
+ - '--offline'
+ is_flag: 'True'
+ help: 'run in offline method, which means not to update the docker upstream images, functest, yardstick, etc.'
diff --git a/dovetail/container.py b/dovetail/container.py
index bfdbeb94..878b21cb 100644
--- a/dovetail/container.py
+++ b/dovetail/container.py
@@ -187,6 +187,12 @@ class Container(object):
return 0
@classmethod
+ def check_image_exist(cls, validate_type):
+ docker_image = cls.get_docker_image(validate_type)
+ image_id = cls.get_image_id(docker_image)
+ return image_id
+
+ @classmethod
def clean(cls, container_id):
cmd1 = 'sudo docker stop %s' % (container_id)
dt_utils.exec_cmd(cmd1, cls.logger)
diff --git a/dovetail/run.py b/dovetail/run.py
index 17d7edf4..2a2c5677 100755
--- a/dovetail/run.py
+++ b/dovetail/run.py
@@ -171,6 +171,11 @@ def main(*args, **kwargs):
if kwargs['report']:
dt_cfg.dovetail_config['report_dest'] = kwargs['report']
+ if kwargs['offline']:
+ dt_cfg.dovetail_config['offline'] = True
+ else:
+ dt_cfg.dovetail_config['offline'] = False
+
testarea = kwargs['testarea']
testsuite_validation = False
testarea_validation = False
diff --git a/dovetail/test_runner.py b/dovetail/test_runner.py
index 537fdec8..ea58768c 100644
--- a/dovetail/test_runner.py
+++ b/dovetail/test_runner.py
@@ -29,8 +29,16 @@ class DockerRunner(object):
cls.logger = dt_logger.Logger(__name__ + '.DockerRunner').getLogger()
def run(self):
- Container.pull_image(self.testcase.validate_type())
- container_id = Container.create(self.testcase.validate_type())
+ if dt_cfg.dovetail_config['offline']:
+ exist = Container.check_image_exist(self.testcase.validate_type())
+ if not exist:
+ self.logger.error('%s image not exist offline running',
+ self.testcase.validate_type())
+ return
+ container_id = Container.create(self.testcase.validate_type())
+ else:
+ Container.pull_image(self.testcase.validate_type())
+ container_id = Container.create(self.testcase.validate_type())
if not container_id:
self.logger.error('failed to create container')
return
diff --git a/requirements.txt b/requirements.txt
index ae643222..e6369598 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,8 @@
Click
Jinja2==2.8
-pbr>=2.0.0
+pbr==2.0.0
PyYAML==3.11
python-openstackclient==3.9.0
requests==2.10.0
six==1.10.0
+stevedore==1.20.0
diff --git a/setup.py b/setup.py
index aeb4bf33..a84dd400 100644
--- a/setup.py
+++ b/setup.py
@@ -10,5 +10,5 @@
import setuptools
setuptools.setup(
- setup_requires=['pbr>=2.0.0'],
+ setup_requires=['pbr==2.0.0'],
pbr=True)