fdc-shared-kernel 0.0.72__tar.gz → 0.0.73__tar.gz

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 (79) hide show
  1. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/PKG-INFO +1 -1
  2. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/fdc_shared_kernel.egg-info/PKG-INFO +1 -1
  3. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/pyproject.toml +1 -1
  4. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/event_executor/event_executor.py +9 -3
  5. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/logger/__init__.py +2 -1
  6. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/messaging/aws_databus.py +2 -0
  7. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/messaging/utils/event_messages.py +3 -0
  8. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/registries/service_event_registry.py +2 -2
  9. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/status_tracker/status_tracker.py +13 -6
  10. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/README.md +0 -0
  11. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/README_pypi.md +0 -0
  12. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/fdc_shared_kernel.egg-info/SOURCES.txt +0 -0
  13. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/fdc_shared_kernel.egg-info/dependency_links.txt +0 -0
  14. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/fdc_shared_kernel.egg-info/requires.txt +0 -0
  15. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/fdc_shared_kernel.egg-info/top_level.txt +0 -0
  16. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/requirements.txt +0 -0
  17. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/setup.cfg +0 -0
  18. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/__init__.py +0 -0
  19. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/async_task_executor/__init__.py +0 -0
  20. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/async_task_executor/async_task_executor.py +0 -0
  21. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/auth/__init__.py +0 -0
  22. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/auth/jwt_helper.py +0 -0
  23. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/auth/token_handler.py +0 -0
  24. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/config/__init__.py +0 -0
  25. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/database/__init__.py +0 -0
  26. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/enums/__init__.py +0 -0
  27. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/enums/async_task_executor.py +0 -0
  28. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/enums/status_tracker.py +0 -0
  29. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/event_executor/__init__.py +0 -0
  30. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/event_executor/utils.py +0 -0
  31. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/exceptions/__init__.py +0 -0
  32. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/exceptions/configuration_exceptions.py +0 -0
  33. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/exceptions/custom_exceptions.py +0 -0
  34. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/exceptions/data_validation_exceptions.py +0 -0
  35. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/exceptions/http_exceptions.py +0 -0
  36. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/exceptions/infrastructure_exceptions.py +0 -0
  37. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/exceptions/operational_exceptions.py +0 -0
  38. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/exceptions/security_exceptions.py +0 -0
  39. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/http/__init__.py +0 -0
  40. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/http/httpx_http_client.py +0 -0
  41. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/http/request_http_client.py +0 -0
  42. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/interfaces/__init__.py +0 -0
  43. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/interfaces/databus.py +0 -0
  44. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/interfaces/http.py +0 -0
  45. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/interfaces/keyvault.py +0 -0
  46. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/messaging/__init__.py +0 -0
  47. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/messaging/http_databus.py +0 -0
  48. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/messaging/nats_databus.py +0 -0
  49. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/messaging/nats_publisher.py +0 -0
  50. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/messaging/nats_test.py +0 -0
  51. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/messaging/utils/aws_utility.py +0 -0
  52. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/metrics/__init__.py +0 -0
  53. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/metrics/status_tracker.py +0 -0
  54. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/models/__init__.py +0 -0
  55. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/registries/__init__.py +0 -0
  56. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/security/__init__.py +0 -0
  57. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/security/key_vault/__init__.py +0 -0
  58. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/security/key_vault/aws_secret_manager.py +0 -0
  59. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/security/key_vault/azure_keyvault.py +0 -0
  60. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/status_tracker/__init__.py +0 -0
  61. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/__init__.py +0 -0
  62. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/config/__init__.py +0 -0
  63. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/config/test_config.py +0 -0
  64. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/logger/__init__.py +0 -0
  65. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/logger/test_logger.py +0 -0
  66. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/messaging/__init__.py +0 -0
  67. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/messaging/test_aws_databus.py +0 -0
  68. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/messaging/test_event_executor.py +0 -0
  69. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/messaging/test_nats_interface.py +0 -0
  70. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/utils/__init__.py +0 -0
  71. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/utils/test_data_validators.py +0 -0
  72. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/utils/test_date_format_utils.py +0 -0
  73. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/tests/utils/test_string_utils.py +0 -0
  74. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/utils/__init__.py +0 -0
  75. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/utils/data_validators_utils.py +0 -0
  76. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/utils/date_format_utils.py +0 -0
  77. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/utils/string_utils.py +0 -0
  78. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/utils/template_renderer.py +0 -0
  79. {fdc_shared_kernel-0.0.72 → fdc_shared_kernel-0.0.73}/shared_kernel/utils/thread_local_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fdc_shared_kernel
3
- Version: 0.0.72
3
+ Version: 0.0.73
4
4
  Summary: Shared library for microservice
5
5
  Author-email: Shikhil S <shikhil.s@dbizsolution.com>, Ahammed Akdham N <ahammedakdham.n@dbizsolution.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fdc_shared_kernel
3
- Version: 0.0.72
3
+ Version: 0.0.73
4
4
  Summary: Shared library for microservice
5
5
  Author-email: Shikhil S <shikhil.s@dbizsolution.com>, Ahammed Akdham N <ahammedakdham.n@dbizsolution.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "fdc_shared_kernel"
7
- version = "0.0.72"
7
+ version = "0.0.73"
8
8
  requires-python = ">=3.7"
9
9
  readme = "README_pypi.md"
10
10
  description = "Shared library for microservice"
@@ -85,10 +85,14 @@ class EventExecutor:
85
85
  logger.info(
86
86
  f"Processing event {event_msg.event_name}. trace-id: {event_msg.event_meta.trace_id}. span-id: {event_msg.event_meta.trace_id}."
87
87
  )
88
- task: dict = self.status_tracker.get_task(
89
- task=event_msg.event_name, task_id=event_msg.event_meta.job_id
90
- )
91
88
 
89
+ task_details = self.status_tracker.get_task(task_details = event_msg)
90
+ if task_details is not None and task_details["is_duplicate"]:
91
+ logger.info(
92
+ f"Duplicate task {event_msg.event_name} is already in progress. trace-id: {event_msg.event_meta.trace_id}. span-id: {event_msg.event_meta.trace_id}."
93
+ )
94
+ return
95
+ task = task_details.get("task_details") if task_details is not None else None
92
96
  if task is None:
93
97
  logger.info(
94
98
  f"Creating new task for event {event_msg.event_name}. trace-id: {event_msg.event_meta.trace_id}. span-id: {event_msg.event_meta.trace_id}."
@@ -99,6 +103,8 @@ class EventExecutor:
99
103
  task=event_msg.event_name,
100
104
  status=TaskStatus.PROCESSING.value,
101
105
  task_id=event_msg.event_meta.job_id,
106
+ org_id=event_msg.event_meta.org_id,
107
+ entity_id=event_msg.event_meta.entity_id,
102
108
  )
103
109
 
104
110
  # setting tracking payload without the time taken and end time
@@ -33,7 +33,8 @@ class JSONFormatter(logging.Formatter):
33
33
  if hasattr(record, 'meta_data'):
34
34
  log_record.update(record.meta_data)
35
35
  if record.exc_info:
36
- log_record["exception"] = self.formatException(record.exc_info)
36
+ log_record["stack_trace"] = self.formatException(record.exc_info)
37
+ log_record["exception"] = str(record.exc_info[1])
37
38
  return json.dumps(log_record)
38
39
  class Logger:
39
40
  """
@@ -70,6 +70,8 @@ class AWSDataBus(DataBus):
70
70
  task=validated_event_dict["event_name"],
71
71
  status=TaskStatus.QUEUED.value,
72
72
  task_id=validated_event_dict["event_meta"]["job_id"],
73
+ org_id=validated_event_dict["event_meta"]["org_id"],
74
+ entity_id=validated_event_dict["event_meta"].get("entity_id", None),
73
75
  )
74
76
 
75
77
  self.status_tracker.set_event_meta_and_message_receipt_handle(
@@ -19,6 +19,9 @@ class EventMeta:
19
19
  self.trace_id: str = meta_data.get("trace_id")
20
20
  self.job_id: str = meta_data.get("job_id")
21
21
  self.trigger = meta_data.get("trigger")
22
+ self.org_id = meta_data.get("org_id")
23
+ # entity_id is an optional field as some events may not be associated with an entity
24
+ self.entity_id = meta_data.get("entity_id", None)
22
25
  # generate a new span_id for each event if not present already
23
26
  self.span_id: str = meta_data.get("span_id", str(uuid.uuid4()))
24
27
 
@@ -20,9 +20,9 @@ class ServiceEventRegistry:
20
20
  + "/event/subscribe-sync-event/MARK_TASK_AS_FAILURE/"
21
21
  )
22
22
 
23
- GET_TASK = (
23
+ PROCESS_TASK = (
24
24
  config.get("MASTER_SERVICE_BASE_ENDPOINT")
25
- + "/event/subscribe-sync-event/GET_TASK/"
25
+ + "/event/subscribe-sync-event/PROCESS_TASK/"
26
26
  )
27
27
 
28
28
  GET_IN_PROGRESS_TASK = (
@@ -1,6 +1,7 @@
1
1
  from shared_kernel.exceptions.custom_exceptions import StatusTrackerException
2
2
  from shared_kernel.interfaces.databus import DataBus
3
3
  from shared_kernel.messaging import DataBusFactory
4
+ from shared_kernel.messaging.utils.event_messages import EventMessage
4
5
  from shared_kernel.registries.service_event_registry import ServiceEventRegistry
5
6
 
6
7
  service_event_registry = ServiceEventRegistry()
@@ -32,7 +33,7 @@ class StatusTracker:
32
33
  )
33
34
 
34
35
 
35
- def create_task(self, span_id, trace_id, task, status, task_id):
36
+ def create_task(self, span_id, trace_id, task, status, task_id, org_id, entity_id=None):
36
37
  """Publishes a synchronous event to create a task"""
37
38
  try:
38
39
  payload = {
@@ -41,7 +42,10 @@ class StatusTracker:
41
42
  "task": task,
42
43
  "status": status,
43
44
  "task_id": task_id,
45
+ "org_id": org_id,
44
46
  }
47
+ if entity_id:
48
+ payload["entity_id"] = entity_id
45
49
  response = self.databus.request_event(
46
50
  getattr(service_event_registry, "CREATE_TASK"), payload
47
51
  )
@@ -89,15 +93,19 @@ class StatusTracker:
89
93
  raise StatusTrackerException(e)
90
94
 
91
95
 
92
- def get_task(self, task, task_id):
96
+ def get_task(self, task_details: EventMessage):
93
97
  """Publishes a synchronous event to retrieve a task"""
94
98
  try:
95
99
  payload = {
96
- "task": task,
97
- "task_id": task_id,
100
+ "task": task_details.event_name,
101
+ "task_id": task_details.event_meta.job_id,
102
+ "entity_id": task_details.event_meta.entity_id if task_details.event_meta.entity_id else None,
103
+ "trace_id": task_details.event_meta.trace_id,
104
+ "span_id": task_details.event_meta.span_id,
105
+ "org_id": task_details.event_meta.org_id,
98
106
  }
99
107
  response: dict = self.databus.request_event(
100
- getattr(service_event_registry, "GET_TASK"), payload
108
+ getattr(service_event_registry, "PROCESS_TASK"), payload
101
109
  )
102
110
  return response.get("data")
103
111
 
@@ -155,4 +163,3 @@ class StatusTracker:
155
163
 
156
164
  except Exception as e:
157
165
  raise StatusTrackerException(e)
158
-