Skip to content

Commit 34efd0c

Browse files
plaffittlperdereau
authored andcommitted
refactor: use property instead of method whenever possible in PVECluster and PVENode
1 parent 5f028ad commit 34efd0c

File tree

5 files changed

+30
-20
lines changed

5 files changed

+30
-20
lines changed

src/pvecontrol/actions/cluster.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77

88

99
def action_clusterstatus(proxmox, _args):
10-
status = "healthy" if proxmox.is_healthy() else "not healthy"
10+
status = "healthy" if proxmox.is_healthy else "not healthy"
1111

12-
templates = sum(len(node.templates()) for node in proxmox.nodes)
12+
templates = sum(len(node.templates) for node in proxmox.nodes)
1313
vms = sum(len(node.vms) for node in proxmox.nodes)
14-
metrics = proxmox.metrics()
14+
metrics = proxmox.metrics
1515

1616
def _get_cpu_output():
1717
c_usage = metrics["cpu"]["usage"]

src/pvecontrol/actions/vm.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66

77
def _get_vm(proxmox, vmid):
8-
for vm in proxmox.vms():
8+
for vm in proxmox.vms:
99
logging.debug("_get_vm: %s", vm)
1010
if vm.vmid == vmid:
1111
return vm
@@ -63,5 +63,5 @@ def action_vmmigrate(proxmox, args):
6363

6464
def action_vmlist(proxmox, args):
6565
"""List VMs in the Proxmox Cluster"""
66-
vms = proxmox.vms()
66+
vms = proxmox.vms
6767
print_output(vms, columns=args.columns, sortby=args.sort_by, filters=args.filter, output=args.output)

src/pvecontrol/cluster.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def _initstatus(self):
2424
self.resources = self.api.cluster.resources.get()
2525

2626
self.nodes = []
27-
for node in self.get_resources_nodes():
27+
for node in self.resources_nodes:
2828
self.nodes.append(
2929
PVENode(
3030
self,
@@ -35,7 +35,7 @@ def _initstatus(self):
3535
)
3636

3737
self.storages = []
38-
for storage in self.get_resources_storages():
38+
for storage in self.resources_storages:
3939
self.storages.append(PVEStorage(storage.pop("node"), storage.pop("id"), storage.pop("shared"), **storage))
4040

4141
@property
@@ -81,6 +81,7 @@ def __str__(self):
8181
output += f"{node}\n"
8282
return output
8383

84+
@property
8485
def vms(self):
8586
"""Return all vms on this cluster"""
8687
vms = []
@@ -111,19 +112,17 @@ def find_task(self, upid):
111112
return task
112113
return False
113114

115+
@property
114116
def is_healthy(self):
115117
return bool([item for item in self.status if item.get("type") == "cluster"][0]["quorate"])
116118

117-
def get_resources_nodes(self):
118-
return [resource for resource in self.resources if resource["type"] == "node"]
119-
120119
def get_vm(self, vm_id):
121120
if isinstance(vm_id, str):
122121
vm_id = int(vm_id)
123122

124123
result = None
125124
node_name = None
126-
for vm in self.get_resources_vms():
125+
for vm in self.resources_vms:
127126
if vm["vmid"] == vm_id:
128127
node_name = vm["node"]
129128
break
@@ -135,17 +134,24 @@ def get_vm(self, vm_id):
135134

136135
return result
137136

138-
def get_resources_vms(self):
137+
@property
138+
def resources_nodes(self):
139+
return [resource for resource in self.resources if resource["type"] == "node"]
140+
141+
@property
142+
def resources_vms(self):
139143
return [resource for resource in self.resources if resource["type"] == "qemu"]
140144

141-
def get_resources_storages(self):
145+
@property
146+
def resources_storages(self):
142147
return [resource for resource in self.resources if resource["type"] == "storage"]
143148

144149
def get_storage(self, storage_name):
145150
return next(filter(lambda s: s.storage == storage_name, self.storages), None)
146151

152+
@property
147153
def cpu_metrics(self):
148-
nodes = self.get_resources_nodes()
154+
nodes = self.resources_nodes
149155
total_cpu = sum(node["maxcpu"] for node in nodes)
150156
total_cpu_usage = sum(node["cpu"] for node in nodes)
151157
total_cpu_allocated = sum(node.allocatedcpu for node in self.nodes)
@@ -158,8 +164,9 @@ def cpu_metrics(self):
158164
"percent": cpu_percent,
159165
}
160166

167+
@property
161168
def memory_metrics(self):
162-
nodes = self.get_resources_nodes()
169+
nodes = self.resources_nodes
163170
total_memory = sum(node["maxmem"] for node in nodes)
164171
total_memory_usage = sum(node["mem"] for node in nodes)
165172
total_memory_allocated = sum(node.allocatedmem for node in self.nodes)
@@ -172,8 +179,9 @@ def memory_metrics(self):
172179
"percent": memory_percent,
173180
}
174181

182+
@property
175183
def disk_metrics(self):
176-
storages = self.get_resources_storages()
184+
storages = self.resources_storages
177185
total_disk = sum(node.get("maxdisk", 0) for node in storages)
178186
total_disk_usage = sum(node.get("disk", 0) for node in storages)
179187
disk_percent = total_disk_usage / total_disk * 100
@@ -184,9 +192,10 @@ def disk_metrics(self):
184192
"percent": disk_percent,
185193
}
186194

195+
@property
187196
def metrics(self):
188197
return {
189-
"cpu": self.cpu_metrics(),
190-
"memory": self.memory_metrics(),
191-
"disk": self.disk_metrics(),
198+
"cpu": self.cpu_metrics,
199+
"memory": self.memory_metrics,
200+
"disk": self.disk_metrics,
192201
}

src/pvecontrol/node.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,6 @@ def resources_vms(self):
8686
# return True
8787
# return False
8888

89+
@property
8990
def templates(self):
9091
return [vm for vm in self.vms if vm.template]

src/tests/test_cluster.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def test_pvecluster_find_node(request, _proxmox_http_auth):
2121
cluster = PVECluster(
2222
"name", "host", config={"node": "node"}, verify_ssl=False, **{"user": "user", "password": "password"}
2323
)
24-
cluster_vms = cluster.vms()
24+
cluster_vms = cluster.vms
2525

2626
assert len(cluster.nodes) == len(nodes)
2727
assert len(cluster_vms) == len(vms)

0 commit comments

Comments
 (0)