diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-07-24 09:54:23 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-07-24 09:54:44 +0000 |
commit | 836b47cb7e99a977c5a23b059ca1d0b5065d310e (patch) | |
tree | 1604da8f482d02effa033c94a84be42bc0c848c3 /collectors/python.d.plugin/boinc/boinc.chart.py | |
parent | Releasing debian version 1.44.3-2. (diff) | |
download | netdata-836b47cb7e99a977c5a23b059ca1d0b5065d310e.tar.xz netdata-836b47cb7e99a977c5a23b059ca1d0b5065d310e.zip |
Merging upstream version 1.46.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'collectors/python.d.plugin/boinc/boinc.chart.py')
-rw-r--r-- | collectors/python.d.plugin/boinc/boinc.chart.py | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/collectors/python.d.plugin/boinc/boinc.chart.py b/collectors/python.d.plugin/boinc/boinc.chart.py deleted file mode 100644 index a31eda1c2..000000000 --- a/collectors/python.d.plugin/boinc/boinc.chart.py +++ /dev/null @@ -1,168 +0,0 @@ -# -*- coding: utf-8 -*- -# Description: BOINC netdata python.d module -# Author: Austin S. Hemmelgarn (Ferroin) -# SPDX-License-Identifier: GPL-3.0-or-later - -import socket - -from bases.FrameworkServices.SimpleService import SimpleService -from third_party import boinc_client - -ORDER = [ - 'tasks', - 'states', - 'sched_states', - 'process_states', -] - -CHARTS = { - 'tasks': { - 'options': [None, 'Overall Tasks', 'tasks', 'boinc', 'boinc.tasks', 'line'], - 'lines': [ - ['total', 'Total', 'absolute', 1, 1], - ['active', 'Active', 'absolute', 1, 1] - ] - }, - 'states': { - 'options': [None, 'Tasks per State', 'tasks', 'boinc', 'boinc.states', 'line'], - 'lines': [ - ['new', 'New', 'absolute', 1, 1], - ['downloading', 'Downloading', 'absolute', 1, 1], - ['downloaded', 'Ready to Run', 'absolute', 1, 1], - ['comperror', 'Compute Errors', 'absolute', 1, 1], - ['uploading', 'Uploading', 'absolute', 1, 1], - ['uploaded', 'Uploaded', 'absolute', 1, 1], - ['aborted', 'Aborted', 'absolute', 1, 1], - ['upload_failed', 'Failed Uploads', 'absolute', 1, 1] - ] - }, - 'sched_states': { - 'options': [None, 'Tasks per Scheduler State', 'tasks', 'boinc', 'boinc.sched', 'line'], - 'lines': [ - ['uninit_sched', 'Uninitialized', 'absolute', 1, 1], - ['preempted', 'Preempted', 'absolute', 1, 1], - ['scheduled', 'Scheduled', 'absolute', 1, 1] - ] - }, - 'process_states': { - 'options': [None, 'Tasks per Process State', 'tasks', 'boinc', 'boinc.process', 'line'], - 'lines': [ - ['uninit_proc', 'Uninitialized', 'absolute', 1, 1], - ['executing', 'Executing', 'absolute', 1, 1], - ['suspended', 'Suspended', 'absolute', 1, 1], - ['aborting', 'Aborted', 'absolute', 1, 1], - ['quit', 'Quit', 'absolute', 1, 1], - ['copy_pending', 'Copy Pending', 'absolute', 1, 1] - ] - } -} - -# A simple template used for pre-loading the return dictionary to make -# the _get_data() method simpler. -_DATA_TEMPLATE = { - 'total': 0, - 'active': 0, - 'new': 0, - 'downloading': 0, - 'downloaded': 0, - 'comperror': 0, - 'uploading': 0, - 'uploaded': 0, - 'aborted': 0, - 'upload_failed': 0, - 'uninit_sched': 0, - 'preempted': 0, - 'scheduled': 0, - 'uninit_proc': 0, - 'executing': 0, - 'suspended': 0, - 'aborting': 0, - 'quit': 0, - 'copy_pending': 0 -} - -# Map task states to dimensions -_TASK_MAP = { - boinc_client.ResultState.NEW: 'new', - boinc_client.ResultState.FILES_DOWNLOADING: 'downloading', - boinc_client.ResultState.FILES_DOWNLOADED: 'downloaded', - boinc_client.ResultState.COMPUTE_ERROR: 'comperror', - boinc_client.ResultState.FILES_UPLOADING: 'uploading', - boinc_client.ResultState.FILES_UPLOADED: 'uploaded', - boinc_client.ResultState.ABORTED: 'aborted', - boinc_client.ResultState.UPLOAD_FAILED: 'upload_failed' -} - -# Map scheduler states to dimensions -_SCHED_MAP = { - boinc_client.CpuSched.UNINITIALIZED: 'uninit_sched', - boinc_client.CpuSched.PREEMPTED: 'preempted', - boinc_client.CpuSched.SCHEDULED: 'scheduled', -} - -# Maps process states to dimensions -_PROC_MAP = { - boinc_client.Process.UNINITIALIZED: 'uninit_proc', - boinc_client.Process.EXECUTING: 'executing', - boinc_client.Process.SUSPENDED: 'suspended', - boinc_client.Process.ABORT_PENDING: 'aborted', - boinc_client.Process.QUIT_PENDING: 'quit', - boinc_client.Process.COPY_PENDING: 'copy_pending' -} - - -class Service(SimpleService): - def __init__(self, configuration=None, name=None): - SimpleService.__init__(self, configuration=configuration, name=name) - self.order = ORDER - self.definitions = CHARTS - self.host = self.configuration.get('host', 'localhost') - self.port = self.configuration.get('port', 0) - self.password = self.configuration.get('password', '') - self.client = boinc_client.BoincClient(host=self.host, port=self.port, passwd=self.password) - self.alive = False - - def check(self): - return self.connect() - - def connect(self): - self.client.connect() - self.alive = self.client.connected and self.client.authorized - return self.alive - - def reconnect(self): - # The client class itself actually disconnects existing - # connections when it is told to connect, so we don't need to - # explicitly disconnect when we're just trying to reconnect. - return self.connect() - - def is_alive(self): - if not self.alive: - return self.reconnect() - return True - - def _get_data(self): - if not self.is_alive(): - return None - - data = dict(_DATA_TEMPLATE) - - try: - results = self.client.get_tasks() - except socket.error: - self.error('Connection is dead') - self.alive = False - return None - - for task in results: - data['total'] += 1 - data[_TASK_MAP[task.state]] += 1 - try: - if task.active_task: - data['active'] += 1 - data[_SCHED_MAP[task.scheduler_state]] += 1 - data[_PROC_MAP[task.active_task_state]] += 1 - except AttributeError: - pass - - return data or None |