From 884908ee25fd0be2ea9bf7a9cd195fe5552745a6 Mon Sep 17 00:00:00 2001 From: Anton Chevychalov Date: Wed, 30 Nov 2016 16:55:40 +0300 Subject: [PATCH] [Jenkins] Allow script to add centos repos. New parameter for deployment job ADD_CENT_REPO Change-Id: Ic20b6516c9e987efa511edb6987a74ce9a1d6775 --- jenkins/build_cluster/build_cluster.py | 21 ++++++++++- jenkins/build_cluster/build_cluster_test.py | 22 +++++++++++- jenkins/build_cluster/config.xml | 40 +++++++++++++++++---- jenkins/build_cluster/repo_helper.sh | 11 ++++++ 4 files changed, 85 insertions(+), 9 deletions(-) create mode 100755 jenkins/build_cluster/repo_helper.sh diff --git a/jenkins/build_cluster/build_cluster.py b/jenkins/build_cluster/build_cluster.py index a279b94..54820cc 100755 --- a/jenkins/build_cluster/build_cluster.py +++ b/jenkins/build_cluster/build_cluster.py @@ -16,6 +16,7 @@ import scancodes # CONST UPDATE_HELPER = "update_helper.sh" +REPO_HELPER = "repo_helper.sh" SSH_PARAMS = ["-o", "UserKnownHostsFile=/dev/null", "-o", "StrictHostKeyChecking=no"] @@ -60,6 +61,7 @@ if cfg["ISO_URL"]: cfg["PREPARE_CLUSTER"] = os.getenv("PREPARE_CLUSTER") cfg["UPDATE_FUEL"] = os.getenv("UPDATE_FUEL") +cfg["ADD_CENT_REPO"] = os.getenv("ADD_CENT_REPO") cfg["RELEASE"] = os.getenv("RELEASE") cfg["HA"] = os.getenv("HA") cfg["NETWORK_TYPE"] = os.getenv("NETWORK_TYPE") @@ -493,6 +495,20 @@ def sshpass(psw,ssh_cmd): return False +def add_cent_repo(node, repolist): + if node.put_file(REPO_HELPER): + i = 1 + for repo in repolist.split('\n'): + if not node.execute(["/tmp/"+REPO_HELPER,"add"+str(i), repo]): + print ("ERROR: Unable to add repo " + repo) + return False + i = i + 1 + return True + else: + print ("ERROR: Unable to copy repo script to admin node") + return False + + def do_update(node): if node.put_file(UPDATE_HELPER): return node.execute(["/tmp/"+UPDATE_HELPER]) @@ -717,7 +733,10 @@ def main(): admin_node=SSHHost(usr = cfg["FUEL_SSH_USERNAME"], subnet=cfg["ADMIN_SUBNET"], - psw = cfg["FUEL_SSH_PASSWORD"],) + pswd = cfg["FUEL_SSH_PASSWORD"],) + + if cfg["ADD_CENT_REPO"]!="": + add_cent_repo(cfg["ADD_CENT_REPO"]) if cfg["UPDATE_FUEL"]=="true": if do_update(admin_node): diff --git a/jenkins/build_cluster/build_cluster_test.py b/jenkins/build_cluster/build_cluster_test.py index 53e6571..3c035e6 100755 --- a/jenkins/build_cluster/build_cluster_test.py +++ b/jenkins/build_cluster/build_cluster_test.py @@ -12,7 +12,7 @@ def test_bool(name, func): if func: print "\033[32mOK\033[00m - "+name else: - print "\033[31mOK\033[00m - "+name + print "\033[31mFAIL\033[00m - "+name def main(): @@ -41,7 +41,27 @@ def main(): # NOTE: can take too many time... test_bool("do update", build_cluster.do_update (node)) + repolist='''http://mirror.fuel-infra.org/mos-repos/centos/mos9.0-centos7/updates/x86_64/ + http://mirror.fuel-infra.org/mos-repos/centos/mos9.0-centos7/security/x86_64/ + ''' + test_bool("add repo", + build_cluster.add_cent_repo(node,repolist)) + + test_bool("add repo helper file", + node.execute(["test", "-f","/tmp/repo_helper.sh"])) + + test_bool("add repo check repo file 1", + node.execute(["test", "-f","/etc/yum.repos.d/add1.repo"])) + + test_bool("add repo rm repo file 1", + node.execute(["rm", "-f","/etc/yum.repos.d/add1.repo"])) + + test_bool("add repo check repo file 2", + node.execute(["test", "-f","/etc/yum.repos.d/add2.repo"])) + + test_bool("add repo rm repo file 2", + node.execute(["rm", "-f","/etc/yum.repos.d/add2.repo"])) if __name__ == "__main__": main() diff --git a/jenkins/build_cluster/config.xml b/jenkins/build_cluster/config.xml index 49fd4f7..8262105 100644 --- a/jenkins/build_cluster/config.xml +++ b/jenkins/build_cluster/config.xml @@ -14,11 +14,28 @@ Tag is used in name of build. - + ISO_URL - Required! Can be direct URL or URL to torrent-file. Public ISOs are available here - <b>http://vault.infra.mirantis.net/</b> - - + <b><a href="http://vault.infra.mirantis.net/">http://vault.infra.mirantis.net/</a></b> - public ISOs are available here. +Required! Can be direct URL or URL to torrent-file. + true + + + + + http://vault.infra.mirantis.net/MirantisOpenStack-9.0.iso.torrent + http://vault.infra.mirantis.net/MirantisOpenStack-8.0.iso.torrent + http://vault.infra.mirantis.net/MirantisOpenStack-7.0.iso.torrent + http://vault.infra.mirantis.net/MirantisOpenStack-6.1.iso.torrent + http://vault.infra.mirantis.net/MirantisOpenStack-5.1.1.iso.torrent + + + + 0 + 5 + + + NODES_COUNT Quantity of cluster nodes without fuel-master node. @@ -56,9 +73,14 @@ UPDATE_FUEL - Update fuel version to latest MU (7.0 and 8.0 only) + Update fuel version to latest MU (7.0 and 8.0 only) or upgrade release 9.x (9.0 to 9.1) false + + ADD_CENT_REPO + Add repo url. One per line. It will be added as add<i>.repo + + NETWORK_TYPE Choose a network type or leave it empty @@ -121,8 +143,12 @@ export ENV_NAME=${BUILD_USER_ID}-${BUILD_NUMBER} export PYTHONUNBUFFERED=1 curl -o ./build_cluster.py "https://raw.githubusercontent.com/Mirantis/tools-sustaining/master/jenkins/build_cluster/build_cluster.py" -curl -o ./update_helper.sh "https://raw.githubusercontent.com/Mirantis/tools-sustaining/master/jenkins/build_cluster/update_helper.sh" curl -o ./scancodes.py "https://raw.githubusercontent.com/Mirantis/tools-sustaining/master/jenkins/build_cluster/scancodes.py" +curl -o ./update_helper.sh "https://raw.githubusercontent.com/Mirantis/tools-sustaining/master/jenkins/build_cluster/update_helper.sh" +curl -o ./update_helper.sh "https://raw.githubusercontent.com/Mirantis/tools-sustaining/master/jenkins/build_cluster/repo_helper.sh" + +chmod +x update_helper.sh +chmod +x repo_helper.sh python build_cluster.py @@ -163,4 +189,4 @@ python build_cluster.py --destroy - + \ No newline at end of file diff --git a/jenkins/build_cluster/repo_helper.sh b/jenkins/build_cluster/repo_helper.sh new file mode 100755 index 0000000..06200dc --- /dev/null +++ b/jenkins/build_cluster/repo_helper.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +[ -z "$2" ] && exit + +cat > /etc/yum.repos.d/$1.repo <<-EOF +[$1] +name=$1 +baseurl=$2 +enabled=1 +gpgcheck=0 +EOF -- 2.45.2