Package up2date_client :: Module up2dateUtils
[hide private]
[frames] | no frames]

Source Code for Module up2date_client.up2dateUtils

  1  # Client code for Update Agent 
  2  # Copyright (c) 1999--2018 Red Hat, Inc.  Distributed under GPLv2. 
  3  # 
  4  # Author: Preston Brown <pbrown@redhat.com> 
  5  #         Adrian Likins <alikins@redhat.com> 
  6  # 
  7  """utility functions for up2date""" 
  8   
  9  import os 
 10  import gettext 
 11  from up2date_client import up2dateErrors 
 12  from up2date_client import config 
 13  from up2date_client.pkgplatform import getPlatform 
 14  from rhn.i18n import sstr 
 15   
 16  t = gettext.translation('rhn-client-tools', fallback=True) 
 17  # Python 3 translations don't have a ugettext method 
 18  if not hasattr(t, 'ugettext'): 
 19      t.ugettext = t.gettext 
 20  _ = t.ugettext 
 21   
 22  if getPlatform() == 'deb': 
 23      import lsb_release 
24 - def _getOSVersionAndRelease():
25 dist_info = lsb_release.get_distro_information() 26 os_name = dist_info['ID'] 27 os_version = 'n/a' 28 if 'CODENAME' in dist_info: 29 os_version = dist_info['CODENAME'] 30 os_release = dist_info['RELEASE'] 31 return os_name, os_version, os_release
32 33 else: 34 from up2date_client import transaction
35 - def _getOSVersionAndRelease():
36 ts = transaction.initReadOnlyTransaction() 37 for h in ts.dbMatch('Providename', "oraclelinux-release"): 38 SYSRELVER = 'system-release(releasever)' 39 version = sstr(h['version']) 40 release = sstr(h['release']) 41 if SYSRELVER in (sstr(provide) for provide in h['providename']): 42 provides = dict((sstr(n), sstr(v)) 43 for n,v in zip(h['providename'], h['provideversion'])) 44 release = '%s-%s' % (version, release) 45 version = provides[SYSRELVER] 46 osVersionRelease = (sstr(h['name']), version, release) 47 return osVersionRelease 48 else: 49 for h in ts.dbMatch('Providename', "redhat-release"): 50 SYSRELVER = 'system-release(releasever)' 51 version = sstr(h['version']) 52 release = sstr(h['release']) 53 if SYSRELVER in (sstr(provide) for provide in h['providename']): 54 provides = dict((sstr(n), sstr(v)) 55 for n,v in zip(h['providename'], h['provideversion'])) 56 release = '%s-%s' % (version, release) 57 version = provides[SYSRELVER] 58 osVersionRelease = (sstr(h['name']), version, release) 59 return osVersionRelease 60 else: 61 for h in ts.dbMatch('Providename', "distribution-release"): 62 osVersionRelease = (sstr(h['name']), sstr(h['version']), sstr(h['release'])) 63 # zypper requires a exclusive lock on the rpmdb. So we need 64 # to close it here. 65 ts.ts.closeDB() 66 return osVersionRelease 67 else: 68 raise up2dateErrors.RpmError( 69 "Could not determine what version of Red Hat Linux you "\ 70 "are running.\nIf you get this error, try running \n\n"\ 71 "\t\trpm --rebuilddb\n\n")
72
73 -def getVersion():
74 ''' 75 Returns the version of redhat-release rpm 76 ''' 77 cfg = config.initUp2dateConfig() 78 if cfg["versionOverride"]: 79 return str(cfg["versionOverride"]) 80 os_release, version, release = _getOSVersionAndRelease() 81 return version
82
83 -def getOSRelease():
84 ''' 85 Returns the name of the redhat-release rpm 86 ''' 87 os_release, version, release = _getOSVersionAndRelease() 88 return os_release
89
90 -def getRelease():
91 ''' 92 Returns the release of the redhat-release rpm 93 ''' 94 os_release, version, release = _getOSVersionAndRelease() 95 return release
96
97 -def getArch():
98 if os.access("/etc/rpm/platform", os.R_OK): 99 fd = open("/etc/rpm/platform", "r") 100 platform = fd.read().strip() 101 102 #bz 216225 103 #handle some replacements.. 104 replace = {"ia32e-redhat-linux": "x86_64-redhat-linux"} 105 if platform in replace: 106 platform = replace[platform] 107 return platform 108 arch = os.uname()[4] 109 if getPlatform() == 'deb': 110 # On debian we only support i386 111 if arch in ['i486', 'i586', 'i686']: 112 arch = 'i386' 113 if arch == 'x86_64': 114 arch = 'amd64' 115 arch += '-debian-linux' 116 return arch
117
118 -def version():
119 # substituted to the real version by the Makefile at installation time. 120 return "@VERSION@"
121