Index: client/tests/kvm/tests/build.py |
diff --git a/client/tests/kvm/tests/build.py b/client/tests/kvm/tests/build.py |
index f39371a709fafacf0081e1c8b5cad57d1a2a4359..c4f0b1896496571ca430934ecc7b3bd1d1213c0a 100644 |
--- a/client/tests/kvm/tests/build.py |
+++ b/client/tests/kvm/tests/build.py |
@@ -1,10 +1,5 @@ |
import time, os, sys, urllib, re, signal, logging, datetime, glob, ConfigParser |
import shutil |
-try: |
- import koji |
- KOJI_INSTALLED = True |
-except ImportError: |
- KOJI_INSTALLED = False |
from autotest_lib.client.bin import utils, test, os_dep |
from autotest_lib.client.common_lib import error |
import kvm_utils |
@@ -268,96 +263,27 @@ class KojiInstaller(YumInstaller): |
""" |
def __init__(self, test, params): |
""" |
- Initialize koji/brew session. |
+ Gets parameters and initializes the package downloader. |
@param test: kvm test object |
@param params: Dictionary with test arguments |
""" |
super(KojiInstaller, self).__init__(test, params) |
- |
default_koji_cmd = '/usr/bin/koji' |
default_src_pkg = 'qemu' |
- |
- self.koji_cmd = params.get("koji_cmd", default_koji_cmd) |
self.src_pkg = params.get("src_pkg", default_src_pkg) |
- |
- # Checking if all required dependencies are available |
- os_dep.command(self.koji_cmd) |
- |
- config_map = {'/usr/bin/koji': '/etc/koji.conf', |
- '/usr/bin/brew': '/etc/brewkoji.conf'} |
- config_file = config_map[self.koji_cmd] |
- base_name = os.path.basename(self.koji_cmd) |
- if os.access(config_file, os.F_OK): |
- f = open(config_file) |
- config = ConfigParser.ConfigParser() |
- config.readfp(f) |
- f.close() |
- else: |
- raise error.TestError('Configuration file %s missing or with wrong ' |
- 'permissions' % config_file) |
- |
- if config.has_section(base_name): |
- self.koji_options = {} |
- session_options = {} |
- server = None |
- for name, value in config.items(base_name): |
- if name in ('user', 'password', 'debug_xmlrpc', 'debug'): |
- session_options[name] = value |
- self.koji_options[name] = value |
- self.session = koji.ClientSession(self.koji_options['server'], |
- session_options) |
- else: |
- raise error.TestError('Koji config file %s does not have a %s ' |
- 'session' % (config_file, base_name)) |
- |
self.tag = params.get("koji_tag", None) |
self.build = params.get("koji_build", None) |
- if self.build and self.build.isdigit(): |
- self.build = int(self.build) |
- if self.tag and self.build: |
- logging.info("Both tag and build parameters provided, ignoring tag " |
- "parameter...") |
- if not self.tag and not self.build: |
- raise error.TestError("Koji install selected but neither koji_tag " |
- "nor koji_build parameters provided. Please " |
- "provide an appropriate tag or build name.") |
+ koji_cmd = params.get("koji_cmd", default_koji_cmd) |
+ self.downloader = kvm_utils.KojiDownloader(cmd=koji_cmd) |
def _get_packages(self): |
""" |
Downloads the specific arch RPMs for the specific build name. |
""" |
- if self.build is None: |
- try: |
- builds = self.session.listTagged(self.tag, latest=True, |
- package=self.src_pkg) |
- except koji.GenericError, e: |
- raise error.TestError("Error finding latest build for tag %s: " |
- "%s" % (self.tag, e)) |
- if not builds: |
- raise error.TestError("Tag %s has no builds of %s" % |
- (self.tag, self.src_pkg)) |
- info = builds[0] |
- else: |
- info = self.session.getBuild(self.build) |
- |
- if info is None: |
- raise error.TestError('No such brew/koji build: %s' % |
- self.build) |
- rpms = self.session.listRPMs(buildID=info['id'], |
- arches=utils.get_arch()) |
- if not rpms: |
- raise error.TestError("No %s packages available for %s" % |
- utils.get_arch(), koji.buildLabel(info)) |
- for rpm in rpms: |
- rpm_name = koji.pathinfo.rpm(rpm) |
- url = ("%s/%s/%s/%s/%s" % (self.koji_options['pkgurl'], |
- info['package_name'], |
- info['version'], info['release'], |
- rpm_name)) |
- utils.get_file(url, |
- os.path.join(self.srcdir, os.path.basename(url))) |
+ self.downloader.get(src_package=self.src_pkg, tag=self.tag, |
+ build=self.build, dst_dir=self.srcdir) |
def install(self): |
@@ -680,11 +606,7 @@ def run_build(test, params, env): |
elif install_mode == 'yum': |
installer = YumInstaller(test, params) |
elif install_mode == 'koji': |
- if KOJI_INSTALLED: |
- installer = KojiInstaller(test, params) |
- else: |
- raise error.TestError('Koji install selected but koji/brew are not ' |
- 'installed') |
+ installer = KojiInstaller(test, params) |
else: |
raise error.TestError('Invalid or unsupported' |
' install mode: %s' % install_mode) |