提交 00386aa1 编写于 作者: N nicolargo

Docstings of plugins are now PEP 257 compliant

上级 1114e128
......@@ -23,7 +23,7 @@ from datetime import datetime
from glances.logs import glances_logs
from glances.thresholds import glances_thresholds
from glances.logger import logger
# from glances.logger import logger
from glances.plugins.glances_plugin import GlancesPlugin
# Static decision tree for the global alert message
......@@ -61,8 +61,10 @@ tree = [{'msg': 'No warning or critical alert detected',
def global_message():
"""Parse the decision tree and return the message
corresponding to the current threasholds values"""
"""Parse the decision tree and return the message.
Note: message corresponding to the current threasholds values
"""
# Compute the weight for each item in the tree
current_thresholds = glances_thresholds.get()
for i in tree:
......@@ -76,7 +78,6 @@ def global_message():
class Plugin(GlancesPlugin):
"""Glances alert plugin.
Only for display.
......
......@@ -25,7 +25,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Glances AMPs plugin."""
def __init__(self, args=None, config=None):
......
......@@ -42,7 +42,6 @@ except AttributeError:
class Plugin(GlancesPlugin):
"""Glances battery capacity plugin.
stats is a list
......@@ -87,7 +86,6 @@ class Plugin(GlancesPlugin):
class GlancesGrabBat(object):
"""Get batteries stats using the batinfo library."""
def __init__(self):
......
......@@ -38,7 +38,6 @@ from glances.logger import logger
class Plugin(GlancesPlugin):
"""Glances' cloud plugin.
The goal of this plugin is to retreive additional information
......@@ -70,7 +69,7 @@ class Plugin(GlancesPlugin):
self.stats = {}
def exit(self):
"""Overwrite the exit method to close threads"""
"""Overwrite the exit method to close threads."""
self.aws_ec2.stop()
# Call the father class
super(Plugin, self).exit()
......@@ -137,7 +136,7 @@ class ThreadAwsEc2Grabber(threading.Thread):
'region': 'placement/availability-zone'}
def __init__(self):
"""Init the class"""
"""Init the class."""
logger.debug("cloud plugin - Create thread for AWS EC2")
super(ThreadAwsEc2Grabber, self).__init__()
# Event needed to stop properly the thread
......@@ -146,9 +145,10 @@ class ThreadAwsEc2Grabber(threading.Thread):
self._stats = {}
def run(self):
"""Function called to grab stats.
Infinite loop, should be stopped by calling the stop() method"""
"""Grab plugin's stats.
Infinite loop, should be stopped by calling the stop() method
"""
if not cloud_tag:
logger.debug("cloud plugin - Requests lib is not installed")
self.stop()
......@@ -170,19 +170,19 @@ class ThreadAwsEc2Grabber(threading.Thread):
@property
def stats(self):
"""Stats getter"""
"""Stats getter."""
return self._stats
@stats.setter
def stats(self, value):
"""Stats setter"""
"""Stats setter."""
self._stats = value
def stop(self, timeout=None):
"""Stop the thread"""
"""Stop the thread."""
logger.debug("cloud plugin - Close thread for AWS EC2")
self._stopper.set()
def stopped(self):
"""Return True is the thread is stopped"""
"""Return True is the thread is stopped."""
return self._stopper.isSet()
......@@ -25,7 +25,6 @@ import psutil
class Plugin(GlancesPlugin):
"""Glances CPU core plugin.
Get stats about CPU core number.
......
......@@ -57,7 +57,6 @@ items_history_list = [{'name': 'user',
class Plugin(GlancesPlugin):
"""Glances CPU plugin.
'stats' is a dictionary that contains the system-wide CPU utilization as a
......@@ -88,7 +87,6 @@ class Plugin(GlancesPlugin):
@GlancesPlugin._log_result_decorator
def update(self):
"""Update CPU stats using the input method."""
# Reset stats
self.reset()
......
......@@ -41,7 +41,6 @@ items_history_list = [{'name': 'read_bytes',
class Plugin(GlancesPlugin):
"""Glances disks I/O plugin.
stats is a list
......
......@@ -40,7 +40,6 @@ else:
class Plugin(GlancesPlugin):
"""Glances Docker plugin.
stats is a dict: {'version': {...}, 'containers': [{}, {}]}
......@@ -68,7 +67,7 @@ class Plugin(GlancesPlugin):
self.reset()
def exit(self):
"""Overwrite the exit method to close threads"""
"""Overwrite the exit method to close threads."""
for t in itervalues(self.thread_list):
t.stop()
# Call the father class
......@@ -105,7 +104,7 @@ class Plugin(GlancesPlugin):
self.stats = {}
def _all_tag(self):
"""Return the all tag of the Glances/Docker configuration file
"""Return the all tag of the Glances/Docker configuration file.
# By default, Glances only display running containers
# Set the following key to True to display all containers
......@@ -121,7 +120,6 @@ class Plugin(GlancesPlugin):
@GlancesPlugin._log_result_decorator
def update(self):
"""Update Docker stats using the input method."""
# Reset stats
self.reset()
......@@ -410,8 +408,10 @@ class Plugin(GlancesPlugin):
return os.sysconf(os.sysconf_names['SC_CLK_TCK'])
def get_stats_action(self):
"""Return stats for the action
Docker will return self.stats['containers']"""
"""Return stats for the action.
Docker will return self.stats['containers']
"""
return self.stats['containers']
def update_views(self):
......@@ -587,7 +587,8 @@ class ThreadDockerGrabber(threading.Thread):
"""
def __init__(self, container):
"""Init the class:
"""Init the class.
container: instance of Docker-py Container
"""
super(ThreadDockerGrabber, self).__init__()
......@@ -601,9 +602,10 @@ class ThreadDockerGrabber(threading.Thread):
logger.debug("docker plugin - Create thread for container {}".format(self._container.name))
def run(self):
"""Function called to grab stats.
Infinite loop, should be stopped by calling the stop() method"""
"""Grab the stats.
Infinite loop, should be stopped by calling the stop() method
"""
for i in self._stats_stream:
self._stats = i
time.sleep(0.1)
......@@ -612,19 +614,19 @@ class ThreadDockerGrabber(threading.Thread):
@property
def stats(self):
"""Stats getter"""
"""Stats getter."""
return self._stats
@stats.setter
def stats(self, value):
"""Stats setter"""
"""Stats setter."""
self._stats = value
def stop(self, timeout=None):
"""Stop the thread"""
"""Stop the thread."""
logger.debug("docker plugin - Close thread for container {}".format(self._container.name))
self._stopper.set()
def stopped(self):
"""Return True is the thread is stopped"""
"""Return True is the thread is stopped."""
return self._stopper.isSet()
......@@ -26,7 +26,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Glances folder plugin."""
def __init__(self, args=None):
......@@ -76,8 +75,7 @@ class Plugin(GlancesPlugin):
return self.stats
def get_alert(self, stat):
"""Manage limits of the folder list"""
"""Manage limits of the folder list."""
if not isinstance(stat['size'], numbers.Number):
return 'DEFAULT'
else:
......
......@@ -66,7 +66,6 @@ items_history_list = [{'name': 'percent',
class Plugin(GlancesPlugin):
"""Glances file system plugin.
stats is a list
......
......@@ -17,7 +17,7 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""GPU plugin (limited to NVIDIA chipsets)"""
"""GPU plugin (limited to NVIDIA chipsets)."""
from glances.compat import nativestr
from glances.logger import logger
......@@ -34,14 +34,13 @@ else:
class Plugin(GlancesPlugin):
"""Glances GPU plugin (limited to NVIDIA chipsets).
stats is a list of dictionaries with one entry per GPU
"""
def __init__(self, args=None):
"""Init the plugin"""
"""Init the plugin."""
super(Plugin, self).__init__(args=args)
# Init the NVidia API
......@@ -58,7 +57,7 @@ class Plugin(GlancesPlugin):
self.stats = []
def init_nvidia(self):
"""Init the NVIDIA API"""
"""Init the NVIDIA API."""
if not gpu_nvidia_tag:
self.nvml_ready = False
......@@ -79,8 +78,7 @@ class Plugin(GlancesPlugin):
@GlancesPlugin._check_decorator
@GlancesPlugin._log_result_decorator
def update(self):
"""Update the GPU stats"""
"""Update the GPU stats."""
self.reset()
# !!! JUST FOR TEST
......@@ -212,7 +210,7 @@ class Plugin(GlancesPlugin):
return ret
def get_device_stats(self):
"""Get GPU stats"""
"""Get GPU stats."""
stats = []
for index, device_handle in enumerate(self.device_handles):
......@@ -232,7 +230,7 @@ class Plugin(GlancesPlugin):
return stats
def exit(self):
"""Overwrite the exit method to close the GPU API"""
"""Overwrite the exit method to close the GPU API."""
if self.nvml_ready:
try:
pynvml.nvmlShutdown()
......@@ -244,14 +242,15 @@ class Plugin(GlancesPlugin):
def get_device_handles():
"""
Returns a list of NVML device handles, one per device. Can throw NVMLError.
"""Get a list of NVML device handles, one per device.
Can throw NVMLError.
"""
return [pynvml.nvmlDeviceGetHandleByIndex(i) for i in range(pynvml.nvmlDeviceGetCount())]
def get_device_name(device_handle):
"""Get GPU device name"""
"""Get GPU device name."""
try:
return nativestr(pynvml.nvmlDeviceGetName(device_handle))
except pynvml.NVMlError:
......@@ -259,7 +258,7 @@ def get_device_name(device_handle):
def get_mem(device_handle):
"""Get GPU device memory consumption in percent"""
"""Get GPU device memory consumption in percent."""
try:
memory_info = pynvml.nvmlDeviceGetMemoryInfo(device_handle)
return memory_info.used * 100.0 / memory_info.total
......@@ -268,7 +267,7 @@ def get_mem(device_handle):
def get_proc(device_handle):
"""Get GPU device CPU consumption in percent"""
"""Get GPU device CPU consumption in percent."""
try:
return pynvml.nvmlDeviceGetUtilizationRates(device_handle).gpu
except pynvml.NVMLError:
......
......@@ -28,7 +28,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Glances HDD temperature sensors plugin.
stats is a list
......@@ -72,7 +71,6 @@ class Plugin(GlancesPlugin):
class GlancesGrabHDDTemp(object):
"""Get hddtemp stats using a socket connection."""
def __init__(self, host='127.0.0.1', port=7634, args=None):
......
......@@ -28,7 +28,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Glances help plugin."""
def __init__(self, args=None, config=None):
......@@ -54,6 +53,7 @@ class Plugin(GlancesPlugin):
pass
def generate_view_data(self):
"""Generate the views."""
self.view_data['version'] = '{} {}'.format('Glances', __version__)
self.view_data['psutil_version'] = ' with PSutil {}'.format(psutil_version)
......@@ -103,6 +103,7 @@ class Plugin(GlancesPlugin):
self.view_data['edit_pattern_filter'] = 'ENTER: Edit the process filter pattern'
def get_view_data(self, args=None):
"""Return the view."""
return self.view_data
def msg_curse(self, args=None):
......
......@@ -52,7 +52,6 @@ urls = [('http://ip.42.pl/raw', False, None),
class Plugin(GlancesPlugin):
"""Glances IP Plugin.
stats is a dict
......@@ -159,13 +158,14 @@ class Plugin(GlancesPlugin):
class PublicIpAddress(object):
"""Get public IP address from online services"""
"""Get public IP address from online services."""
def __init__(self, timeout=2):
"""Init the class."""
self.timeout = timeout
def get(self):
"""Get the first public IP address returned by one of the online services"""
"""Get the first public IP address returned by one of the online services."""
q = queue.Queue()
for u, j, k in urls:
......@@ -182,7 +182,7 @@ class PublicIpAddress(object):
return ip
def _get_ip_public(self, queue_target, url, json=False, key=None):
"""Request the url service and put the result in the queue_target"""
"""Request the url service and put the result in the queue_target."""
try:
response = urlopen(url, timeout=self.timeout).read().decode('utf-8')
except Exception as e:
......
......@@ -28,7 +28,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Glances IRQ plugin.
stats is a list
......@@ -56,8 +55,7 @@ class Plugin(GlancesPlugin):
@GlancesPlugin._check_decorator
@GlancesPlugin._log_result_decorator
def update(self):
"""Update the IRQ stats"""
"""Update the IRQ stats."""
# Reset the list
self.reset()
......@@ -117,27 +115,25 @@ class Plugin(GlancesPlugin):
class GlancesIRQ(object):
"""
This class manages the IRQ file
"""
"""This class manages the IRQ file."""
IRQ_FILE = '/proc/interrupts'
def __init__(self):
"""
Init the class
"""Init the class.
The stat are stored in a internal list of dict
"""
self.lasts = {}
self.reset()
def reset(self):
"""Reset the stats"""
"""Reset the stats."""
self.stats = []
self.cpu_number = 0
def get(self):
"""Return the current IRQ stats"""
"""Return the current IRQ stats."""
return self.__update()
def get_key(self):
......@@ -145,7 +141,7 @@ class GlancesIRQ(object):
return 'irq_line'
def __header(self, line):
"""The header contain the number of CPU
"""Build the header (contain the number of CPU).
CPU0 CPU1 CPU2 CPU3
0: 21 0 0 0 IO-APIC 2-edge timer
......@@ -154,8 +150,7 @@ class GlancesIRQ(object):
return self.cpu_number
def __humanname(self, line):
"""Get a line and
Return the IRQ name, alias or number (choose the best for human)
"""Return the IRQ name, alias or number (choose the best for human).
IRQ line samples:
1: 44487 341 44 72 IO-APIC 1-edge i8042
......@@ -169,8 +164,7 @@ class GlancesIRQ(object):
return irq_line
def __sum(self, line):
"""Get a line and
Return the IRQ sum number
"""Return the IRQ sum number.
IRQ line samples:
1: 44487 341 44 72 IO-APIC 1-edge i8042
......@@ -186,10 +180,7 @@ class GlancesIRQ(object):
return ret
def __update(self):
"""
Load the IRQ file and update the internal dict
"""
"""Load the IRQ file and update the internal dict."""
self.reset()
if not os.path.exists(self.IRQ_FILE):
......
......@@ -48,7 +48,6 @@ items_history_list = [{'name': 'min1',
class Plugin(GlancesPlugin):
"""Glances load plugin.
stats is a dict
......
......@@ -56,7 +56,6 @@ items_history_list = [{'name': 'percent',
class Plugin(GlancesPlugin):
"""Glances' memory plugin.
stats is a dict
......
......@@ -44,7 +44,6 @@ items_history_list = [{'name': 'percent',
class Plugin(GlancesPlugin):
"""Glances swap memory plugin.
stats is a dict
......
......@@ -48,7 +48,6 @@ items_history_list = [{'name': 'rx',
class Plugin(GlancesPlugin):
"""Glances network plugin.
stats is a list
......
......@@ -17,13 +17,14 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Now (current date) plugin."""
from datetime import datetime
from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Plugin to get the current date/time.
stats is (string)
......
......@@ -24,7 +24,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Glances per-CPU plugin.
'stats' is a list of dictionaries that contain the utilization percentages
......
......@@ -36,7 +36,6 @@ from glances.thresholds import glances_thresholds
class GlancesPlugin(object):
"""Main class for Glances plugin."""
def __init__(self, args=None, items_history_list=None):
......@@ -61,7 +60,6 @@ class GlancesPlugin(object):
:args: args parameters
:items_history_list: list of items to store in the history
"""
# Plugin name (= module name without glances_)
self.plugin_name = self.__class__.__module__[len('glances_'):]
# logger.debug("Init plugin %s" % self.plugin_name)
......@@ -103,11 +101,13 @@ class GlancesPlugin(object):
def reset(self):
"""Reset the stats.
This method should be overwrited by childs' classes"""
This method should be overwrited by childs' classes.
"""
self.stats = None
def exit(self):
"""Method to be called when Glances exit"""
"""Just log an event when Glances exit."""
logger.debug("Stop the {} plugin".format(self.plugin_name))
def get_key(self):
......@@ -115,7 +115,7 @@ class GlancesPlugin(object):
return None
def is_enable(self):
"""Return true if plugin is enabled"""
"""Return true if plugin is enabled."""
try:
d = getattr(self.args, 'disable_' + self.plugin_name)
except AttributeError:
......@@ -124,12 +124,14 @@ class GlancesPlugin(object):
return d is False
def is_disable(self):
"""Return true if plugin is disabled"""
"""Return true if plugin is disabled."""
return not self.is_enable()
def _json_dumps(self, d):
"""Return the object 'd' in a JSON format
Manage the issue #815 for Windows OS"""
"""Return the object 'd' in a JSON format.
Manage the issue #815 for Windows OS
"""
try:
return json.dumps(d)
except UnicodeDecodeError:
......@@ -185,11 +187,13 @@ class GlancesPlugin(object):
return self.items_history_list
def get_raw_history(self, item=None, nb=0):
"""Return
"""Return the history (RAW format).
- the stats history (dict of list) if item is None
- the stats history for the given item (list) instead
- None if item did not exist in the history
Limit to lasts nb items (all if nb=0)"""
Limit to lasts nb items (all if nb=0)
"""
s = self.stats_history.get(nb=nb)
if item is None:
return s
......@@ -200,11 +204,13 @@ class GlancesPlugin(object):
return None
def get_json_history(self, item=None, nb=0):
"""Return:
"""Return the history (JSON format).
- the stats history (dict of list) if item is None
- the stats history for the given item (list) instead
- None if item did not exist in the history
Limit to lasts nb items (all if nb=0)"""
Limit to lasts nb items (all if nb=0)
"""
s = self.stats_history.get_json(nb=nb)
if item is None:
return s
......@@ -216,12 +222,16 @@ class GlancesPlugin(object):
def get_export_history(self, item=None):
"""Return the stats history object to export.
See get_raw_history for a full description"""
See get_raw_history for a full description
"""
return self.get_raw_history(item=item)
def get_stats_history(self, item=None, nb=0):
"""Return the stats history as a JSON object (dict or None).
Limit to lasts nb items (all if nb=0)"""
"""Return the stats history (JSON format).
Limit to lasts nb items (all if nb=0)
"""
s = self.get_json_history(nb=nb)
if item is None:
......@@ -245,7 +255,8 @@ class GlancesPlugin(object):
return None
def get_trend(self, item, nb=6):
"""Get the trend regarding to the last nb values
"""Get the trend regarding to the last nb values.
The trend is the diff between the mean of the last nb values
and the current one.
"""
......@@ -391,7 +402,7 @@ class GlancesPlugin(object):
return None
def update_views(self):
"""Default builder fo the stats views.
"""Update the stats views.
The V of MVC
A dict of dict with the needed information to display the stats.
......@@ -458,12 +469,11 @@ class GlancesPlugin(object):
return 'DEFAULT'
def get_json_views(self, item=None, key=None, option=None):
"""Return views in JSON"""
"""Return the views (in JSON)."""
return self._json_dumps(self.get_views(item, key, option))
def load_limits(self, config):
"""Load limits from the configuration file, if it exists."""
# By default set the history length to 3 points per second during one day
self._limits['history_size'] = 28800
......@@ -499,10 +509,12 @@ class GlancesPlugin(object):
self._limits = input_limits
def get_stats_action(self):
"""Return stats for the action
"""Return stats for the action.
By default return all the stats.
Can be overwrite by plugins implementation.
For example, Docker will return self.stats['containers']"""
For example, Docker will return self.stats['containers']
"""
return self.stats
def get_alert(self,
......@@ -589,7 +601,7 @@ class GlancesPlugin(object):
def manage_threshold(self,
stat_name,
trigger):
"""Manage the threshold for the current stat"""
"""Manage the threshold for the current stat."""
glances_thresholds.add(stat_name, trigger)
# logger.info(glances_thresholds.get())
......@@ -598,7 +610,7 @@ class GlancesPlugin(object):
trigger,
header,
action_key):
"""Manage the action for the current stat"""
"""Manage the action for the current stat."""
# Here is a command line for the current trigger ?
try:
command, repeat = self.get_limit_action(trigger, stat_name=stat_name)
......@@ -661,8 +673,10 @@ class GlancesPlugin(object):
def get_limit_action(self, criticity, stat_name=""):
"""Return the tuple (action, repeat) for the alert.
- action is a command line
- repeat is a bool"""
- repeat is a bool
"""
# Get the action for stat + header
# Exemple: network_wlan0_rx_careful_action
# Action key available ?
......@@ -714,8 +728,8 @@ class GlancesPlugin(object):
return []
def is_hide(self, value, header=""):
"""
Return True if the value is in the hide configuration list.
"""Return True if the value is in the hide configuration list.
The hide configuration list is defined in the glances.conf file.
It is a comma separed list of regexp.
Example for diskio:
......@@ -818,8 +832,6 @@ class GlancesPlugin(object):
"""Make a nice human-readable string out of number.
Number of decimal places increases as quantity approaches 1.
examples:
CASE: 613421788 RESULT: 585M low_precision: 585M
CASE: 5307033647 RESULT: 4.94G low_precision: 4.9G
CASE: 44968414685 RESULT: 41.9G low_precision: 41.9G
......@@ -866,8 +878,10 @@ class GlancesPlugin(object):
return '{!s}'.format(number)
def trend_msg(self, trend, significant=1):
"""Return the trend message
Do not take into account if trend < significant"""
"""Return the trend message.
Do not take into account if trend < significant
"""
ret = '-'
if trend is None:
ret = ' '
......
......@@ -42,7 +42,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Glances ports scanner plugin."""
def __init__(self, args=None, config=None):
......@@ -64,7 +63,7 @@ class Plugin(GlancesPlugin):
self._thread = None
def exit(self):
"""Overwrite the exit method to close threads"""
"""Overwrite the exit method to close threads."""
if self._thread is not None:
self._thread.stop()
# Call the father class
......@@ -77,7 +76,6 @@ class Plugin(GlancesPlugin):
@GlancesPlugin._log_result_decorator
def update(self):
"""Update the ports list."""
if self.input_method == 'local':
# Only refresh:
# * if there is not other scanning thread
......@@ -103,7 +101,6 @@ class Plugin(GlancesPlugin):
def get_ports_alert(self, port, header="", log=False):
"""Return the alert status relative to the port scan return value."""
if port['status'] is None:
return 'CAREFUL'
elif port['status'] == 0:
......@@ -117,7 +114,6 @@ class Plugin(GlancesPlugin):
def get_web_alert(self, web, header="", log=False):
"""Return the alert status relative to the web/url scan return value."""
if web['status'] is None:
return 'CAREFUL'
elif web['status'] not in [200, 301, 302]:
......@@ -186,7 +182,7 @@ class ThreadScanner(threading.Thread):
"""
def __init__(self, stats):
"""Init the class"""
"""Init the class."""
logger.debug("ports plugin - Create thread for scan list {}".format(stats))
super(ThreadScanner, self).__init__()
# Event needed to stop properly the thread
......@@ -197,9 +193,10 @@ class ThreadScanner(threading.Thread):
self.plugin_name = "ports"
def run(self):
"""Function called to grab stats.
Infinite loop, should be stopped by calling the stop() method"""
"""Grab the stats.
Infinite loop, should be stopped by calling the stop() method.
"""
for p in self._stats:
# End of the thread has been asked
if self.stopped():
......@@ -216,25 +213,25 @@ class ThreadScanner(threading.Thread):
@property
def stats(self):
"""Stats getter"""
"""Stats getter."""
return self._stats
@stats.setter
def stats(self, value):
"""Stats setter"""
"""Stats setter."""
self._stats = value
def stop(self, timeout=None):
"""Stop the thread"""
"""Stop the thread."""
logger.debug("ports plugin - Close thread for scan list {}".format(self._stats))
self._stopper.set()
def stopped(self):
"""Return True is the thread is stopped"""
"""Return True is the thread is stopped."""
return self._stopper.isSet()
def _web_scan(self, web):
"""Scan the Web/URL (dict) and update the status key"""
"""Scan the Web/URL (dict) and update the status key."""
try:
req = requests.head(web['url'],
allow_redirects=True,
......@@ -249,14 +246,14 @@ class ThreadScanner(threading.Thread):
return web
def _port_scan(self, port):
"""Scan the port structure (dict) and update the status key"""
"""Scan the port structure (dict) and update the status key."""
if int(port['port']) == 0:
return self._port_scan_icmp(port)
else:
return self._port_scan_tcp(port)
def _resolv_name(self, hostname):
"""Convert hostname to IP address"""
"""Convert hostname to IP address."""
ip = hostname
try:
ip = socket.gethostbyname(hostname)
......@@ -265,7 +262,7 @@ class ThreadScanner(threading.Thread):
return ip
def _port_scan_icmp(self, port):
"""Scan the (ICMP) port structure (dict) and update the status key"""
"""Scan the (ICMP) port structure (dict) and update the status key."""
ret = None
# Create the ping command
......@@ -305,7 +302,7 @@ class ThreadScanner(threading.Thread):
return ret
def _port_scan_tcp(self, port):
"""Scan the (TCP) port structure (dict) and update the status key"""
"""Scan the (TCP) port structure (dict) and update the status key."""
ret = None
# Create and configure the scanning socket
......
......@@ -27,7 +27,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
class Plugin(GlancesPlugin):
"""Glances process count plugin.
stats is a list
......
......@@ -57,7 +57,6 @@ def split_cmdline(cmdline):
class Plugin(GlancesPlugin):
"""Glances' processes plugin.
stats is a list
......@@ -202,6 +201,7 @@ class Plugin(GlancesPlugin):
def get_process_curses_data(self, p, first, args):
"""Get curses data to display for a process.
- p is the process to display
- first is a tag=True if the process is the first on the list
"""
......@@ -466,9 +466,7 @@ class Plugin(GlancesPlugin):
return ret
def __msg_curse_header(self, ret, process_sort_key, args=None):
"""
Build the header and add it to the ret dict
"""
"""Build the header and add it to the ret dict."""
sort_style = 'SORT'
if args.disable_irix and 0 < self.nb_log_core < 10:
......@@ -503,7 +501,8 @@ class Plugin(GlancesPlugin):
def __msg_curse_sum(self, ret, sep_char='_', mmm=None, args=None):
"""
Build the sum message (only when filter is on) and add it to the ret dict
Build the sum message (only when filter is on) and add it to the ret dict.
* ret: list of string where the message is added
* sep_char: define the line separation char
* mmm: display min, max, mean or current (if mmm=None)
......@@ -586,24 +585,20 @@ class Plugin(GlancesPlugin):
ret.append(self.curse_add_line(msg, optional=True))
def __mmm_deco(self, mmm):
"""
Return the decoration string for the current mmm status
"""
"""Return the decoration string for the current mmm status."""
if mmm is not None:
return 'DEFAULT'
else:
return 'FILTER'
def __mmm_reset(self):
"""
Reset the MMM stats
"""
"""Reset the MMM stats."""
self.mmm_min = {}
self.mmm_max = {}
def __sum_stats(self, key, indice=None, mmm=None):
"""
Return the sum of the stats value for the given key
"""Return the sum of the stats value for the given key.
* indice: If indice is set, get the p[key][indice]
* mmm: display min, max, mean or current (if mmm=None)
"""
......@@ -647,13 +642,13 @@ class Plugin(GlancesPlugin):
return ret
def __sort_stats(self, sortedby=None):
"""Return the stats (dict) sorted by (sortedby)"""
"""Return the stats (dict) sorted by (sortedby)."""
return sort_stats(self.stats, sortedby,
tree=glances_processes.is_tree_enabled(),
reverse=glances_processes.sort_reverse)
def __max_pid_size(self):
"""Return the maximum PID size in number of char"""
"""Return the maximum PID size in number of char."""
if self.pid_max is not None:
return len(str(self.pid_max))
else:
......
......@@ -17,6 +17,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""PsUtil plugin."""
from glances import psutil_version_info
from glances.plugins.glances_plugin import GlancesPlugin
......
......@@ -37,7 +37,6 @@ else:
class Plugin(GlancesPlugin):
"""Glances quicklook plugin.
'stats' is a dictionary.
......@@ -143,7 +142,7 @@ class Plugin(GlancesPlugin):
return ret
def _msg_create_line(self, msg, bar, key):
"""Create a new line to the Quickview"""
"""Create a new line to the Quickview."""
ret = []
ret.append(self.curse_add_line(msg))
......@@ -155,5 +154,5 @@ class Plugin(GlancesPlugin):
return ret
def _hz_to_ghz(self, hz):
"""Convert Hz to Ghz"""
"""Convert Hz to Ghz."""
return hz / 1000000000.0
......@@ -31,7 +31,6 @@ except ImportError:
class Plugin(GlancesPlugin):
"""Glances RAID plugin.
stats is a dict (see pymdstat documentation)
......
......@@ -37,7 +37,6 @@ def to_fahrenheit(celsius):
class Plugin(GlancesPlugin):
"""Glances sensors plugin.
The stats list includes both sensors and hard disks stats, if any.
......@@ -218,7 +217,6 @@ class Plugin(GlancesPlugin):
class GlancesGrabSensors(object):
"""Get sensors stats."""
def __init__(self):
......@@ -282,7 +280,8 @@ class GlancesGrabSensors(object):
type: SENSOR_TEMP_UNIT or SENSOR_FAN_UNIT
output: a list"""
output: a list
"""
ret = []
if type == SENSOR_TEMP_UNIT and self.init_temp:
input_list = self.stemps
......
......@@ -30,7 +30,6 @@ snmp_oid = {'_uptime': '1.3.6.1.2.1.1.3.0'}
class Plugin(GlancesPlugin):
"""Glances uptime plugin.
stats is date (string)
......
......@@ -38,8 +38,8 @@ else:
class Plugin(GlancesPlugin):
"""Glances Wifi plugin.
Get stats of the current Wifi hotspots.
"""
......@@ -130,11 +130,11 @@ class Plugin(GlancesPlugin):
def get_alert(self, value):
"""Overwrite the default get_alert method.
Alert is on signal quality where lower is better...
:returns: string -- Signal alert
"""
ret = 'OK'
try:
if value <= self.get_limit('critical', stat_name=self.plugin_name):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册