fix getting kafka aioread exception
[osm/NBI.git] / osm_nbi / nbi.py
index 5b16544..f5d2293 100644 (file)
@@ -484,7 +484,7 @@ class Server(object):
     def __init__(self):
         self.instance += 1
         self.authenticator = Authenticator(valid_url_methods, valid_query_string)
-        self.engine = Engine(self.authenticator.tokens_cache)
+        self.engine = Engine(self.authenticator)
 
     def _format_in(self, kwargs):
         try:
@@ -716,6 +716,10 @@ class Server(object):
 
     @cherrypy.expose
     def test(self, *args, **kwargs):
+        if not cherrypy.config.get("server.enable_test") or (isinstance(cherrypy.config["server.enable_test"], str) and
+                                                             cherrypy.config["server.enable_test"].lower() == "false"):
+            cherrypy.response.status = HTTPStatus.METHOD_NOT_ALLOWED.value
+            return "test URL is disabled"
         thread_info = None
         if args and args[0] == "help":
             return "<html><pre>\ninit\nfile/<name>  download file\ndb-clear/table\nfs-clear[/folder]\nlogin\nlogin2\n"\
@@ -1128,6 +1132,11 @@ class Server(object):
             # if Role information changes, it is needed to reload the information of roles
             if topic == "roles" and method != "GET":
                 self.authenticator.load_operation_to_allowed_roles()
+
+            if topic == "projects" and method == "DELETE" \
+                    or topic in ["users", "roles"] and method in ["PUT", "PATCH", "DELETE"]:
+                self.authenticator.remove_token_from_cache()
+
             return self._format_out(outdata, token_info, _format)
         except Exception as e:
             if isinstance(e, (NbiException, EngineException, DbException, FsException, MsgException, AuthException,