提交 25f531e3 编写于 作者: A Alessio Sergi

Use the new compat module

上级 4639fffc
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册