Sunil Mohan Adapa baa44e91a2
*: Update imports statements from plinth to freedombox
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-08-28 07:35:18 -04:00

88 lines
3.0 KiB
Python
Raw Permalink 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.
"""
from django.utils.translation import gettext_lazy as _
from freedombox import app as app_module
from freedombox import menu
from freedombox.daemon import Daemon
from freedombox.modules.backups.components import BackupRestore
from freedombox.package import Package, Packages
from . import manifest
name = _('Performance')
_description = [
_('Performance app allows you to collect, store and view information '
'about utilization of the hardware. This can give you basic insights '
'into usage patterns and whether the hardware is overloaded by users '
'and services.'),
_('Performance metrics are collected by Performance Co-Pilot and can be '
'viewed using the Cockpit app.'),
]
class PerformanceApp(app_module.App):
"""FreedomBox app for Performance."""
app_id = 'performance'
_version = 1
def __init__(self) -> None:
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=self._version,
name=_('Performance'), icon='fa-bar-chart',
description=_description,
manual_page='Performance',
clients=manifest.clients, tags=manifest.tags)
self.add(info)
menu_item = menu.Menu('menu-performance', info.name, info.icon,
info.tags, 'performance:index',
parent_url_name='system:administration',
order=40)
self.add(menu_item)
packages = Packages('packages-performance', [
# For bookworm, we need cockpit-pcp (which depends on
# cockpit-bridge and pcp). For trixie, cockpit-pcp is
# replaced by cockpit-bridge, and we need to specify a
# dependency on pcp. There is some issue with having a
# virtual package specified, see #2475.
Package('cockpit-pcp') | Package('cockpit-bridge'),
'cockpit-bridge', 'pcp'
])
self.add(packages)
backup_restore = BackupRestore('backup-restore-performance',
**manifest.backup)
self.add(backup_restore)
daemon_0 = Daemon('daemon-performance-0', 'pmcd.service',
listen_ports=None)
self.add(daemon_0)
daemon_1 = Daemon('daemon-performance-1', 'pmie.service',
listen_ports=None)
self.add(daemon_1)
daemon_2 = Daemon('daemon-performance-2', 'pmlogger.service',
listen_ports=None)
self.add(daemon_2)
daemon_3 = Daemon('daemon-performance-3', 'pmproxy.service',
listen_ports=None)
self.add(daemon_3)
def setup(self, old_version):
"""Install and configure the app."""
super().setup(old_version)
if not old_version:
self.enable()