From a62ffe119b6610e665ad48168aaeab5339fc59e4 Mon Sep 17 00:00:00 2001 From: Zack Cerza Date: Fri, 18 Nov 2016 11:34:29 -0700 Subject: [PATCH] ShamanProject: don't write broken repos We saw several cases where repo file contents were actually small HTML files containing "502 Bad Gateway" errors. This will cause ShamanProject to raise an exception if that happens - and not write broken repo files. Signed-off-by: Zack Cerza --- teuthology/packaging.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/teuthology/packaging.py b/teuthology/packaging.py index 680fde9be3..7785067fe8 100644 --- a/teuthology/packaging.py +++ b/teuthology/packaging.py @@ -14,6 +14,7 @@ from .config import config from .contextutil import safe_while from .exceptions import (VersionNotFoundError, CommitNotFoundError, NoRemoteError) +from .misc import sudo_write_file from .orchestra.opsys import OS, DEFAULT_OS_VERSION from .orchestra.run import Raw @@ -939,23 +940,26 @@ class ShamanProject(GitbuilderProject): 'repo', ) + def _get_repo(self): + resp = requests.get(self.repo_url) + resp.raise_for_status() + return resp.text + def _install_rpm_repo(self): - self.remote.run( - args=[ - 'sudo', 'curl', '-s', '-o', - '/etc/yum.repos.d/{proj}.repo'.format(proj=self.project), - self.repo_url, - ] + repo = self._get_repo() + sudo_write_file( + self.remote, + '/etc/yum.repos.d/{proj}.repo'.format(proj=self.project), + repo, ) def _install_deb_repo(self): - self.remote.run( - args=[ - 'sudo', 'curl', '-s', '-o', - '/etc/apt/sources.list.d/{proj}.list'.format( - proj=self.project), - self.repo_url, - ] + repo = self._get_repo() + sudo_write_file( + self.remote, + '/etc/apt/sources.list.d/{proj}.list'.format( + proj=self.project), + repo, ) def _remove_rpm_repo(self): -- 2.39.5