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

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 

9 

10# pylint: disable=missing-docstring 

11 

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') 

23 

24 @property 

25 def logdisplay(self) -> str: 

26 return 'ILM policy' 

27 

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) 

37 

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