Sunil Mohan Adapa b84075043d
performance: Fix failure to start due to lru_cache in stable
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>
2021-01-25 19:11:08 -05:00

39 lines
878 B
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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()
}]
}]