]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
ShamanProject: don't write broken repos
authorZack Cerza <zack@redhat.com>
Fri, 18 Nov 2016 18:34:29 +0000 (11:34 -0700)
committerZack Cerza <zack@redhat.com>
Fri, 18 Nov 2016 18:34:29 +0000 (11:34 -0700)
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 <zack@redhat.com>
teuthology/packaging.py

index 680fde9be31619dae13413bc28c6f00d5bacbbf4..7785067fe8e770e93236581193536ac13ba0298f 100644 (file)
@@ -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):