in curator/helpers/waiters.py [0:0]
def snapshot_check(client, snapshot=None, repository=None):
"""
This function calls `client.snapshot.`
:py:meth:`~.elasticsearch.client.SnapshotClient.get` and tests to see whether
the snapshot is complete, and if so, with what status. It will log errors
according to the result. If the snapshot is still ``IN_PROGRESS``, it will
return ``False``. ``SUCCESS`` will be an ``INFO`` level message, ``PARTIAL``
nets a ``WARNING`` message, ``FAILED`` is an ``ERROR``, message, and all
others will be a ``WARNING`` level message.
:param client: A client connection object
:param snapshot: The snapshot name
:param repository: The repository name
:type client: :py:class:`~.elasticsearch.Elasticsearch`
:type snapshot: str
:type repository: str
:rtype: bool
"""
logger = logging.getLogger(__name__)
logger.debug('SNAPSHOT: %s', snapshot)
logger.debug('REPOSITORY: %s', repository)
try:
result = client.snapshot.get(repository=repository, snapshot=snapshot)
logger.debug('RESULT: %s', result)
except Exception as err:
raise CuratorException(
f'Unable to obtain information for snapshot "{snapshot}" in repository '
f'"{repository}". Error: {err}'
) from err
state = result['snapshots'][0]['state']
logger.debug('Snapshot state = %s', state)
retval = True
if state == 'IN_PROGRESS':
logger.info('Snapshot %s still in progress.', snapshot)
retval = False
elif state == 'SUCCESS':
logger.info('Snapshot %s successfully completed.', snapshot)
elif state == 'PARTIAL':
logger.warning('Snapshot %s completed with state PARTIAL.', snapshot)
elif state == 'FAILED':
logger.error('Snapshot %s completed with state FAILED.', snapshot)
else:
logger.warning('Snapshot %s completed with state: %s', snapshot, state)
return retval