atlanticwave-sdx / sdx-controller

Central Controller for AtlanticWave SDX.
https://www.atlanticwave-sdx.net
MIT License
2 stars 3 forks source link

Error handling when latest topology is not available in DB #172

Closed sajith closed 2 months ago

sajith commented 1 year ago

If a POST /connection is made before local controllers have advertised themselves, we will get a crash:

sdx-controller-sdx-controller-service-1  | ERROR:__main__:Exception on /SDX-Controller/1.0.0/conection [POST]
sdx-controller-sdx-controller-service-1  | Traceback (most recent call last):
sdx-controller-sdx-controller-service-1  |   File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 2529, in wsgi_app
sdx-controller-sdx-controller-service-1  |     response = self.full_dispatch_request()
sdx-controller-sdx-controller-service-1  |   File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1825, in full_dispatch_request
sdx-controller-sdx-controller-service-1  |     rv = self.handle_user_exception(e)
sdx-controller-sdx-controller-service-1  |   File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1823, in full_dispatch_request
sdx-controller-sdx-controller-service-1  |     rv = self.dispatch_request()
sdx-controller-sdx-controller-service-1  |   File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1799, in dispatch_request
sdx-controller-sdx-controller-service-1  |     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
sdx-controller-sdx-controller-service-1  |   File "/usr/local/lib/python3.9/site-packages/connexion/decorators/decorator.py", line 68, in wrapper
sdx-controller-sdx-controller-service-1  |     response = function(request)
sdx-controller-sdx-controller-service-1  |   File "/usr/local/lib/python3.9/site-packages/connexion/decorators/uri_parsing.py", line 149, in wrapper
sdx-controller-sdx-controller-service-1  |     response = function(request)
sdx-controller-sdx-controller-service-1  |   File "/usr/local/lib/python3.9/site-packages/connexion/decorators/validation.py", line 196, in wrapper
sdx-controller-sdx-controller-service-1  |     response = function(request)
sdx-controller-sdx-controller-service-1  |   File "/usr/local/lib/python3.9/site-packages/connexion/decorators/parameter.py", line 120, in wrapper
sdx-controller-sdx-controller-service-1  |     return function(**kwargs)
sdx-controller-sdx-controller-service-1  |   File "/usr/src/app/swagger_server/controllers/connection_controller.py", line 92, in place_connection
sdx-controller-sdx-controller-service-1  |     topo_val = db_instance.read_from_db("latest_topo")["latest_topo"]
sdx-controller-sdx-controller-service-1  | TypeError: 'NoneType' object is not subscriptable
sdx-controller-sdx-controller-service-1  | INFO:werkzeug:174.170.111.107 - - [30/May/2023 23:41:39] "POST /SDX-Controller/1.0.0/conection HTTP/1.1" 500 -
jab1982 commented 2 months ago

Related to issue #308

congwang09 commented 2 months ago

This has been fixed. SDX will return 424 Failed Dependency if no topology yet.

{
  "reason": "No SDX topology found",
  "service_id": "1d82f63e-8165-4c97-b530-046ba07bf06d",
  "status": "Failure"
}