mgr: isolated CherryPy to prevent global state sharing
as the modules are now being loaded onto the main interpreter (see
https://github.com/ceph/ceph/pull/66244), the
cherrypy is getting hit with an issue where its global state is being
affecting all the modules updating the cherrypy config simultaneously in
the same tree.
So i am adding a CherryPyMgr which manages all the independent servers
that will be created across all modules. This CherryPyMgr will create
its own server instances by utilizing cherrypy's WSGI Server and
eliminates the global state sharing. Each module or app can create their
own tree and start an adapter which will open an independent server for
that app.
- also added a method to update the config in place so CORS urls can be
configured without restarting servers.
Fixes: https://tracker.ceph.com/issues/74643, https://tracker.ceph.com/issues/74543, https://tracker.ceph.com/issues/74980
Signed-off-by: Nizamudeen A <nia@redhat.com>
(cherry picked from commit
1384ae37c700e08688952bf437c40cac860c0fc7)
Conflicts:
src/pybind/mgr/prometheus/module.py
- accepted the incoming changes