Example #1
0
    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
Example #2
0
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)
Example #3
0
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)
Example #4
0
 def save(self, session=None):
     from glance.db.sqlalchemy import api as db_api
     super(GlanceBase, self).save(session or db_api.get_session())
Example #5
0
 def save(self, session=None):
     from glance.db.sqlalchemy import api as db_api
     super(GlanceBase, self).save(session or db_api.get_session())