glances_api 0.6.0__tar.gz → 0.8.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: glances_api
3
- Version: 0.6.0
3
+ Version: 0.8.0
4
4
  Summary: Python API for interacting with Glances
5
5
  Home-page: https://github.com/home-assistant-ecosystem/python-glances-api
6
6
  License: MIT
@@ -41,6 +41,7 @@ class Glances:
41
41
  self.password = password
42
42
  self.verify_ssl = verify_ssl
43
43
  self.httpx_client = httpx_client
44
+ self.version = version
44
45
 
45
46
  async def get_data(self, endpoint: str) -> None:
46
47
  """Retrieve the data."""
@@ -154,19 +155,39 @@ class Glances:
154
155
  if networks := self.data.get("network"):
155
156
  sensor_data["network"] = {}
156
157
  for network in networks:
157
- time_since_update = network["time_since_update"]
158
+ rx = tx = None
159
+ if self.version <= 3:
160
+ time_since_update = network["time_since_update"]
161
+ if (rx_bytes := network.get("rx")) is not None:
162
+ rx = round(rx_bytes / time_since_update)
163
+ if (tx_bytes := network.get("tx")) is not None:
164
+ tx = round(tx_bytes / time_since_update)
165
+ else:
166
+ # New network sensors in Glances v4
167
+ rx = network.get("bytes_recv_rate_per_sec")
168
+ tx = network.get("bytes_sent_rate_per_sec")
158
169
  sensor_data["network"][network["interface_name"]] = {
159
170
  "is_up": network.get("is_up"),
160
- "rx": round(network["rx"] / time_since_update),
161
- "tx": round(network["tx"] / time_since_update),
171
+ "rx": rx,
172
+ "tx": tx,
162
173
  "speed": round(network["speed"] / 1024**3, 1),
163
174
  }
164
- data = self.data.get("dockers") or self.data.get("containers")
165
- if data and (containers_data := data.get("containers")):
175
+ containers_data = None
176
+ if self.version <= 3:
177
+ # Glances v3 and earlier provide a dict, with containers inside a list in this dict
178
+ # Key is "dockers" in 3.3 and before, and "containers" in 3.4
179
+ data = self.data.get("dockers") or self.data.get("containers")
180
+ containers_data = data.get("containers") if data else None
181
+ else:
182
+ # Glances v4 provides a list of containers
183
+ containers_data = self.data.get("containers")
184
+ if containers_data:
166
185
  active_containers = [
167
186
  container
168
187
  for container in containers_data
169
- if container["Status"] == "running"
188
+ # "status" since Glance v4, "Status" in v3 and earlier
189
+ if container.get("status") == "running"
190
+ or container.get("Status") == "running"
170
191
  ]
171
192
  sensor_data["docker"] = {"docker_active": len(active_containers)}
172
193
  cpu_use = 0.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "glances_api"
3
- version = "0.6.0"
3
+ version = "0.8.0"
4
4
  description = "Python API for interacting with Glances"
5
5
  authors = ["Fabian Affolter <fabian@affolter-engineering.ch>"]
6
6
  homepage = "https://github.com/home-assistant-ecosystem/python-glances-api"
File without changes
File without changes