Horizon中现有的dashboard有5个:
每一个dashboard都是django中的一个app,django中的app可以理解成对业务逻辑模块化的一种手段,里面可以包含自己独有的url设定,模板,和业务逻辑代码.
每个dashboard下定义了一系列的PanelGroup,虚拟机管理对应到界面上就是一个PanelGroup(Manage Compute), 里面有一系列的子panel(Overview, Instances, Volumes…)。Swift,heat,neutron的管理面板各自都是一个PanelGroup,底下有各自的子panel.
在/etc/nova/api-paste.ini中,是这样配置nova v2的
[app:osapi_compute_app_v2]
paste.app_factory = nova.api.openstack.compute:APIRouter.factory
在/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/__init__.py中
class APIRouter(nova.api.openstack.APIRouter):中的
from nova.api.openstack.compute import servers
def _setup_routes(self, mapper, ext_mgr, init_only):
……
self.resources[‘servers‘] = servers.create_resource(ext_mgr)
mapper.resource("server", "servers",
controller=self.resources[‘servers‘],
collection={‘detail‘: ‘GET‘},
member={‘action‘: ‘POST‘})
……
对于发送给/servers的POST的请求,是发给controller的。
在/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/servers.py中有下面的函数
def create_resource(ext_mgr):
return wsgi.Resource(Controller(ext_mgr))
class Controller(wsgi.Controller):
@wsgi.response(202)
@wsgi.serializers(xml=FullServerTemplate)
@wsgi.deserializers(xml=CreateDeserializer)
def create(self, req, body):
原文:https://www.cnblogs.com/wujx9/p/11214206.html