performance: Fix web client link to Cockpit

Closes: #2022.

- Differently URL based on version of Cockpit used.

- Lazily evaluate when necessary.

- Cache the result.

[sunil: Use subprocess.run() instead of getoutput() for security]
[sunil: Use long form arguments in command invocation for readability]
[sunil: Perform isort]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
Fred LE MEUR 2021-01-19 15:20:58 +01:00 committed by Sunil Mohan Adapa
parent cbdd3bb0c0
commit 4ca0421581
No known key found for this signature in database
GPG Key ID: 43EA1CFF0AA7C5F2

View File

@ -3,12 +3,36 @@
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': '/_cockpit/system/graphs'
'url': get_url()
}]
}]