def main():
    # init conf and logging
    conf = cfg.CONF
    conf.register_cli_opts(OPTS)
    conf.register_opts(OPTS)
    conf()

    logging.setup('stackalytics')
    LOG.info('Logging enabled')

    persistent_storage = PersistentStorageFactory.get_storage(
        cfg.CONF.persistent_storage_uri)

    if conf.sync_default_data or conf.force_sync_default_data:
        LOG.info('Going to synchronize persistent storage with default data '
                 'from file %s' % cfg.CONF.default_data)
        persistent_storage.sync(cfg.CONF.default_data,
                                force=conf.force_sync_default_data)
        return 0

    runtime_storage = RuntimeStorageFactory.get_storage(
        cfg.CONF.runtime_storage_uri)

    update_pids(runtime_storage)

    update_repos(runtime_storage, persistent_storage)
def get_vault():
    vault = getattr(app, 'stackalytics_vault', None)
    if not vault:
        vault = {}
        vault['runtime_storage'] = RuntimeStorageFactory.get_storage(
            RUNTIME_STORAGE_URI)
        vault['persistent_storage'] = PersistentStorageFactory.get_storage(
            PERSISTENT_STORAGE_URI)
        vault['memory_storage'] = (
            memory_storage.MemoryStorageFactory.get_storage(
                memory_storage.MEMORY_STORAGE_CACHED,
                vault['runtime_storage'].get_update(os.getpid())))

        releases = vault['persistent_storage'].get_releases()
        vault['releases'] = dict((r['release_name'].lower(), r)
                                 for r in releases)
        app.stackalytics_vault = vault
    return vault