Coverage for /Users/buh/.pyenv/versions/3.12.2/envs/es-testbed/lib/python3.12/site-packages/es_testbed/classes/entitymgrs/data_streammgr.py: 100%
54 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-24 22:41 -0600
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-24 22:41 -0600
1"""data_stream Entity Manager Class"""
2import typing as t
3from dotmap import DotMap
4from elasticsearch8 import Elasticsearch
5from es_testbed.helpers import es_api
6from es_testbed.helpers.utils import getlogger
7from .indexmgr import IndexMgr
8from .snapshotmgr import SnapshotMgr
9from ..entities import DataStream, Index
11# pylint: disable=missing-docstring,too-many-arguments,broad-exception-caught
13class DataStreamMgr(IndexMgr):
14 kind = 'data_stream'
15 listname = 'data_stream'
16 def __init__(
17 self,
18 client: Elasticsearch = None,
19 plan: DotMap = None,
20 autobuild: t.Optional[bool] = True,
21 snapmgr: SnapshotMgr = None,
22 ):
23 self.ds = None
24 self.index_trackers = []
25 super().__init__(client=client, plan=plan, autobuild=autobuild, snapmgr=snapmgr)
26 self.logger = getlogger('es_testbed.DataStreamMgr')
28 @property
29 def suffix(self): # Remapping this to send no suffix for data_streams
30 return ''
32 @property
33 def indexlist(self) -> t.Sequence[str]:
34 return [x.name for x in self.index_trackers]
36 def add(self, value):
37 es_api.create_data_stream(self.client, value)
38 self.track_data_stream()
40 def searchable(self):
41 """If the indices were marked as searchable snapshots, we do that now"""
42 for idx, scheme in enumerate(self.plan.entities):
43 self.index_trackers[idx].mount_ss(scheme)
44 self.logger.info('Completed backing index promotion to searchable snapshots.')
45 self.logger.info('data_stream backing indices: %s', self.ds.backing_indices)
47 def setup(self) -> bool:
48 self.index_trackers = [] # Inheritance oddity requires redeclaration here
49 for scheme in self.plan.entities:
50 if not self.entity_list:
51 self.add(self.name)
52 else:
53 self.ds.rollover()
54 self.filler(scheme)
55 self.logger.debug('Created data_stream: %s', self.ds.name)
56 self.logger.debug('Created data_stream backing indices: %s', self.ds.backing_indices)
57 for index in self.ds.backing_indices:
58 self.track_index(index)
59 self.ds.verify(self.indexlist)
60 self.searchable()
61 self.ds.verify(self.indexlist)
62 self.logger.info('Successfully completed data_stream buildout.')
63 self.success = True
65 def track_data_stream(self) -> None:
66 self.logger.debug('Tracking data_stream: %s', self.name)
67 self.ds = DataStream(client=self.client, name=self.name)
68 self.appender(self.name)
70 def track_index(self, name: str) -> None:
71 self.logger.debug('Tracking index: %s', name)
72 entity = Index(
73 client=self.client,
74 name=name,
75 snapmgr=self.snapmgr,
76 policy_name=self.policy_name
77 )
78 self.index_trackers.append(entity)