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

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 

10 

11# pylint: disable=missing-docstring,too-many-arguments,broad-exception-caught 

12 

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') 

27 

28 @property 

29 def suffix(self): # Remapping this to send no suffix for data_streams 

30 return '' 

31 

32 @property 

33 def indexlist(self) -> t.Sequence[str]: 

34 return [x.name for x in self.index_trackers] 

35 

36 def add(self, value): 

37 es_api.create_data_stream(self.client, value) 

38 self.track_data_stream() 

39 

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) 

46 

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 

64 

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) 

69 

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)