summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.ci/appveyor/README.rst2
-rw-r--r--.ci/appveyor/download_exes.py148
-rw-r--r--.ci/appveyor/install.ps185
-rw-r--r--.ci/appveyor/run_with_compiler.cmd88
-rw-r--r--.dockerignore19
-rw-r--r--.github/ISSUE_TEMPLATE.md18
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md19
-rw-r--r--.github/workflows/build.yml12
-rw-r--r--.github/workflows/test.yml33
-rw-r--r--Makefile27
-rw-r--r--NEWS.rst73
-rw-r--r--README.rst40
-rw-r--r--appveyor.yml107
-rw-r--r--conf/glances.conf29
-rw-r--r--dev-requirements.txt5
-rw-r--r--docker-compose/docker-compose-with-traefik.yml14
-rw-r--r--docker-compose/docker-compose.yml21
-rw-r--r--docker-compose/glances.conf31
-rw-r--r--docker-files/alpine.Dockerfile153
-rw-r--r--docker-files/ubuntu.Dockerfile149
-rw-r--r--docker-requirements.txt9
-rw-r--r--docs/_static/cloud.pngbin0 -> 21111 bytes
-rw-r--r--docs/_static/containers.pngbin0 -> 34093 bytes
-rw-r--r--docs/_static/docker.pngbin16601 -> 0 bytes
-rw-r--r--docs/_static/glances-architecture.excalidraw2424
-rw-r--r--docs/_static/glances-architecture.pngbin0 -> 123499 bytes
-rw-r--r--docs/_static/glances-flame.svg4
-rw-r--r--docs/_static/glances-summary.pngbin294153 -> 357638 bytes
-rw-r--r--docs/_static/processlist-extended.pngbin0 -> 63154 bytes
-rw-r--r--docs/aoa/cloud.rst15
-rw-r--r--docs/aoa/containers.rst (renamed from docs/aoa/docker.rst)32
-rw-r--r--docs/aoa/diskio.rst6
-rw-r--r--docs/aoa/fs.rst6
-rw-r--r--docs/aoa/header.rst4
-rw-r--r--docs/aoa/index.rst4
-rw-r--r--docs/aoa/monitor.rst8
-rw-r--r--docs/aoa/network.rst6
-rw-r--r--docs/aoa/ps.rst21
-rw-r--r--docs/aoa/sensors.rst6
-rw-r--r--docs/api.rst1062
-rw-r--r--docs/conf.py86
-rw-r--r--docs/docker.rst72
-rw-r--r--docs/gw/couchdb.rst43
-rw-r--r--docs/gw/graph.rst5
-rw-r--r--docs/gw/index.rst1
-rw-r--r--docs/gw/influxdb.rst6
-rw-r--r--docs/gw/mongodb.rst50
-rw-r--r--docs/man/glances.12
-rw-r--r--glances/__init__.py13
-rw-r--r--glances/__main__.py1
-rw-r--r--glances/amps/glances_amp.py2
-rw-r--r--glances/amps/glances_systemv.py10
-rw-r--r--glances/amps_list.py4
-rw-r--r--glances/client.py2
-rw-r--r--glances/client_browser.py12
-rw-r--r--glances/compat.py54
-rw-r--r--glances/config.py6
-rw-r--r--glances/cpu_percent.py3
-rw-r--r--glances/exports/glances_cassandra.py4
-rw-r--r--glances/exports/glances_export.py1
-rw-r--r--glances/exports/glances_graph.py5
-rw-r--r--glances/exports/glances_influxdb2.py16
-rw-r--r--glances/exports/glances_mongodb.py77
-rw-r--r--glances/folder_list.py12
-rw-r--r--glances/globals.py6
-rw-r--r--glances/main.py33
-rw-r--r--glances/outdated.py11
-rw-r--r--glances/outputs/glances_bottle.py7
-rw-r--r--glances/outputs/glances_curses.py29
-rw-r--r--glances/outputs/glances_sparklines.py2
-rw-r--r--glances/outputs/glances_stdout_issue.py20
-rw-r--r--glances/outputs/static/README.md38
-rw-r--r--glances/outputs/static/js/App.vue36
-rw-r--r--glances/outputs/static/js/components/help.vue2
-rw-r--r--glances/outputs/static/js/components/plugin-cloud.vue6
-rw-r--r--glances/outputs/static/js/components/plugin-containers.vue (renamed from glances/outputs/static/js/components/plugin-docker.vue)12
-rw-r--r--glances/outputs/static/package-lock.json9598
-rw-r--r--glances/outputs/static/package.json29
-rw-r--r--glances/outputs/static/public/glances.js26
-rw-r--r--glances/password.py36
-rw-r--r--glances/plugins/containers/__init__.py0
-rw-r--r--glances/plugins/containers/glances_docker.py349
-rw-r--r--glances/plugins/containers/glances_podman.py349
-rw-r--r--glances/plugins/containers/stats_streamer.py86
-rw-r--r--glances/plugins/glances_alert.py48
-rw-r--r--glances/plugins/glances_amps.py6
-rw-r--r--glances/plugins/glances_cloud.py74
-rw-r--r--glances/plugins/glances_connections.py40
-rw-r--r--glances/plugins/glances_containers.py428
-rw-r--r--glances/plugins/glances_docker.py764
-rw-r--r--glances/plugins/glances_folders.py2
-rw-r--r--glances/plugins/glances_fs.py21
-rw-r--r--glances/plugins/glances_gpu.py23
-rw-r--r--glances/plugins/glances_network.py4
-rw-r--r--glances/plugins/glances_processlist.py250
-rw-r--r--glances/plugins/glances_raid.py2
-rw-r--r--glances/plugins/glances_sensors.py14
-rw-r--r--glances/plugins/glances_wifi.py4
-rw-r--r--glances/processes.py189
-rw-r--r--glances/secure.py2
-rw-r--r--glances/server.py1
-rw-r--r--glances/snmp.py1
-rw-r--r--glances/standalone.py9
-rw-r--r--optional-requirements.txt9
-rw-r--r--pyproject.toml49
-rw-r--r--requirements.txt2
-rwxr-xr-xsetup.py12
-rwxr-xr-xunitest-restful.py10
-rwxr-xr-xunitest.py26
109 files changed, 8289 insertions, 9543 deletions
diff --git a/.ci/appveyor/README.rst b/.ci/appveyor/README.rst
deleted file mode 100644
index 2e092a07..00000000
--- a/.ci/appveyor/README.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory contains support files for appveyor, a continuous integration
-service which runs tests on Windows on every push.
diff --git a/.ci/appveyor/download_exes.py b/.ci/appveyor/download_exes.py
deleted file mode 100644
index 2e8973c1..00000000
--- a/.ci/appveyor/download_exes.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2009 Giampaolo Rodola'. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""
-Script which downloads exe and wheel files hosted on AppVeyor:
-https://ci.appveyor.com/project/giampaolo/psutil
-Copied and re-adapted from the original recipe of Ibarra Corretge'
-<saghul@gmail.com>:
-http://code.saghul.net/index.php/2015/09/09/
-"""
-
-from __future__ import print_function
-import argparse
-import errno
-import multiprocessing
-import os
-import requests
-import shutil
-import sys
-
-from concurrent.futures import ThreadPoolExecutor
-
-
-BASE_URL = 'https://ci.appveyor.com/api'
-PY_VERSIONS = ['2.7', '3.4', '3.5', '3.6', '3.7', '3.8', '3.9']
-
-
-def term_supports_colors(file=sys.stdout):
- try:
- import curses
- assert file.isatty()
- curses.setupterm()
- assert curses.tigetnum("colors") > 0
- except Exception:
- return False
- else:
- return True
-
-
-if term_supports_colors():
- def hilite(s, ok=True, bold=False):
- """Return an highlighted version of 'string'."""
- attr = []
- if ok is None: # no color
- pass
- elif ok: # green
- attr.append('32')
- else: # red
- attr.append('31')
- if bold:
- attr.append('1')
- return '\x1b[%sm%s\x1b[0m' % (';'.join(attr), s)
-else:
- def hilite(s, *a, **k):
- return s
-
-
-def safe_makedirs(path):
- try:
- os.makedirs(path)
- except OSError as err:
- if err.errno == errno.EEXIST:
- if not os.path.isdir(path):
- raise
- else:
- raise
-
-
-def safe_rmtree(path):
- def onerror(fun, path, excinfo):
- exc = excinfo[1]
- if exc.errno != errno.ENOENT:
- raise
-
- shutil.rmtree(path, onerror=onerror)
-
-
-def download_file(url):
- local_fname = url.split('/')[-1]
- local_fname = os.path.join('dist', local_fname)
- print(local_fname)
- safe_makedirs('dist')
- r = requests.get(url, stream=True)
- with open(local_fname, 'wb') as f:
- for chunk in r.iter_content(chunk_size=1024):
- if chunk: # filter out keep-alive new chunks
- f.write(chunk)
- return local_fname
-
-
-def get_file_urls(options):
- session = requests.Session()
- data = session.get(
- BASE_URL + '/projects/' + options.user + '/' + options.project)
- data = data.json()
-
- urls = []
- for job in (job['jobId'] for job in data['build']['jobs']):
- job_url = BASE_URL + '/buildjobs/' + job + '/artifacts'
- data = session.get(job_url)
- data = data.json()
- for item in data:
- file_url = job_url + '/' + item['fileName']
- urls.append(file_url)
- if not urls:
- sys.exit("no artifacts found")
- for url in sorted(urls, key=lambda x: os.path.basename(x)):
- yield url
-
-
-def rename_27_wheels():
- # See: https://github.com/giampaolo/psutil/issues/810
- src = 'dist/psutil-4.3.0-cp27-cp27m-win32.whl'
- dst = 'dist/psutil-4.3.0-cp27-non