Skip to content

Commit 09bd011

Browse files
authored
Merge pull request #525 from atlanticwave-sdx/revert-520-518-l2vpn-rollback-deletes-endpoints-object-when-vlan-assigment-is-not-found
Revert "clean up the patch_connection state transition"
2 parents 765380d + ee87385 commit 09bd011

1 file changed

Lines changed: 17 additions & 28 deletions

File tree

‎sdx_controller/controllers/l2vpn_controller.py‎

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import copy
21
import logging
32
import os
43
import 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

368357
def get_archived_connections_by_id(service_id):

0 commit comments

Comments
 (0)