mirror of https://github.com/nicolargo/glances.git
version 2.7
This commit is contained in:
parent
744cd34585
commit
20576f8d08
8
NEWS
8
NEWS
|
|
@ -2,8 +2,8 @@
|
||||||
Glances Version 2
|
Glances Version 2
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
Version 2.6.2
|
Version 2.7
|
||||||
=============
|
===========
|
||||||
|
|
||||||
Backward-incompatible changes:
|
Backward-incompatible changes:
|
||||||
|
|
||||||
|
|
@ -55,11 +55,7 @@ Version 2.6.2
|
||||||
|
|
||||||
Bugs corrected:
|
Bugs corrected:
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
* Crash with Docker 1.11 (issue #848)
|
* Crash with Docker 1.11 (issue #848)
|
||||||
=======
|
|
||||||
* Crash with Docker 1.11 (issue #848)
|
|
||||||
>>>>>>> master
|
|
||||||
|
|
||||||
Version 2.6.1
|
Version 2.6.1
|
||||||
=============
|
=============
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import unicodedata
|
||||||
|
|
||||||
PY3 = sys.version_info[0] == 3
|
PY3 = sys.version_info[0] == 3
|
||||||
|
|
||||||
|
|
||||||
def to_ascii(s):
|
def to_ascii(s):
|
||||||
"""Convert the unicode 's' to a ASCII string
|
"""Convert the unicode 's' to a ASCII string
|
||||||
Usefull to remove accent (diacritics)"""
|
Usefull to remove accent (diacritics)"""
|
||||||
|
|
|
||||||
|
|
@ -304,11 +304,7 @@ class Plugin(GlancesPlugin):
|
||||||
ret['max_usage'] = all_stats['memory_stats']['max_usage']
|
ret['max_usage'] = all_stats['memory_stats']['max_usage']
|
||||||
except (KeyError, TypeError) as e:
|
except (KeyError, TypeError) as e:
|
||||||
# all_stats do not have MEM information
|
# all_stats do not have MEM information
|
||||||
<<<<<<< HEAD
|
|
||||||
logger.debug("Cannot grab MEM usage for container {} ({})".format(container_id, e))
|
logger.debug("Cannot grab MEM usage for container {} ({})".format(container_id, e))
|
||||||
=======
|
|
||||||
logger.debug("Can not grab MEM usage for container {0} ({1})".format(container_id, e))
|
|
||||||
>>>>>>> master
|
|
||||||
logger.debug(all_stats)
|
logger.debug(all_stats)
|
||||||
# Return the stats
|
# Return the stats
|
||||||
return ret
|
return ret
|
||||||
|
|
@ -331,11 +327,7 @@ class Plugin(GlancesPlugin):
|
||||||
netcounters = all_stats["networks"]
|
netcounters = all_stats["networks"]
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
# all_stats do not have NETWORK information
|
# all_stats do not have NETWORK information
|
||||||
<<<<<<< HEAD
|
|
||||||
logger.debug("Cannot grab NET usage for container {} ({})".format(container_id, e))
|
|
||||||
=======
|
|
||||||
logger.debug("Can not grab NET usage for container {0} ({1})".format(container_id, e))
|
logger.debug("Can not grab NET usage for container {0} ({1})".format(container_id, e))
|
||||||
>>>>>>> master
|
|
||||||
logger.debug(all_stats)
|
logger.debug(all_stats)
|
||||||
# No fallback available...
|
# No fallback available...
|
||||||
return network_new
|
return network_new
|
||||||
|
|
@ -359,24 +351,14 @@ class Plugin(GlancesPlugin):
|
||||||
# XML/RPC API, which would otherwise be overly difficult work
|
# XML/RPC API, which would otherwise be overly difficult work
|
||||||
# for users of the API
|
# for users of the API
|
||||||
try:
|
try:
|
||||||
<<<<<<< HEAD
|
|
||||||
network_new['time_since_update'] = getTimeSinceLastUpdate('docker_net_{}'.format(container_id))
|
|
||||||
=======
|
|
||||||
network_new['time_since_update'] = getTimeSinceLastUpdate('docker_net_{0}'.format(container_id))
|
network_new['time_since_update'] = getTimeSinceLastUpdate('docker_net_{0}'.format(container_id))
|
||||||
>>>>>>> master
|
|
||||||
network_new['rx'] = netcounters["eth0"]["rx_bytes"] - self.netcounters_old[container_id]["eth0"]["rx_bytes"]
|
network_new['rx'] = netcounters["eth0"]["rx_bytes"] - self.netcounters_old[container_id]["eth0"]["rx_bytes"]
|
||||||
network_new['tx'] = netcounters["eth0"]["tx_bytes"] - self.netcounters_old[container_id]["eth0"]["tx_bytes"]
|
network_new['tx'] = netcounters["eth0"]["tx_bytes"] - self.netcounters_old[container_id]["eth0"]["tx_bytes"]
|
||||||
network_new['cumulative_rx'] = netcounters["eth0"]["rx_bytes"]
|
network_new['cumulative_rx'] = netcounters["eth0"]["rx_bytes"]
|
||||||
network_new['cumulative_tx'] = netcounters["eth0"]["tx_bytes"]
|
network_new['cumulative_tx'] = netcounters["eth0"]["tx_bytes"]
|
||||||
<<<<<<< HEAD
|
|
||||||
except KeyError as e:
|
|
||||||
# all_stats do not have INTERFACE information
|
|
||||||
logger.debug("Cannot grab network interface usage for container {} ({})".format(container_id, e))
|
|
||||||
=======
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
# all_stats do not have INTERFACE information
|
# all_stats do not have INTERFACE information
|
||||||
logger.debug("Can not grab network interface usage for container {0} ({1})".format(container_id, e))
|
logger.debug("Can not grab network interface usage for container {0} ({1})".format(container_id, e))
|
||||||
>>>>>>> master
|
|
||||||
logger.debug(all_stats)
|
logger.debug(all_stats)
|
||||||
|
|
||||||
# Save stats to compute next bitrate
|
# Save stats to compute next bitrate
|
||||||
|
|
@ -403,11 +385,7 @@ class Plugin(GlancesPlugin):
|
||||||
iocounters = all_stats["blkio_stats"]
|
iocounters = all_stats["blkio_stats"]
|
||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
# all_stats do not have io information
|
# all_stats do not have io information
|
||||||
<<<<<<< HEAD
|
|
||||||
logger.debug("Cannot grab block IO usage for container {} ({})".format(container_id, e))
|
|
||||||
=======
|
|
||||||
logger.debug("Can not grab block IO usage for container {0} ({1})".format(container_id, e))
|
logger.debug("Can not grab block IO usage for container {0} ({1})".format(container_id, e))
|
||||||
>>>>>>> master
|
|
||||||
logger.debug(all_stats)
|
logger.debug(all_stats)
|
||||||
# No fallback available...
|
# No fallback available...
|
||||||
return io_new
|
return io_new
|
||||||
|
|
@ -488,7 +466,6 @@ class Plugin(GlancesPlugin):
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
msg = '{:>7}'.format('MEM')
|
msg = '{:>7}'.format('MEM')
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
<<<<<<< HEAD
|
|
||||||
msg = '{:>7}'.format('/MAX')
|
msg = '{:>7}'.format('/MAX')
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
msg = '{:>7}'.format('IOR/s')
|
msg = '{:>7}'.format('IOR/s')
|
||||||
|
|
@ -496,17 +473,6 @@ class Plugin(GlancesPlugin):
|
||||||
msg = '{:>7}'.format('IOW/s')
|
msg = '{:>7}'.format('IOW/s')
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
msg = '{:>7}'.format('Rx/s')
|
msg = '{:>7}'.format('Rx/s')
|
||||||
=======
|
|
||||||
msg = '{0:>7}'.format('/MAX')
|
|
||||||
ret.append(self.curse_add_line(msg))
|
|
||||||
msg = '{0:>7}'.format('IOR/s')
|
|
||||||
ret.append(self.curse_add_line(msg))
|
|
||||||
msg = '{0:>7}'.format('IOW/s')
|
|
||||||
ret.append(self.curse_add_line(msg))
|
|
||||||
msg = '{0:>7}'.format('Rx/s')
|
|
||||||
ret.append(self.curse_add_line(msg))
|
|
||||||
msg = '{0:>7}'.format('Tx/s')
|
|
||||||
>>>>>>> master
|
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
msg = '{:>7}'.format('Tx/s')
|
msg = '{:>7}'.format('Tx/s')
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
|
|
@ -548,24 +514,13 @@ class Plugin(GlancesPlugin):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
msg = '{:>7}'.format('?')
|
msg = '{:>7}'.format('?')
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
try:
|
|
||||||
msg = '{0:>7}'.format(self.auto_unit(container['memory']['limit']))
|
|
||||||
except KeyError:
|
|
||||||
msg = '{0:>7}'.format('?')
|
|
||||||
ret.append(self.curse_add_line(msg))
|
|
||||||
# IO R/W
|
# IO R/W
|
||||||
for r in ['ior', 'iow']:
|
for r in ['ior', 'iow']:
|
||||||
try:
|
try:
|
||||||
value = self.auto_unit(int(container['io'][r] // container['io']['time_since_update'] * 8)) + "b"
|
value = self.auto_unit(int(container['io'][r] // container['io']['time_since_update'] * 8)) + "b"
|
||||||
<<<<<<< HEAD
|
|
||||||
msg = '{:>7}'.format(value)
|
msg = '{:>7}'.format(value)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
msg = '{:>7}'.format('?')
|
msg = '{:>7}'.format('?')
|
||||||
=======
|
|
||||||
msg = '{0:>7}'.format(value)
|
|
||||||
except KeyError:
|
|
||||||
msg = '{0:>7}'.format('?')
|
|
||||||
>>>>>>> master
|
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
# NET RX/TX
|
# NET RX/TX
|
||||||
if args.byte:
|
if args.byte:
|
||||||
|
|
@ -578,17 +533,10 @@ class Plugin(GlancesPlugin):
|
||||||
unit = 'b'
|
unit = 'b'
|
||||||
for r in ['rx', 'tx']:
|
for r in ['rx', 'tx']:
|
||||||
try:
|
try:
|
||||||
<<<<<<< HEAD
|
|
||||||
value = self.auto_unit(int(container['network'][r] // container['network']['time_since_update'] * to_bit)) + unit
|
value = self.auto_unit(int(container['network'][r] // container['network']['time_since_update'] * to_bit)) + unit
|
||||||
msg = '{:>7}'.format(value)
|
msg = '{:>7}'.format(value)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
msg = '{:>7}'.format('?')
|
msg = '{:>7}'.format('?')
|
||||||
=======
|
|
||||||
value = self.auto_unit(int(container['network'][r] // container['network']['time_since_update'] * 8)) + "b"
|
|
||||||
msg = '{0:>7}'.format(value)
|
|
||||||
except KeyError:
|
|
||||||
msg = '{0:>7}'.format('?')
|
|
||||||
>>>>>>> master
|
|
||||||
ret.append(self.curse_add_line(msg))
|
ret.append(self.curse_add_line(msg))
|
||||||
# Command
|
# Command
|
||||||
msg = ' {}'.format(container['Command'])
|
msg = ' {}'.format(container['Command'])
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,6 @@ class TestGlances(unittest.TestCase):
|
||||||
req = json.loads(client.getIrq())
|
req = json.loads(client.getIrq())
|
||||||
self.assertIsInstance(req, list)
|
self.assertIsInstance(req, list)
|
||||||
|
|
||||||
|
|
||||||
def test_999_stop_server(self):
|
def test_999_stop_server(self):
|
||||||
"""Stop the Glances Web Server."""
|
"""Stop the Glances Web Server."""
|
||||||
print('INFO: [TEST_999] Stop the Glances Server')
|
print('INFO: [TEST_999] Stop the Glances Server')
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,6 @@ class TestGlances(unittest.TestCase):
|
||||||
self.assertTrue(type(stats_grab) is list, msg='IRQ stats is not a list')
|
self.assertTrue(type(stats_grab) is list, msg='IRQ stats is not a list')
|
||||||
print('INFO: IRQ stats: %s' % stats_grab)
|
print('INFO: IRQ stats: %s' % stats_grab)
|
||||||
|
|
||||||
|
|
||||||
def test_097_attribute(self):
|
def test_097_attribute(self):
|
||||||
"""Test GlancesAttribute classe"""
|
"""Test GlancesAttribute classe"""
|
||||||
print('INFO: [TEST_097] Test attribute')
|
print('INFO: [TEST_097] Test attribute')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue