change: added host creation and removal scripts to test the loaded server
This commit is contained in:
		
							
								
								
									
										68
									
								
								zabbix-tests/host-cleanup.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										68
									
								
								zabbix-tests/host-cleanup.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| #!/usr/bin/env python3 | ||||
| import requests | ||||
| import json | ||||
| import time | ||||
|  | ||||
| # === CONFIGURATION === | ||||
| ZABBIX_URL = "http://10.0.0.101:8887/api_jsonrpc.php" | ||||
| ZABBIX_TOKEN = "c785634354e760a6843055ba4581bc7b6cd6eb2ec75f7c2a79f251c1719933f7" | ||||
| GROUP_ID = "19" | ||||
| BATCH_SIZE = 100 | ||||
| HOST_PATTERN = "dummy-host-" | ||||
|  | ||||
| HEADERS = { | ||||
|     "Content-Type": "application/json-rpc", | ||||
|     "Authorization": f"Bearer {ZABBIX_TOKEN}" | ||||
| } | ||||
|  | ||||
| def zbx_request(method, params): | ||||
|     payload = { | ||||
|         "jsonrpc": "2.0", | ||||
|         "method": method, | ||||
|         "params": params, | ||||
|         "id": int(time.time()) | ||||
|     } | ||||
|     r = requests.post(ZABBIX_URL, headers=HEADERS, data=json.dumps(payload)) | ||||
|     r.raise_for_status() | ||||
|     resp = r.json() | ||||
|     if "error" in resp: | ||||
|         raise Exception(f"API error: {resp['error']}") | ||||
|     return resp | ||||
|  | ||||
| def cleanup_hosts(): | ||||
|     # Get all hosts in the group | ||||
|     resp = zbx_request("host.get", { | ||||
|         "groupids": [GROUP_ID], | ||||
|         "output": ["hostid", "host"] | ||||
|     }) | ||||
|      | ||||
|     # Filter hosts that contain the dummy pattern | ||||
|     hosts = [h for h in resp.get("result", []) if HOST_PATTERN in h["host"]] | ||||
|      | ||||
|     if not hosts: | ||||
|         print("No dummy hosts found") | ||||
|         return | ||||
|      | ||||
|     print(f"Deleting {len(hosts)} hosts") | ||||
|      | ||||
|     # Delete in batches | ||||
|     host_ids = [h["hostid"] for h in hosts] | ||||
|     total_deleted = 0 | ||||
|      | ||||
|     for i in range(0, len(host_ids), BATCH_SIZE): | ||||
|         batch = host_ids[i:i + BATCH_SIZE] | ||||
|         try: | ||||
|             resp = zbx_request("host.delete", batch) | ||||
|             deleted = len(resp.get("result", {}).get("hostids", [])) | ||||
|             total_deleted += deleted | ||||
|             print(f"Deleted batch {i//BATCH_SIZE + 1}: {deleted} hosts") | ||||
|         except Exception as e: | ||||
|             print(f"Error in batch {i//BATCH_SIZE + 1}: {e}") | ||||
|          | ||||
|         if i + BATCH_SIZE < len(host_ids): | ||||
|             time.sleep(0.5) | ||||
|      | ||||
|     print(f"Total deleted: {total_deleted}") | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     cleanup_hosts() | ||||
		Reference in New Issue
	
	Block a user