diff --git a/fuelweb_test/helpers/decorators.py b/fuelweb_test/helpers/decorators.py index 1f7ed7bd7..ccdd617ab 100644 --- a/fuelweb_test/helpers/decorators.py +++ b/fuelweb_test/helpers/decorators.py @@ -16,10 +16,12 @@ import functools import inspect import json import os +from subprocess import call import sys import time import traceback import urllib2 +from urlparse import urlparse from devops.helpers import helpers from fuelweb_test.helpers.checkers import check_action_logs @@ -168,6 +170,24 @@ def update_packages(func): remote = environment.d_env.get_admin_remote() + if settings.UPDATE_FUEL_MIRROR: + for url in settings.UPDATE_FUEL_MIRROR: + repo_url = urlparse(url) + cut_dirs = len(repo_url.path.strip('/').split('/')) + download_cmd = ('wget --recursive --no-parent' + ' --no-verbose --reject "index' + '.html*,*.gif" --exclude-directories' + ' "{pwd}/repocache" ' + '--directory-prefix {path} -nH' + ' --cut-dirs={cutd} {url}').\ + format(pwd=repo_url.path.rstrip('/'), + path=settings.UPDATE_FUEL_PATH, + cutd=cut_dirs, url=repo_url.geturl()) + return_code = call(download_cmd, shell=True) + assert_equal(return_code, 0, 'Mirroring of remote' + ' packages ' + 'repository failed') + centos_files_count, ubuntu_files_count = \ environment.admin_actions.upload_packages( local_packages_dir=settings.UPDATE_FUEL_PATH, diff --git a/fuelweb_test/settings.py b/fuelweb_test/settings.py index a96c7484c..79512b224 100644 --- a/fuelweb_test/settings.py +++ b/fuelweb_test/settings.py @@ -428,6 +428,7 @@ DOWNLOAD_LINK = os.environ.get( UPDATE_FUEL = os.environ.get('UPDATE_FUEL', 'false') == 'true' UPDATE_FUEL_PATH = os.environ.get('UPDATE_FUEL_PATH', '~/fuel/pkgs/') +UPDATE_FUEL_MIRROR = os.environ.get("UPDATE_FUEL_MIRROR", '').split() EMC_PLUGIN_PATH = os.environ.get('EMC_PLUGIN_PATH') EMC_SP_A_IP = os.environ.get('EMC_SP_A_IP')