1- import copy
21import logging
32import os
43import uuid
@@ -259,8 +258,6 @@ def patch_connection(service_id, body=None): # noqa: E501
259258
260259 logger .info (f"Gathered connexion JSON: { new_body } " )
261260
262- # Get roll back connection before removing connection
263- rollback_conn_body = copy .deepcopy (body )
264261 body .update (new_body )
265262
266263 body , _ = connection_state_machine (body , ConnectionStateMachine .State .MODIFYING )
@@ -271,6 +268,8 @@ def patch_connection(service_id, body=None): # noqa: E501
271268
272269 try :
273270 logger .info ("Removing connection" )
271+ # Get roll back connection before removing connection
272+ rollback_conn_body = body
274273 remove_conn_reason , remove_conn_code = connection_handler .remove_connection (
275274 current_app .te_manager , service_id , "API"
276275 )
@@ -320,49 +319,39 @@ def patch_connection(service_id, body=None): # noqa: E501
320319 )
321320 logger .info ("Rolling back to old connection." )
322321
323- # because above placement failed, so re-place the original connection request.
324-
325- rollback_conn_body [ "status" ] = str ( ConnectionStateMachine . State . REQUESTED )
326- # used in lc_message_handler to count the oxp success response
327- rollback_conn_body [ "oxp_success_count" ] = 0
328- conn_status = ConnectionStateMachine . State . UNDER_PROVISIONING
329- rollback_conn_body , _ = connection_state_machine ( rollback_conn_body , conn_status )
322+ if not rollback_conn_body :
323+ response = {
324+ "service_id" : service_id ,
325+ "status" : parse_conn_status ( body [ "status" ]),
326+ "reason" : f"Failure, unable to rollback to last successful L2VPN: { reason } " ,
327+ }
328+ return response , code
330329
330+ # because above placement failed, so re-place the original connection request.
331331 conn_request = rollback_conn_body
332332 conn_request ["id" ] = service_id
333333
334334 try :
335335 rollback_conn_reason , rollback_conn_code = connection_handler .place_connection (
336336 current_app .te_manager , conn_request
337337 )
338- if rollback_conn_code // 100 != 2 :
339- conn_status = ConnectionStateMachine .State .REJECTED
340- db_instance .update_field_in_json (
341- MongoCollections .CONNECTIONS ,
342- service_id ,
343- "status" ,
344- str (conn_status ),
338+ if rollback_conn_code // 100 == 2 :
339+ db_instance .add_key_value_pair_to_db (
340+ MongoCollections .CONNECTIONS , service_id , conn_request
345341 )
346342 logger .info (
347343 f"Roll back connection result: ID: { service_id } reason='{ rollback_conn_reason } ', code={ rollback_conn_code } "
348344 )
349345 except Exception as e :
350- conn_status = ConnectionStateMachine .State .REJECTED
351- db_instance .update_field_in_json (
352- MongoCollections .CONNECTIONS ,
353- service_id ,
354- "status" ,
355- str (conn_status ),
356- )
357346 logger .info (f"Rollback failed (connection id: { service_id } ): { e } " )
358- rollback_conn_code = 500
347+ return f"Rollback failed, reason: { e } " , 500
359348
360349 response = {
361350 "service_id" : service_id ,
362- "reason" : f"Patch Failure,rolled back to last successful L2VPN: { rollback_conn_reason } " ,
363- "status" : parse_conn_status (str ( conn_status ) ),
351+ "reason" : f"Failure, rolled back to last successful L2VPN: { reason } " ,
352+ "status" : parse_conn_status (conn_request [ "status" ] ),
364353 }
365- return response , rollback_conn_code
354+ return response , code
366355
367356
368357def get_archived_connections_by_id (service_id ):
0 commit comments