mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-28 08:03:36 +00:00
Ability to use lru_cache(user_function) was only introduced in Python 3.8. Buster has Python 3.7. This causes startup failure in Buster. Fix this by using the older API for lru_cache instead of the new one. Tests: - On stable and testing, starting the Plinth daemon and visiting the performance page should work. - Adding a print statement in the _get_url() method shows that it is only called once, ever. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
39 lines
878 B
Python
39 lines
878 B
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||
"""
|
||
FreedomBox app for System Monitoring (cockpit-pcp) in ‘System’.
|
||
"""
|
||
|
||
import subprocess
|
||
from functools import lru_cache
|
||
|
||
from django.utils.functional import lazy
|
||
from django.utils.translation import ugettext_lazy as _
|
||
|
||
from plinth.utils import Version
|
||
|
||
|
||
@lru_cache()
|
||
def _get_url():
|
||
"""Return the web client URL based on Cockpit version."""
|
||
process = subprocess.run(
|
||
['dpkg-query', '--showformat=${Version}', '--show', 'cockpit'],
|
||
stdout=subprocess.PIPE)
|
||
cockpit_version = process.stdout.decode()
|
||
if Version(cockpit_version) >= Version('235'):
|
||
url = '/_cockpit/metrics'
|
||
else:
|
||
url = '/_cockpit/system/graphs'
|
||
|
||
return url
|
||
|
||
|
||
get_url = lazy(_get_url, str)
|
||
|
||
clients = [{
|
||
'name': _('Cockpit'),
|
||
'platforms': [{
|
||
'type': 'web',
|
||
'url': get_url()
|
||
}]
|
||
}]
|