from google.cloud import compute_v1

def delete_unused_addresses(project_id):
    client = compute_v1.AddressesClient()
    request = compute_v1.AggregatedListAddressesRequest(project=project_id)
    
    print("Scanning for unattached external IPs...")
    
    for region, response in client.aggregated_list(request=request):
        if response.addresses:
            for addr in response.addresses:
                # Check if status is RESERVED (not IN_USE)
                if addr.status == "RESERVED":
                    print(f"Deleting unused IP: {addr.name} ({addr.address}) in {region}")
                    region_name = region.split("/")[-1]
                    operation = client.delete(project=project_id, region=region_name, address=addr.name)
                    operation.result()
                    print("Deleted.")

if __name__ == "__main__":
    delete_unused_addresses("my-project-id")
