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-04-16 12:23 -0600

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

2 

3import typing as t 

4import logging 

5from importlib import import_module 

6from ..debug import debug, begin_end 

7from ..es_api import exists, put_comp_tmpl 

8from ..exceptions import ResultNotExpected 

9from ..utils import prettystr 

10from .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 @begin_end() 

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

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

38 retval = [] 

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

40 val = preset.settings() 

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

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

43 if self.plan.rollover_alias: 

44 val['settings'][ 

45 'index.lifecycle.rollover_alias' 

46 ] = self.plan.rollover_alias 

47 retval.append(val) 

48 retval.append(preset.mappings()) 

49 return retval 

50 

51 @begin_end() 

52 def setup(self) -> None: 

53 """Setup the entity manager""" 

54 for component in self.components: 

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

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

57 raise ResultNotExpected( 

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

59 ) 

60 self.appender(self.name) 

61 logger.info( 

62 f'Successfully created all component templates: ' 

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

64 )