Skip to content

Instantly share code, notes, and snippets.

@orimanabu
Created September 6, 2012 09:15
Show Gist options
  • Save orimanabu/3653520 to your computer and use it in GitHub Desktop.
Save orimanabu/3653520 to your computer and use it in GitHub Desktop.
Obtain kernel related errata for RHEL6 from RHN
#!/usr/bin/env python
# Obtain kernel related errata for RHEL6 from RHN.
# This depends on rhnapi (https://github.com/lanky/python-rhnapi).
import sys
import re
import rhnapi
from pprint import pprint
from rhnapi import channel
from rhnapi import errata
arch = "x86_64"
name = "kernel"
server = "rhn.redhat.com"
#user = "XXXXX"
#password = "XXXXX"
#rhn = rhnapi.rhnSession(url=server, rhnlogin=user, rhnpassword=password)
rhn = rhnapi.rhnSession(url=server)
errata_list = channel.listErrata(rhn, 'rhel-x86_64-server-6')
for erratum in errata_list:
if not re.compile('.*kernel').match(erratum['errata_synopsis']):
continue
packages = errata.listPackages(rhn, erratum['errata_advisory'])
packages.sort(lambda x, y: cmp(x['package_file'], y['package_file']))
for package in packages:
if package['package_arch_label'] != arch: continue
if package['package_name'] != name: continue
version = "%s-%s" % (package['package_version'], package['package_release'])
print "<%s / %s / %s>" % (erratum['errata_advisory'], erratum['errata_synopsis'], version)
detail = errata.getDetails(rhn, erratum['errata_advisory'])
print "=== %s ===" % detail['errata_topic'].strip()
print
print detail['errata_description'].encode('utf-8')
print
print "related bugzilla:"
bz_list = errata.bugzillaFixes(rhn, erratum['errata_advisory'])
for bzid in sorted(bz_list.keys()):
print " %s\t%s" % (bzid, bz_list[bzid])
print
print
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment