Coverage for /Users/buh/.pyenv/versions/3.12.9/envs/es-testbed/lib/python3.12/site-packages/es_testbed/mgrs/template.py: 96%
27 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-17 19:30 -0600
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-17 19:30 -0600
1"""Index Template Entity Manager Class"""
3import typing as t
4import logging
5from es_testbed.exceptions import ResultNotExpected
6from es_testbed.helpers.es_api import exists, put_idx_tmpl
7from es_testbed.mgrs.entity import EntityMgr
9if t.TYPE_CHECKING:
10 from elasticsearch8 import Elasticsearch
11 from dotmap import DotMap
13logger = logging.getLogger(__name__)
16class TemplateMgr(EntityMgr):
17 """Index Template entity manager"""
19 kind = 'template'
20 listname = 'index_templates'
22 def __init__(
23 self,
24 client: t.Union['Elasticsearch', None] = None,
25 plan: t.Union['DotMap', None] = None,
26 ):
27 super().__init__(client=client, plan=plan)
29 @property
30 def patterns(self) -> t.Sequence[str]:
31 """Return the list of index patterns associated with this template"""
32 _ = []
33 _.append(f"{self.get_pattern('index')}*")
34 _.append(f"{self.get_pattern('data_stream')}*")
35 return _
37 def get_pattern(self, kind: str) -> str:
38 """Return the a formatted index search pattern string"""
39 return f'{self.plan.prefix}-{self.ident(dkey=kind)}-{self.plan.uniq}'
41 def setup(self) -> None:
42 """Setup the entity manager"""
43 ds = {} if self.plan.type == 'data_stream' else None
44 put_idx_tmpl(
45 self.client,
46 self.name,
47 self.patterns,
48 components=self.plan.component_templates,
49 data_stream=ds,
50 )
51 if not exists(self.client, self.kind, self.name):
52 raise ResultNotExpected(
53 f'Unable to verify creation of index template {self.name}'
54 )
55 self.appender(self.name)
56 logger.info(f'Successfully created index template: {self.last}')