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
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-31 12:31 -0600
1"""Index Template Entity Manager Class"""
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
10if t.TYPE_CHECKING:
11 from elasticsearch8 import Elasticsearch
12 from dotmap import DotMap
14logger = logging.getLogger(__name__)
17class TemplateMgr(EntityMgr):
18 """Index Template entity manager"""
20 kind = 'template'
21 listname = 'index_templates'
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')
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 _
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
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')