summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVon Random <von@vdrandom.org>2019-03-28 13:21:15 +0300
committerVon Random <von@vdrandom.org>2019-03-28 13:21:15 +0300
commit151c94c5f3d0a786ce1058481f1c4c5c908bc305 (patch)
tree4047c9ff794d8562aac5fae5eb225d0852dccc83
parent7459d29c68021c7dd87e1b8c8a29ce94dcdea346 (diff)
vdstatus, plugins: some refactoring and better usage of dict() methods; rename fga to fortune and make uri configurable
-rw-r--r--plugins/__init__.py18
-rw-r--r--plugins/batt.py12
-rw-r--r--plugins/date.py8
-rw-r--r--plugins/disk.py6
-rw-r--r--plugins/fortune.py (renamed from plugins/fga.py)14
-rw-r--r--plugins/load.py6
-rw-r--r--plugins/mem.py6
-rw-r--r--plugins/pacman.py14
-rw-r--r--plugins/ping.py12
-rwxr-xr-xvdstatus7
10 files changed, 56 insertions, 47 deletions
diff --git a/plugins/__init__.py b/plugins/__init__.py
index 68df0c9..1a46771 100644
--- a/plugins/__init__.py
+++ b/plugins/__init__.py
@@ -2,21 +2,17 @@ import threading
import time
-def parse_config(config, defaults):
- result = dict()
- for key in defaults:
- result[key] = config[key] if key in config else defaults[key]
- return result
+PLUGIN_DEFAULTS = {'freq': 1, 'hide_ok': True}
class PluginThreadCommon:
- def __init__(self, config, defaults=dict()):
- if 'freq' not in defaults:
- defaults['freq'] = 1
- if 'hide_ok' not in defaults:
- defaults['hide_ok'] = True
- self.conf = parse_config(config, defaults)
+ def __init__(self, config, defaults=None):
self.status = dict()
+ self.conf = dict()
+ self.conf.update(PLUGIN_DEFAULTS)
+ if defaults:
+ self.conf.update(defaults)
+ self.conf.update(config)
self.hide = False
self.thread = threading.Thread(target=self.run)
self.thread.daemon = True
diff --git a/plugins/batt.py b/plugins/batt.py
index 90c52ea..b89d00d 100644
--- a/plugins/batt.py
+++ b/plugins/batt.py
@@ -2,16 +2,16 @@ import plugins
BATTERY_DIR = '/sys/class/power_supply/BAT0/'
+BATT_DEFAULTS = {
+ 'problem': 15,
+ 'symbol_charging': '\u2191',
+ 'symbol_discharging': '\u2193'
+}
class PluginThread(plugins.PluginThreadCommon):
def __init__(self, config):
- defaults = {
- 'problem': 15,
- 'symbol_charging': '\u2191',
- 'symbol_discharging': '\u2193'
- }
- super(PluginThread, self).__init__(config, defaults)
+ super(PluginThread, self).__init__(config, BATT_DEFAULTS)
def main(self):
with \
diff --git a/plugins/date.py b/plugins/date.py
index ee6009a..8afe76e 100644
--- a/plugins/date.py
+++ b/plugins/date.py
@@ -2,12 +2,14 @@ import datetime
import plugins
+DATE_DEFAULTS = {'format': '%c'}
+
+
class PluginThread(plugins.PluginThreadCommon):
def __init__(self, config):
- defaults = {'format': '%c', 'tz': None}
- super(PluginThread, self).__init__(config, defaults)
+ super(PluginThread, self).__init__(config, DATE_DEFAULTS)
self.timezone = None
- if self.conf['tz']:
+ if 'tz' in self.conf:
import pytz
self.timezone = pytz.timezone(self.conf['tz'])
diff --git a/plugins/disk.py b/plugins/disk.py
index 6ab9c2b..e705f4e 100644
--- a/plugins/disk.py
+++ b/plugins/disk.py
@@ -2,10 +2,12 @@ import plugins
import psutil
+DISK_DEFAULTS = {'partition': '/', 'problem': 80, 'freq': 15}
+
+
class PluginThread(plugins.PluginThreadCommon):
def __init__(self, config):
- defaults = {'partition': '/', 'problem': 80, 'freq': 15}
- super(PluginThread, self).__init__(config, defaults)
+ super(PluginThread, self).__init__(config, DISK_DEFAULTS)
def main(self):
du_stat = psutil.disk_usage(self.conf['partition'])
diff --git a/plugins/fga.py b/plugins/fortune.py
index ecc5857..562d653 100644
--- a/plugins/fga.py
+++ b/plugins/fortune.py
@@ -3,17 +3,20 @@ import requests
import time
-URI = 'http://fucking-great-advice.ru/api/random'
+FGA_DEFAULTS = {
+ 'uri': 'http://fucking-great-advice.ru/api/random',
+ 'freq': 120, 'retry': 3
+}
+
+
class PluginThread(plugins.PluginThreadCommon):
def __init__(self, config):
- defaults = {'freq': 120, 'retry': 3}
- super(PluginThread, self).__init__(config, defaults)
+ super(PluginThread, self).__init__(config, FGA_DEFAULTS)
self.retry = False
-
def main(self):
try:
- req = requests.get(URI, timeout=2)
+ req = requests.get(self.conf['uri'], timeout=2)
advice = req.json()['text'] if req.status_code == 200 else 'N/A'
self.retry = False
except requests.exceptions.Timeout:
@@ -24,7 +27,6 @@ class PluginThread(plugins.PluginThreadCommon):
self.retry = True
self.status['full_text'] = advice
-
def run(self):
while True:
self.main()
diff --git a/plugins/load.py b/plugins/load.py
index 8567fdd..75dd4a0 100644
--- a/plugins/load.py
+++ b/plugins/load.py
@@ -2,10 +2,12 @@ import os
import plugins
+LOAD_DEFAULTS = {'freq': 20, 'problem': 1}
+
+
class PluginThread(plugins.PluginThreadCommon):
def __init__(self, config):
- defaults = {'freq': 20, 'problem': 1}
- super(PluginThread, self).__init__(config, defaults)
+ super(PluginThread, self).__init__(config, LOAD_DEFAULTS)
def main(self):
loads = os.getloadavg()
diff --git a/plugins/mem.py b/plugins/mem.py
index 14c1b16..1abc7eb 100644
--- a/plugins/mem.py
+++ b/plugins/mem.py
@@ -2,10 +2,12 @@ import psutil
import plugins
+MEM_DEFAULTS = {'problem': 85}
+
+
class PluginThread(plugins.PluginThreadCommon):
def __init__(self, config):
- defaults = {'problem': 85}
- super(PluginThread, self).__init__(config, defaults)
+ super(PluginThread, self).__init__(config, MEM_DEFAULTS)
def main(self):
mem_stat = psutil.virtual_memory()
diff --git a/plugins/pacman.py b/plugins/pacman.py
index b5e595b..edf36e9 100644
--- a/plugins/pacman.py
+++ b/plugins/pacman.py
@@ -2,15 +2,15 @@ import plugins
import subprocess
+PACMAN_DEFAULTS = {
+ 'cmd': ('/usr/bin/pacman', '-Qu'),
+ 'title': 'UPD', 'freq': 15, 'problem': 10
+}
+
+
class PluginThread(plugins.PluginThreadCommon):
def __init__(self, config):
- defaults = {
- 'cmd': ('/usr/bin/pacman', '-Qu'),
- 'title': 'UPD',
- 'freq': 15,
- 'problem': 10
- }
- super(PluginThread, self).__init__(config, defaults)
+ super(PluginThread, self).__init__(config, PACMAN_DEFAULTS)
self.format_status(0)
def format_status(self, count):
diff --git a/plugins/ping.py b/plugins/ping.py
index 2f0bb42..8e6a391 100644
--- a/plugins/ping.py
+++ b/plugins/ping.py
@@ -3,15 +3,19 @@ import random
import plugins
+PING_DEFAULTS = {
+ 'hosts': list(), 'title': 'PING', 'timeout': 150
+}
+
+
class PluginThread(plugins.PluginThreadCommon):
def __init__(self, config):
- defaults = {'hosts': list(), 'title': 'PING', 'timeout': 150}
- super(PluginThread, self).__init__(config, defaults)
+ super(PluginThread, self).__init__(config, PING_DEFAULTS)
self.format_status('n/a')
def format_status(self, state):
self.status['full_text'] = self.conf['title'] + ': ' + state
- if state == 'on':
+ if state == 'up':
self.status['urgent'] = False
self.hide = True
else:
@@ -26,4 +30,4 @@ class PluginThread(plugins.PluginThreadCommon):
if response == 0:
self.format_status('on')
break
- self.format_status('off')
+ self.format_status('down')
diff --git a/vdstatus b/vdstatus
index d3f5425..8dd1ec9 100755
--- a/vdstatus
+++ b/vdstatus
@@ -6,7 +6,6 @@ import os
import sys
import time
import yaml
-import plugins
DEFAULT_CONFIG = os.path.join(os.environ['HOME'], '.config/vdstatus/conf.yaml')
@@ -28,10 +27,10 @@ def parse_arguments():
class PluginRunner:
def __init__(self, config_file=DEFAULT_CONFIG):
- config = dict()
+ self.conf = dict()
+ self.conf.update(DEFAULTS)
with open(config_file) as config_data:
- config = yaml.load(config_data)
- self.conf = plugins.parse_config(config, DEFAULTS)
+ self.conf.update(yaml.load(config_data))
self.plugins_loaded = list()
self.format_output = self.format_term
for plugin in self.conf['plugins']: