def ___images_by_windowed_meta( self, context, period_start, period_stop, project_id, metadata ): """Simulated bottom most layer :param context: :param period_start: Datetime :param period_stop: Datetime :param project_id: String :param metadata: """ if metadata: aliases = [aliased(models.ImageProperty) for i in metadata] else: aliases = [] session = get_session() query = session.query( models.Image, *aliases ) query = query.filter(or_(models.Image.deleted_at == null(), models.Image.deleted_at > period_start)) if period_stop: query = query.filter(models.Image.created_at < period_stop) if project_id: query = query.filter_by(project_id=project_id) if metadata: for keypair, alias in zip(metadata.items(), aliases): query = query.filter(alias.name == keypair[0]) query = query.filter(alias.value == keypair[1]) query = query.filter(alias.image_id == models.Image.id) query = query.filter(or_( alias.deleted_at == null(), alias.deleted_at == models.Image.deleted_at )) images = [] for tup in query.all(): if aliases: image = tup[0] # props = tup[1:] else: image = tup # props = None images.append(dict(image)) return images
def seed(period_length): start = get_period_start(datetime.datetime.utcnow(), period_length) db_api.configure_db() session = db_api.get_session() print "Populating active image usages" usages = _get_usages(start, session) if usages: print "Saving active image images" active_images = map(lambda x: models.ImageUsage(**x), usages) models.ImageUsage.objects.bulk_create(active_images, batch_size=100) print "Populating image deletes" deletes = _get_deletes(start, session) if deletes: print "Saving image deletes" deleted_images = map(lambda x: models.ImageDeletes(**x), deletes) models.ImageDeletes.objects.bulk_create(deleted_images, batch_size=100) print "Seeding completed" return len(usages), len(deletes)
def save(self, session=None): from glance.db.sqlalchemy import api as db_api super(GlanceBase, self).save(session or db_api.get_session())