Fix issue where we didn't delete robots immediately under a namespace
This could result in "hanging" robot accounts, although that would only leak the names of said accounts. Now we delete them immediately AND we proactively delete them before replacing the namespace (just to be sure)
This commit is contained in:
parent
bd1f3e6bb8
commit
f06eec8a35
5 changed files with 132 additions and 10 deletions
28
util/migrate/cleanup_old_robots.py
Normal file
28
util/migrate/cleanup_old_robots.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
from data.database import User
|
||||
from util.names import parse_robot_username
|
||||
|
||||
def cleanup_old_robots(page_size=50):
|
||||
""" Deletes any robots that live under namespaces that no longer exist. """
|
||||
# Collect the robot accounts to delete.
|
||||
page_number = 1
|
||||
to_delete = []
|
||||
|
||||
while True:
|
||||
found_bots = False
|
||||
for robot in list(User.select().where(User.robot == True).paginate(page_number, page_size)):
|
||||
found_bots = True
|
||||
namespace, _ = parse_robot_username(robot.username)
|
||||
try:
|
||||
User.get(username=namespace)
|
||||
except User.DoesNotExist:
|
||||
# Save the robot account for deletion.
|
||||
to_delete.append(robot)
|
||||
|
||||
if not found_bots:
|
||||
break
|
||||
|
||||
page_number = page_number + 1
|
||||
|
||||
# Cleanup any robot accounts whose corresponding namespace doesn't exist.
|
||||
for robot in to_delete:
|
||||
robot.delete_instance(recursive=True, delete_nullable=True)
|
Reference in a new issue