Coverage for /Users/buh/.pyenv/versions/3.12.9/envs/es-testbed/lib/python3.12/site-packages/es_testbed/mgrs/component.py: 97%
38 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-04-17 22:23 -0600
« prev ^ index » next coverage.py v7.6.12, created at 2025-04-17 22:23 -0600
1"""Component Template Entity Manager Class"""
3import typing as t
4import logging
5from importlib import import_module
6from ..debug import debug, begin_end
7from ..es_api import exists, put_comp_tmpl
8from ..exceptions import ResultNotExpected
9from ..utils import prettystr
10from .entity import EntityMgr
12if t.TYPE_CHECKING:
13 from elasticsearch8 import Elasticsearch
14 from dotmap import DotMap
16logger = logging.getLogger(__name__)
19class ComponentMgr(EntityMgr):
20 """Component Template Entity Manager Class"""
22 kind = 'component'
23 listname = 'component_templates'
25 def __init__(
26 self,
27 client: t.Union['Elasticsearch', None] = None,
28 plan: t.Union['DotMap', None] = None,
29 ):
30 debug.lv2('Initializing ComponentMgr object...')
31 super().__init__(client=client, plan=plan)
32 debug.lv3('ComponentMgr object initialized')
34 @property
35 @begin_end()
36 def components(self) -> t.Sequence[t.Dict]:
37 """Return a list of component template dictionaries"""
38 retval = []
39 preset = import_module(f'{self.plan.modpath}.definitions')
40 val = preset.settings()
41 if self.plan.ilm_policies[-1]:
42 val['settings']['index.lifecycle.name'] = self.plan.ilm_policies[-1]
43 if self.plan.rollover_alias:
44 val['settings'][
45 'index.lifecycle.rollover_alias'
46 ] = self.plan.rollover_alias
47 retval.append(val)
48 retval.append(preset.mappings())
49 return retval
51 @begin_end()
52 def setup(self) -> None:
53 """Setup the entity manager"""
54 for component in self.components:
55 put_comp_tmpl(self.client, self.name, component)
56 if not exists(self.client, self.kind, self.name):
57 raise ResultNotExpected(
58 f'Unable to verify creation of component template {self.name}'
59 )
60 self.appender(self.name)
61 logger.info(
62 f'Successfully created all component templates: '
63 f'{prettystr(self.entity_list)}'
64 )