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-21 21:08 -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 )