Coverage for /Users/buh/.pyenv/versions/3.12.2/envs/es-testbed/lib/python3.12/site-packages/es_testbed/classes/entitymgrs/snapshotmgr.py: 90%
35 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-25 19:21 -0600
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-25 19:21 -0600
1"""Snapshot Entity Manager Class"""
2import typing as t
3from dotmap import DotMap
4from elasticsearch8 import Elasticsearch
5from es_testbed.helpers import es_api
6from es_testbed.helpers.utils import getlogger
7from .entitymgr import EntityMgr
9# pylint: disable=missing-docstring
11class SnapshotMgr(EntityMgr):
12 kind = 'snapshot'
13 listname = 'snapshots'
14 def __init__(
15 self,
16 client: Elasticsearch = None,
17 plan: DotMap = None,
18 autobuild: t.Optional[bool] = False,
19 ):
20 super().__init__(client=client, plan=plan, autobuild=autobuild)
21 self.logger = getlogger('es_testbed.SnapshotMgr')
23 def add(self, index: str, tier: str) -> None:
24 msg = f'Creating snapshot of index {index} and mounting in the {tier} tier...'
25 self.logger.info(msg)
26 es_api.do_snap(
27 self.client,
28 self.plan.repository,
29 self.name,
30 index,
31 tier=tier
32 )
33 self.appender(self.name)
34 self.logger.info('Successfully created snapshot "%s"', self.last)
35 self.success = True
37 def add_existing(self, name: str) -> None:
38 """Add a snapshot that's already been created, e.g. by ILM promotion"""
39 self.logger.info('Adding snapshot %s to list...', name)
40 self.appender(name)
41 self.success = True
43 def setup(self):
44 pass
46 def teardown(self): # We override the parent method here to speed things up.
47 if self.entity_list:
48 if not self.success: 48 ↛ 49line 48 didn't jump to line 49
49 msg = (
50 f'Setup did not complete successfully. '
51 f'Manual cleanup of {self.kind}s may be necessary.'
52 )
53 self.logger.warning(msg)
54 self.logger.info('Cleaning up any existing snapshots...')
55 es_api.delete(
56 self.client, self.kind, ','.join(self.entity_list), repository=self.plan.repository)
57 self.logger.info('Cleanup of snapshots completed.')
58 self.entity_list = []
59 self.failsafe = []