mirror of
https://github.com/nicolargo/glances.git
synced 2024-09-20 09:08:37 +03:00
Use the new compat module
This commit is contained in:
parent
4639fffc34
commit
25f531e3d4
@ -23,13 +23,9 @@
|
||||
import json
|
||||
import socket
|
||||
import sys
|
||||
try:
|
||||
from xmlrpc.client import Transport, ServerProxy, ProtocolError, Fault
|
||||
except ImportError:
|
||||
# Python 2
|
||||
from xmlrpclib import Transport, ServerProxy, ProtocolError, Fault
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import Fault, ProtocolError, ServerProxy, Transport
|
||||
from glances.core.glances_globals import version
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.core.glances_stats import GlancesStatsClient
|
||||
|
@ -22,13 +22,9 @@
|
||||
# Import system libs
|
||||
import json
|
||||
import socket
|
||||
try:
|
||||
from xmlrpc.client import ServerProxy, Fault, ProtocolError
|
||||
except ImportError:
|
||||
# Python 2
|
||||
from xmlrpclib import ServerProxy, Fault, ProtocolError
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import Fault, ProtocolError, ServerProxy
|
||||
from glances.core.glances_autodiscover import GlancesAutoDiscoverServer
|
||||
from glances.core.glances_client import GlancesClient, GlancesClientTransport
|
||||
from glances.core.glances_logging import logger
|
||||
|
@ -22,20 +22,15 @@
|
||||
# Import system libs
|
||||
import os
|
||||
import sys
|
||||
try:
|
||||
from configparser import ConfigParser
|
||||
from configparser import NoOptionError
|
||||
except ImportError: # Python 2
|
||||
from ConfigParser import SafeConfigParser as ConfigParser
|
||||
from ConfigParser import NoOptionError
|
||||
from io import open
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import ConfigParser, NoOptionError
|
||||
from glances.core.glances_globals import (
|
||||
appname,
|
||||
is_bsd,
|
||||
is_linux,
|
||||
is_mac,
|
||||
is_py3,
|
||||
is_windows,
|
||||
sys_prefix
|
||||
)
|
||||
@ -107,10 +102,9 @@ class Config(object):
|
||||
for config_file in self.config_file_paths():
|
||||
if os.path.exists(config_file):
|
||||
try:
|
||||
if is_py3:
|
||||
self.parser.read(config_file, encoding='utf-8')
|
||||
else:
|
||||
self.parser.read(config_file)
|
||||
with open(config_file, encoding='utf-8') as f:
|
||||
self.parser.read_file(f)
|
||||
self.parser.read(f)
|
||||
logger.info("Read configuration file '{0}'".format(config_file))
|
||||
except UnicodeDecodeError as err:
|
||||
logger.error("Cannot decode configuration file '{0}': {1}".format(config_file, err))
|
||||
|
@ -27,9 +27,6 @@ appname = 'glances'
|
||||
version = __import__('glances').__version__
|
||||
psutil_version = __import__('glances').__psutil_version
|
||||
|
||||
# PY3?
|
||||
is_py3 = sys.version_info >= (3, 3)
|
||||
|
||||
# Operating system flag
|
||||
# Note: Somes libs depends of OS
|
||||
is_bsd = sys.platform.find('bsd') != -1
|
||||
|
@ -20,15 +20,11 @@
|
||||
"""Custom logging class."""
|
||||
|
||||
import logging
|
||||
try:
|
||||
# Python 2.6
|
||||
from logutils.dictconfig import dictConfig
|
||||
except ImportError:
|
||||
# Python >= 2.7
|
||||
from logging.config import dictConfig
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from glances.core.compat import dictConfig
|
||||
|
||||
# Define the logging configuration
|
||||
LOGGING_CFG = {
|
||||
'version': 1,
|
||||
|
@ -24,6 +24,7 @@ import time
|
||||
from datetime import datetime
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import range
|
||||
from glances.core.glances_processes import glances_processes
|
||||
|
||||
|
||||
|
@ -24,6 +24,7 @@ import re
|
||||
import subprocess
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import range, u
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.core.glances_processes import glances_processes
|
||||
|
||||
@ -125,7 +126,7 @@ class MonitorList(object):
|
||||
return self.__monitor_list
|
||||
|
||||
# Iter upon the monitored list
|
||||
for i in range(0, len(self.get())):
|
||||
for i in range(len(self.get())):
|
||||
# Search monitored processes by a regular expression
|
||||
processlist = glances_processes.getalllist()
|
||||
monitoredlist = [p for p in processlist if re.search(self.regex(i), p['cmdline']) is not None]
|
||||
@ -141,7 +142,7 @@ class MonitorList(object):
|
||||
except Exception:
|
||||
self.__monitor_list[i]['result'] = 'Cannot execute command'
|
||||
# Only save the first line
|
||||
self.__monitor_list[i]['result'] = self.__monitor_list[i]['result'].decode('utf-8').split('\n')[0]
|
||||
self.__monitor_list[i]['result'] = u(self.__monitor_list[i]['result']).split('\n')[0]
|
||||
|
||||
if self.command(i) is None or self.__monitor_list[i]['result'] == '':
|
||||
# If there is no command specified in the conf file
|
||||
|
@ -25,17 +25,13 @@ import hashlib
|
||||
import os
|
||||
import sys
|
||||
import uuid
|
||||
from io import open
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import b, input
|
||||
from glances.core.glances_globals import appname, is_bsd, is_linux, is_mac, is_windows
|
||||
from glances.core.glances_logging import logger
|
||||
|
||||
# Trick: bind raw_input to input in Python 2
|
||||
try:
|
||||
input = raw_input
|
||||
except NameError:
|
||||
pass
|
||||
|
||||
|
||||
class GlancesPassword(object):
|
||||
|
||||
@ -69,7 +65,7 @@ class GlancesPassword(object):
|
||||
|
||||
def sha256_hash(self, plain_password):
|
||||
"""Return the SHA-256 of the given password."""
|
||||
return hashlib.sha256(plain_password.encode('utf-8')).hexdigest()
|
||||
return hashlib.sha256(b(plain_password)).hexdigest()
|
||||
|
||||
def get_hash(self, salt, plain_password):
|
||||
"""Return the hashed password, salt + SHA-256."""
|
||||
|
@ -23,6 +23,7 @@ import os
|
||||
import re
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import iteritems, itervalues
|
||||
from glances.core.glances_globals import is_bsd, is_linux, is_mac, is_windows
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.core.glances_timer import Timer, getTimeSinceLastUpdate
|
||||
@ -188,7 +189,7 @@ class ProcessTreeNode(object):
|
||||
nodes_to_add_last = collections.deque()
|
||||
|
||||
# first pass: add nodes whose parent are in the tree
|
||||
for process, stats in process_dict.items():
|
||||
for process, stats in iteritems(process_dict):
|
||||
new_node = ProcessTreeNode(process, stats, sort_key, sort_reverse)
|
||||
try:
|
||||
parent_process = process.parent()
|
||||
@ -661,21 +662,21 @@ class GlancesProcesses(object):
|
||||
# Sort the internal dict and cut the top N (Return a list of tuple)
|
||||
# tuple=key (proc), dict (returned by __get_process_stats)
|
||||
try:
|
||||
processiter = sorted(processdict.items(),
|
||||
processiter = sorted(iteritems(processdict),
|
||||
key=lambda x: x[1][self.sort_key],
|
||||
reverse=self.sort_reverse)
|
||||
except (KeyError, TypeError) as e:
|
||||
logger.error("Cannot sort process list by {0}: {1}".format(self.sort_key, e))
|
||||
logger.error("%s" % str(processdict.items()[0]))
|
||||
logger.error("%s" % str(iteritems(processdict)[0]))
|
||||
# Fallback to all process (issue #423)
|
||||
processloop = processdict.items()
|
||||
processloop = iteritems(processdict)
|
||||
first = False
|
||||
else:
|
||||
processloop = processiter[0:self.max_processes]
|
||||
first = True
|
||||
else:
|
||||
# Get all processes stats
|
||||
processloop = processdict.items()
|
||||
processloop = iteritems(processdict)
|
||||
first = False
|
||||
|
||||
for i in processloop:
|
||||
@ -699,7 +700,7 @@ class GlancesProcesses(object):
|
||||
first = False
|
||||
|
||||
# Build the all processes list used by the monitored list
|
||||
self.allprocesslist = processdict.values()
|
||||
self.allprocesslist = itervalues(processdict)
|
||||
|
||||
# Clean internals caches if timeout is reached
|
||||
if self.cache_timer.finished():
|
||||
|
@ -24,14 +24,9 @@ import json
|
||||
import socket
|
||||
import sys
|
||||
from base64 import b64decode
|
||||
try:
|
||||
from xmlrpc.server import SimpleXMLRPCRequestHandler
|
||||
from xmlrpc.server import SimpleXMLRPCServer
|
||||
except ImportError: # Python 2
|
||||
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
|
||||
from SimpleXMLRPCServer import SimpleXMLRPCServer
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer
|
||||
from glances.core.glances_autodiscover import GlancesAutoDiscoverClient
|
||||
from glances.core.glances_globals import version
|
||||
from glances.core.glances_logging import logger
|
||||
|
@ -23,6 +23,7 @@
|
||||
from socket import gaierror, gethostbyname
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import range
|
||||
from glances.core.glances_logging import logger
|
||||
|
||||
|
||||
|
@ -25,6 +25,7 @@ import re
|
||||
import sys
|
||||
import threading
|
||||
|
||||
from glances.core.compat import iteritems
|
||||
from glances.core.glances_globals import exports_path, plugins_path, sys_path
|
||||
from glances.core.glances_logging import logger
|
||||
|
||||
@ -377,12 +378,7 @@ class GlancesStatsClientSNMP(GlancesStats):
|
||||
return short_system_name
|
||||
|
||||
# Find the short name in the oid_to_short_os_name dict
|
||||
try:
|
||||
iteritems = oid_to_short_system_name.iteritems()
|
||||
except AttributeError:
|
||||
# Correct issue #386
|
||||
iteritems = oid_to_short_system_name.items()
|
||||
for r, v in iteritems:
|
||||
for r, v in iteritems(oid_to_short_system_name):
|
||||
if re.search(r, oid_system_name):
|
||||
short_system_name = v
|
||||
break
|
||||
|
@ -25,7 +25,7 @@ import sys
|
||||
import time
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.glances_globals import is_py3
|
||||
from glances.core.compat import PY3, iterkeys, itervalues
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.exports.glances_export import GlancesExport
|
||||
|
||||
@ -43,7 +43,7 @@ class Export(GlancesExport):
|
||||
|
||||
# Set the CSV output file
|
||||
try:
|
||||
if is_py3:
|
||||
if PY3:
|
||||
self.csv_file = open(self.csv_filename, 'w', newline='')
|
||||
else:
|
||||
self.csv_file = open(self.csv_filename, 'wb')
|
||||
@ -83,17 +83,15 @@ class Export(GlancesExport):
|
||||
csv_header += ('{0}_{1}_{2}'.format(
|
||||
plugin, self.get_item_key(stat), item) for item in stat)
|
||||
# Others lines: stats
|
||||
fieldvalues = stat.values()
|
||||
csv_data += fieldvalues
|
||||
csv_data += itervalues(stat)
|
||||
elif isinstance(all_stats[i], dict):
|
||||
# First line: header
|
||||
if self.first_line:
|
||||
fieldnames = all_stats[i].keys()
|
||||
fieldnames = iterkeys(all_stats[i])
|
||||
csv_header += ('{0}_{1}'.format(plugin, fieldname)
|
||||
for fieldname in fieldnames)
|
||||
# Others lines: stats
|
||||
fieldvalues = all_stats[i].values()
|
||||
csv_data += fieldvalues
|
||||
csv_data += itervalues(all_stats[i])
|
||||
|
||||
# Export to CSV
|
||||
if self.first_line:
|
||||
|
@ -27,6 +27,7 @@ I am your father...
|
||||
# None...
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import iteritems, iterkeys
|
||||
from glances.core.glances_logging import logger
|
||||
|
||||
|
||||
@ -131,16 +132,12 @@ class GlancesExport(object):
|
||||
if isinstance(stats, dict):
|
||||
# Stats is a dict
|
||||
# Is there a key ?
|
||||
if 'key' in list(stats.keys()):
|
||||
if 'key' in iterkeys(stats):
|
||||
pre_key = '{0}.'.format(stats[stats['key']])
|
||||
else:
|
||||
pre_key = ''
|
||||
# Walk through the dict
|
||||
try:
|
||||
iteritems = stats.iteritems()
|
||||
except AttributeError:
|
||||
iteritems = stats.items()
|
||||
for key, value in iteritems:
|
||||
for key, value in iteritems(stats):
|
||||
if isinstance(value, list):
|
||||
try:
|
||||
value = value[0]
|
||||
|
@ -23,6 +23,7 @@
|
||||
import os
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import iterkeys
|
||||
from glances.core.glances_logging import logger
|
||||
|
||||
# Import specific lib
|
||||
@ -108,7 +109,7 @@ class GlancesHistory(object):
|
||||
handles = []
|
||||
labels = []
|
||||
for i in stats.get_plugin(p).get_items_history_list():
|
||||
if i['name'] in h.keys():
|
||||
if i['name'] in iterkeys(h):
|
||||
# The key exist
|
||||
# Add the curves in the current chart
|
||||
logger.debug("Generate graph: %s %s" % (p, i['name']))
|
||||
@ -132,7 +133,7 @@ class GlancesHistory(object):
|
||||
# Find if anothers key ends with the key
|
||||
# Ex: key='tx' => 'ethernet_tx'
|
||||
# Add one curve per chart
|
||||
stats_history_filtered = [key for key in h.keys() if key.endswith('_' + i['name'])]
|
||||
stats_history_filtered = [key for key in iterkeys(h) if key.endswith('_' + i['name'])]
|
||||
stats_history_filtered.sort()
|
||||
logger.debug("Generate graphs: %s %s" %
|
||||
(p, stats_history_filtered))
|
||||
|
@ -21,12 +21,9 @@
|
||||
|
||||
# Import sys libs
|
||||
import sys
|
||||
try:
|
||||
from configparser import NoOptionError, NoSectionError
|
||||
except ImportError: # Python 2
|
||||
from ConfigParser import NoOptionError, NoSectionError
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import NoOptionError, NoSectionError
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.exports.glances_export import GlancesExport
|
||||
|
||||
|
@ -22,12 +22,9 @@
|
||||
# Import sys libs
|
||||
import sys
|
||||
from numbers import Number
|
||||
try:
|
||||
from configparser import NoOptionError, NoSectionError
|
||||
except ImportError: # Python 2
|
||||
from ConfigParser import NoOptionError, NoSectionError
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import NoOptionError, NoSectionError, range
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.exports.glances_export import GlancesExport
|
||||
|
||||
@ -106,7 +103,7 @@ class Export(GlancesExport):
|
||||
|
||||
def export(self, name, columns, points):
|
||||
"""Export the stats to the Statsd server."""
|
||||
for i in range(0, len(columns)):
|
||||
for i in range(len(columns)):
|
||||
if not isinstance(points[i], Number):
|
||||
continue
|
||||
stat_name = '{0}.{1}.{2}'.format(self.prefix, name, columns[i])
|
||||
|
@ -26,11 +26,8 @@ import sys
|
||||
from numbers import Number
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import NoOptionError, NoSectionError, range
|
||||
from glances.core.glances_logging import logger
|
||||
try:
|
||||
from configparser import NoOptionError, NoSectionError
|
||||
except ImportError: # Python 2
|
||||
from ConfigParser import NoOptionError, NoSectionError
|
||||
from glances.exports.glances_export import GlancesExport
|
||||
|
||||
# Import pika for RabbitMQ
|
||||
@ -100,7 +97,7 @@ class Export(GlancesExport):
|
||||
"""Write the points in RabbitMQ."""
|
||||
data = ('hostname=' + self.hostname + ', name=' + name +
|
||||
', dateinfo=' + datetime.datetime.utcnow().isoformat())
|
||||
for i in range(0, len(columns)):
|
||||
for i in range(len(columns)):
|
||||
if not isinstance(points[i], Number):
|
||||
continue
|
||||
else:
|
||||
|
@ -22,12 +22,9 @@
|
||||
# Import sys libs
|
||||
import sys
|
||||
from numbers import Number
|
||||
try:
|
||||
from configparser import NoOptionError, NoSectionError
|
||||
except ImportError: # Python 2
|
||||
from ConfigParser import NoOptionError, NoSectionError
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import NoOptionError, NoSectionError, range
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.exports.glances_export import GlancesExport
|
||||
|
||||
@ -91,7 +88,7 @@ class Export(GlancesExport):
|
||||
|
||||
def export(self, name, columns, points):
|
||||
"""Export the stats to the Statsd server."""
|
||||
for i in range(0, len(columns)):
|
||||
for i in range(len(columns)):
|
||||
if not isinstance(points[i], Number):
|
||||
continue
|
||||
stat_name = '{0}.{1}'.format(name, columns[i])
|
||||
|
@ -23,6 +23,7 @@ import json
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
from io import open
|
||||
|
||||
from glances.core.glances_logging import logger
|
||||
|
||||
|
@ -23,6 +23,7 @@ import time
|
||||
|
||||
import msvcrt
|
||||
|
||||
from glances.core.compat import queue
|
||||
from glances.core.glances_logging import logger
|
||||
|
||||
try:
|
||||
@ -32,11 +33,6 @@ except ImportError:
|
||||
logger.critical("Colorconsole module not found. Glances cannot start in standalone mode.")
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
import queue
|
||||
except ImportError: # Python 2
|
||||
import Queue as queue
|
||||
|
||||
|
||||
class ListenGetch(threading.Thread):
|
||||
|
||||
|
@ -24,6 +24,7 @@ import re
|
||||
import sys
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import u
|
||||
from glances.core.glances_globals import is_mac, is_windows
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.core.glances_logs import glances_logs
|
||||
@ -883,14 +884,11 @@ class _GlancesCurses(object):
|
||||
pass
|
||||
else:
|
||||
# New column
|
||||
try:
|
||||
# Python 2: we need to decode to get real screen size because utf-8 special tree chars
|
||||
# occupy several bytes
|
||||
offset = len(m['msg'].decode("utf-8", "replace"))
|
||||
except AttributeError:
|
||||
# Python 3: strings are strings and bytes are bytes, all is
|
||||
# good
|
||||
offset = len(m['msg'])
|
||||
# Python 2: we need to decode to get real screen size because
|
||||
# UTF-8 special tree chars occupy several bytes.
|
||||
# Python 3: strings are strings and bytes are bytes, all is
|
||||
# good.
|
||||
offset = len(u(m['msg']))
|
||||
x += offset
|
||||
if x > x_max:
|
||||
x_max = x
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
"""CPU plugin."""
|
||||
|
||||
from glances.core.compat import iterkeys
|
||||
from glances.core.glances_cpu_percent import cpu_percent
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
@ -127,7 +128,7 @@ class Plugin(GlancesPlugin):
|
||||
return self.stats
|
||||
|
||||
# Convert SNMP stats to float
|
||||
for key in list(self.stats.keys()):
|
||||
for key in iterkeys(self.stats):
|
||||
self.stats[key] = float(self.stats[key])
|
||||
self.stats['total'] = 100 - self.stats['idle']
|
||||
|
||||
|
@ -25,6 +25,7 @@ import threading
|
||||
import time
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import iterkeys, itervalues
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.core.glances_timer import getTimeSinceLastUpdate
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
@ -69,7 +70,7 @@ class Plugin(GlancesPlugin):
|
||||
def exit(self):
|
||||
"""Overwrite the exit method to close threads"""
|
||||
logger.debug("Stop the Docker plugin")
|
||||
for t in self.thread_list.values():
|
||||
for t in itervalues(self.thread_list):
|
||||
t.stop()
|
||||
|
||||
def get_key(self):
|
||||
@ -206,7 +207,7 @@ class Plugin(GlancesPlugin):
|
||||
t.start()
|
||||
|
||||
# Stop threads for non-existing containers
|
||||
nonexisting_containers = list(set(self.thread_list.keys()) - set([c['Id'] for c in self.stats['containers']]))
|
||||
nonexisting_containers = set(iterkeys(self.thread_list)) - set([c['Id'] for c in self.stats['containers']])
|
||||
for container_id in nonexisting_containers:
|
||||
# Stop the thread
|
||||
logger.debug("{0} plugin - Stop thread for old container {1}".format(self.plugin_name, container_id[:12]))
|
||||
|
@ -24,6 +24,7 @@ import os
|
||||
import socket
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import nativestr, range
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
@ -116,10 +117,9 @@ class GlancesGrabHDDTemp(object):
|
||||
for item in range(devices):
|
||||
offset = item * 5
|
||||
hddtemp_current = {}
|
||||
device = fields[offset + 1].decode('utf-8')
|
||||
device = os.path.basename(device)
|
||||
temperature = float(fields[offset + 3].decode('utf-8'))
|
||||
unit = fields[offset + 4].decode('utf-8')
|
||||
device = os.path.basename(nativestr(fields[offset + 1]))
|
||||
temperature = float(fields[offset + 3])
|
||||
unit = nativestr(fields[offset + 4])
|
||||
hddtemp_current['label'] = device
|
||||
hddtemp_current['value'] = temperature
|
||||
hddtemp_current['unit'] = unit
|
||||
|
@ -20,6 +20,7 @@
|
||||
"""IP plugin."""
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import iterkeys
|
||||
from glances.core.glances_globals import is_freebsd
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
@ -97,7 +98,7 @@ class Plugin(GlancesPlugin):
|
||||
|
||||
# Add specifics informations
|
||||
# Optional
|
||||
for key in self.stats.keys():
|
||||
for key in iterkeys(self.stats):
|
||||
self.views[key]['optional'] = True
|
||||
|
||||
def msg_curse(self, args=None):
|
||||
|
@ -23,6 +23,7 @@
|
||||
import os
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import iteritems
|
||||
from glances.plugins.glances_core import Plugin as CorePlugin
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
@ -99,11 +100,7 @@ class Plugin(GlancesPlugin):
|
||||
|
||||
# Python 3 return a dict like:
|
||||
# {'min1': "b'0.08'", 'min5': "b'0.12'", 'min15': "b'0.15'"}
|
||||
try:
|
||||
iteritems = self.stats.iteritems()
|
||||
except AttributeError:
|
||||
iteritems = self.stats.items()
|
||||
for k, v in iteritems:
|
||||
for k, v in iteritems(self.stats):
|
||||
self.stats[k] = float(v)
|
||||
|
||||
self.stats['cpucore'] = self.nb_log_core
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
"""Virtual memory plugin."""
|
||||
|
||||
from glances.core.compat import iterkeys
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
import psutil
|
||||
@ -139,7 +140,7 @@ class Plugin(GlancesPlugin):
|
||||
self.reset()
|
||||
return self.stats
|
||||
|
||||
for key in list(self.stats.keys()):
|
||||
for key in iterkeys(self.stats):
|
||||
if self.stats[key] != '':
|
||||
self.stats[key] = float(self.stats[key]) * 1024
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
"""Swap memory plugin."""
|
||||
|
||||
from glances.core.compat import iterkeys
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
import psutil
|
||||
@ -116,7 +117,7 @@ class Plugin(GlancesPlugin):
|
||||
self.reset()
|
||||
return self.stats
|
||||
|
||||
for key in list(self.stats.keys()):
|
||||
for key in iterkeys(self.stats):
|
||||
if self.stats[key] != '':
|
||||
self.stats[key] = float(self.stats[key]) * 1024
|
||||
|
||||
|
@ -19,9 +19,8 @@
|
||||
|
||||
"""Monitor plugin."""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import u
|
||||
from glances.core.glances_monitor_list import MonitorList as glancesMonitorList
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
@ -100,14 +99,8 @@ class Plugin(GlancesPlugin):
|
||||
ret.append(self.curse_add_line(msg))
|
||||
msg = '{0:13} '.format('RUNNING' if m['count'] >= 1 else 'NOT RUNNING')
|
||||
ret.append(self.curse_add_line(msg))
|
||||
# Decode to UTF8 (only for Python 3)
|
||||
try:
|
||||
msg = m['result'].decode('utf-8') if m['count'] >= 1 else ''
|
||||
except (UnicodeError, AttributeError):
|
||||
try:
|
||||
msg = m['result'] if m['count'] >= 1 else ''
|
||||
except UnicodeError:
|
||||
msg = m['result'].encode('utf-8') if m['count'] >= 1 else ''
|
||||
# Decode to UTF-8 (for Python 2)
|
||||
msg = u(m['result']) if m['count'] >= 1 else ''
|
||||
ret.append(self.curse_add_line(msg, optional=True, splittable=True))
|
||||
ret.append(self.curse_new_line())
|
||||
|
||||
|
@ -29,8 +29,8 @@ from datetime import datetime
|
||||
from operator import itemgetter
|
||||
|
||||
# Import Glances lib
|
||||
from glances.core.compat import iterkeys, itervalues, map
|
||||
from glances.core.glances_actions import GlancesActions
|
||||
from glances.core.glances_globals import is_py3
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.core.glances_logs import glances_logs
|
||||
|
||||
@ -187,15 +187,15 @@ class GlancesPlugin(object):
|
||||
ret = {}
|
||||
if bulk:
|
||||
# Bulk request
|
||||
snmpresult = clientsnmp.getbulk_by_oid(0, 10, *snmp_oid.values())
|
||||
snmpresult = clientsnmp.getbulk_by_oid(0, 10, itervalues(*snmp_oid))
|
||||
|
||||
if len(snmp_oid) == 1:
|
||||
# Bulk command for only one OID
|
||||
# Note: key is the item indexed but the OID result
|
||||
for item in snmpresult:
|
||||
if item.keys()[0].startswith(snmp_oid.values()[0]):
|
||||
ret[snmp_oid.keys()[0] + item.keys()
|
||||
[0].split(snmp_oid.values()[0])[1]] = item.values()[0]
|
||||
if iterkeys(item)[0].startswith(itervalues(snmp_oid)[0]):
|
||||
ret[iterkeys(snmp_oid)[0] + iterkeys(item)
|
||||
[0].split(itervalues(snmp_oid)[0])[1]] = itervalues(item)[0]
|
||||
else:
|
||||
# Build the internal dict with the SNMP result
|
||||
# Note: key is the first item in the snmp_oid
|
||||
@ -203,7 +203,7 @@ class GlancesPlugin(object):
|
||||
for item in snmpresult:
|
||||
item_stats = {}
|
||||
item_key = None
|
||||
for key in list(snmp_oid.keys()):
|
||||
for key in iterkeys(snmp_oid):
|
||||
oid = snmp_oid[key] + '.' + str(index)
|
||||
if oid in item:
|
||||
if item_key is None:
|
||||
@ -215,10 +215,10 @@ class GlancesPlugin(object):
|
||||
index += 1
|
||||
else:
|
||||
# Simple get request
|
||||
snmpresult = clientsnmp.get_by_oid(*snmp_oid.values())
|
||||
snmpresult = clientsnmp.get_by_oid(itervalues(*snmp_oid))
|
||||
|
||||
# Build the internal dict with the SNMP result
|
||||
for key in list(snmp_oid.keys()):
|
||||
for key in iterkeys(snmp_oid):
|
||||
ret[key] = snmpresult[snmp_oid[key]]
|
||||
|
||||
return ret
|
||||
@ -293,7 +293,7 @@ class GlancesPlugin(object):
|
||||
# Stats are stored in a list of dict (ex: NETWORK, FS...)
|
||||
for i in self.get_raw():
|
||||
ret[i[self.get_key()]] = {}
|
||||
for key in i.keys():
|
||||
for key in iterkeys(i):
|
||||
value = {'decoration': 'DEFAULT',
|
||||
'optional': False,
|
||||
'additional': False,
|
||||
@ -301,7 +301,7 @@ class GlancesPlugin(object):
|
||||
ret[i[self.get_key()]][key] = value
|
||||
elif isinstance(self.get_raw(), dict) and self.get_raw() is not None:
|
||||
# Stats are stored in a dict (ex: CPU, LOAD...)
|
||||
for key in self.get_raw().keys():
|
||||
for key in iterkeys(self.get_raw()):
|
||||
value = {'decoration': 'DEFAULT',
|
||||
'optional': False,
|
||||
'additional': False,
|
||||
@ -652,16 +652,10 @@ class GlancesPlugin(object):
|
||||
"""Log (DEBUG) the result of the function fct."""
|
||||
def wrapper(*args, **kw):
|
||||
ret = fct(*args, **kw)
|
||||
if is_py3:
|
||||
logger.debug("%s %s %s return %s" % (
|
||||
args[0].__class__.__name__,
|
||||
args[0].__class__.__module__[len('glances_'):],
|
||||
fct.__name__, ret))
|
||||
else:
|
||||
logger.debug("%s %s %s return %s" % (
|
||||
args[0].__class__.__name__,
|
||||
args[0].__class__.__module__[len('glances_'):],
|
||||
fct.func_name, ret))
|
||||
logger.debug("%s %s %s return %s" % (
|
||||
args[0].__class__.__name__,
|
||||
args[0].__class__.__module__[len('glances_'):],
|
||||
fct.__name__, ret))
|
||||
return ret
|
||||
return wrapper
|
||||
|
||||
|
@ -25,6 +25,7 @@ import os
|
||||
from datetime import timedelta
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import iteritems
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.plugins.glances_core import Plugin as CorePlugin
|
||||
from glances.core.glances_globals import is_windows
|
||||
@ -34,9 +35,6 @@ from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
def convert_timedelta(delta):
|
||||
"""Convert timedelta to human-readable time."""
|
||||
# Python 2.7+:
|
||||
# total_seconds = delta.total_seconds()
|
||||
# hours = total_seconds // 3600
|
||||
days, total_seconds = delta.days, delta.seconds
|
||||
hours = days * 24 + total_seconds // 3600
|
||||
minutes = (total_seconds % 3600) // 60
|
||||
@ -334,7 +332,7 @@ class Plugin(GlancesPlugin):
|
||||
if 'memory_info_ex' in p and p['memory_info_ex'] is not None:
|
||||
ret.append(self.curse_new_line())
|
||||
msg = xpad + 'Memory info: '
|
||||
for k, v in p['memory_info_ex']._asdict().items():
|
||||
for k, v in iteritems(p['memory_info_ex']._asdict()):
|
||||
# Ignore rss and vms (already displayed)
|
||||
if k not in ['rss', 'vms'] and v is not None:
|
||||
msg += k + ' ' + self.auto_unit(v, low_precision=False) + ' '
|
||||
|
@ -20,6 +20,7 @@
|
||||
"""RAID plugin."""
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import iterkeys
|
||||
from glances.core.glances_logging import logger
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
@ -94,7 +95,7 @@ class Plugin(GlancesPlugin):
|
||||
msg = '{0:>6}'.format('Avail')
|
||||
ret.append(self.curse_add_line(msg))
|
||||
# Data
|
||||
arrays = self.stats.keys()
|
||||
arrays = iterkeys(self.stats)
|
||||
arrays.sort()
|
||||
for array in arrays:
|
||||
# New line
|
||||
@ -114,7 +115,7 @@ class Plugin(GlancesPlugin):
|
||||
ret.append(self.curse_new_line())
|
||||
msg = '└─ Status {0}'.format(self.stats[array]['status'])
|
||||
ret.append(self.curse_add_line(msg, status))
|
||||
components = self.stats[array]['components'].keys()
|
||||
components = iterkeys(self.stats[array]['components'])
|
||||
components.sort()
|
||||
for i, component in enumerate(components):
|
||||
if i == len(components) - 1:
|
||||
|
@ -23,8 +23,10 @@
|
||||
import os
|
||||
import platform
|
||||
import re
|
||||
from io import open
|
||||
|
||||
# Import Glances libs
|
||||
from glances.core.compat import iteritems
|
||||
from glances.plugins.glances_plugin import GlancesPlugin
|
||||
|
||||
# SNMP OID
|
||||
@ -148,11 +150,7 @@ class Plugin(GlancesPlugin):
|
||||
self.stats['os_name'] = self.stats['system_name']
|
||||
# Windows OS tips
|
||||
if self.short_system_name == 'windows':
|
||||
try:
|
||||
iteritems = snmp_to_human['windows'].iteritems()
|
||||
except AttributeError:
|
||||
iteritems = snmp_to_human['windows'].items()
|
||||
for r, v in iteritems:
|
||||
for r, v in iteritems(snmp_to_human['windows']):
|
||||
if re.search(r, self.stats['system_name']):
|
||||
self.stats['os_name'] = v
|
||||
break
|
||||
|
@ -25,15 +25,11 @@ import subprocess
|
||||
import time
|
||||
import unittest
|
||||
|
||||
from glances.core.compat import text_type
|
||||
from glances.core.glances_globals import version
|
||||
|
||||
import requests
|
||||
|
||||
try:
|
||||
text_type = str
|
||||
except NameError:
|
||||
text_type = unicode
|
||||
|
||||
SERVER_PORT = 61234
|
||||
URL = "http://localhost:%s/api/2" % SERVER_PORT
|
||||
pid = None
|
||||
|
@ -25,12 +25,8 @@ import shlex
|
||||
import subprocess
|
||||
import time
|
||||
import unittest
|
||||
try:
|
||||
from xmlrpc.client import ServerProxy
|
||||
except ImportError:
|
||||
# Python 2
|
||||
from xmlrpclib import ServerProxy
|
||||
|
||||
from glances.core.compat import ServerProxy
|
||||
from glances.core.glances_globals import version
|
||||
|
||||
SERVER_PORT = 61234
|
||||
|
Loading…
Reference in New Issue
Block a user