Module: check_mk
Branch: master
Commit: 445d5c0e83b08c46b433eaf9eb8cb0c79c94d54d
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=445d5c0e83b08c…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue May 8 09:23:34 2018 +0200
Jenkins now loads packages from local path instead of download portal
Change-Id: I759138e7fca22e37d502208d2befd9c59d456eb5
---
tests/testlib/__init__.py | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/tests/testlib/__init__.py b/tests/testlib/__init__.py
index 675689f..ecfb6ca 100644
--- a/tests/testlib/__init__.py
+++ b/tests/testlib/__init__.py
@@ -162,6 +162,10 @@ class CMKVersion(object):
return "https://mathias-kettner.de/support/%s/%s" % (self.version,
self.package_name())
+ def _build_system_package_path(self):
+ return os.path.join("/bauwelt/download", self.version,
self.package_name())
+
+
def version_directory(self):
return self.omd_version()
@@ -182,11 +186,28 @@ class CMKVersion(object):
if self.is_installed():
return True
+ # Use directly from build server in case the tests are executed there
+ if os.path.exists(self._build_system_package_path()):
+ return True
+
response = requests.head(self.package_url(),
auth=self._get_cmk_download_credentials(), verify=False)
return response.status_code == 200
def install(self):
+ if os.path.exists(self._build_system_package_path()):
+ print "Install from build system package (%s)" %
self._build_system_package_path()
+ package_path = self._build_system_package_path()
+ self._install_package(package_path)
+
+ else:
+ print "Install from download portal"
+ package_path = self._download_package()
+ self._install_package(package_path)
+ os.unlink(package_path)
+
+
+ def _download_package(self):
temp_package_path = "/tmp/%s" % self.package_name()
print(self.package_url())
@@ -194,7 +215,10 @@ class CMKVersion(object):
if response.status_code != 200:
raise Exception("Failed to load package: %s" % self.package_url())
file(temp_package_path, "w").write(response.content)
+ return temp_package_path
+
+ def _install_package(self, package_path):
# The following gdebi call will fail in case there is another package
# manager task being active. Try to wait for other task to finish. Sure
# this is not race free, but hope it's sufficient.
@@ -206,13 +230,11 @@ class CMKVersion(object):
print("Getting install file lock
(/tmp/cmk-test-install-version.lock)...")
with lockfile.FileLock("/tmp/cmk-test-install-version"):
print("Have install file lock")
- cmd = "sudo /usr/bin/gdebi --non-interactive %s" %
temp_package_path
+ cmd = "sudo /usr/bin/gdebi --non-interactive %s" % package_path
print(cmd)
sys.stdout.flush()
if os.system(cmd) >> 8 != 0:
- raise Exception("Failed to install package: %s" %
temp_package_path)
-
- os.unlink(temp_package_path)
+ raise Exception("Failed to install package: %s" %
package_path)
assert self.is_installed()