]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
packaging.py: Use misc.get_system_type()
authorDan Mick <dan.mick@redhat.com>
Wed, 3 Dec 2014 23:41:13 +0000 (15:41 -0800)
committerDan Mick <dan.mick@redhat.com>
Thu, 4 Dec 2014 01:02:44 +0000 (17:02 -0800)
Dump _get_relmap() and _RELEASE_MAP in favor of common code.
Also remove the repo management stuff; it was only used by the
now-obsolete calamari task.

Fixes: #10236
Signed-off-by: Dan Mick <dan.mick@redhat.com>
teuthology/packaging.py

index bd1ec6bc52fa0d321e57e7fd2bff02b1fddc5445..c856dcbba825ded8224b669c295ab4f269924900 100644 (file)
@@ -1,23 +1,8 @@
-from cStringIO import StringIO
-from .orchestra import run
 import logging
 from teuthology import misc
-import textwrap
 
 log = logging.getLogger(__name__)
 
-'''
-Infer things about platform type with this map.
-The key comes from processing lsb_release -ics or -irs (see _get_relmap).
-'''
-_RELEASE_MAP = {
-    'Ubuntu precise': dict(flavor='deb', release='ubuntu', version='precise'),
-    'Debian wheezy': dict(flavor='deb', release='debian', version='wheezy'),
-    'CentOS 6.4': dict(flavor='rpm', release='centos', version='6.4'),
-    'RedHatEnterpriseServer 6.4': dict(flavor='rpm', release='rhel',
-                                       version='6.4'),
-}
-
 '''
 Map 'generic' package name to 'flavor-specific' package name.
 If entry is None, either the package isn't known here, or
@@ -36,34 +21,11 @@ _SERVICE_MAP = {
 }
 
 
-def _get_relmap(rem):
-    """
-    Internal worker to get the appropriate dict from RELEASE_MAP
-    """
-    relmap = getattr(rem, 'relmap', None)
-    if relmap is not None:
-        return relmap
-    lsb_release_out = StringIO()
-    rem.run(args=['lsb_release', '-ics'], stdout=lsb_release_out)
-    release = lsb_release_out.getvalue().replace('\n', ' ').rstrip()
-    if release in _RELEASE_MAP:
-        rem.relmap = _RELEASE_MAP[release]
-        return rem.relmap
-    else:
-        lsb_release_out = StringIO()
-        rem.run(args=['lsb_release', '-irs'], stdout=lsb_release_out)
-        release = lsb_release_out.getvalue().replace('\n', ' ').rstrip()
-        if release in _RELEASE_MAP:
-            rem.relmap = _RELEASE_MAP[release]
-            return rem.relmap
-    raise RuntimeError('Can\'t get release info for {}'.format(rem))
-
-
 def get_package_name(pkg, rem):
     """
     Find the remote-specific name of the generic 'pkg'
     """
-    flavor = _get_relmap(rem)['flavor']
+    flavor = misc.get_system_type(rem)
 
     try:
         return _PACKAGE_MAP[pkg][flavor]
@@ -75,121 +37,20 @@ def get_service_name(service, rem):
     """
     Find the remote-specific name of the generic 'service'
     """
-    flavor = _get_relmap(rem)['flavor']
+    flavor = misc.get_system_type(rem)
     try:
         return _SERVICE_MAP[service][flavor]
     except KeyError:
         return None
 
 
-def install_repo(remote, reposerver, pkgdir, username=None, password=None):
-    """
-    Install a package repo for reposerver on remote.
-    URL will be http if username and password are none, otherwise https.
-    pkgdir is the piece path between "reposerver" and "deb" or "rpm"
-     (say, 'packages', or 'packages-staging/my-branch', for example).
-    so:
-        http[s]://[<username>:<password>@]<reposerver>/<pkgdir>/{deb|rpm}
-    will be written to deb's apt inktank.list or rpm's inktank.repo
-    """
-
-    relmap = _get_relmap(remote)
-    log.info('Installing repo on %s', remote)
-    if username is None or password is None:
-        repo_uri = 'http://{reposerver}/{pkgdir}'
-    else:
-        repo_uri = 'https://{username}:{password}@{reposerver}/{pkgdir}'
-
-    if relmap['flavor'] == 'deb':
-        contents = 'deb ' + repo_uri + '/deb {codename} main'
-        contents = contents.format(username=username, password=password,
-                                   reposerver=reposerver, pkgdir=pkgdir,
-                                   codename=relmap['version'],)
-        misc.sudo_write_file(remote,
-                                   '/etc/apt/sources.list.d/inktank.list',
-                                   contents)
-        remote.run(args=['sudo',
-                         'apt-get',
-                         'install',
-                         'apt-transport-https',
-                         '-y'])
-        result = remote.run(args=['sudo', 'apt-get', 'update', '-y'],
-                            stdout=StringIO())
-        return result
-
-    elif relmap['flavor'] == 'rpm':
-        baseurl = repo_uri + '/rpm/{release}{version}'
-        contents = textwrap.dedent('''
-            [inktank]
-            name=Inktank Storage, Inc.
-            baseurl={baseurl}
-            gpgcheck=1
-            enabled=1
-            '''.format(baseurl=baseurl))
-        contents = contents.format(username=username,
-                                   password=password,
-                                   pkgdir=pkgdir,
-                                   release=relmap['release'],
-                                   version=relmap['version'])
-        misc.sudo_write_file(remote,
-                                   '/etc/yum.repos.d/inktank.repo',
-                                   contents)
-        return remote.run(args=['sudo', 'yum', 'makecache'])
-
-    else:
-        return False
-
-
-def remove_repo(remote):
-    log.info('Removing repo on %s', remote)
-    flavor = _get_relmap(remote)['flavor']
-    if flavor == 'deb':
-        misc.delete_file(remote, '/etc/apt/sources.list.d/inktank.list',
-                               sudo=True, force=True)
-        result = remote.run(args=['sudo', 'apt-get', 'update', '-y'],
-                            stdout=StringIO())
-        return result
-
-    elif flavor == 'rpm':
-        misc.delete_file(remote, '/etc/yum.repos.d/inktank.repo',
-                               sudo=True, force=True)
-        return remote.run(args=['sudo', 'yum', 'makecache'])
-
-    else:
-        return False
-
-
-def install_repokey(remote, keyurl):
-    """
-    Install a repo key from keyurl on remote.
-    Installing keys is assumed to be idempotent.
-    Example keyurl: 'http://download.inktank.com/keys/release.asc'
-    """
-    log.info('Installing repo key on %s', remote)
-    flavor = _get_relmap(remote)['flavor']
-    if flavor == 'deb':
-        return remote.run(args=['wget',
-                                '-q',
-                                '-O-',
-                                keyurl,
-                                run.Raw('|'),
-                                'sudo',
-                                'apt-key',
-                                'add',
-                                '-'])
-    elif flavor == 'rpm':
-        return remote.run(args=['sudo', 'rpm', '--import', keyurl])
-    else:
-        return False
-
-
 def install_package(package, remote):
     """
     Install 'package' on 'remote'
     Assumes repo has already been set up (perhaps with install_repo)
     """
     log.info('Installing package %s on %s', package, remote)
-    flavor = _get_relmap(remote)['flavor']
+    flavor = misc.get_system_type(remote)
     if flavor == 'deb':
         pkgcmd = ['DEBIAN_FRONTEND=noninteractive',
                   'sudo',
@@ -214,7 +75,7 @@ def remove_package(package, remote):
     """
     Remove package from remote
     """
-    flavor = _get_relmap(remote)['flavor']
+    flavor = misc.get_system_type(remote)
     if flavor == 'deb':
         pkgcmd = ['DEBIAN_FRONTEND=noninteractive',
                   'sudo',