Jeremy Stretch 6 лет назад
Родитель
Сommit
e2123f4a9e
3 измененных файлов с 16 добавлено и 11 удалено
  1. 1 1
      netbox/netbox/views.py
  2. 8 6
      netbox/utilities/background_tasks.py
  3. 7 4
      netbox/utilities/releases.py

+ 1 - 1
netbox/netbox/views.py

@@ -1,7 +1,7 @@
 from collections import OrderedDict
 
 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.views.generic import View
 from packaging import version

+ 8 - 6
netbox/utilities/background_tasks.py

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

+ 7 - 4
netbox/utilities/releases.py

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