Beispiel #1
0
def do_reindex():
  """Update the full text search index."""

  indexer = get_indexer()
  indexed_models = {
      m.__name__: m for m in all_models.all_models
      if issubclass(m, mixin.Indexed) and m.REQUIRED_GLOBAL_REINDEX
  }
  people_query = db.session.query(all_models.Person.id,
                                  all_models.Person.name,
                                  all_models.Person.email)
  indexer.cache["people_map"] = {p.id: (p.name, p.email) for p in people_query}
  indexer.cache["ac_role_map"] = dict(db.session.query(
      all_models.AccessControlRole.id,
      all_models.AccessControlRole.name,
  ))
  for model_name in sorted(indexed_models.keys()):
    logger.info("Updating index for: %s", model_name)
    with benchmark("Create records for %s" % model_name):
      model = indexed_models[model_name]
      for query_chunk in generate_query_chunks(db.session.query(model.id)):
        model.bulk_record_update_for([i.id for i in query_chunk])
        db.session.commit()

  logger.info("Updating index for: %s", "Snapshot")
  with benchmark("Create records for %s" % "Snapshot"):
    reindex_snapshots()
  indexer.invalidate_cache()
Beispiel #2
0
def do_reindex():
  """Update the full text search index."""

  indexer = get_indexer()
  indexer.delete_all_records(False)

  # Remove model base classes and non searchable objects
  excluded_models = {
      all_models.Directive,
      all_models.Option,
      all_models.SystemOrProcess,
      all_models.Role,
  }
  indexed_models = {model for model in all_models.all_models
                    if model_is_indexed(model)}

  indexed_models -= excluded_models

  for model in indexed_models:
    # pylint: disable=protected-access
    mapper_class = model._sa_class_manager.mapper.base_mapper.class_
    query = model.query.options(
        db.undefer_group(mapper_class.__name__ + '_complete'),
    )
    for query_chunk in generate_query_chunks(query):
      for instance in query_chunk:
        indexer.create_record(fts_record_for(instance), False)
      db.session.commit()

  reindex_snapshots()
Beispiel #3
0
def do_reindex():
    """Update the full text search index."""

    indexer = get_indexer()
    indexed_models = {
        m.__name__: m
        for m in all_models.all_models
        if issubclass(m, mixin.Indexed) and m.REQUIRED_GLOBAL_REINDEX
    }
    people_query = db.session.query(all_models.Person.id,
                                    all_models.Person.name,
                                    all_models.Person.email)
    indexer.cache["people_map"] = {
        p.id: (p.name, p.email)
        for p in people_query
    }
    indexer.cache["ac_role_map"] = dict(
        db.session.query(
            all_models.AccessControlRole.id,
            all_models.AccessControlRole.name,
        ))
    for model_name in sorted(indexed_models.keys()):
        logger.info("Updating index for: %s", model_name)
        with benchmark("Create records for %s" % model_name):
            model = indexed_models[model_name]
            for query_chunk in generate_query_chunks(db.session.query(
                    model.id)):
                model.bulk_record_update_for([i.id for i in query_chunk])
                db.session.commit()

    logger.info("Updating index for: %s", "Snapshot")
    with benchmark("Create records for %s" % "Snapshot"):
        reindex_snapshots()
    indexer.invalidate_cache()
    start_compute_attributes("all_latest")
Beispiel #4
0
def do_reindex():
    """Update the full text search index."""

    indexer = get_indexer()
    indexer.delete_all_records(False)

    # Remove model base classes and non searchable objects
    excluded_models = {
        all_models.Directive,
        all_models.Option,
        all_models.SystemOrProcess,
        all_models.Role,
    }
    indexed_models = {
        model
        for model in all_models.all_models if model_is_indexed(model)
    }

    indexed_models -= excluded_models

    for model in indexed_models:
        # pylint: disable=protected-access
        mapper_class = model._sa_class_manager.mapper.base_mapper.class_
        query = model.query.options(
            db.undefer_group(mapper_class.__name__ + '_complete'), )
        for query_chunk in generate_query_chunks(query):
            for instance in query_chunk:
                indexer.create_record(fts_record_for(instance), False)
            db.session.commit()

    reindex_snapshots()
Beispiel #5
0
def do_reindex():
    """Update the full text search index."""

    indexer = get_indexer()
    indexed_models = get_indexed_model_names()

    people = db.session.query(all_models.Person.id, all_models.Person.name,
                              all_models.Person.email)
    indexer.cache["people_map"] = {p.id: (p.name, p.email) for p in people}
    for model in sorted(indexed_models):
        # pylint: disable=protected-access
        logger.info("Updating index for: %s", model)
        with benchmark("Create records for %s" % model):
            model = get_model(model)
            mapper_class = model._sa_class_manager.mapper.base_mapper.class_
            if issubclass(model, mixin.Indexed):
                for query_chunk in generate_query_chunks(
                        db.session.query(model.id)):
                    model.bulk_record_update_for([i.id for i in query_chunk])
                    db.session.commit()
            else:
                logger.warning(
                    "Try to index model that not inherited from Indexed mixin: %s",
                    model.__name__)
                indexer.delete_records_by_type(model.__name__)
                query = model.query.options(
                    db.undefer_group(mapper_class.__name__ + '_complete'), )
                for query_chunk in generate_query_chunks(query):
                    for instance in query_chunk:
                        indexer.create_record(indexer.fts_record_for(instance),
                                              False)
                    db.session.commit()

    reindex_snapshots()
    indexer.invalidate_cache()
Beispiel #6
0
def do_reindex():
    """Update the full text search index."""

    indexer = get_indexer()
    with benchmark('Delete all records'):
        indexer.delete_all_records(False)

    indexed_models = get_indexed_model_names()

    people = db.session.query(all_models.Person.id, all_models.Person.name,
                              all_models.Person.email)
    g.people_map = {p.id: (p.name, p.email) for p in people}

    for model in sorted(indexed_models):
        # pylint: disable=protected-access
        logger.info("Updating index for: %s", model)
        with benchmark("Create records for %s" % model):
            model = get_model(model)
            mapper_class = model._sa_class_manager.mapper.base_mapper.class_
            query = model.query.options(
                db.undefer_group(mapper_class.__name__ + '_complete'), )
            for query_chunk in generate_query_chunks(query):
                for instance in query_chunk:
                    indexer.create_record(fts_record_for(instance), False)
                db.session.commit()

    reindex_snapshots()

    delattr(g, "people_map")
Beispiel #7
0
def create_reindexed_snapshots(audit_id, objects):
  """Create snapshots for list of provided objects and reindex them"""
  # pylint: disable=protected-access
  snapshottable_objects = [o for o in objects if o.type in Types.all]
  audit = all_models.Audit.query.get(audit_id)
  snapshots = TestCase._create_snapshots(audit, snapshottable_objects)
  reindex_snapshots_ids = [snap.id for snap in snapshots]
  get_indexer().delete_records_by_ids("Snapshot",
                                      reindex_snapshots_ids,
                                      commit=False)
  reindex_snapshots(reindex_snapshots_ids)
Beispiel #8
0
def create_reindexed_snapshots(audit_id, objects):
    """Create snapshots for list of provided objects and reindex them"""
    # pylint: disable=protected-access
    snapshottable_objects = [o for o in objects if o.type in Types.all]
    audit = all_models.Audit.query.get(audit_id)
    snapshots = TestCase._create_snapshots(audit, snapshottable_objects)
    reindex_snapshots_ids = [snap.id for snap in snapshots]
    get_indexer().delete_records_by_ids("Snapshot",
                                        reindex_snapshots_ids,
                                        commit=False)
    reindex_snapshots(reindex_snapshots_ids)