watchmen-collector-kernel 16.5.8__py3-none-any.whl → 16.5.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. watchmen_collector_kernel/common/settings.py +1 -1
  2. watchmen_collector_kernel/model/__init__.py +2 -0
  3. watchmen_collector_kernel/model/change_data_json.py +1 -0
  4. watchmen_collector_kernel/model/change_data_record.py +1 -0
  5. watchmen_collector_kernel/model/collector_model_config.py +2 -0
  6. watchmen_collector_kernel/model/collector_module_config.py +10 -0
  7. watchmen_collector_kernel/model/collector_table_config.py +1 -0
  8. watchmen_collector_kernel/model/trigger_model.py +3 -0
  9. watchmen_collector_kernel/model/trigger_module.py +9 -0
  10. watchmen_collector_kernel/model/trigger_table.py +1 -0
  11. watchmen_collector_kernel/service/extract_source.py +33 -1
  12. watchmen_collector_kernel/service/lock_helper.py +3 -1
  13. watchmen_collector_kernel/service/task_service.py +1 -2
  14. watchmen_collector_kernel/service/trigger_collector.py +85 -21
  15. watchmen_collector_kernel/storage/__init__.py +2 -0
  16. watchmen_collector_kernel/storage/change_data_json_service.py +15 -0
  17. watchmen_collector_kernel/storage/change_data_record_service.py +16 -0
  18. watchmen_collector_kernel/storage/collector_model_config_service.py +11 -0
  19. watchmen_collector_kernel/storage/collector_module_config_service.py +103 -0
  20. watchmen_collector_kernel/storage/trigger_model_service.py +15 -0
  21. watchmen_collector_kernel/storage/trigger_module_service.py +100 -0
  22. watchmen_collector_kernel/storage/trigger_table_service.py +2 -0
  23. {watchmen_collector_kernel-16.5.8.dist-info → watchmen_collector_kernel-16.5.9.dist-info}/METADATA +9 -9
  24. {watchmen_collector_kernel-16.5.8.dist-info → watchmen_collector_kernel-16.5.9.dist-info}/RECORD +26 -22
  25. {watchmen_collector_kernel-16.5.8.dist-info → watchmen_collector_kernel-16.5.9.dist-info}/LICENSE +0 -0
  26. {watchmen_collector_kernel-16.5.8.dist-info → watchmen_collector_kernel-16.5.9.dist-info}/WHEEL +0 -0
@@ -7,7 +7,7 @@ logger = getLogger(__name__)
7
7
  class CollectorSettings(BaseSettings):
8
8
  LOCK_CLEAN_INTERVAL: int = 60
9
9
  LOCK_CLEAN_TIMEOUT: int = 3600
10
- PARTIAL_SIZE: int = 10000
10
+ PARTIAL_SIZE: int = 100
11
11
 
12
12
  class Config:
13
13
  # secrets_dir = '/var/run'
@@ -1,10 +1,12 @@
1
1
  from .competitive_lock import CompetitiveLock
2
2
  from .scheduled_task import ScheduledTask
3
3
 
4
+ from .collector_module_config import CollectorModuleConfig
4
5
  from .collector_model_config import CollectorModelConfig
5
6
  from .collector_table_config import CollectorTableConfig
6
7
 
7
8
  from .trigger_event import TriggerEvent
9
+ from .trigger_module import TriggerModule
8
10
  from .trigger_model import TriggerModel
9
11
  from .trigger_table import TriggerTable
10
12
 
@@ -24,5 +24,6 @@ class ChangeDataJson(TenantBasedTuple, BaseModel):
24
24
  taskId: int
25
25
  tableTriggerId: int
26
26
  modelTriggerId: int
27
+ moduleTriggerId: int
27
28
  eventTriggerId: int
28
29
 
@@ -14,6 +14,7 @@ class ChangeDataRecord(TenantBasedTuple):
14
14
  result: Dict
15
15
  tableTriggerId: int
16
16
  modelTriggerId: int
17
+ moduleTriggerId: int
17
18
  eventTriggerId: int
18
19
 
19
20
 
@@ -6,7 +6,9 @@ from pydantic import BaseModel
6
6
  class CollectorModelConfig(TenantBasedTuple, OptimisticLock, BaseModel):
7
7
  modelId: str
8
8
  modelName: str
9
+ moduleId: str
9
10
  dependOn: List[str]
11
+ priority: int = 0
10
12
  rawTopicCode: str
11
13
  isParalleled: bool
12
14
 
@@ -0,0 +1,10 @@
1
+ from typing import List
2
+ from watchmen_model.common import TenantBasedTuple, OptimisticLock
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class CollectorModuleConfig(TenantBasedTuple, OptimisticLock, BaseModel):
7
+ moduleId: str
8
+ moduleName: str
9
+ priority: int = 0
10
+
@@ -22,6 +22,7 @@ class JsonColumn(Storable, BaseModel):
22
22
  ignoredPath: List[str] = None
23
23
  needFlatten: bool = None
24
24
  flattenPath: List[str] = None
25
+ jsonPath: List[str] = None
25
26
 
26
27
 
27
28
  def construct_json_column(json_column: Union[JsonColumn, Dict]) -> Optional[JsonColumn]:
@@ -5,4 +5,7 @@ class TriggerModel(TenantBasedTuple):
5
5
  modelTriggerId: int
6
6
  modelName: str
7
7
  isFinished: bool = False
8
+ priority: int
9
+ moduleTriggerId: int
8
10
  eventTriggerId: int
11
+
@@ -0,0 +1,9 @@
1
+ from watchmen_model.common import TenantBasedTuple
2
+
3
+
4
+ class TriggerModule(TenantBasedTuple):
5
+ moduleTriggerId: int
6
+ moduleName: str
7
+ isFinished: bool = False
8
+ priority: int
9
+ eventTriggerId: int
@@ -8,4 +8,5 @@ class TriggerTable(TenantBasedTuple):
8
8
  modelName: str
9
9
  isExtracted: bool = False
10
10
  modelTriggerId: int
11
+ moduleTriggerId: int
11
12
  eventTriggerId: int
@@ -58,7 +58,7 @@ class SourceTableExtractor:
58
58
  tenantId=self.principal_service.tenantId
59
59
  )
60
60
  topic_storage = ask_topic_storage(topic, self.principal_service)
61
- factors = topic_storage.ask_synonym_factors(config.tableName)
61
+ factors = topic_storage.ask_reflect_factors(config.tableName)
62
62
  topic.factors = factors
63
63
  now = get_current_time_in_seconds()
64
64
  topic.createdAt = now
@@ -157,6 +157,34 @@ class SourceTableExtractor:
157
157
 
158
158
  return ArrayHelper(flatten_path_list).reduce(flatten_path, data_dict)
159
159
 
160
+ def process_json_path(inner_json_path_list: List[str], data_dict: Dict) -> Dict:
161
+
162
+ def json_path(data_need_load: Dict, inner_json_path: str) -> Dict:
163
+ json_path_list = inner_json_path.split(".")
164
+ json_path_link_head = LinkList().create_tail(json_path_list)
165
+
166
+ def load(data_loaded: Dict, node: LinkNode) -> Optional[Dict]:
167
+ if data_loaded is None:
168
+ return None
169
+ if node.item in data_loaded:
170
+ if node.next is not None:
171
+ temp = data_loaded[node.item]
172
+ data_loaded[node.item] = load(temp, node.next)
173
+ return data_loaded
174
+ else:
175
+ if data_loaded[node.item]:
176
+ try:
177
+ data_loaded[node.item] = json.loads(data_loaded[node.item])
178
+ return data_loaded
179
+ except ValueError:
180
+ logger.error(f'json node name: {node.item}')
181
+ else:
182
+ return data_loaded
183
+
184
+ return load(data_need_load, json_path_link_head)
185
+
186
+ return ArrayHelper(inner_json_path_list).reduce(json_path, data_dict)
187
+
160
188
  def change_column_value(row: Dict) -> Dict:
161
189
  for key, value in row.items():
162
190
  for column in json_columns:
@@ -175,6 +203,10 @@ class SourceTableExtractor:
175
203
 
176
204
  if column.flattenPath:
177
205
  tmp_data = process_flatten_path(column.flattenPath, tmp_data)
206
+
207
+ if column.jsonPath:
208
+ tmp_data = process_json_path(column.jsonPath, tmp_data)
209
+
178
210
  row[key] = tmp_data
179
211
  else:
180
212
  pass
@@ -1,6 +1,6 @@
1
1
  from typing import Union
2
2
 
3
- from sqlalchemy.exc import IntegrityError
3
+ from sqlalchemy.exc import IntegrityError, OperationalError
4
4
 
5
5
  from watchmen_collector_kernel.model import CompetitiveLock
6
6
  from watchmen_collector_kernel.storage.competitive_lock_service import CompetitiveLockService
@@ -11,6 +11,8 @@ def try_lock_nowait(lock_service: CompetitiveLockService, lock: CompetitiveLock)
11
11
  try:
12
12
  lock_service.insert_one(lock)
13
13
  return True
14
+ except OperationalError:
15
+ return False
14
16
  except IntegrityError:
15
17
  return False
16
18
 
@@ -38,9 +38,8 @@ class TaskService:
38
38
  return self.update_task_result(task)
39
39
  except Exception as e:
40
40
  logger.error(e, exc_info=True, stack_info=True)
41
- task.isFinished = True
42
41
  task.result = format_exc()
43
- return self.scheduled_task_service.update_task(task)
42
+ return self.update_task_result(task)
44
43
 
45
44
  def update_task_result(self, task: ScheduledTask) -> ScheduledTask:
46
45
  self.scheduled_task_service.begin_transaction()
@@ -2,11 +2,12 @@ from typing import Callable, List
2
2
 
3
3
  from watchmen_auth import PrincipalService
4
4
  from watchmen_collector_kernel.model import TriggerEvent, CollectorModelConfig, TriggerModel, TriggerTable, \
5
- CollectorTableConfig
5
+ CollectorTableConfig, TriggerModule, CollectorModuleConfig
6
6
 
7
7
  from watchmen_collector_kernel.storage import TriggerModelService, TriggerTableService, TriggerEventService, \
8
8
  get_trigger_model_service, get_collector_model_config_service, get_trigger_table_service, \
9
- CollectorTableConfigService, get_collector_table_config_service
9
+ CollectorTableConfigService, get_collector_table_config_service, get_collector_module_config_service, \
10
+ get_trigger_module_service, TriggerModuleService, CollectorModelConfigService
10
11
  from watchmen_meta.common import TupleService
11
12
  from watchmen_model.common import Storable
12
13
 
@@ -21,16 +22,57 @@ def redress_storable_id(tuple_service: TupleService,
21
22
  tuple_service.redress_storable_id(a_tuple)
22
23
 
23
24
 
24
- def new_trigger_model(model_name: str, event_trigger_id: str) -> TriggerModel:
25
+ def new_trigger_module(module_name: str, priority: int, event_trigger_id: int) -> TriggerModule:
26
+ return TriggerModule(
27
+ moduleName=module_name,
28
+ priority=priority,
29
+ is_finished=False,
30
+ eventTriggerId=event_trigger_id
31
+ )
32
+
33
+
34
+ def get_trigger_module(event_trigger: TriggerEvent, module_config: CollectorModuleConfig) -> TriggerModule:
35
+ return new_trigger_module(module_config.moduleName, module_config.priority, event_trigger.eventTriggerId)
36
+
37
+
38
+ def save_trigger_module(trigger_module_service: TriggerModuleService,
39
+ trigger_module: TriggerModule,
40
+ principal_service: PrincipalService) -> TriggerModule:
41
+ validate_tenant_id(trigger_module, principal_service)
42
+ redress_storable_id(trigger_module_service, trigger_module)
43
+ # noinspection PyTypeChecker
44
+ return trigger_module_service.create(trigger_module)
45
+
46
+
47
+ def get_trigger_module_action(trigger_event_service: TriggerEventService,
48
+ trigger_event: TriggerEvent) -> Callable[[CollectorModuleConfig], TriggerModule]:
49
+ def create_trigger_module_action(module_config: CollectorModuleConfig) -> TriggerModule:
50
+ trigger_module = get_trigger_module(trigger_event, module_config)
51
+ trigger_module_service = get_trigger_module_service(trigger_event_service.storage,
52
+ trigger_event_service.snowflakeGenerator,
53
+ trigger_event_service.principalService)
54
+ return save_trigger_module(trigger_module_service,
55
+ trigger_module,
56
+ trigger_event_service.principalService)
57
+
58
+ return create_trigger_module_action
59
+
60
+
61
+ def new_trigger_model(model_name: str, priority: int, module_trigger_id: int, event_trigger_id: int) -> TriggerModel:
25
62
  return TriggerModel(
26
63
  modelName=model_name,
64
+ priority=priority,
27
65
  is_finished=False,
66
+ moduleTriggerId=module_trigger_id,
28
67
  eventTriggerId=event_trigger_id
29
68
  )
30
69
 
31
70
 
32
- def get_trigger_model(event_trigger: TriggerEvent, model_config: CollectorModelConfig) -> TriggerModel:
33
- return new_trigger_model(model_config.modelName, event_trigger.eventTriggerId)
71
+ def get_trigger_model(module_trigger: TriggerModule, model_config: CollectorModelConfig) -> TriggerModel:
72
+ return new_trigger_model(model_config.modelName,
73
+ model_config.priority,
74
+ module_trigger.moduleTriggerId,
75
+ module_trigger.eventTriggerId)
34
76
 
35
77
 
36
78
  def save_trigger_model(trigger_model_service: TriggerModelService,
@@ -42,30 +84,37 @@ def save_trigger_model(trigger_model_service: TriggerModelService,
42
84
  return trigger_model_service.create(trigger_model)
43
85
 
44
86
 
45
- def get_trigger_model_action(trigger_event_service: TriggerEventService,
46
- trigger_event: TriggerEvent) -> Callable[[CollectorModelConfig], TriggerModel]:
87
+ def get_trigger_model_action(trigger_module_service: TriggerModuleService,
88
+ trigger_module: TriggerModule) -> Callable[[CollectorModelConfig], TriggerModel]:
47
89
  def create_trigger_model_action(model_config: CollectorModelConfig) -> TriggerModel:
48
- trigger_model = get_trigger_model(trigger_event, model_config)
49
- trigger_model_service = get_trigger_model_service(trigger_event_service.storage,
50
- trigger_event_service.snowflakeGenerator,
51
- trigger_event_service.principalService)
90
+ trigger_model = get_trigger_model(trigger_module, model_config)
91
+ trigger_model_service = get_trigger_model_service(trigger_module_service.storage,
92
+ trigger_module_service.snowflakeGenerator,
93
+ trigger_module_service.principalService)
52
94
  return save_trigger_model(trigger_model_service,
53
95
  trigger_model,
54
- trigger_event_service.principalService)
96
+ trigger_module_service.principalService)
55
97
 
56
98
  return create_trigger_model_action
57
99
 
58
100
 
101
+ def get_model_configs_by_module(collector_model_config_service: CollectorModelConfigService,
102
+ module_config: CollectorModuleConfig) -> List[CollectorModelConfig]:
103
+ return collector_model_config_service.find_by_module_id(module_config.moduleId)
104
+
105
+
59
106
  def new_trigger_table(table_name: str,
60
107
  model_name: str,
61
- model_trigger_id: str,
62
- event_trigger_id: str) -> TriggerTable:
108
+ model_trigger_id: int,
109
+ module_trigger_id: int,
110
+ event_trigger_id: int) -> TriggerTable:
63
111
  return TriggerTable(
64
112
  tableName=table_name,
65
113
  dataCount=0,
66
114
  modelName=model_name,
67
115
  isExtracted=False,
68
116
  modelTriggerId=model_trigger_id,
117
+ moduleTriggerId=module_trigger_id,
69
118
  eventTriggerId=event_trigger_id
70
119
  )
71
120
 
@@ -74,6 +123,7 @@ def get_trigger_table(model_trigger: TriggerModel, table_config: CollectorTableC
74
123
  return new_trigger_table(table_config.tableName,
75
124
  table_config.modelName,
76
125
  model_trigger.modelTriggerId,
126
+ model_trigger.moduleTriggerId,
77
127
  model_trigger.eventTriggerId)
78
128
 
79
129
 
@@ -112,10 +162,19 @@ def trigger_collector(trigger_event_service: TriggerEventService,
112
162
  try:
113
163
  # noinspection PyTypeChecker
114
164
  trigger_event = trigger_event_service.create(trigger_event)
165
+ module_config_service = get_collector_module_config_service(trigger_event_service.storage,
166
+ trigger_event_service.snowflakeGenerator,
167
+ trigger_event_service.principalService)
168
+ module_configs = module_config_service.find_by_tenant(principal_service.get_tenant_id())
169
+ # noinspection PyTypeChecker
170
+ trigger_module_action = get_trigger_module_action(trigger_event_service, trigger_event)
171
+ trigger_module_service = get_trigger_module_service(trigger_event_service.storage,
172
+ trigger_event_service.snowflakeGenerator,
173
+ trigger_event_service.principalService)
115
174
  model_config_service = get_collector_model_config_service(trigger_event_service.storage,
116
175
  trigger_event_service.snowflakeGenerator,
117
176
  trigger_event_service.principalService)
118
- model_configs = model_config_service.find_by_tenant(principal_service.get_tenant_id())
177
+ # model_configs = model_config_service.find_by_tenant(principal_service.get_tenant_id())
119
178
  # noinspection PyTypeChecker
120
179
  trigger_model_action = get_trigger_model_action(trigger_event_service, trigger_event)
121
180
  trigger_model_service = get_trigger_model_service(trigger_event_service.storage,
@@ -125,12 +184,17 @@ def trigger_collector(trigger_event_service: TriggerEventService,
125
184
  table_config_service = get_collector_table_config_service(trigger_event_service.storage,
126
185
  trigger_event_service.snowflakeGenerator,
127
186
  trigger_event_service.principalService)
128
- for model_config in model_configs:
129
- trigger_model = trigger_model_action(model_config)
130
- trigger_table_action = get_trigger_table_action(trigger_model_service, trigger_model)
131
- table_configs = get_table_configs_by_model(table_config_service, model_config)
132
- for table_config in table_configs:
133
- trigger_table_action(table_config)
187
+
188
+ for module_config in module_configs:
189
+ trigger_module = trigger_module_action(module_config)
190
+ trigger_model_action = get_trigger_model_action(trigger_module_service, trigger_module)
191
+ model_configs = get_model_configs_by_module(model_config_service, module_config)
192
+ for model_config in model_configs:
193
+ trigger_model = trigger_model_action(model_config)
194
+ trigger_table_action = get_trigger_table_action(trigger_model_service, trigger_model)
195
+ table_configs = get_table_configs_by_model(table_config_service, model_config)
196
+ for table_config in table_configs:
197
+ trigger_table_action(table_config)
134
198
 
135
199
  trigger_event_service.commit_transaction()
136
200
  except Exception as e:
@@ -3,11 +3,13 @@ from .scheduled_task_service import get_scheduled_task_service, ScheduledTaskSer
3
3
  from .scheduled_task_history_service import get_scheduled_task_history_service, ScheduledTaskHistoryService
4
4
 
5
5
 
6
+ from .collector_module_config_service import get_collector_module_config_service, CollectorModuleConfigService
6
7
  from .collector_model_config_service import get_collector_model_config_service, CollectorModelConfigService
7
8
  from .collector_table_config_service import get_collector_table_config_service, CollectorTableConfigService
8
9
 
9
10
 
10
11
  from .trigger_event_service import get_trigger_event_service, TriggerEventService
12
+ from .trigger_module_service import get_trigger_module_service, TriggerModuleService
11
13
  from .trigger_model_service import get_trigger_model_service, TriggerModelService
12
14
  from .trigger_table_service import get_trigger_table_service, TriggerTableService
13
15
 
@@ -28,6 +28,7 @@ class ChangeDataJsonShaper(EntityShaper):
28
28
  'task_id': entity.taskId,
29
29
  'table_trigger_id': entity.tableTriggerId,
30
30
  'model_trigger_id': entity.modelTriggerId,
31
+ 'module_trigger_id': entity.moduleTriggerId,
31
32
  'event_trigger_id': entity.eventTriggerId
32
33
  })
33
34
 
@@ -48,6 +49,7 @@ class ChangeDataJsonShaper(EntityShaper):
48
49
  taskId=row.get('task_id'),
49
50
  tableTriggerId=row.get('table_trigger_id'),
50
51
  modelTriggerId=row.get('model_trigger_id'),
52
+ moduleTriggerId=row.get('module_trigger_id'),
51
53
  eventTriggerId=row.get('event_trigger_id')
52
54
  ))
53
55
 
@@ -194,6 +196,19 @@ class ChangeDataJsonService(TupleService):
194
196
  finally:
195
197
  self.close_transaction()
196
198
 
199
+ def is_module_finished(self, module_trigger_id: int) -> bool:
200
+ self.begin_transaction()
201
+ try:
202
+ # noinspection PyTypeChecker
203
+ return self.storage.count(self.get_entity_finder(
204
+ criteria=[
205
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='module_trigger_id'), right=module_trigger_id),
206
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName=IS_POSTED), right=False)
207
+ ]
208
+ )) == 0
209
+ finally:
210
+ self.close_transaction()
211
+
197
212
 
198
213
  def get_change_data_json_service(storage: TransactionalStorageSPI,
199
214
  snowflake_generator: SnowflakeGenerator,
@@ -26,6 +26,7 @@ class ChangeDataRecordShaper(EntityShaper):
26
26
  'result': entity.result,
27
27
  'table_trigger_id': entity.tableTriggerId,
28
28
  'model_trigger_id': entity.modelTriggerId,
29
+ 'module_trigger_id': entity.moduleTriggerId,
29
30
  'event_trigger_id': entity.eventTriggerId
30
31
  })
31
32
 
@@ -43,6 +44,7 @@ class ChangeDataRecordShaper(EntityShaper):
43
44
  result=row.get('result'),
44
45
  tableTriggerId=row.get('table_trigger_id'),
45
46
  modelTriggerId=row.get('model_trigger_id'),
47
+ moduleTriggerId=row.get('module_trigger_id'),
46
48
  eventTriggerId=row.get('event_trigger_id')
47
49
  ))
48
50
 
@@ -193,6 +195,20 @@ class ChangeDataRecordService(TupleService):
193
195
  finally:
194
196
  self.close_transaction()
195
197
 
198
+ def is_module_finished(self, module_trigger_id: int) -> bool:
199
+ self.begin_transaction()
200
+ try:
201
+ # noinspection PyTypeChecker
202
+ return self.storage.count(self.get_entity_finder(
203
+ criteria=[
204
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='module_trigger_id'),
205
+ right=module_trigger_id),
206
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName=IS_MERGED), right=False)
207
+ ]
208
+ )) == 0
209
+ finally:
210
+ self.close_transaction()
211
+
196
212
 
197
213
  def get_change_data_record_service(storage: TransactionalStorageSPI,
198
214
  snowflake_generator: SnowflakeGenerator,
@@ -14,7 +14,9 @@ class CollectorModelConfigShaper(EntityShaper):
14
14
  return TupleShaper.serialize_tenant_based(config, {
15
15
  'model_id': config.modelId,
16
16
  'model_name': config.modelName,
17
+ 'module_id': config.moduleId,
17
18
  'depend_on': config.dependOn,
19
+ 'priority': config.priority,
18
20
  'raw_topic_code': config.rawTopicCode,
19
21
  'is_paralleled': config.isParalleled
20
22
  })
@@ -24,7 +26,9 @@ class CollectorModelConfigShaper(EntityShaper):
24
26
  return TupleShaper.deserialize_tenant_based(row, CollectorModelConfig(
25
27
  modelId=row.get('model_id'),
26
28
  modelName=row.get('model_name'),
29
+ moduleId=row.get('module_id'),
27
30
  dependOn=row.get('depend_on'),
31
+ priority=row.get('priority'),
28
32
  rawTopicCode=row.get('raw_topic_code'),
29
33
  isParalleled=row.get('is_paralleled')
30
34
  ))
@@ -99,6 +103,13 @@ class CollectorModelConfigService(TupleService):
99
103
  finally:
100
104
  self.close_transaction()
101
105
 
106
+ def find_by_module_id(self, module_id: str) -> Optional[List[CollectorModelConfig]]:
107
+ # noinspection PyTypeChecker
108
+ return self.storage.find(self.get_entity_finder(
109
+ criteria=[
110
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='module_id'), right=module_id)]
111
+ ))
112
+
102
113
 
103
114
  def get_collector_model_config_service(storage: TransactionalStorageSPI,
104
115
  snowflake_generator: SnowflakeGenerator,
@@ -0,0 +1,103 @@
1
+ from typing import Optional, List
2
+
3
+ from watchmen_auth import PrincipalService
4
+ from watchmen_collector_kernel.model import CollectorModuleConfig
5
+ from watchmen_meta.common import TupleService, TupleShaper
6
+ from watchmen_meta.common.storage_service import StorableId
7
+ from watchmen_model.common import Storable, TenantId, CollectorModelConfigId
8
+ from watchmen_storage import EntityName, EntityRow, EntityShaper, TransactionalStorageSPI, SnowflakeGenerator, \
9
+ EntityCriteriaExpression, ColumnNameLiteral
10
+
11
+
12
+ class CollectorModuleConfigShaper(EntityShaper):
13
+ def serialize(self, config: CollectorModuleConfig) -> EntityRow:
14
+ return TupleShaper.serialize_tenant_based(config, {
15
+ 'module_id': config.moduleId,
16
+ 'module_name': config.moduleName,
17
+ 'priority': config.priority
18
+ })
19
+
20
+ def deserialize(self, row: EntityRow) -> CollectorModuleConfig:
21
+ # noinspection PyTypeChecker
22
+ return TupleShaper.deserialize_tenant_based(row, CollectorModuleConfig(
23
+ moduleId=row.get('module_id'),
24
+ moduleName=row.get('module_name'),
25
+ priority=row.get('priority')
26
+ ))
27
+
28
+
29
+ COLLECTOR_MODULE_CONFIG_ENTITY_NAME = 'collector_module_config'
30
+ COLLECTOR_MODULE_CONFIG_ENTITY_SHAPER = CollectorModuleConfigShaper()
31
+
32
+
33
+ class CollectorModuleConfigService(TupleService):
34
+ def should_record_operation(self) -> bool:
35
+ return False
36
+
37
+ def get_entity_name(self) -> EntityName:
38
+ return COLLECTOR_MODULE_CONFIG_ENTITY_NAME
39
+
40
+ def get_entity_shaper(self) -> EntityShaper:
41
+ return COLLECTOR_MODULE_CONFIG_ENTITY_SHAPER
42
+
43
+ # noinspection SpellCheckingInspection
44
+ def get_storable_id_column_name(self) -> EntityName:
45
+ return "module_id"
46
+
47
+ def get_storable_id(self, storable: CollectorModuleConfig) -> StorableId:
48
+ return storable.moduleId
49
+
50
+ # noinspection SpellCheckingInspection
51
+ def set_storable_id(self, storable: CollectorModuleConfig, storable_id: CollectorModelConfigId) -> Storable:
52
+ storable.moduleId = storable_id
53
+ return storable
54
+
55
+ def create_module_config(self, module_config: CollectorModuleConfig) -> CollectorModuleConfig:
56
+ try:
57
+ self.storage.connect()
58
+ # noinspection PyTypeChecker
59
+ return self.create(module_config)
60
+ finally:
61
+ self.storage.close()
62
+
63
+ def update_module_config(self, module_config: CollectorModuleConfig) -> CollectorModuleConfig:
64
+ try:
65
+ self.storage.connect()
66
+ # noinspection PyTypeChecker
67
+ return self.update(module_config)
68
+ finally:
69
+ self.storage.close()
70
+
71
+ def find_by_module_id(self, module_id: str) -> Optional[CollectorModuleConfig]:
72
+ self.begin_transaction()
73
+ try:
74
+ return self.storage.find_one(self.get_entity_finder(
75
+ criteria=[
76
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='module_id'), right=module_id)]
77
+ ))
78
+ finally:
79
+ self.close_transaction()
80
+
81
+ def find_by_tenant(self, tenant_id: TenantId) -> Optional[List[CollectorModuleConfig]]:
82
+ # noinspection PyTypeChecker
83
+ return self.storage.find(self.get_entity_finder(
84
+ criteria=[
85
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='tenant_id'), right=tenant_id)]
86
+ ))
87
+
88
+ def find_by_name(self, module_name: str) -> Optional[CollectorModuleConfig]:
89
+ self.begin_transaction()
90
+ try:
91
+ return self.storage.find_one(self.get_entity_finder(
92
+ criteria=[
93
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='module_name'), right=module_name)]
94
+ ))
95
+ finally:
96
+ self.close_transaction()
97
+
98
+
99
+ def get_collector_module_config_service(storage: TransactionalStorageSPI,
100
+ snowflake_generator: SnowflakeGenerator,
101
+ principal_service: PrincipalService
102
+ ) -> CollectorModuleConfigService:
103
+ return CollectorModuleConfigService(storage, snowflake_generator, principal_service)
@@ -16,7 +16,9 @@ class TriggerModelShaper(EntityShaper):
16
16
  return TupleShaper.serialize_tenant_based(entity, {
17
17
  'model_trigger_id': entity.modelTriggerId,
18
18
  'model_name': entity.modelName,
19
+ 'priority': entity.priority,
19
20
  'is_finished': entity.isFinished,
21
+ 'module_trigger_id': entity.moduleTriggerId,
20
22
  'event_trigger_id': entity.eventTriggerId
21
23
  })
22
24
 
@@ -25,7 +27,9 @@ class TriggerModelShaper(EntityShaper):
25
27
  return TupleShaper.deserialize_tenant_based(row, TriggerModel(
26
28
  modelTriggerId=row.get('model_trigger_id'),
27
29
  modelName=row.get('model_name'),
30
+ priority=row.get('priority'),
28
31
  isFinished=row.get('is_finished'),
32
+ moduleTriggerId=row.get('module_trigger_id'),
29
33
  eventTriggerId=row.get('event_trigger_id')
30
34
  ))
31
35
 
@@ -88,6 +92,17 @@ class TriggerModelService(TupleService):
88
92
  finally:
89
93
  self.close_transaction()
90
94
 
95
+ def find_by_module_trigger_id(self, module_trigger_id: int) -> List[TriggerModel]:
96
+ self.begin_transaction()
97
+ try:
98
+ # noinspection PyTypeChecker
99
+ return self.storage.find(self.get_entity_finder(
100
+ criteria=[
101
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='module_trigger_id'), right=module_trigger_id)
102
+ ]
103
+ ))
104
+ finally:
105
+ self.close_transaction()
91
106
 
92
107
  def get_trigger_model_service(storage: TransactionalStorageSPI,
93
108
  snowflake_generator: SnowflakeGenerator,
@@ -0,0 +1,100 @@
1
+ from typing import Optional, List
2
+
3
+ from watchmen_auth import PrincipalService
4
+ from watchmen_collector_kernel.common import IS_FINISHED, TENANT_ID
5
+ from watchmen_collector_kernel.model import TriggerModule
6
+ from watchmen_meta.common import TupleShaper, TupleService
7
+ from watchmen_meta.common.storage_service import StorableId
8
+ from watchmen_model.common import Storable, ModelTriggerId
9
+ from watchmen_storage import EntityName, EntityRow, EntityShaper, TransactionalStorageSPI, SnowflakeGenerator, \
10
+ EntityCriteriaExpression, ColumnNameLiteral
11
+
12
+
13
+ class TriggerModuleShaper(EntityShaper):
14
+
15
+ def serialize(self, entity: TriggerModule) -> EntityRow:
16
+ return TupleShaper.serialize_tenant_based(entity, {
17
+ 'module_trigger_id': entity.moduleTriggerId,
18
+ 'module_name': entity.moduleName,
19
+ 'priority': entity.priority,
20
+ 'is_finished': entity.isFinished,
21
+ 'event_trigger_id': entity.eventTriggerId
22
+ })
23
+
24
+ def deserialize(self, row: EntityRow) -> TriggerModule:
25
+ # noinspection PyTypeChecker
26
+ return TupleShaper.deserialize_tenant_based(row, TriggerModule(
27
+ moduleTriggerId=row.get('module_trigger_id'),
28
+ moduleName=row.get('module_name'),
29
+ priority=row.get('priority'),
30
+ isFinished=row.get('is_finished'),
31
+ eventTriggerId=row.get('event_trigger_id')
32
+ ))
33
+
34
+
35
+ TRIGGER_MODULE_TABLE = 'trigger_module'
36
+ TRIGGER_MODULE_ENTITY_SHAPER = TriggerModuleShaper()
37
+
38
+
39
+ class TriggerModuleService(TupleService):
40
+
41
+ def should_record_operation(self) -> bool:
42
+ return False
43
+
44
+ def get_entity_name(self) -> EntityName:
45
+ return TRIGGER_MODULE_TABLE
46
+
47
+ def get_entity_shaper(self) -> EntityShaper:
48
+ return TRIGGER_MODULE_ENTITY_SHAPER
49
+
50
+ def get_storable_id_column_name(self) -> EntityName:
51
+ return 'module_trigger_id'
52
+
53
+ def get_storable_id(self, storable: TriggerModule) -> StorableId:
54
+ # noinspection PyTypeChecker
55
+ return storable.moduleTriggerId
56
+
57
+ def set_storable_id(
58
+ self, storable: TriggerModule, storable_id: ModelTriggerId) -> Storable:
59
+ storable.moduleTriggerId = storable_id
60
+ return storable
61
+
62
+ def find_trigger_by_id(self, trigger_id: int) -> Optional[TriggerModule]:
63
+ self.begin_transaction()
64
+ try:
65
+ return self.find_by_id(trigger_id)
66
+ finally:
67
+ self.close_transaction()
68
+
69
+ def is_finished(self, event_trigger_id: str) -> bool:
70
+ self.begin_transaction()
71
+ try:
72
+ return self.storage.count(self.get_entity_finder(
73
+ criteria=[
74
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName=IS_FINISHED), right=False),
75
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='event_trigger_id'),
76
+ right=event_trigger_id)
77
+ ]
78
+ )) == 0
79
+ finally:
80
+ self.close_transaction()
81
+
82
+ def find_by_event_trigger_id(self, event_trigger_id: int) -> List[TriggerModule]:
83
+ self.begin_transaction()
84
+ try:
85
+ # noinspection PyTypeChecker
86
+ return self.storage.find(self.get_entity_finder(
87
+ criteria=[
88
+ EntityCriteriaExpression(left=ColumnNameLiteral(columnName='event_trigger_id'),
89
+ right=event_trigger_id)
90
+ ]
91
+ ))
92
+ finally:
93
+ self.close_transaction()
94
+
95
+
96
+ def get_trigger_module_service(storage: TransactionalStorageSPI,
97
+ snowflake_generator: SnowflakeGenerator,
98
+ principal_service: PrincipalService
99
+ ) -> TriggerModuleService:
100
+ return TriggerModuleService(storage, snowflake_generator, principal_service)
@@ -19,6 +19,7 @@ class TriggerTableShaper(EntityShaper):
19
19
  'is_extracted': entity.isExtracted,
20
20
  'data_count': entity.dataCount,
21
21
  'model_trigger_id': entity.modelTriggerId,
22
+ 'module_trigger_id': entity.moduleTriggerId,
22
23
  'event_trigger_id': entity.eventTriggerId
23
24
  })
24
25
 
@@ -31,6 +32,7 @@ class TriggerTableShaper(EntityShaper):
31
32
  isExtracted=row.get('is_extracted'),
32
33
  dataCount=row.get('data_count'),
33
34
  modelTriggerId=row.get('model_trigger_id'),
35
+ moduleTriggerId=row.get('module_trigger_id'),
34
36
  eventTriggerId=row.get('event_trigger_id')
35
37
  ))
36
38
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: watchmen-collector-kernel
3
- Version: 16.5.8
3
+ Version: 16.5.9
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: botlikes
@@ -19,11 +19,11 @@ Provides-Extra: oss
19
19
  Provides-Extra: postgresql
20
20
  Provides-Extra: s3
21
21
  Requires-Dist: numpy (>=1.23.3,<2.0.0)
22
- Requires-Dist: watchmen-data-kernel (==16.5.8)
23
- Requires-Dist: watchmen-storage-mongodb (==16.5.8) ; extra == "mongodb"
24
- Requires-Dist: watchmen-storage-mssql (==16.5.8) ; extra == "mssql"
25
- Requires-Dist: watchmen-storage-mysql (==16.5.8) ; extra == "mysql"
26
- Requires-Dist: watchmen-storage-oracle (==16.5.8) ; extra == "oracle"
27
- Requires-Dist: watchmen-storage-oss (==16.5.8) ; extra == "oss"
28
- Requires-Dist: watchmen-storage-postgresql (==16.5.8) ; extra == "postgresql"
29
- Requires-Dist: watchmen-storage-s3 (==16.5.8) ; extra == "s3"
22
+ Requires-Dist: watchmen-data-kernel (==16.5.9)
23
+ Requires-Dist: watchmen-storage-mongodb (==16.5.9) ; extra == "mongodb"
24
+ Requires-Dist: watchmen-storage-mssql (==16.5.9) ; extra == "mssql"
25
+ Requires-Dist: watchmen-storage-mysql (==16.5.9) ; extra == "mysql"
26
+ Requires-Dist: watchmen-storage-oracle (==16.5.9) ; extra == "oracle"
27
+ Requires-Dist: watchmen-storage-oss (==16.5.9) ; extra == "oss"
28
+ Requires-Dist: watchmen-storage-postgresql (==16.5.9) ; extra == "postgresql"
29
+ Requires-Dist: watchmen-storage-s3 (==16.5.9) ; extra == "s3"
@@ -1,45 +1,49 @@
1
1
  watchmen_collector_kernel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  watchmen_collector_kernel/common/__init__.py,sha256=xDuOxA-p9hVm0IzAsPlrnsohNJgZ0qF6g8Kx8bn1p-E,263
3
3
  watchmen_collector_kernel/common/constants.py,sha256=mIsGBhAjHbmeuVeNYDOKLhiBqG2sSX-0vs8ipEEIo9E,302
4
- watchmen_collector_kernel/common/settings.py,sha256=xOOrpMe2E8MNek2Z4CLFTQp_yw2NOJCVi_Y28kgukOc,697
5
- watchmen_collector_kernel/model/__init__.py,sha256=HyMAWNLN1ZIppJtLbqVIIgyFEqrQZshNZk5It5fqKbY,666
6
- watchmen_collector_kernel/model/change_data_json.py,sha256=-oNIGsvYo8KJJsSFusbGa9kIuFfE0otLnWe-zz9O42A,495
4
+ watchmen_collector_kernel/common/settings.py,sha256=p1I-LpMYRyg_Wx-C15vLYsJf54iwBxH5brqg8s9CJDk,695
5
+ watchmen_collector_kernel/model/__init__.py,sha256=E6niSOjVdFtNfpvghy9z8WoPqXfIOnsbc_HBXWbKvCk,767
6
+ watchmen_collector_kernel/model/change_data_json.py,sha256=M3hYIAoL1ZmlcfGjurQIA7sGiXmAoD12UFby1yNNWDs,517
7
7
  watchmen_collector_kernel/model/change_data_json_history.py,sha256=L9ACRe5tCP5Pc5MrpAVkLHe-6EfgZsUBfnQ2BXIYu4M,99
8
- watchmen_collector_kernel/model/change_data_record.py,sha256=vadzugcX4nl6G3F-jt7DtuVqjE8vtlasu86DDjpaGGM,330
8
+ watchmen_collector_kernel/model/change_data_record.py,sha256=Vfy-wpy-TaXwOFrilq3pbZ1AqldBpT1apMkKnTaVl7M,352
9
9
  watchmen_collector_kernel/model/change_data_record_history.py,sha256=87XLw51oT8TXDRbQLWKy4U1Tyn3KtM22G5wPlMSYCv8,106
10
- watchmen_collector_kernel/model/collector_model_config.py,sha256=oE0T9I_9uGppttoytvzl7-35WgwlWu7s6awNtsK4Q20,288
11
- watchmen_collector_kernel/model/collector_table_config.py,sha256=gW7B26LdJt7jXbC6nNSNpQTooeSLGSVGhdgRHFLKD3M,2907
10
+ watchmen_collector_kernel/model/collector_model_config.py,sha256=t31ZWoe_ITeemrzEaXtHVPiuK_n-jiHG9UlpqjxPS4s,322
11
+ watchmen_collector_kernel/model/collector_module_config.py,sha256=0knkFhBdx4gpRXMfrnNWJlmuKMxqC643TJ8-fYDr1nA,250
12
+ watchmen_collector_kernel/model/collector_table_config.py,sha256=GEY71Ofkkzx-vAQK3xNJT2LPwIPE0Y4Hy6E5mwCtV4E,2935
12
13
  watchmen_collector_kernel/model/competitive_lock.py,sha256=fxDRuzZpsgrZjGeuADS3zRYqQioqWhg72Pr592U_Yvw,264
13
14
  watchmen_collector_kernel/model/condition.py,sha256=jGsjvb5z9XRFW0B55k-iC2_Zle4rl-A5J_6PB6EV6mA,1942
14
15
  watchmen_collector_kernel/model/scheduled_task.py,sha256=-HBwZVbCkuZaTedixeH0s3z-d09nXSlERzQBPfNGfsY,1362
15
16
  watchmen_collector_kernel/model/scheduled_task_history.py,sha256=0lgWIQWN2r_HcMoLGwKxzLmaxGNtr0NZF7NaT_DeOyE,93
16
17
  watchmen_collector_kernel/model/trigger_event.py,sha256=ZjVgWQS_qqILchw4fGFzxn1tJUMx77s2_UpyiBd7azA,251
17
- watchmen_collector_kernel/model/trigger_model.py,sha256=NpnIbdax8vQeGYeGcOMpWpjYUhkeZUil--6-yTNpv3k,175
18
- watchmen_collector_kernel/model/trigger_table.py,sha256=aPYJlIb-8aX_-O6vZQp3DU58zYtyosYLGFjpL81ijds,229
18
+ watchmen_collector_kernel/model/trigger_model.py,sha256=LGhtT8xmeDGB1UivAiaQ9FaHYYkaIjKztRUIuyHGBes,213
19
+ watchmen_collector_kernel/model/trigger_module.py,sha256=LVhhS-tD5Gl7GLxKDmadSYJxkSJYwlKrlnl93h4-yZQ,193
20
+ watchmen_collector_kernel/model/trigger_table.py,sha256=5ARZAJ9W5qTnvlH0Zsx4NZ8bYUqWauiZxY63M9-JTYk,251
19
21
  watchmen_collector_kernel/service/__init__.py,sha256=hsg-38u7V3QizNmmuEtOw8gC7QEOopVInLbY97MiwuM,426
20
22
  watchmen_collector_kernel/service/criteria_builder.py,sha256=NAk0yQBn4KARttqEOwWozxIlqkVuGPTQ8n3Zk6gjwcQ,2360
21
23
  watchmen_collector_kernel/service/data_capture.py,sha256=45asoQQlv016NKsPoiUVgaSCOJzUBHDCmWr7XPt-8VI,2873
22
- watchmen_collector_kernel/service/extract_source.py,sha256=7B6DTxD6iYlBiaPYGgQ-W14Ty_4YcPbO97w1kF-vunE,6560
24
+ watchmen_collector_kernel/service/extract_source.py,sha256=8Yy3J2Cb62jskWEXewyeu4TL1luu-MzHaOIrCSQdMv0,7622
23
25
  watchmen_collector_kernel/service/extract_utils.py,sha256=PIyxFG7U37ZXLYlOdIK-Dh-kBptXPFqk-9-b1LuPL1A,2452
24
26
  watchmen_collector_kernel/service/lock_clean.py,sha256=-TVsJjr61MtgBU67S9hBrcH4Mb7xFEG61njq9GA5obY,1142
25
- watchmen_collector_kernel/service/lock_helper.py,sha256=GxqjIsCD-jn5kDICVWS1LlTFCuMpnRSpcrQtPLv5bxs,842
27
+ watchmen_collector_kernel/service/lock_helper.py,sha256=SJEbaj2-qKNYcu0oboEw1SSRYnqsE_l2CypFkQNL5EE,901
26
28
  watchmen_collector_kernel/service/task_housekeeping.py,sha256=i1lnZ4jo-RLjLQD0Z7HSLQqjXuSqdL3zqHDfFVaNbe8,1673
27
- watchmen_collector_kernel/service/task_service.py,sha256=7YhuM1xiQhXEROiFezidyA8UaAVREingdzZhlydwfg0,3821
28
- watchmen_collector_kernel/service/trigger_collector.py,sha256=IP_ILJNMhahBogtvfS1iHDOJAxKCDBDJFXTDi98R11M,6790
29
- watchmen_collector_kernel/storage/__init__.py,sha256=9jj793SaeAJ637JisLMXDnp_59Zs20Q4hldYzBkdgjA,1173
29
+ watchmen_collector_kernel/service/task_service.py,sha256=pcJODNYAjxesuymSgedDuPSMaDxzpee-KcnpWk4ktHI,3779
30
+ watchmen_collector_kernel/service/trigger_collector.py,sha256=Aq7YCuAkJ2qZixCYjhmG0FWFtm2zng7g6QTmX1Oii10,10348
31
+ watchmen_collector_kernel/storage/__init__.py,sha256=064rAoXd3IkhPL6aVisW4BGYImKItD6h3btXsHkrBZo,1369
30
32
  watchmen_collector_kernel/storage/change_data_json_history_service.py,sha256=8WPdazvG6EPTOtmiAXtb1yAMRwUaBmD-C6S0ZwsCMrw,1774
31
- watchmen_collector_kernel/storage/change_data_json_service.py,sha256=v_NslDdCRgKjCqIOgcQwD7hA-Ea14NOB4Zkr_g3zqBo,8464
33
+ watchmen_collector_kernel/storage/change_data_json_service.py,sha256=ERGIKs8j71shpmYnvvie-Hsf8F9ZEX0MF8uy9aGkeDI,9102
32
34
  watchmen_collector_kernel/storage/change_data_record_history_service.py,sha256=q_41H2AQGLf_XD2W6ZsATLWvxpdK50swOWt5IMCTWjg,1845
33
- watchmen_collector_kernel/storage/change_data_record_service.py,sha256=QUwqn-lTIf0dYWfEKEJXy16nY-Iz6NLnihWYWP1BoQ4,7953
34
- watchmen_collector_kernel/storage/collector_model_config_service.py,sha256=kWLjmppPpRuN0VptiAEGA38BJ20fFD5Q5gxPZJRbQYs,3830
35
+ watchmen_collector_kernel/storage/change_data_record_service.py,sha256=trmvO8KwuECC5nFKBLMPX_LE_gtbdXGV5JWLcWz2Lmw,8621
36
+ watchmen_collector_kernel/storage/collector_model_config_service.py,sha256=vl04Wm-PBl-qePGhNYVAqfW6Rq513lDGwikK_tGyPOs,4245
37
+ watchmen_collector_kernel/storage/collector_module_config_service.py,sha256=iHWYlOlzTn4iomtKu0e3SCxV1ubbdxak0bOm9tFjcBo,3711
35
38
  watchmen_collector_kernel/storage/collector_table_config_service.py,sha256=GX8zCReNd7xM07dnBEQal7NeFUgpZAWQInjdW8awmvY,5882
36
39
  watchmen_collector_kernel/storage/competitive_lock_service.py,sha256=jjxxHb4Dr0DIDX_g26wtCa8vGLGLnc4BJQGl0d3J31M,2534
37
40
  watchmen_collector_kernel/storage/scheduled_task_history_service.py,sha256=f-JXZ5G87oy7FdYPkbbfTKhI_oRm4wauWNvTw9hxGjM,1586
38
41
  watchmen_collector_kernel/storage/scheduled_task_service.py,sha256=gMv3jxAYJg_sqV4pD5WmV4LXF9Wz8-41DnbkEgwoW8o,6825
39
42
  watchmen_collector_kernel/storage/trigger_event_service.py,sha256=DKSCQ0sYSH3uAtGmokvncD9FIYvjoVsk7QtqdRMQGhM,3099
40
- watchmen_collector_kernel/storage/trigger_model_service.py,sha256=0-_YcL5FNGHy2MKn8vTYrWFaYOPW_u4iKQRG00AOfCI,3219
41
- watchmen_collector_kernel/storage/trigger_table_service.py,sha256=RHiFJaT3UQmCpz-gxnfsoBPV7lS8JM1i9DCQn3BnfA4,3779
42
- watchmen_collector_kernel-16.5.8.dist-info/LICENSE,sha256=iuuG7ErblOdcEZi5u89VXS0VIUiTb4flerGp_PAS9E4,1061
43
- watchmen_collector_kernel-16.5.8.dist-info/METADATA,sha256=jmiycosMKKac6fzPoV3KM51tSeFHbiMAfpp4paDhMQ4,1174
44
- watchmen_collector_kernel-16.5.8.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
45
- watchmen_collector_kernel-16.5.8.dist-info/RECORD,,
43
+ watchmen_collector_kernel/storage/trigger_model_service.py,sha256=FE_88sYzh9ibUS1bOyDmGvryfPQraqkMbZc3BKtzfpI,3760
44
+ watchmen_collector_kernel/storage/trigger_module_service.py,sha256=Ca4J8vnBzS90qP3ljwDJ7lt6MzaOushGjoFRwsSKfHI,3377
45
+ watchmen_collector_kernel/storage/trigger_table_service.py,sha256=sQXHyszSqUxYcstnc59r7fTIrGknyDsX3qivDOymZ4A,3876
46
+ watchmen_collector_kernel-16.5.9.dist-info/LICENSE,sha256=iuuG7ErblOdcEZi5u89VXS0VIUiTb4flerGp_PAS9E4,1061
47
+ watchmen_collector_kernel-16.5.9.dist-info/METADATA,sha256=ThU7GXuAHSAKbbxo0qujl1g5fO1r6kJQzq0PTspSwMI,1174
48
+ watchmen_collector_kernel-16.5.9.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
49
+ watchmen_collector_kernel-16.5.9.dist-info/RECORD,,