Skip to content

Commit 4ef2b31

Browse files
committed
fix: import + some typo + lint
Signed-off-by: ThysTips <[email protected]>
1 parent c60f29d commit 4ef2b31

File tree

2 files changed

+30
-58
lines changed

2 files changed

+30
-58
lines changed

README.md

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ Then system interrupt remapping is supported and you do not need to enable unsaf
841841

842842
## Metrics Server Configuration
843843

844-
You can configure metric servers in Proxmox VE using the `proxmox_metric_server` module. Below is an example configuration for different types of metric servers:
844+
You can configure metric servers in Proxmox VE using the `pve_metric_servers` role variable. Below is an example configuration for different types of metric servers:
845845

846846
```yaml
847847
pve_metric_servers:
@@ -853,7 +853,6 @@ pve_metric_servers:
853853
organization: myorg
854854
bucket: mybucket
855855
token: mytoken
856-
disable: false
857856
timeout: 30
858857
max_body_size: 25000000
859858
verify_certificate: true
@@ -863,7 +862,6 @@ pve_metric_servers:
863862
type: graphite
864863
protocol: tcp
865864
path: mygraphitepath
866-
disable: false
867865
mtu: 1500
868866
```
869867

@@ -885,25 +883,6 @@ pve_metric_servers:
885883
- `mtu`: (optional) MTU for UDP metric transmission.
886884
- `verify_certificate`: (optional) Verify SSL certificate. Available only for influxdb with https.
887885

888-
### Example Configuration
889-
890-
Here is an example configuration to create a new InfluxDB metric server:
891-
892-
```yaml
893-
- name: Create a new InfluxDB metric server
894-
proxmox_metric_server:
895-
id: "influxdb"
896-
port: 8086
897-
server: "influxdb.example.com"
898-
type: "influxdb"
899-
protocol: "http"
900-
organization: "myorg"
901-
bucket: "mybucket"
902-
token: "mytoken"
903-
```
904-
905-
For more information, refer to the Proxmox VE API documentation: [Proxmox VE API Viewer](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/cluster/metrics/server/{id}).
906-
907886
## Developer Notes
908887

909888
When developing new features or fixing something in this role, you can test out

library/proxmox_metric_server.py

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,9 @@
122122

123123
from ansible.module_utils.basic import AnsibleModule # noqa: E402
124124
from ansible.module_utils._text import to_text # noqa: E402, F401
125-
from ansible_collections.weytop.vmfarm.plugins.module_utils.pvesh import ProxmoxShellError # type: ignore # noqa: E402
126-
import ansible_collections.weytop.vmfarm.plugins.module_utils.pvesh as pvesh # type: ignore # noqa: E402
125+
from ansible.module_utils.pvesh import ProxmoxShellError # type: ignore # noqa: E402
126+
import ansible.module_utils.pvesh as pvesh # type: ignore # noqa: E402
127+
127128

128129
class ProxmoxMetricServer(object):
129130
def __init__(self, module):
@@ -146,38 +147,35 @@ def __init__(self, module):
146147
self.state = module.params["state"]
147148

148149
try:
149-
self.existing_server = pvesh.get("cluster/metrics/server")
150+
self.existing_servers = pvesh.get("cluster/metrics/server")
150151
except ProxmoxShellError as e:
151152
self.module.fail_json(msg=e.message, status_code=e.status_code)
152153

153154
self.parse_servers()
154155

155156
def parse_servers(self):
156157
self.servers = []
157-
for existing_server in self.existing_server: # type: ignore
158-
self.servers.append(existing_server.get("id"))
158+
self.servers.extend(
159+
existing_servers.get("id")
160+
for existing_servers in self.existing_servers
161+
)
159162

160163
def lookup(self):
161-
self.servers = []
162-
for existing_server in self.existing_server: # type: ignore
163-
if existing_server.get("id") == self.id:
164-
args = {}
165-
args["id"] = existing_server.get("id")
166-
return args
167-
168-
return None
164+
return next(
165+
(
166+
{"id": existing_servers.get("id")}
167+
for existing_servers in self.existing_servers
168+
if existing_servers.get("id") == self.id
169+
),
170+
None,
171+
)
169172

170173
def exists(self):
171-
if self.id not in self.servers:
172-
return False
173-
174-
return True
174+
return self.id in self.servers
175175

176176
def prepare_server_args(self, create=True):
177-
args = {}
177+
args = {"port": self.port, "server": self.server}
178178

179-
args["port"] = self.port
180-
args["server"] = self.server
181179
if create:
182180
args["type"] = self.type
183181
if self.protocol is not None:
@@ -206,7 +204,7 @@ def prepare_server_args(self, create=True):
206204

207205
def remove_server(self):
208206
try:
209-
pvesh.delete("cluster/metrics/server/{}".format(self.id))
207+
pvesh.delete(f"cluster/metrics/server/{self.id}")
210208
return (True, None)
211209
except ProxmoxShellError as e:
212210
return (False, e.message)
@@ -215,23 +213,23 @@ def create_server(self):
215213
new_server = self.prepare_server_args()
216214

217215
try:
218-
pvesh.create("cluster/metrics/server/{}".format(self.id), **new_server)
216+
pvesh.create(f"cluster/metrics/server/{self.id}", **new_server)
219217
return (True, None)
220218
except ProxmoxShellError as e:
221219
return (False, e.message)
222220

223221
def modify_server(self):
224-
existing_server = self.lookup()
222+
existing_servers = self.lookup()
225223
modified_server = self.prepare_server_args(create=False)
226224
updated_fields = []
227225
error = None
228226

229227
for key in modified_server:
230-
if key not in existing_server:
228+
if key not in existing_servers: # type: ignore
231229
updated_fields.append(key)
232230
else:
233231
new_value = modified_server.get(key)
234-
old_value = existing_server.get(key) # type: ignore
232+
old_value = existing_servers.get(key) # type: ignore
235233
if isinstance(old_value, list):
236234
old_value = ",".join(sorted(old_value))
237235
if isinstance(new_value, list):
@@ -250,7 +248,7 @@ def modify_server(self):
250248
return (updated_fields, error)
251249

252250
try:
253-
pvesh.set("cluster/metrics/server/{}".format(self.id), **modified_server)
251+
pvesh.set(f"cluster/metrics/server/{self.id}", **modified_server)
254252
except ProxmoxShellError as e:
255253
error = e.message
256254

@@ -340,10 +338,9 @@ def main():
340338
msg="The 'protocol' parameter must be 'tcp' or 'udp' for 'graphite' type."
341339
)
342340

343-
if module.params["type"] == "graphite" and (
344-
module.params["bucket"] is not None
345-
or module.params["organization"] is not None,
346-
module.params["token"] is not None,
341+
if module.params["type"] == "graphite" and any(
342+
module.params.get(param) is not None
343+
for param in ["bucket", "organization", "token"]
347344
):
348345
module.fail_json(
349346
msg="The 'bucket', 'organization' and 'token' parameters are only available for 'influxdb' type."
@@ -373,11 +370,7 @@ def main():
373370

374371
changed = False
375372
error = None
376-
result = {}
377-
result["id"] = server.id
378-
result["state"] = server.state
379-
result["changed"] = False
380-
373+
result = {"id": server.id, "state": server.state, "changed": False}
381374
if server.state == "absent":
382375
if server.exists():
383376
if module.check_mode:
@@ -400,7 +393,7 @@ def main():
400393
# Very gross hack to ignore the error message when Proxmox tries to remove non-existent credentials file
401394
# See : https://forum.proxmox.com/threads/interface-comes-up-with-all-question-marks.83287/post-382099
402395
# TODO: Check if the error message is still appearing in version < 7.4-17
403-
if error is not None and not error.startswith("removing {} credentials file".format(server.type)):
396+
if error is not None and not error.startswith(f"removing {server.type} credentials file"):
404397
module.fail_json(name=server.id, msg=error)
405398

406399
result["changed"] = changed

0 commit comments

Comments
 (0)