@@ -148,68 +148,71 @@ async def merge_branch(branch: str) -> None:
148148 await add_branch_tag (branch_name = branch )
149149 await add_branch_tag (branch_name = registry .default_branch )
150150
151- obj = await Branch .get_by_name (db = service .database , name = branch )
152- component_registry = get_component_registry ()
153-
154- merger : BranchMerger | None = None
155- async with lock .registry .global_graph_lock ():
156- diff_coordinator = await component_registry .get_component (DiffCoordinator , db = service .database , branch = obj )
157- diff_merger = await component_registry .get_component (DiffMerger , db = service .database , branch = obj )
158- merger = BranchMerger (
159- db = service .database ,
160- diff_coordinator = diff_coordinator ,
161- diff_merger = diff_merger ,
162- source_branch = obj ,
163- service = service ,
164- )
165- try :
166- await merger .merge ()
167- except Exception as exc :
168- await merger .rollback ()
169- raise MergeFailedError (branch_name = branch ) from exc
170- await merger .update_schema ()
171-
172- if merger and merger .migrations :
173- errors = await schema_apply_migrations (
174- message = SchemaApplyMigrationData (
175- branch = merger .destination_branch ,
176- new_schema = merger .destination_schema ,
177- previous_schema = merger .initial_source_schema ,
178- migrations = merger .migrations ,
151+ async with service .database .start_session () as db :
152+ obj = await Branch .get_by_name (db = db , name = branch )
153+ component_registry = get_component_registry ()
154+
155+ merger : BranchMerger | None = None
156+ async with lock .registry .global_graph_lock ():
157+ # await update_diff(model=RequestDiffUpdate(branch_name=obj.name))
158+
159+ diff_coordinator = await component_registry .get_component (DiffCoordinator , db = db , branch = obj )
160+ diff_merger = await component_registry .get_component (DiffMerger , db = db , branch = obj )
161+ merger = BranchMerger (
162+ db = db ,
163+ diff_coordinator = diff_coordinator ,
164+ diff_merger = diff_merger ,
165+ source_branch = obj ,
166+ service = service ,
179167 )
168+ try :
169+ await merger .merge ()
170+ except Exception as exc :
171+ await merger .rollback ()
172+ raise MergeFailedError (branch_name = branch ) from exc
173+ await merger .update_schema ()
174+
175+ if merger and merger .migrations :
176+ errors = await schema_apply_migrations (
177+ message = SchemaApplyMigrationData (
178+ branch = merger .destination_branch ,
179+ new_schema = merger .destination_schema ,
180+ previous_schema = merger .initial_source_schema ,
181+ migrations = merger .migrations ,
182+ )
183+ )
184+ for error in errors :
185+ log .error (error )
186+
187+ # -------------------------------------------------------------
188+ # Trigger the reconciliation of IPAM data after the merge
189+ # -------------------------------------------------------------
190+ differ = await merger .get_graph_diff ()
191+ diff_parser = IpamDiffParser (
192+ db = db ,
193+ differ = differ ,
194+ source_branch_name = obj .name ,
195+ target_branch_name = registry .default_branch ,
196+ )
197+ ipam_node_details = await diff_parser .get_changed_ipam_node_details ()
198+ await service .workflow .submit_workflow (
199+ workflow = IPAM_RECONCILIATION ,
200+ parameters = {"branch" : registry .default_branch , "ipam_node_details" : ipam_node_details },
180201 )
181- for error in errors :
182- log .error (error )
183-
184- # -------------------------------------------------------------
185- # Trigger the reconciliation of IPAM data after the merge
186- # -------------------------------------------------------------
187- differ = await merger .get_graph_diff ()
188- diff_parser = IpamDiffParser (
189- db = service .database ,
190- differ = differ ,
191- source_branch_name = obj .name ,
192- target_branch_name = registry .default_branch ,
193- )
194- ipam_node_details = await diff_parser .get_changed_ipam_node_details ()
195- await service .workflow .submit_workflow (
196- workflow = IPAM_RECONCILIATION ,
197- parameters = {"branch" : registry .default_branch , "ipam_node_details" : ipam_node_details },
198- )
199202
200- # -------------------------------------------------------------
201- # Generate an event to indicate that a branch has been merged
202- # NOTE: we still need to convert this event and potentially pull
203- # some tasks currently executed based on the event into this workflow
204- # -------------------------------------------------------------
205- log_data = get_log_data ()
206- request_id = log_data .get ("request_id" , "" )
207- message = messages .EventBranchMerge (
208- source_branch = obj .name ,
209- target_branch = registry .default_branch ,
210- meta = Meta (initiator_id = WORKER_IDENTITY , request_id = request_id ),
211- )
212- await service .send (message = message )
203+ # -------------------------------------------------------------
204+ # Generate an event to indicate that a branch has been merged
205+ # NOTE: we still need to convert this event and potentially pull
206+ # some tasks currently executed based on the event into this workflow
207+ # -------------------------------------------------------------
208+ log_data = get_log_data ()
209+ request_id = log_data .get ("request_id" , "" )
210+ message = messages .EventBranchMerge (
211+ source_branch = obj .name ,
212+ target_branch = registry .default_branch ,
213+ meta = Meta (initiator_id = WORKER_IDENTITY , request_id = request_id ),
214+ )
215+ await service .send (message = message )
213216
214217
215218@flow (name = "branch-delete" , flow_run_name = "Delete branch {branch}" )
0 commit comments