@@ -242,23 +242,34 @@ def _create_promotion_demotion_tasks(
242242 start_task = EmptyOperator (task_id = "snapshot_promotion_start" )
243243 end_task = EmptyOperator (task_id = "snapshot_promotion_end" )
244244
245+ environment = Environment (
246+ name = request .environment_name ,
247+ snapshots = request .promoted_snapshots ,
248+ start_at = request .start ,
249+ end_at = request .end ,
250+ plan_id = request .plan_id ,
251+ previous_plan_id = request .previous_plan_id ,
252+ expiration_ts = request .environment_expiration_ts ,
253+ )
254+
245255 update_state_task = PythonOperator (
246256 task_id = "snapshot_promotion__update_state" ,
247257 python_callable = promotion_update_state_task ,
248258 op_kwargs = {
249- "snapshots" : request .promoted_snapshots ,
250- "environment_name" : request .environment_name ,
251- "start" : request .start ,
252- "end" : request .end ,
259+ "environment" : environment ,
253260 "unpaused_dt" : request .unpaused_dt ,
254261 "no_gaps" : request .no_gaps ,
255- "plan_id" : request .plan_id ,
256- "previous_plan_id" : request .previous_plan_id ,
257- "environment_expiration_ts" : request .environment_expiration_ts ,
258262 },
259263 )
260264
265+ finalize_task = PythonOperator (
266+ task_id = "snapshot_promotion__finalize" ,
267+ python_callable = promotion_finalize_task ,
268+ op_kwargs = {"environment" : environment },
269+ )
270+
261271 start_task >> update_state_task
272+ finalize_task >> end_task
262273
263274 if request .promoted_snapshots :
264275 create_views_task = self ._create_snapshot_promotion_operator (
@@ -268,7 +279,7 @@ def _create_promotion_demotion_tasks(
268279 request .is_dev ,
269280 "snapshot_promotion__create_views" ,
270281 )
271- create_views_task >> end_task
282+ create_views_task >> finalize_task
272283
273284 if not request .is_dev and request .unpaused_dt :
274285 migrate_tables_task = self ._create_snapshot_migrate_tables_operator (
@@ -289,10 +300,10 @@ def _create_promotion_demotion_tasks(
289300 "snapshot_promotion__delete_views" ,
290301 )
291302 update_state_task >> delete_views_task
292- delete_views_task >> end_task
303+ delete_views_task >> finalize_task
293304
294305 if not request .promoted_snapshots and not request .demoted_snapshots :
295- update_state_task >> end_task
306+ update_state_task >> finalize_task
296307
297308 return (start_task , end_task )
298309
@@ -479,26 +490,16 @@ def creation_update_state_task(new_snapshots: t.Iterable[Snapshot]) -> None:
479490
480491
481492def promotion_update_state_task (
482- snapshots : t .List [SnapshotTableInfo ],
483- environment_name : str ,
484- start : TimeLike ,
485- end : t .Optional [TimeLike ],
493+ environment : Environment ,
486494 unpaused_dt : t .Optional [TimeLike ],
487495 no_gaps : bool ,
488- plan_id : str ,
489- previous_plan_id : t .Optional [str ],
490- environment_expiration_ts : t .Optional [int ],
491496) -> None :
492- environment = Environment (
493- name = environment_name ,
494- snapshots = snapshots ,
495- start_at = start ,
496- end_at = end ,
497- plan_id = plan_id ,
498- previous_plan_id = previous_plan_id ,
499- expiration_ts = environment_expiration_ts ,
500- )
501497 with util .scoped_state_sync () as state_sync :
502498 state_sync .promote (environment , no_gaps = no_gaps )
503- if snapshots and not end and unpaused_dt :
504- state_sync .unpause_snapshots (snapshots , unpaused_dt )
499+ if environment .snapshots and not environment .end_at and unpaused_dt :
500+ state_sync .unpause_snapshots (environment .snapshots , unpaused_dt )
501+
502+
503+ def promotion_finalize_task (environment : Environment ) -> None :
504+ with util .scoped_state_sync () as state_sync :
505+ state_sync .finalize (environment )
0 commit comments