openstack dashboard二次开发

horizon是一个基于django webframework开发的标准的python wsgi程序.
 
Horizon这套面板的设计分成三层:Dashboard → PanelGroup → Panel

Horizon中现有的dashboard有5个:

  1. project 普通用户登陆后看到的 项目面板
  2. admin 管理登陆后可见,左侧的 管理员面板
  3. identity 管理用户、project的权限
  4. settings 右上角的设置面板,里面可设置语言,时区,更改密码
  5. router(配置文件中将profile_support打开可见),ciso nexus 1000v的管理面板

每一个dashboard都是django中的一个app,django中的app可以理解成对业务逻辑模块化的一种手段,里面可以包含自己独有的url设定,模板,和业务逻辑代码.

每个dashboard下定义了一系列的PanelGroup,虚拟机管理对应到界面上就是一个PanelGroup(Manage Compute), 里面有一系列的子panel(Overview, Instances, Volumes…)。Swift,heat,neutron的管理面板各自都是一个PanelGroup,底下有各自的子panel.

 
Horizon的源码中,包含两个代码文件夹:Horizon和openstack_dashboard.
 
Horizon这个包是一些在django基础上写的通用组件,表格(table),标签页(tab),表单(form),面包屑导航 (browser),工作流(workflow),这些代码和openstack的具体业务逻辑没有什么关系,如果做一个新的django项目,理论上可以复用Horizon这个包中的代码。horizon/base.py中还实现了一套dashboard/panel机制,使得Horizon面板上所有的dashboard都是”可插拔”的,所有的panel都是”动态加载”的。
openstack_dashboard/dashboards/中是各个面板的具体实现代码,其中包括各个面板的模板文件, 和后端service交互的业务逻辑代码等。
 
 

在/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值