Coverage for /Users/buh/.pyenv/versions/3.12.9/envs/es-testbed/lib/python3.12/site-packages/es_testbed/mgrs/component.py: 97%

38 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-31 12:31 -0600

1"""Component Template Entity Manager Class""" 

2 

3import typing as t 

4import logging 

5from importlib import import_module 

6import tiered_debug as debug 

7from es_testbed.exceptions import ResultNotExpected 

8from es_testbed.helpers.es_api import exists, put_comp_tmpl 

9from es_testbed.helpers.utils import prettystr 

10from es_testbed.mgrs.entity import EntityMgr 

11 

12if t.TYPE_CHECKING: 

13 from elasticsearch8 import Elasticsearch 

14 from dotmap import DotMap 

15 

16logger = logging.getLogger(__name__) 

17 

18 

19class ComponentMgr(EntityMgr): 

20 """Component Template Entity Manager Class""" 

21 

22 kind = 'component' 

23 listname = 'component_templates' 

24 

25 def __init__( 

26 self, 

27 client: t.Union['Elasticsearch', None] = None, 

28 plan: t.Union['DotMap', None] = None, 

29 ): 

30 debug.lv2('Initializing ComponentMgr object...') 

31 super().__init__(client=client, plan=plan) 

32 debug.lv3('ComponentMgr object initialized') 

33 

34 @property 

35 def components(self) -> t.Sequence[t.Dict]: 

36 """Return a list of component template dictionaries""" 

37 retval = [] 

38 preset = import_module(f'{self.plan.modpath}.definitions') 

39 val = preset.settings() 

40 if self.plan.ilm_policies[-1]: 

41 val['settings']['index.lifecycle.name'] = self.plan.ilm_policies[-1] 

42 if self.plan.rollover_alias: 

43 val['settings'][ 

44 'index.lifecycle.rollover_alias' 

45 ] = self.plan.rollover_alias 

46 retval.append(val) 

47 retval.append(preset.mappings()) 

48 return retval 

49 

50 def setup(self) -> None: 

51 """Setup the entity manager""" 

52 debug.lv2('Starting method...') 

53 for component in self.components: 

54 put_comp_tmpl(self.client, self.name, component) 

55 if not exists(self.client, self.kind, self.name): 

56 raise ResultNotExpected( 

57 f'Unable to verify creation of component template {self.name}' 

58 ) 

59 self.appender(self.name) 

60 logger.info( 

61 f'Successfully created all component templates: ' 

62 f'{prettystr(self.entity_list)}' 

63 ) 

64 debug.lv3('Exiting method')