performance: Add app for system monitoring

- Using cockpit-pcp in ‘System’ section.

Signed-off-by: fred1m <frederic.le-meur@ac-versailles.fr>
[sunil: Minor grammar fix in description, minor styling]
[sunil: Drop the icon completely in favor of just the font icon]
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
This commit is contained in:
fred1m 2020-05-03 16:17:33 +02:00 committed by Sunil Mohan Adapa
parent c624538788
commit e465645594
No known key found for this signature in database
GPG Key ID: 43EA1CFF0AA7C5F2
6 changed files with 116 additions and 0 deletions

View File

@ -0,0 +1,86 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
FreedomBox app for System Monitoring (cockpit-pcp) in System.
"""
from django.utils.translation import ugettext_lazy as _
from plinth import app as app_module
from plinth import menu
from plinth.daemon import Daemon
from .manifest import clients
version = 1
name = _('Performance')
managed_services = [
'pmcd.service', 'pmie.service', 'pmlogger.service', 'pmproxy.service'
]
managed_packages = ['cockpit-pcp']
_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.'),
]
app = None
class PerformanceApp(app_module.App):
"""FreedomBox app for Performance."""
app_id = 'performance'
def __init__(self):
"""Create components for the app."""
super().__init__()
info = app_module.Info(app_id=self.app_id, version=version,
name=_('Performance'), icon='fa-bar-chart',
short_description=_('System Monitoring'),
description=_description,
manual_page='Performance', clients=clients)
self.add(info)
menu_item = menu.Menu('menu-performance', info.name,
info.short_description, info.icon,
'performance:index', parent_url_name='system')
self.add(menu_item)
daemon_0 = Daemon('daemon-performance-0', managed_services[0],
listen_ports=None)
self.add(daemon_0)
daemon_1 = Daemon('daemon-performance-1', managed_services[1],
listen_ports=None)
self.add(daemon_1)
daemon_2 = Daemon('daemon-performance-2', managed_services[2],
listen_ports=None)
self.add(daemon_2)
daemon_3 = Daemon('daemon-performance-3', managed_services[3],
listen_ports=None)
self.add(daemon_3)
def init():
"""Initialize the Performance module."""
global app
app = PerformanceApp()
setup_helper = globals()['setup_helper']
if setup_helper.get_state() != 'needs-setup' and app.is_enabled():
app.set_enabled(True)
def setup(helper, old_version=None):
"""Install and configure the module."""
helper.install(managed_packages)
helper.call('post', app.enable)

View File

@ -0,0 +1 @@
plinth.modules.performance

View File

@ -0,0 +1,15 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
FreedomBox app for System Monitoring (cockpit-pcp) in System.
"""
from django.utils.translation import ugettext_lazy as _
from plinth.clients import validate
clients = validate([{
'name': _('Cockpit'),
'platforms': [{
'type': 'web',
'url': '/_cockpit/'
}]
}])

View File

@ -0,0 +1,13 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
FreedomBox app for System Monitoring (cockpit-pcp) in System.
"""
from django.conf.urls import url
from plinth.views import AppView
urlpatterns = [
url(r'^sys/performance/$', AppView.as_view(app_id='performance'),
name='index'),
]