summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicolargo <nicolashennion@gmail.com>2024-06-29 09:54:13 +0200
committernicolargo <nicolashennion@gmail.com>2024-06-29 09:54:13 +0200
commitafa1da59d11275660a55175f344ec8aadbf7b0ae (patch)
tree5e95b77eeb404a98157323643752edd33bb10e9e
parent183265579348fecb5a9dbe077222eca63b7aa0ed (diff)
parent582ca0771678210d01beea0ff0cb914005f54bf9 (diff)
Merge branch 'develop'v4.1.0
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md9
-rw-r--r--.github/workflows/inactive_issues.yml22
-rw-r--r--.github/workflows/needs_contributor.yml22
-rw-r--r--.readthedocs.yaml34
-rw-r--r--NEWS.rst69
-rw-r--r--README.rst2
-rw-r--r--SECURITY.md8
-rw-r--r--conf/glances.conf6
-rw-r--r--doc-requirements.txt2
-rwxr-xr-xdocker-compose/glances.conf4
-rw-r--r--docs/aoa/network.rst4
-rw-r--r--docs/aoa/sensors.rst3
-rw-r--r--docs/api.rst415
-rw-r--r--docs/man/glances.12
-rw-r--r--glances/__init__.py2
-rw-r--r--glances/client_browser.py12
-rw-r--r--glances/cpu_percent.py57
-rw-r--r--glances/exports/export.py7
-rw-r--r--glances/exports/glances_graph/__init__.py10
-rw-r--r--glances/outputs/glances_curses.py277
-rw-r--r--glances/outputs/glances_curses_browser.py43
-rw-r--r--glances/outputs/glances_restful_api.py3
-rw-r--r--glances/outputs/static/package-lock.json54
-rw-r--r--glances/plugins/containers/engines/docker.py101
-rw-r--r--glances/plugins/containers/engines/podman.py198
-rw-r--r--glances/plugins/containers/stats_streamer.py4
-rw-r--r--glances/plugins/cpu/__init__.py4
-rw-r--r--glances/plugins/fs/__init__.py228
-rw-r--r--glances/plugins/percpu/__init__.py10
-rw-r--r--glances/plugins/processlist/__init__.py35
-rw-r--r--glances/plugins/quicklook/__init__.py4
-rw-r--r--glances/plugins/wifi/__init__.py58
-rw-r--r--glances/processes.py12
-rw-r--r--glances/stats.py62
-rw-r--r--snap/snapcraft.yaml3
-rw-r--r--test-data/issues/issue2849.py25
-rwxr-xr-xunittest-core.py30
37 files changed, 1014 insertions, 827 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 46d4fe7b..95522c53 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -6,6 +6,9 @@ labels: ''
assignees: ''
---
+**Check the bug**
+Before filling this bug report, please search if a similar issue already exists.
+In this case, just add a comment on this existing issue.
**Describe the bug**
A clear and concise description of what the bug is.
@@ -26,11 +29,7 @@ If applicable, add screenshots to help explain your problem.
- Operating System (lsb_release -a or OS name/version): `To be completed with result of: lsb_release -a`
- Glances & psutil versions: `To be completed with result of: glances -V`
- How do you install Glances (Pypi package, script, package manager, source): `To be completed`
- - Glances test (only available with Glances 3.1.7 or higher):
-
- ```
- To be completed with result of: glances --issue
- ```
+ - Glances test: ` To be completed with result of: glances --issue`
**Additional context**
Add any other context about the problem here.
diff --git a/.github/workflows/inactive_issues.yml b/.github/workflows/inactive_issues.yml
new file mode 100644
index 00000000..21762cbb
--- /dev/null
+++ b/.github/workflows/inactive_issues.yml
@@ -0,0 +1,22 @@
+name: Label inactive issues
+on:
+ schedule:
+ - cron: "30 1 * * *"
+
+jobs:
+ close-issues:
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+ pull-requests: write
+ steps:
+ - uses: actions/stale@v5
+ with:
+ days-before-issue-stale: 90
+ days-before-issue-close: -1
+ stale-issue-label: "inactive"
+ stale-issue-message: "This issue is stale because it has been open for 3 months with no activity."
+ close-issue-message: "This issue was closed because it has been inactive for 30 days since being marked as stale."
+ days-before-pr-stale: -1
+ days-before-pr-close: -1
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/needs_contributor.yml b/.github/workflows/needs_contributor.yml
new file mode 100644
index 00000000..b9a5bb8b
--- /dev/null
+++ b/.github/workflows/needs_contributor.yml
@@ -0,0 +1,22 @@
+name: Add a message when needs contributor tag is used
+on:
+ issues:
+ types:
+ - labeled
+jobs:
+ add-comment:
+ if: github.event.label.name == 'needs contributor'
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+ steps:
+ - name: Add comment
+ run: gh issue comment "$NUMBER" --body "$BODY"
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_REPO: ${{ github.repository }}
+ NUMBER: ${{ github.event.issue.number }}
+ BODY: >
+ This issue is available for anyone to work on.
+ **Make sure to reference this issue in your pull request.**
+ :sparkles: Thank you for your contribution ! :sparkles: \ No newline at end of file
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644
index 00000000..cf9b7a17
--- /dev/null
+++ b/.readthedocs.yaml
@@ -0,0 +1,34 @@
+# Read the Docs configuration file for Glances projects
+
+# Required
+version: 2
+
+# Set the OS, Python version and other tools you might need
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3.12"
+ # You can also specify other tool versions:
+ # nodejs: "20"
+ # rust: "1.70"
+ # golang: "1.20"
+
+# Build documentation in the "docs/" directory with Sphinx
+sphinx:
+ configuration: docs/conf.py
+ # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs
+ # builder: "dirhtml"
+ # Fail on all warnings to avoid broken references
+ # fail_on_warning: true
+
+# Optionally build your docs in additional formats such as PDF and ePub
+# formats:
+# - pdf
+# - epub
+
+# Optional but recommended, declare the Python requirements required
+# to build your documentation
+# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
+python:
+ install:
+ - requirements: doc-requirements.txt \ No newline at end of file
diff --git a/NEWS.rst b/NEWS.rst
index 19ca2061..f55db2a9 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -3,62 +3,39 @@
==============================================================================
===============
-Version 4.0.8
-===============
-
-* Make CORS option configurable security webui #2812
-* When Glances is installed via venv, default configuration file is not used documentation packaging #2803
-* GET /1272f6e9e8f9d6bfd6de.png results in 404 bug webui #2781 by Emporea was closed May 25, 2024
-* Screen frequently flickers when outputting to local display bug needs test #2490
-* Retire ujson for being in maintenance mode dependencies enhancement #2791
-
-Minor breaking change in AMP: please use && instead of ; as command line separator.
-
-===============
-Version 4.0.7
-===============
-
-* cpu_hz_current not available on NetBSD #2792
-* SensorType change in REST API breaks compatibility in 4.0.4 #2788
-
-===============
-Version 4.0.6
-===============
-
-* No GPU info on Web View #2796
-
-===============
-Version 4.0.5
+Version 4.1.0
===============
-* SensorType change in REST API breaks compatibility in 4.0.4 #2788
-* Please make pydantic optional dependency, not required one #2777
-* Update the Grafana dashboard #2780
-* 4.0.4 - On Glances startup "ERROR -- Can not init battery class #2776
-* In codeSpace (with Python 3.8), an error occurs in ./unittest-restful.py #2773
+Enhancements:
-Use Ruff as default Linter.
+* Call process_iter.clear_cache() (PsUtil 6+) when Glances user force a refresh (F5 or CTRL-R) #2753
+* PsUtil 6+ no longer check PID reused #2755
+* Add support for automatically hiding network interfaces that are down or that don't have any IP addresses #2799
-===============
-Version 4.0.4
-===============
+Bug corrected:
-Hostfix release for support sensors plugin on python 3.8
+* API: Network module is disabled but appears in endpoint "all" #2815
+* API is not compatible with requests containing spcial/encoding char #2820
+* 'j' hot key crashs Glances #2831
+* Raspberry PI - CPU info is not correct #2616
+* Graph export is broken if there is no graph section in Glances configuration file #2839
+* Glances API status check returns Error 405 - Method Not Allowed #2841
+* Rootless podman containers cause glances to fail with KeyError #2827
+* --export-process-filter Filter using complete command #2824
+* Exception when Glances is ran with limited plugin list #2822
+* Disable separator option do not work #2823
-===============
-Version 4.0.3
-===============
+Continious integration and documentation:
-Additional fixes for Sensor plugin
+* test test_107_fs_plugin_method fails on aarch64-linux #2819
-===============
-Version 4.0.2
-===============
+Thanks to all contibutors and bug reporters !
-* hotfix: plugin(sensors) - race conditions btw fan_speed & temperature… #2766
-* fix: include requirements.txt and SECURITY.md for pypi dist #2761
+Special thanks to:
-Thanks to RazCrimson for the sensors patch !
+* Bharath Vignesh J K
+* RazCrimson
+* Vadim Smal
===============
Version 4.0.8
diff --git a/README.rst b/README.rst
index 7bee0ed3..c5f064ba 100644
--- a/README.rst
+++ b/README.rst
@@ -221,8 +221,6 @@ Run last version of Glances container in *console mode*:
By default, the /etc/glances/glances.conf file is used (based on docker-compose/glances.conf).
-By default, the /etc/glances/glances.conf file is used (based on docker-compose/glances.conf).
-
Additionally, if you want to use your own glances.conf file, you can
create your own Dockerfile:
diff --git a/SECURITY.md b/SECURITY.md
index 5b2c9628..7b112925 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -2,13 +2,10 @@
## Supported Versions
-Use this section to tell people about which versions of your project are
-currently being supported with security updates.
-
| Version | Support security updates |
| ------- | ------------------------ |
-| 3.x | :white_check_mark: |
-| < 3.0 | :x: |
+| 4.x | :white_check_mark: |
+| < 4.0 | :x: |
## Reporting a Vulnerability
@@ -31,4 +28,3 @@ If there are any vulnerabilities in {{cookiecutter.project_name}}, don't hesitat
4. Please do not disclose the vulnerability publicly until a fix is released!
Once we have either a) published a fix, or b) declined to address the vulnerability for whatever reason, you are free to publicly disclose it.
-
diff --git a/conf/glances.conf b/conf/glances.conf
index 4de3d3a9..7bba30aa 100644
--- a/conf/glances.conf
+++ b/conf/glances.conf
@@ -26,7 +26,7 @@ history_size=1200
# Options for all UIs
#--------------------
# Separator in the Curses and WebUI interface (between top and others plugins)
-separator=True
+#separator=True
# Set the the Curses and WebUI interface left menu plugin list (comma-separated)
#left_menu=network,wifi,connections,ports,diskio,fs,irq,folders,raid,smart,sensors,now
# Limit the number of processes to display (in the WebUI)
@@ -217,9 +217,9 @@ hide=docker.*,lo
# Define the list of wireless network interfaces to be show (comma-separated)
#show=docker.*
# Automatically hide interface not up (default is False)
-#hide_no_up=True
+hide_no_up=True
# Automatically hide interface with no IP address (default is False)
-#hide_no_ip=True
+hide_no_ip=True
# It is possible to overwrite the bitrate thresholds per interface
# WLAN 0 Default limits (in bits per second aka bps) for interface bitrate
#wlan0_rx_careful=4000000
diff --git a/doc-requirements.txt b/doc-requirements.txt
index 74d6796a..28ee5654 100644
--- a/doc-requirements.txt
+++ b/doc-requirements.txt
@@ -1,3 +1,5 @@
+psutil
+defusedxml
orjson
reuse
setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability
diff --git a/docker-compose/glances.conf b/docker-compose/glances.conf
index 792a155d..11bcb951 100755
--- a/docker-compose/glances.conf
+++ b/docker-compose/glances.conf
@@ -26,7 +26,7 @@ history_size=1200
# Options for all UIs
#--------------------
# Separator in the Curses and WebUI interface (between top and others plugins)
-separator=True
+#separator=True
# Set the the Curses and WebUI interface left menu plugin list (comma-separated)
#left_menu=network,wifi,connections,ports,diskio,fs,irq,folders,raid,smart,sensors,now
# Limit the number of processes to display (in the WebUI)
@@ -60,7 +60,7 @@ max_processes_display=25
#cors_headers=*
##############################################################################
-# plugins
+# Plugins
##############################################################################
[quicklook]
diff --git a/docs/aoa/network.rst b/docs/aoa/network.rst
index d6b02d91..8359ad0e 100644
--- a/docs/aoa/network.rst
+++ b/docs/aoa/network.rst
@@ -48,7 +48,7 @@ virtual docker interface (docker0, docker1, ...):
# Automatically hide interface with no IP address (default is False)
hide_no_ip=True
# WLAN 0 alias
- wlan0_alias=Wireless IF
+ alias=wlan0:Wireless IF
# It is possible to overwrite the bitrate thresholds per interface
# WLAN 0 Default limits (in bits per second aka bps) for interface bitrate
wlan0_rx_careful=4000000
@@ -64,4 +64,4 @@ Filtering is based on regular expression. Please be sure that your regular
expression works as expected. You can use an online tool like `regex101`_ in
order to test your regular expression.
-.. _regex101: https://regex101.com/ \ No newline at end of file
+.. _regex101: https://regex101.com/
diff --git a/docs/aoa/sensors.rst b/docs/aoa/sensors.rst
index 87d64933..5ee5923f 100644
--- a/docs/aoa/sensors.rst
+++ b/docs/aoa/sensors.rst
@@ -27,8 +27,7 @@ There is no alert on this information.
.. note 3::
If a sensors has temperature and fan speed with the same name unit,
it is possible to alias it using:
- unitname_temperature_core_alias=Alias for temp
- unitname_fan_speed_alias=Alias for fan speed
+ alias=unitname_temperature_core_alias:Alias for temp,unitname_fan_speed_alias:Alias for fan speed
.. note 4::
If a sensors has multiple identical features names (see #2280), then
diff --git a/docs/api.rst b/docs/api.rst
index e6b058fa..58999ba0 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -141,7 +141,7 @@ Get plugin stats::
"refresh": 3.0,
"regex": True,
"result": None,
- "timer": 0.24439311027526855},
+ "timer": 0.48795127868652344},
{"count": 0,
"countmax": 20.0,
"countmin": None,
@@ -150,7 +150,7 @@ Get plugin stats::
"refresh": 3.0,
"regex": True,
"result": None,
- "timer": 0.2443389892578125}]
+ "timer": 0.48785948753356934}]
Fields descriptions:
@@ -178,7 +178,7 @@ Get a specific item when field matches the given value::
"refresh": 3.0,
"regex": True,
"result": None,
- "timer": 0.24439311027526855}]}
+ "timer": 0.48795127868652344}]}
GET cloud
---------
@@ -219,21 +219,7 @@ GET containers
Get plugin stats::
# curl http://localhost:61208/api/4/containers
- [{"command": "/bin/sh -c /venv/bin/python3 -m glances $GLANCES_OPT",
- "cpu": {"total": 0.0},
- "cpu_percent": 0.0,
- "created": "2024-05-25T13:52:22.535373707Z",
- "engine": "docker",
- "id": "bb99d31288db8904ed4cd43db8255a926830936189bc180d77c3459cbaa7f490",
- "image": ["nicolargo/glances:latest"],
- "io": {},
- "key": "name",
- "memory": {},
- "memory_usage": None,
- "name": "wizardly_nightingale",
- "network": {},
- "status": "running",
- "uptime": "14 mins"}]
+ []
Fields descriptions:
@@ -254,31 +240,6 @@ Fields descriptions:
* **pod_name**: Pod name (only with Podman) (unit is *None*)
* **pod_id**: Pod ID (only with Podman) (unit is *None*)
-Get a specific field::
-
- # curl http://localhost:61208/api/4/containers/name
- {"name": ["wizardly_nightingale"]}
-
-Get a specific item when field matches the given value::
-
- # curl http://localhost:61208/api/4/containers/name/wizardly_nightingale
- {"wizardly_nightingale": [{"command": "/bin/sh -c /venv/bin/python3 -m glances "
- "$GLANCES_OPT",
- "cpu": {"total": 0.0},
- "cpu_percent": 0.0,
- "created": "2024-05-25T13:52:22.535373707Z",
- "engine": "docker",
- "id": "bb99d31288db8904ed4cd43db8255a926830936189bc180d77c3459cbaa7f490",
- "image": ["nicolargo/glances:latest"],
- "io": {},
- "key": "name",
- "memory": {},
- "memory_usage": None,
- "name": "wizardly_nightingale",
- "network": {},
- "status": "running",
- "uptime": "14 mins"}]}
-
GET core
--------
@@ -304,19 +265,19 @@ Get plugin stats::
# curl http://localhost:61208/api/4/cpu
{"cpucore": 16,
- "ctx_switches": 7772781,
+ "ctx_switches": 426798284,
"guest": 0.0,
- "idle": 3.0,
- "interrupts": 6643340,
- "iowait": 0.0,
+ "idle": 85.4,
+ "interrupts": 358987449,
+ "iowait": 0.1,
"irq": 0.0,
"nice": 0.0,
- "soft_interrupts": 1761276,
+ "soft_interrupts": 133317922,
"steal": 0.0,
"syscalls": 0,
- "system": 0.0,
- "total": 16.7,
- "user": 1.0}
+ "system": 3.2,
+ "total": 6.7,
+ "user": 11.4}
Fields descriptions:
@@ -349,7 +310,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/cpu/total
- {"total": 16.7}
+ {"total": 6.7}
GET diskio
----------
@@ -359,14 +320,14 @@ Get plugin stats::
# curl http://localhost:61208/api/4/diskio
[{"disk_name": "nvme0n1",
"key": "disk_name",
- "read_bytes": 3983976960,
- "read_count": 115648,
- "write_bytes": 3073111040,
- "write_count": 91409},
+ "read_bytes": 7464889856,
+ "read_count": 275684,
+ "write_bytes": 24858043392,
+ "write_count": 1204326},
{"disk_name": "nvme0n1p1",
"key": "disk_name",
- "read_bytes": 7476224,
- "read_count": 576,
+ "read_bytes": 7558144,
+ "read_count": 605,
"write_bytes": 1024,
"write_count": 2}]
@@ -402,10 +363,10 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/diskio/disk_name/nvme0n1
{"nvme0n1": [{"disk_name": "nvme0n1",
"key": "disk_name",
- "read_bytes": 3983976960,
- "read_count": 115648,
- "write_bytes": 3073111040,
- "write_count": 91409}]}
+ "read_bytes": 7464889856,
+ "read_count": 275684,
+ "write_bytes": 24858043392,
+ "write_count": 1204326}]}
GET folders
-----------
@@ -432,13 +393,13 @@ Get plugin stats::
# curl http://localhost:61208/api/4/fs
[{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv",
- "free": 902284546048,
+ "free": 896615567360,
"fs_type": "ext4",
"key": "mnt_point",
"mnt_point": "/",
- "percent": 5.3,
+ "percent": 5.9,
"size": 1003736440832,
- "used": 50389389312}]
+ "used": 56058368000}]
Fields descriptions:
@@ -459,13 +420,13 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/fs/mnt_point//
{"/": [{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv",
- "free": 902284546048,
+ "free": 896615567360,
"fs_type": "ext4",
"key": "mnt_point",
"mnt_point": "/",
- "percent": 5.3,
+ "percent": 5.9,
"size": 1003736440832,
- "used": 50389389312}]}
+ "used": 56058368000}]}
GET gpu
-------
@@ -539,9 +500,9 @@ Get plugin stats::
# curl http://localhost:61208/api/4/load
{"cpucore": 16,
- "min1": 0.560546875,
- "min15": 0.54833984375,
- "min5": 0.70166015625}
+ "min1": 0.69091796875,
+ "min15": 0.93115234375,
+ "min5": 0.9248046875}
Fields descriptions:
@@ -553,7 +514,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/load/min1
- {"min1": 0.560546875}
+ {"min1": 0.69091796875}
GET mem
-------
@@ -561,16 +522,16 @@ GET mem
Get plugin stats::
# curl http://localhost:61208/api/4/mem
- {"active": 5540470784,
- "available": 11137699840,
- "buffers": 226918400,
- "cached": 6333566976,
- "free": 11137699840,
- "inactive": 3872489472,
- "percent": 32.2,
- "shared": 656637952,
+ {"active": 8055664640,
+ "available": 4539228160,
+ "buffers": 112582656,
+ "cached": 4634251264,
+ "free": 4539228160,
+ "inactive": 5664567296,
+ "percent": 72.4,
+ "shared": 794791936,
"total": 16422486016,
- "used": 5284786176}
+ "used": 11883257856}
Fields descriptions:
@@ -597,13 +558,13 @@ GET memswap
Get plugin stats::
# curl http://localhost:61208/api/4/memswap
- {"free": 4294963200,
- "percent": 0.0,
- "sin": 0,
- "sout": 0,
+ {"free": 3367235584,
+ "percent": 21.6,
+ "sin": 12046336,
+ "sout": 929779712,
"time_since_update": 1,
"total": 4294963200,
- "used": 0}
+ "used": 927727616}
Fields descriptions:
@@ -628,26 +589,15 @@ Get plugin stats::
# curl http://localhost:61208/api/4/network
[{"alias": None,
"bytes_all": 0,
- "bytes_all_gauge": 422462144,
+ "bytes_all_gauge": 5602118637,
"bytes_recv": 0,
- "bytes_recv_gauge": 413272561,
+ "bytes_recv_gauge": 5324018799,
"bytes_sent": 0,
- "bytes_sent_gauge": 9189583,
+ "bytes_sent_gauge": 278099838,
"interface_name": "wlp0s20f3",
"key": "interface_name",
"speed": 0,
- "time_since_update": 0.24814295768737793},
- {"alias": None,
- "bytes_all": 0,
- "bytes_all_gauge": 18987,
- "bytes_recv": 0,
- "bytes_recv_gauge": 528,
- "bytes_sent": 0,
- "bytes_sent_gauge": 18459,
- "interface_name": "vethfc47299",
- "key": "interface_name",
- "speed": 10485760000,
- "time_since_update": 0.24814295768737793}]
+ "time_since_update": 0.4937009811401367}]
Fields descriptions:
@@ -669,22 +619,22 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/network/interface_name
- {"interface_name": ["wlp0s20f3", "vethfc47299"]}
+ {"interface_name": ["wlp0s20f3"]}
Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/network/interface_name/wlp0s20f3
{"wlp0s20f3": [{"alias": None,
"bytes_all": 0,
- "bytes_all_gauge": 422462144,
+ "bytes_all_gauge": 5602118637,
"bytes_recv": 0,
- "bytes_recv_gauge": 413272561,
+ "bytes_recv_gauge": 5324018799,
"bytes_sent": 0,
- "bytes_sent_gauge": 9189583,
+ "bytes_sent_gauge": 278099838,
"interface_name": "wlp0s20f3",
"key": "interface_name",
"speed": 0,
- "time_since_update": 0.24814295768737793}]}
+ "time_since_update": 0.4937009811401367}]}
GET now
-------
@@ -692,7 +642,7 @@ GET now
Get plugin stats::
# curl http://localhost:61208/api/4/now
- {"custom": "2024-06-08 10:22:29 CEST", "iso": "2024-06-08T10:22:29+02:00"}
+ {"custom": "2024-06-29 09:51:57 CEST", "iso": "2024-06-29T09:51:57+02:00"}
Fields descriptions:
@@ -702,7 +652,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/now/iso
- {"iso": "2024-06-08T10:22:29+02:00"}
+ {"iso": "2024-06-29T09:51:57+02:00"}