diff --git a/fuelweb_test/helpers/fuel_release_hacks.py b/fuelweb_test/helpers/fuel_release_hacks.py index 2bd6836bd..92f766ecd 100644 --- a/fuelweb_test/helpers/fuel_release_hacks.py +++ b/fuelweb_test/helpers/fuel_release_hacks.py @@ -17,6 +17,7 @@ import os from fuelweb_test import logger from fuelweb_test import settings from fuelweb_test.helpers.ssh_manager import SSHManager +from fuelweb_test.helpers.utils import generate_yum_repos_config from gates_tests.helpers import exceptions @@ -40,6 +41,21 @@ def install_mos_repos(): source=settings.FUEL_RELEASE_PATH.rstrip('/'), target=pack_path) + if settings.RPM_REPOS_YAML: + with ssh.open_on_remote( + ip=ssh.admin_ip, + path='/etc/yum.repos.d/custom.repo', + mode="w") as f: + f.write(generate_yum_repos_config(settings.RPM_REPOS_YAML)) + + if settings.DEB_REPOS_YAML: + ssh = SSHManager() + pack_path = "/root/default_deb_repos.yaml" + ssh.upload_to_remote( + ip=ssh.admin_ip, + source=settings.DEB_REPOS_YAML, + target=pack_path) + except Exception: logger.exception("Could not upload package") raise diff --git a/fuelweb_test/helpers/utils.py b/fuelweb_test/helpers/utils.py index 22b7c4d98..7624dd3e1 100644 --- a/fuelweb_test/helpers/utils.py +++ b/fuelweb_test/helpers/utils.py @@ -1589,3 +1589,24 @@ class YamlEditor(object): if self.content == self.original_content: return self.write_content() + + +def generate_yum_repos_config(repositories): + """ + Function will parce yaml file with describing of repos + and will create yum config + :param repositories: yaml file with repo + :return: a dict with options + """ + repos = YamlEditor(repositories).get_content() + logger.debug('custom RPM repos from yaml: {0}'. format(repos)) + config = "" + for repo in repos: + config += "[{name}]\n" \ + "name={name}\n" \ + "baseurl={uri}\n" \ + "enabled=1\n" \ + "gpgcheck=0\n" \ + "priority={priority}\n" \ + "skip_if_unavailable=1\n".format(**repo) + return config diff --git a/fuelweb_test/settings.py b/fuelweb_test/settings.py index 8c9f74171..bbe77b82e 100644 --- a/fuelweb_test/settings.py +++ b/fuelweb_test/settings.py @@ -721,3 +721,7 @@ MASTER_NODE_EXTRA_PACKAGES = os.environ.get("MASTER_NODE_EXTRA_PACKAGES", "") CENTOS_MASTER_NODE = os.environ.get("CENTOS_MASTER") LOG_SNAPSHOT_TIMEOUT = int(os.environ.get("LOG_SNAPSHOT_TIMEOUT", 10 * 60)) + +RPM_REPOS_YAML = os.environ.get("RPM_REPOS_YAML") + +DEB_REPOS_YAML = os.environ.get("DEB_REPOS_YAML")