Skip to content

Commit

Permalink
Merge pull request #3 from fedora-infra/feature/check-monitoring
Browse files Browse the repository at this point in the history
Check pkgdb monitoring status before acting.
  • Loading branch information
ralphbean committed Nov 18, 2014
2 parents 05535eb + 60bb7b2 commit d953d31
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
2 changes: 2 additions & 0 deletions fedmsg.d/hotness-example.py
Expand Up @@ -48,6 +48,8 @@
'target_tag': 'rawhide',
},

'hotness.pkgdb_url': 'https://admin.fedoraproject.org/pkgdb/api',

"hotness.cache": {
"backend": "dogpile.cache.dbm",
"expiration_time": 300,
Expand Down
29 changes: 28 additions & 1 deletion hotness/consumers.py
Expand Up @@ -19,11 +19,11 @@
"""

import copy
import socket

import fedmsg
import fedmsg.consumers
import requests

import hotness.buildsys
import hotness.bz
Expand Down Expand Up @@ -73,6 +73,9 @@ def __init__(self, hub):
self.buildsys = hotness.buildsys.Koji(
consumer=self, config=self.config['hotness.koji'])

default = 'https://admin.fedoraproject.org/pkgdb/api'
self.pkgdb_url = self.config.get('hotness.pkgdb_url', default)

# Also, set up our global cache object.
self.log.info("Configuring cache.")
with hotness.cache.cache_lock:
Expand Down Expand Up @@ -123,6 +126,11 @@ def handle_anitya(self, msg):
package = mappings['Fedora']
url = msg['msg']['project']['homepage']

# Is it something that we're being asked not to act on:
if not self.is_monitored(package):
self.log.info("Pkgdb says not to monitor %r. Dropping." % package)
return

# Is it new to us?
version, release = hotness.repository.get_version(package, self.repoid)
upstream = msg['msg']['upstream_version']
Expand Down Expand Up @@ -165,3 +173,22 @@ def handle_buildsys(self, msg):
bug = self.triggered_task_ids.pop(task_id)
url = self.buildsys.url_for(task_id)
self.bugzilla.follow_up(url, state, bug)

def is_monitored(self, package):
""" Returns True if a package is marked as 'monitored' in pkgdb2. """

url = '{0}/package/{1}'.format(self.pkgdb_url, package)
self.log.info("Checking %r" % url)
r = requests.get(url)

if not r.status_code == 200:
self.log.warning('URL %s returned code %s', r.url, r.status_code)
return False

try:
data = r.json()
package = data['packages'][0]
return package['package']['monitor']
except:
self.log.exception("Problem interacting with pkgdb.")
return False
1 change: 1 addition & 0 deletions setup.py
Expand Up @@ -12,6 +12,7 @@
"fedmsg",
"python-bugzilla",
"dogpile.cache",
"requests",
],
packages=find_packages(),
entry_points="""
Expand Down

0 comments on commit d953d31

Please sign in to comment.