from google.cloud import compute_v1

def delete_orphaned_disks(project_id):
    client = compute_v1.DisksClient()
    request = compute_v1.AggregatedListDisksRequest(project=project_id)
    
    print("Scanning for unattached persistent disks...")
    
    for zone, response in client.aggregated_list(request=request):
        if response.disks:
            for disk in response.disks:
                # Check if users list is empty (not attached to any instance)
                if not disk.users:
                    print(f"Deleting orphaned disk: {disk.name} in {zone} (Size: {disk.size_gb}GB)")
                    zone_name = zone.split("/")[-1]
                    operation = client.delete(project=project_id, zone=zone_name, disk=disk.name)
                    operation.result()
                    print("Deleted.")

if __name__ == "__main__":
    delete_orphaned_disks("my-project-id")
