Source code for CveXplore.database.maintenance.main_updater

"""
Main Updater
============
"""
from CveXplore.database.maintenance.DatabaseSchemaChecker import SchemaChecker
from CveXplore.database.maintenance.Sources_process import (
    CPEDownloads,
    CVEDownloads,
    CWEDownloads,
    CAPECDownloads,
    VIADownloads,
    DatabaseIndexer,
)


[docs]class MainUpdater(object): """ The MainUpdater class is the main class for performing database maintenaince tasks """
[docs] def __init__(self, datasource): """ Init a new MainUpdater class :param datasource: Datasource to update :type datasource: MongoDBConnection """ self.datasource = datasource self.sources = [ {"name": "cpe", "updater": CPEDownloads}, {"name": "cve", "updater": CVEDownloads}, {"name": "cwe", "updater": CWEDownloads}, {"name": "capec", "updater": CAPECDownloads}, {"name": "via4", "updater": VIADownloads}, ] self.posts = [ {"name": "ensureindex", "updater": DatabaseIndexer}, {"name": "schema", "updater": SchemaChecker}, ]
[docs] def update(self): """ Method used for updating the database """ for source in self.sources: up = source["updater"]() up.update() for post in self.posts: indexer = post["updater"]() indexer.create_indexes() self.datasource.set_handlers_for_collections()
[docs] def initialize(self): """ Method to initialize a new (fresh) instance of a cvedb database """ cpe_pop = CPEDownloads() cpe_pop.populate() cve_pop = CVEDownloads() cve_pop.populate() self.update()