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

34 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-04-21 21:08 -0600

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

2 

3import typing as t 

4import logging 

5from ..debug import debug, begin_end 

6from ..exceptions import ResultNotExpected 

7from ..es_api import exists, put_idx_tmpl 

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

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

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

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

44 debug.lv5(f"Return value = {retval}") 

45 return retval 

46 

47 @begin_end() 

48 def setup(self) -> None: 

49 """Setup the entity manager""" 

50 ds = {} if self.plan.type == "data_stream" else None 

51 put_idx_tmpl( 

52 self.client, 

53 self.name, 

54 self.patterns, 

55 components=self.plan.component_templates, 

56 data_stream=ds, 

57 ) 

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

59 raise ResultNotExpected( 

60 f"Unable to verify creation of index template {self.name}" 

61 ) 

62 self.appender(self.name) 

63 debug.lv3(f"Successfully created index template: {self.last}")