From 471cb26e075ebf63cf7708df85ca87a652486014 Mon Sep 17 00:00:00 2001 From: Jake Moshenko Date: Wed, 18 Jun 2014 13:01:12 -0400 Subject: [PATCH] Add a script to backfill placements. --- tools/backfillplacements.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 tools/backfillplacements.py diff --git a/tools/backfillplacements.py b/tools/backfillplacements.py new file mode 100644 index 000000000..b849ca86b --- /dev/null +++ b/tools/backfillplacements.py @@ -0,0 +1,26 @@ +import logging + +logging.basicConfig(level=logging.DEBUG) + +from data.database import ImageStorage, ImageStoragePlacement, ImageStorageLocation +from peewee import * + +from app import app + +logger = logging.getLogger(__name__) + +GROUP_SIZE = 1000 + +storage_needing_placements = (ImageStorage + .select() + .join(ImageStoragePlacement, JOIN_LEFT_OUTER) + .group_by(ImageStorage) + .having(fn.Count(ImageStoragePlacement.id) == 0)) + +default_location = ImageStorageLocation.get(name=app.config['DS_BACKFILL_LOCATION']) + +while storage_needing_placements.count() > 0: + logger.debug('Starting group of %s', GROUP_SIZE) + for needs_placement in list(storage_needing_placements.limit(GROUP_SIZE)): + logger.debug('Adding placement: %s', needs_placement.id) + ImageStoragePlacement.create(storage=needs_placement, location=default_location)