Просмотр исходного кода

Cache only the most recent NetBox release

Jeremy Stretch 6 лет назад
Родитель
Сommit
3ace83c5aa

+ 3 - 3
netbox/netbox/tests/test_get_releases.py

@@ -83,7 +83,7 @@ class GetReleasesTestCase(SimpleTestCase):
 
         # Check if result is put in cache
         dummy_cache_set.assert_called_once()
-        dummy_cache_set.assert_called_with('netbox_releases', releases, 160876)
+        dummy_cache_set.assert_called_with('latest_release', releases, 160876)
 
     @patch.object(requests, 'get')
     @patch.object(RedisCache, 'set')
@@ -109,7 +109,7 @@ class GetReleasesTestCase(SimpleTestCase):
 
         # Check if result is put in cache
         dummy_cache_set.assert_called_once()
-        dummy_cache_set.assert_called_with('netbox_releases', releases, 160876)
+        dummy_cache_set.assert_called_with('latest_release', releases, 160876)
 
     @patch.object(requests, 'get')
     @patch.object(RedisCache, 'set')
@@ -139,7 +139,7 @@ class GetReleasesTestCase(SimpleTestCase):
 
         # Check if failure is put in cache
         dummy_cache_set.assert_called_once()
-        dummy_cache_set.assert_called_with('netbox_releases_no_retry', 'https://localhost/unittest/releases', 900)
+        dummy_cache_set.assert_called_with('latest_release_no_retry', 'https://localhost/unittest/releases', 900)
 
     @patch.object(requests, 'get')
     @patch.object(RedisCache, 'set')

+ 4 - 4
netbox/utilities/background_tasks.py

@@ -19,7 +19,7 @@ def get_releases(pre_releases=False):
 
     # Check whether this URL has failed and shouldn't be retried yet
     try:
-        failed_url = cache.get('netbox_releases_no_retry')
+        failed_url = cache.get('latest_release_no_retry')
         if url == failed_url:
             return []
     except CacheMiss:
@@ -44,10 +44,10 @@ def get_releases(pre_releases=False):
     except Exception:
         # Don't retry this URL for 15 minutes
         logger.exception("Error while fetching {}".format(url))
-        cache.set('netbox_releases_no_retry', url, 900)
+        cache.set('latest_release_no_retry', url, 900)
         return []
 
-    # Cache the releases list
-    cache.set('netbox_releases', releases, settings.UPDATE_CACHE_TIMEOUT)
+    # Cache the most recent release
+    cache.set('latest_release', max(releases), settings.UPDATE_CACHE_TIMEOUT)
 
     return releases

+ 4 - 4
netbox/utilities/releases.py

@@ -13,10 +13,10 @@ 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)
+            latest_release = cache.get('latest_release')
+            if latest_release:
+                logger.debug("Found cached release: {}".format(latest_release))
+                return latest_release
         except CacheMiss:
             # Check for an existing job. This can happen if the RQ worker process is not running.
             queue = get_queue('check_releases')