Clean up logging

This commit is contained in:
Jeremy Stretch 2020-03-13 11:55:06 -04:00
parent f6dfd2fa43
commit e2123f4a9e
3 changed files with 16 additions and 11 deletions

View File

@ -1,7 +1,7 @@
from collections import OrderedDict from collections import OrderedDict
from django.conf import settings from django.conf import settings
from django.db.models import Count, F, OuterRef, Subquery from django.db.models import Count, F
from django.shortcuts import render from django.shortcuts import render
from django.views.generic import View from django.views.generic import View
from packaging import version from packaging import version

View File

@ -7,7 +7,7 @@ from django_rq import job
from packaging import version from packaging import version
# Get an instance of a logger # Get an instance of a logger
logger = logging.getLogger(__name__) logger = logging.getLogger('netbox.releases')
@job @job
@ -27,25 +27,27 @@ def get_releases(pre_releases=False):
releases = [] releases = []
# noinspection PyBroadException
try: try:
logger.debug("Fetching new releases from {}".format(url))
response = requests.get(url, headers=headers) response = requests.get(url, headers=headers)
response.raise_for_status() response.raise_for_status()
total_releases = len(response.json())
for release in response.json(): for release in response.json():
if 'tag_name' not in release: if 'tag_name' not in release:
continue continue
if not pre_releases and (release.get('devrelease') or release.get('prerelease')): if not pre_releases and (release.get('devrelease') or release.get('prerelease')):
continue continue
releases.append((version.parse(release['tag_name']), release.get('html_url'))) releases.append((version.parse(release['tag_name']), release.get('html_url')))
logger.debug("Found {} releases; {} usable".format(total_releases, len(releases)))
except Exception: except Exception:
# Don't retry this URL for 15 minutes # Don't retry this URL for 15 minutes
cache.set('netbox_releases_no_retry', url, 900)
logger.exception("Error while fetching {}".format(url)) logger.exception("Error while fetching {}".format(url))
cache.set('netbox_releases_no_retry', url, 900)
return [] return []
# Cache the releases list
cache.set('netbox_releases', releases, settings.UPDATE_CACHE_TIMEOUT) cache.set('netbox_releases', releases, settings.UPDATE_CACHE_TIMEOUT)
return releases return releases

View File

@ -5,20 +5,23 @@ from django.conf import settings
from utilities.background_tasks import get_releases from utilities.background_tasks import get_releases
# Get an instance of a logger logger = logging.getLogger('netbox.releases')
logger = logging.getLogger(__name__)
def get_latest_release(pre_releases=False): def get_latest_release(pre_releases=False):
if settings.UPDATE_REPO_URL: if settings.UPDATE_REPO_URL:
logger.debug("Checking for most recent release")
try: try:
releases = cache.get('netbox_releases') releases = cache.get('netbox_releases')
if releases: if releases:
logger.debug("Found {} cached releases. Latest: {}".format(len(releases), max(releases)))
return max(releases) return max(releases)
except CacheMiss: except CacheMiss:
logger.debug("Starting background task to get releases")
# Get the releases in the background worker, it will fill the cache # Get the releases in the background worker, it will fill the cache
logger.debug("Initiating background task to retrieve updated releases list")
get_releases.delay(pre_releases=pre_releases) get_releases.delay(pre_releases=pre_releases)
else:
logger.debug("Skipping release check; UPDATE_REPO_URL not defined")
return 'unknown', None return 'unknown', None