def test_updates_index_atomically(self, client): """Update the alias atomically.""" client.conn.indices.get_alias.return_value = { 'old-target': { 'aliases': { 'foo': {} } }, } update_aliased_index(client, 'new-target') client.conn.indices.update_aliases.assert_called_once_with( body={ 'actions': [ { 'add': { 'index': 'new-target', 'alias': 'foo' } }, { 'remove': { 'index': 'old-target', 'alias': 'foo' } }, ], })
def test_raises_if_called_for_concrete_index(self, client): """Raise if called for a concrete index.""" client.conn.indices.get_alias.side_effect = NotFoundError( 'test', 'test desc') with pytest.raises(RuntimeError): update_aliased_index(client, 'new-target')
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()
def test_updates_index_atomically(self, client): """Update the alias atomically.""" client.conn.indices.get_alias.return_value = { 'old-target': {'aliases': {'foo': {}}}, } update_aliased_index(client, 'new-target') client.conn.indices.update_aliases.assert_called_once_with(body={ 'actions': [ {'add': {'index': 'new-target', 'alias': 'foo'}}, {'remove': {'index': 'old-target', 'alias': 'foo'}}, ], })
def test_raises_if_called_for_concrete_index(self, client): """Raise if called for a concrete index.""" client.conn.indices.get_alias.side_effect = NotFoundError('test', 'test desc') with pytest.raises(RuntimeError): update_aliased_index(client, 'new-target')