kytos-ng / maintenance

Kytos Maintenance Window NApp
https://kytos-ng.github.io/api/maintenance.html
0 stars 7 forks source link

Server crashes if the same mw id is submitted again on `POST /maintenance/` #44

Closed viniarck closed 1 year ago

viniarck commented 2 years ago

We don't have integrity validation error in place yet, so if an user sends the same mw id again on POST /maintenance/ it crashes the server:

{
    "id": "some_mw2",
    "description": "some_mw2",
    "start": "2022-03-06T14:37:01-0300",
    "end": "2022-03-06T14:38:01-0300",
    "items": [
        "{{dpid}}"
    ]
}
{
    "code": 500,
    "description": "The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.",
    "name": "Internal Server Error"
}
Traceback (most recent call last):
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/viniarck/repos/napps/kytos/maintenance/main.py", line 79, in create_mw
    self.scheduler.add(maintenance)
  File "/home/viniarck/repos/napps/../napps/kytos/maintenance/models.py", line 214, in add
    self.scheduler.add_job(maintenance.start_mw, 'date',
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/apscheduler/schedulers/base.py", line 448, in add_job
    self._real_add_job(job, jobstore, replace_existing)
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/apscheduler/schedulers/base.py", line 872, in _real_add_job
    store.add_job(job)
  File "/home/viniarck/repos/kytos/.direnv/python-3.9.4/lib/python3.9/site-packages/apscheduler/jobstores/memory.py", line 41, in add_job
    raise ConflictingIdError(job.id)
apscheduler.jobstores.base.ConflictingIdError: 'Job identifier (some_mw2-start) conflicts with an existing job'
Ktmi commented 1 year ago

Closed with #78