Skip to content

Instantly share code, notes, and snippets.

@ralphbean
Created July 14, 2014 15:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ralphbean/cf162f84d37d13cafa62 to your computer and use it in GitHub Desktop.
Save ralphbean/cf162f84d37d13cafa62 to your computer and use it in GitHub Desktop.
Audit script to look for odd cases from the pkgdb
#!/usr/bin/env python
""" This script looks for people who have assigned themselves the
'approveacls' status in pkgdb by checking the fedmsg history.
Gotta first do::
$ yum install \
fedmsg \
python-fedmsg-meta-fedora-infrastructure \
python-requests \
python-arrow
Author: Ralph Bean <rbean@redhat.com>
License: LGPLv2+
"""
import arrow
import fedmsg.config
import fedmsg.meta
import requests
import sys
def want(message):
if message['msg'].get('username')== message['msg']['agent'] and \
message['msg'].get('acl') == 'approveacls' and \
message['msg'].get('status') == 'Approved':
return True
else:
return False
def get_fedmsg_results():
def _make_query(page=1):
resp = requests.get(
"https://apps.fedoraproject.org/datagrepper/raw",
params=dict(
category='pkgdb',
rows_per_page=100,
page=page,
)
)
data = resp.json()
return data
# Grab the first page of results
data = _make_query()
messages = data['raw_messages']
# Grab and smash subsequent pages if there are any
for page in range(1, data['pages']):
data = _make_query(page=page)
for message in data['raw_messages']:
if want(message):
yield message
def shorten(link):
return requests.get('http://da.gd/s', params=dict(url=link)).text.strip()
if __name__ == '__main__':
when_the_bug_was_introduced = arrow.get('2014-07-03')
config = fedmsg.config.load_config()
fedmsg.meta.make_processors(**config)
for message in get_fedmsg_results():
if arrow.get(message['timestamp']) < when_the_bug_was_introduced:
sys.exit(0)
subtitle = fedmsg.meta.msg2subtitle(message, **config)
link = fedmsg.meta.msg2link(message, **config)
link = shorten(link)
print link, arrow.get(message['timestamp']).humanize(), subtitle
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment