|
@@ -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
|