import contextlib
import logging
+import time
from teuthology import misc as teuthology
from teuthology import contextutil
log = logging.getLogger(__name__)
-def _update_deb_package_list_and_install(ctx, remote, debs, branch, flavor):
+def _update_deb_package_list_and_install(ctx, remote, debs, config):
"""
updates the package list so that apt-get can
download the appropriate packages
arch = r.stdout.getvalue().strip()
log.info("dist %s arch %s", dist, arch)
- base_url = 'http://{host}/ceph-deb-{dist}-{arch}-{flavor}/ref/{branch}'.format(
+ # branch/tag/sha1 flavor
+ flavor = config.get('flavor', 'basic')
+
+ uri = None
+ log.info('config is %s', config)
+ if config.get('sha1') is not None:
+ uri = 'sha1/' + config.get('sha1')
+ elif config.get('tag') is not None:
+ uri = 'ref/' + config.get('tag')
+ elif config.get('branch') is not None:
+ uri = 'ref/' + config.get('branch')
+ else:
+ uri = 'ref/master'
+
+ base_url = 'http://{host}/ceph-deb-{dist}-{arch}-{flavor}/{uri}'.format(
host=ctx.teuthology_config.get('gitbuilder_host',
'gitbuilder.ceph.com'),
dist=dist,
arch=arch,
flavor=flavor,
- branch=branch,
+ uri=uri,
)
+ log.info('Pulling from %s', base_url)
# get package version string
- r = remote.run(
- args=[
- 'wget', '-q', '-O-', base_url + '/version',
- ],
- stdout=StringIO(),
- )
- version = r.stdout.getvalue().strip()
- log.info('package version is %s', version)
+ while True:
+ r = remote.run(
+ args=[
+ 'wget', '-q', '-O-', base_url + '/version',
+ ],
+ stdout=StringIO(),
+ )
+ version = r.stdout.getvalue().strip()
+ log.info('Package version is %s', version)
+ break
remote.run(
args=[
)
-def install_debs(ctx, debs, branch, flavor):
+def install_debs(ctx, debs, config):
"""
installs Debian packages.
"""
for remote in ctx.cluster.remotes.iterkeys():
p.spawn(
_update_deb_package_list_and_install,
- ctx, remote, debs, branch, flavor)
+ ctx, remote, debs, config)
def _remove_deb(remote, debs):
# first ask nicely
'librbd1',
'librbd1-dbg',
]
- branch = config.get('branch', 'master')
- flavor = config.get('flavor')
- log.info('branch: {b}'.format(b=branch))
- install_debs(ctx, debs_install, branch, flavor)
+ install_debs(ctx, debs_install, config)
try:
yield
finally:
with contextutil.nested(
lambda: install(ctx=ctx, config=dict(
- branch=config.get('branch', 'master'),
+ branch=config.get('branch'),
tag=config.get('tag'),
sha1=config.get('sha1'),
flavor=flavor,
- extra_packages=config.get('extra_packages'),
+ extra_packages=config.get('extra_packages', []),
+ wait_for_package=ctx.config.get('wait-for-package', False),
)),
):
yield