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

36 statements  

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

1"""Index Template Entity Manager Class""" 

2 

3import typing as t 

4import logging 

5import tiered_debug as debug 

6from es_testbed.exceptions import ResultNotExpected 

7from es_testbed.helpers.es_api import exists, put_idx_tmpl 

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 TemplateMgr(EntityMgr): 

18 """Index Template entity manager""" 

19 

20 kind = 'template' 

21 listname = 'index_templates' 

22 

23 def __init__( 

24 self, 

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

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

27 ): 

28 debug.lv2('Initializing TemplateMgr object...') 

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

30 debug.lv3('TemplateMgr object initialized') 

31 

32 @property 

33 def patterns(self) -> t.Sequence[str]: 

34 """Return the list of index patterns associated with this template""" 

35 _ = [] 

36 _.append(f"{self.get_pattern('index')}*") 

37 _.append(f"{self.get_pattern('data_stream')}*") 

38 return _ 

39 

40 def get_pattern(self, kind: str) -> str: 

41 """Return the a formatted index search pattern string""" 

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

43 retval = f'{self.plan.prefix}-{self.ident(dkey=kind)}-{self.plan.uniq}' 

44 debug.lv3('Exiting method, returning value') 

45 debug.lv5(f'Value = {retval}') 

46 return retval 

47 

48 def setup(self) -> None: 

49 """Setup the entity manager""" 

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

51 ds = {} if self.plan.type == 'data_stream' else None 

52 put_idx_tmpl( 

53 self.client, 

54 self.name, 

55 self.patterns, 

56 components=self.plan.component_templates, 

57 data_stream=ds, 

58 ) 

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

60 raise ResultNotExpected( 

61 f'Unable to verify creation of index template {self.name}' 

62 ) 

63 self.appender(self.name) 

64 debug.lv3(f'Successfully created index template: {self.last}') 

65 debug.lv3('Exiting method')