SIENTIAPDE-1150
SIENTIAPDE-1150: enhance MongoDB activities to filter successful pipelines; update orchestration workflow to include timestamp management for updated, created, and deleted pipelines; adjust tests to reflect new success criteria
This commit is contained in:
@@ -202,7 +202,7 @@ class MongoDB(BaseActivity):
|
|||||||
{"$or": [
|
{"$or": [
|
||||||
{"schedule_name": pipeline["schedule_name"],
|
{"schedule_name": pipeline["schedule_name"],
|
||||||
"namespace": pipeline["namespace"]}
|
"namespace": pipeline["namespace"]}
|
||||||
for pipeline in updated_pipelines
|
for pipeline in updated_pipelines if pipeline["success"]
|
||||||
]},
|
]},
|
||||||
{"$set": {"updated_at": now}}
|
{"$set": {"updated_at": now}}
|
||||||
)
|
)
|
||||||
@@ -222,7 +222,7 @@ class MongoDB(BaseActivity):
|
|||||||
"schedule_name": pipeline["schedule_name"],
|
"schedule_name": pipeline["schedule_name"],
|
||||||
"namespace": pipeline["namespace"],
|
"namespace": pipeline["namespace"],
|
||||||
"updated_at": now
|
"updated_at": now
|
||||||
} for pipeline in created_pipelines])
|
} for pipeline in created_pipelines if pipeline["success"]])
|
||||||
|
|
||||||
@activity.defn(name="delete_pipelines_timestamps")
|
@activity.defn(name="delete_pipelines_timestamps")
|
||||||
async def delete_pipelines_timestamps(self, input_data: dict[str, Any]) -> None:
|
async def delete_pipelines_timestamps(self, input_data: dict[str, Any]) -> None:
|
||||||
@@ -237,6 +237,6 @@ class MongoDB(BaseActivity):
|
|||||||
"$or": [
|
"$or": [
|
||||||
{"schedule_name": pipeline["schedule_name"],
|
{"schedule_name": pipeline["schedule_name"],
|
||||||
"namespace": pipeline["namespace"]}
|
"namespace": pipeline["namespace"]}
|
||||||
for pipeline in deleted_pipelines
|
for pipeline in deleted_pipelines if pipeline["success"]
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -199,5 +199,35 @@ class Orchestrator:
|
|||||||
start_to_close_timeout=timedelta(seconds=60)
|
start_to_close_timeout=timedelta(seconds=60)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
update_pipelines_timestamps_handler = workflow.execute_activity_method(
|
||||||
|
Activities.update_pipelines_timestamps,
|
||||||
|
{
|
||||||
|
'updated_pipelines': schedule_update_report
|
||||||
|
},
|
||||||
|
retry_policy=retry_policy,
|
||||||
|
start_to_close_timeout=timedelta(seconds=60)
|
||||||
|
)
|
||||||
|
|
||||||
|
create_pipelines_timestamps_handler = workflow.execute_activity_method(
|
||||||
|
Activities.create_pipelines_timestamps,
|
||||||
|
{
|
||||||
|
'created_pipelines': schedule_insertion_report
|
||||||
|
},
|
||||||
|
retry_policy=retry_policy,
|
||||||
|
start_to_close_timeout=timedelta(seconds=60)
|
||||||
|
)
|
||||||
|
|
||||||
|
delete_pipelines_timestamps_handler = workflow.execute_activity_method(
|
||||||
|
Activities.delete_pipelines_timestamps,
|
||||||
|
{
|
||||||
|
'deleted_pipelines': schedule_deletion_report
|
||||||
|
},
|
||||||
|
retry_policy=retry_policy,
|
||||||
|
start_to_close_timeout=timedelta(seconds=60)
|
||||||
|
)
|
||||||
|
|
||||||
await schedule_report_handler
|
await schedule_report_handler
|
||||||
await slot_report_handler
|
await slot_report_handler
|
||||||
|
await update_pipelines_timestamps_handler
|
||||||
|
await create_pipelines_timestamps_handler
|
||||||
|
await delete_pipelines_timestamps_handler
|
||||||
|
|||||||
@@ -250,8 +250,8 @@ async def test_aggregate_documents_in_mongodb_missing_aggregation(mongo_db):
|
|||||||
@patch("orchestrator.activities.mongo_db.datetime")
|
@patch("orchestrator.activities.mongo_db.datetime")
|
||||||
async def test_update_pipelines_timestamps_success(datetime_mock, mongo_db):
|
async def test_update_pipelines_timestamps_success(datetime_mock, mongo_db):
|
||||||
input_data = {"updated_pipelines": [
|
input_data = {"updated_pipelines": [
|
||||||
{"schedule_name": "test1", "namespace": "test1"},
|
{"schedule_name": "test1", "namespace": "test1", "success": True},
|
||||||
{"schedule_name": "test2", "namespace": "test2"}
|
{"schedule_name": "test2", "namespace": "test2", "success": True}
|
||||||
]}
|
]}
|
||||||
mongo_db.database["pipelines"].update_many.return_value = MagicMock()
|
mongo_db.database["pipelines"].update_many.return_value = MagicMock()
|
||||||
await mongo_db.update_pipelines_timestamps(input_data)
|
await mongo_db.update_pipelines_timestamps(input_data)
|
||||||
@@ -269,8 +269,8 @@ async def test_update_pipelines_timestamps_success(datetime_mock, mongo_db):
|
|||||||
@patch("orchestrator.activities.mongo_db.datetime")
|
@patch("orchestrator.activities.mongo_db.datetime")
|
||||||
async def test_create_pipelines_timestamps_success(datetime_mock, mongo_db):
|
async def test_create_pipelines_timestamps_success(datetime_mock, mongo_db):
|
||||||
input_data = {"created_pipelines": [
|
input_data = {"created_pipelines": [
|
||||||
{"schedule_name": "test1", "namespace": "test1"},
|
{"schedule_name": "test1", "namespace": "test1", "success": True},
|
||||||
{"schedule_name": "test2", "namespace": "test2"}
|
{"schedule_name": "test2", "namespace": "test2", "success": True}
|
||||||
]}
|
]}
|
||||||
mongo_db.database["pipelines"].insert_many.return_value = MagicMock()
|
mongo_db.database["pipelines"].insert_many.return_value = MagicMock()
|
||||||
await mongo_db.create_pipelines_timestamps(input_data)
|
await mongo_db.create_pipelines_timestamps(input_data)
|
||||||
@@ -288,8 +288,8 @@ async def test_create_pipelines_timestamps_success(datetime_mock, mongo_db):
|
|||||||
@patch("orchestrator.activities.mongo_db.datetime")
|
@patch("orchestrator.activities.mongo_db.datetime")
|
||||||
async def test_delete_pipelines_timestamps_success(datetime_mock, mongo_db):
|
async def test_delete_pipelines_timestamps_success(datetime_mock, mongo_db):
|
||||||
input_data = {"deleted_pipelines": [
|
input_data = {"deleted_pipelines": [
|
||||||
{"schedule_name": "test1", "namespace": "test1"},
|
{"schedule_name": "test1", "namespace": "test1", "success": True},
|
||||||
{"schedule_name": "test2", "namespace": "test2"}
|
{"schedule_name": "test2", "namespace": "test2", "success": True}
|
||||||
]}
|
]}
|
||||||
mongo_db.database["pipelines"].delete_many.return_value = MagicMock()
|
mongo_db.database["pipelines"].delete_many.return_value = MagicMock()
|
||||||
await mongo_db.delete_pipelines_timestamps(input_data)
|
await mongo_db.delete_pipelines_timestamps(input_data)
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ env:
|
|||||||
- name: GITHUB_REPO_URL
|
- name: GITHUB_REPO_URL
|
||||||
value: "git@github.com:Aignosi/sientia-dataops-orchestrator_temporal.git"
|
value: "git@github.com:Aignosi/sientia-dataops-orchestrator_temporal.git"
|
||||||
- name: GITHUB_BRANCH
|
- name: GITHUB_BRANCH
|
||||||
value: "SIENTIAPDE-1148-separar-scouter-laborious-e-orchestrator-por-namespaces"
|
value: "SIENTIAPDE-1150-ajustar-orquestrador-para-manter-uma-store-de-detalhes-dos-schedules"
|
||||||
- name: PYTHON_APP
|
- name: PYTHON_APP
|
||||||
value: "orchestrator.worker.worker"
|
value: "orchestrator.worker.worker"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user