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-03-31 12:31 -0600
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-31 12:31 -0600
1"""Component Template Entity Manager Class"""
3import typing as t
4import logging
5from importlib import import_module
6import tiered_debug as debug
7from es_testbed.exceptions import ResultNotExpected
8from es_testbed.helpers.es_api import exists, put_comp_tmpl
9from es_testbed.helpers.utils import prettystr
10from es_testbed.mgrs.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 def components(self) -> t.Sequence[t.Dict]:
36 """Return a list of component template dictionaries"""
37 retval = []
38 preset = import_module(f'{self.plan.modpath}.definitions')
39 val = preset.settings()
40 if self.plan.ilm_policies[-1]:
41 val['settings']['index.lifecycle.name'] = self.plan.ilm_policies[-1]
42 if self.plan.rollover_alias:
43 val['settings'][
44 'index.lifecycle.rollover_alias'
45 ] = self.plan.rollover_alias
46 retval.append(val)
47 retval.append(preset.mappings())
48 return retval
50 def setup(self) -> None:
51 """Setup the entity manager"""
52 debug.lv2('Starting method...')
53 for component in self.components:
54 put_comp_tmpl(self.client, self.name, component)
55 if not exists(self.client, self.kind, self.name):
56 raise ResultNotExpected(
57 f'Unable to verify creation of component template {self.name}'
58 )
59 self.appender(self.name)
60 logger.info(
61 f'Successfully created all component templates: '
62 f'{prettystr(self.entity_list)}'
63 )
64 debug.lv3('Exiting method')