import os
from azure.identity import DefaultAzureCredential
from azure.mgmt.network import NetworkManagementClient

credential = DefaultAzureCredential()
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
network_client = NetworkManagementClient(credential, subscription_id)

def delete_unused_public_ips():
    print("Scanning for unattached Public IPs...")
    public_ips = network_client.public_ip_addresses.list_all()
    
    for ip in public_ips:
        # Check if IP configuration is None (not attached to NIC or LB)
        if ip.ip_configuration is None:
            print(f"Deleting unused IP: {ip.name} ({ip.ip_address})")
            async_delete = network_client.public_ip_addresses.begin_delete(
                resource_group_name=ip.id.split("/")[4],
                public_ip_address_name=ip.name
            )
            async_delete.wait()
            print("Deleted.")

if __name__ == "__main__":
    delete_unused_public_ips()
