Show Table of Contents
Chapter 5. Example Script
#!/usr/bin/env python
from __future__ import print_function
import sys
import requests
from datetime import datetime, timedelta
API_HOST = 'https://access.redhat.com/labs/securitydataapi'
def get_data(query):
full_query = API_HOST + query
r = requests.get(full_query)
if r.status_code != 200:
print('ERROR: Invalid request; returned {} for the following '
'query:\n{}'.format(r.status_code, full_query))
sys.exit(1)
if not r.json():
print('No data returned with the following query:')
print(full_query)
sys.exit(0)
return r.json()
# Get a list of issues and their impacts for RHSA-2016:1847
endpoint = '/cve.json'
params = 'advisory=RHSA-2016:1847'
data = get_data(endpoint + '?' + params)
for cve in data:
print(cve['CVE'], cve['severity'])
print('-----')
# Get a list of kernel advisories for the last 30 days and display the
# packages that they provided.
endpoint = '/cvrf.json'
date = datetime.now() - timedelta(days=30)
params = 'package=kernel&after=' + str(date.date())
data = get_data(endpoint + '?' + params)
kernel_advisories = []
for advisory in data:
print(advisory['RHSA'], advisory['severity'], advisory['released_on'])
print('-', '\n- '.join(advisory['released_packages']))
kernel_advisories.append(advisory['RHSA'])
print('-----')
# From the list of advisories saved in the previous example (as
# `kernel_advisories`), get a list of affected products for each advisory.
endpoint = '/cvrf/'
for advisory in kernel_advisories:
data = get_data(endpoint + advisory + '.json')
print(advisory)
product_branch = data['cvrfdoc']['product_tree']['branch']
for product_branch in data['cvrfdoc']['product_tree']['branch']:
if product_branch['type'] == 'Product Family':
if type(product_branch['branch']) is dict:
print('-', product_branch['branch']['full_product_name'])
else:
print('-', '\n- '.join(pr['full_product_name'] for
pr in product_branch['branch']))
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.