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

33 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-08-21 12:05 -0600

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

2 

3import typing as t 

4import logging 

5from importlib import import_module 

6from es_testbed.exceptions import ResultNotExpected 

7from es_testbed.helpers.es_api import exists, put_comp_tmpl 

8from es_testbed.helpers.utils import prettystr 

9from es_testbed.mgrs.entity import EntityMgr 

10 

11if t.TYPE_CHECKING: 

12 from elasticsearch8 import Elasticsearch 

13 from dotmap import DotMap 

14 

15logger = logging.getLogger(__name__) 

16 

17 

18class ComponentMgr(EntityMgr): 

19 """Component Template Entity Manager Class""" 

20 

21 kind = 'component' 

22 listname = 'component_templates' 

23 

24 def __init__( 

25 self, 

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

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

28 ): 

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

30 

31 @property 

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

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

34 retval = [] 

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

36 val = preset.settings() 

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

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

39 if self.plan.rollover_alias: 

40 val['settings'][ 

41 'index.lifecycle.rollover_alias' 

42 ] = self.plan.rollover_alias 

43 retval.append(val) 

44 retval.append(preset.mappings()) 

45 return retval 

46 

47 def setup(self) -> None: 

48 """Setup the entity manager""" 

49 for component in self.components: 

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

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

52 raise ResultNotExpected( 

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

54 ) 

55 self.appender(self.name) 

56 logger.info( 

57 'Successfully created all component templates: %s', 

58 prettystr(self.entity_list), 

59 )