hetzner-gitea/delete_resources_script.py
2024-11-23 10:29:35 +01:00

53 lines
1.6 KiB
Python

from hcloud import Client
from dotenv import load_dotenv
import os
import sys
load_dotenv()
API_KEY = os.getenv("API_KEY")
PREFIX = "s464863"
client = Client(
token=API_KEY
)
delete_volumes = False
if len(sys.argv) > 1:
if sys.argv[1] == "--delete-volumes":
delete_volumes = True
def delete_all_servers():
servers = client.servers.get_all()
for server in servers:
if server.name.startswith(PREFIX):
action = server.power_off()
action.wait_until_finished()
if server.volumes and server.volumes[0]:
action = server.volumes[0].detach()
action.wait_until_finished()
action = client.servers.delete(server)
print(
f"Usuwanie serwera {server.data_model.name} ({server.data_model.public_net.ipv4.ip}): {action.data_model.status}")
def delete_all_volumes():
volumes = client.volumes.get_all()
for volume in volumes:
if volume.name.startswith(PREFIX):
if volume.server is not None:
action = client.volumes.detach(volume)
action.wait_until_finished()
client.volumes.delete(volume)
print(f"Usuwanie woluminu {volume.name}")
def delete_all_networks():
networks = client.networks.get_all()
for network in networks:
if network.name.startswith(PREFIX):
action = client.networks.delete(network)
print(f"Usuwanie sieci {network.data_model.name}")
delete_all_servers()
if delete_volumes:
delete_all_volumes()
delete_all_networks()