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

27 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-05-03 15:56 -0600

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

2 

3import typing as t 

4import logging 

5from es_testbed.exceptions import ResultNotExpected 

6from es_testbed.helpers.es_api import exists, put_comp_tmpl 

7from es_testbed.helpers.utils import mapping_component, prettystr, setting_component 

8from es_testbed.mgrs.entity import EntityMgr 

9 

10if t.TYPE_CHECKING: 

11 from elasticsearch8 import Elasticsearch 

12 from dotmap import DotMap 

13 

14logger = logging.getLogger(__name__) 

15 

16 

17class ComponentMgr(EntityMgr): 

18 """Component Template Entity Manager Class""" 

19 

20 kind = 'component' 

21 listname = 'component_templates' 

22 

23 def __init__( 

24 self, 

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

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

27 ): 

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

29 

30 @property 

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

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

33 retval = [] 

34 kw = { 

35 'ilm_policy': self.plan.ilm_policies[-1], 

36 'rollover_alias': self.plan.rollover_alias, 

37 } 

38 retval.append(setting_component(**kw)) 

39 retval.append(mapping_component()) 

40 return retval 

41 

42 def setup(self) -> None: 

43 """Setup the entity manager""" 

44 for component in self.components: 

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

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

47 raise ResultNotExpected( 

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

49 ) 

50 self.appender(self.name) 

51 logger.info( 

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

53 prettystr(self.entity_list), 

54 )