Skip to content

Main

cli()

The CLI for the data importer.

Source code in dataimporter/cli/main.py
17
18
19
20
21
22
@click.group('dimp')
def cli():
    """
    The CLI for the data importer.
    """
    pass

get_status(config)

Prints some status information about the importer's data.

Source code in dataimporter/cli/main.py
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
@cli.command('status')
@with_config()
def get_status(config: Config):
    """
    Prints some status information about the importer's data.
    """
    with use_importer(config) as importer:
        console.log('Currently using config from', config.source)
        console.log('Latest EMu export queued:', importer.emu_status.get())
        console.log(Rule())
        console.log('Per view statistics:')
        console.log(Rule())

        not_published_views = [view for view in importer.views if not view.is_published]
        for view in sorted(not_published_views, key=lambda view: view.name):
            console.log('View:', view.name, f'({type(view).__name__})', style='bold')
            console.log('Backing store', view.store.name)
            console.log('Queue size:', view.count())
            console.log(Rule())

        published_views = [view for view in importer.views if view.is_published]
        for view in sorted(published_views, key=lambda view: view.name):
            console.log('View:', view.name, f'({type(view).__name__})', style='bold')
            console.log('Backing store', view.store.name)
            console.log('Queue size:', view.count())
            database = importer.get_database(view)
            console.log('Database:', database.name)
            console.log('MongoDB count:', database.data_collection.count_documents({}))
            console.log(
                'Elasticsearch latest count:',
                database.search(SearchVersion.latest).count(),
            )
            console.log(
                'Elasticsearch total count:',
                database.search(SearchVersion.all).count(),
            )
            m_version = database.get_committed_version()
            e_version = database.get_elasticsearch_version()
            console.log(
                'MongoDB version:',
                m_version,
                f'({datetime.fromtimestamp(m_version / 1000)})',
            )
            console.log(
                'Elasticsearch version:',
                e_version,
                f'({datetime.fromtimestamp(e_version / 1000)})',
            )
            if m_version is None and e_version is None:
                status = 'No data'
            elif m_version is None:
                status = "No data in MongoDB but data in Elasticsearch. Something's up?"
            elif e_version is None:
                status = 'No data in Elasticsearch, just need to sync'
            elif m_version == e_version:
                status = 'In sync'
            elif m_version < e_version:
                status = "MongoDB is behind Elasticsearch. Something's up?"
            elif m_version > e_version:
                status = 'Elasticsearch behind MongoDB, just need to sync'
            console.log('Status: ', status)
            console.log(Rule())