Example #1
0
    def test_raises_if_aliased_to_multiple_indices(self, client):
        """Raise if ``index`` is an alias pointing to multiple indices."""
        client.conn.indices.get_alias.return_value = {
            'index-one': {'aliases': {'foo': {}}},
            'index-two': {'aliases': {'foo': {}}},
        }

        with pytest.raises(RuntimeError):
            get_aliased_index(client)
Example #2
0
    def test_returns_underlying_index_name(self, client):
        """If ``index`` is an alias, return the name of the concrete index."""
        client.conn.indices.get_alias.return_value = {
            'target-index': {'aliases': {'foo': {}}},
        }

        assert get_aliased_index(client) == 'target-index'
Example #3
0
def reindex(session, es, request):
    """Reindex all annotations into a new index, and update the alias."""

    if get_aliased_index(es) is None:
        raise RuntimeError('cannot reindex if current index is not aliased')

    settings = request.find_service(name='settings')

    new_index = configure_index(es)

    try:
        settings.put(SETTING_NEW_INDEX, new_index)
        request.tm.commit()

        indexer = BatchIndexer(session,
                               es,
                               request,
                               target_index=new_index,
                               op_type='create')

        errored = indexer.index()
        if errored:
            log.debug('failed to index {} annotations, retrying...'.format(
                len(errored)))
            errored = indexer.index(errored)
            if errored:
                log.warn('failed to index {} annotations: {!r}'.format(
                    len(errored), errored))

        update_aliased_index(es, new_index)

    finally:
        settings.delete(SETTING_NEW_INDEX)
        request.tm.commit()
Example #4
0
    def test_raises_if_aliased_to_multiple_indices(self, client):
        """Raise if ``index`` is an alias pointing to multiple indices."""
        client.conn.indices.get_alias.return_value = {
            'index-one': {
                'aliases': {
                    'foo': {}
                }
            },
            'index-two': {
                'aliases': {
                    'foo': {}
                }
            },
        }

        with pytest.raises(RuntimeError):
            get_aliased_index(client)
Example #5
0
    def test_returns_underlying_index_name(self, client):
        """If ``index`` is an alias, return the name of the concrete index."""
        client.conn.indices.get_alias.return_value = {
            'target-index': {
                'aliases': {
                    'foo': {}
                }
            },
        }

        assert get_aliased_index(client) == 'target-index'
Example #6
0
    def test_returns_none_when_no_alias(self, client):
        """If ``index`` is a concrete index, return None."""
        client.conn.indices.get_alias.side_effect = NotFoundError('test', 'test desc')

        assert get_aliased_index(client) is None
Example #7
0
    def test_returns_none_when_no_alias(self, client):
        """If ``index`` is a concrete index, return None."""
        client.conn.indices.get_alias.side_effect = NotFoundError(
            'test', 'test desc')

        assert get_aliased_index(client) is None