Coverage for /Users/buh/.pyenv/versions/3.12.2/envs/es-testbed/lib/python3.12/site-packages/es_testbed/classes/entitymgrs/ilmmgr.py: 95%
31 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-24 22:41 -0600
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-24 22:41 -0600
1"""ILM Policy Entity Manager Class"""
2import typing as t
3from dotmap import DotMap
4from elasticsearch8 import Elasticsearch
5from es_testbed.exceptions import ResultNotExpected
6from es_testbed.helpers import es_api
7from es_testbed.helpers.utils import build_ilm_policy, getlogger
8from .entitymgr import EntityMgr
10# pylint: disable=missing-docstring
12class IlmMgr(EntityMgr):
13 kind = 'ilm'
14 listname = 'ilm_policies'
15 def __init__(
16 self,
17 client: Elasticsearch = None,
18 plan: DotMap = None,
19 autobuild: t.Optional[bool] = True,
20 ):
21 super().__init__(client=client, plan=plan, autobuild=autobuild)
22 self.logger = getlogger('es_testbed.IlmMgr')
24 @property
25 def logdisplay(self) -> str:
26 return 'ILM policy'
28 def get_policy(self):
29 d = self.plan.ilm
30 kwargs = {
31 'tiers': d.tiers,
32 'forcemerge': d.forcemerge,
33 'max_num_segments': d.max_num_segments,
34 'repository': self.plan.repository,
35 }
36 return build_ilm_policy(**kwargs)
38 def setup(self):
39 if self.plan.ilm.enabled:
40 self.plan.ilm.policy = self.get_policy()
41 es_api.put_ilm(self.client, self.name, policy=self.plan.ilm.policy)
42 # Verify existence
43 if not es_api.exists(self.client, 'ilm', self.name): 43 ↛ 44line 43 didn't jump to line 44, because the condition on line 43 was never true
44 raise ResultNotExpected(
45 f'Unable to verify creation of ilm policy {self.name}')
46 # This goes first because the length of entity_list determines the suffix
47 self.appender(self.name)
48 self.logger.info('Successfully created ILM policy: %s', self.last)
49 else:
50 self.appender(None) # This covers self.plan.ilm_policies[-1]
51 self.logger.info('No ILM policy created.')
52 self.success = True