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