首页 > 其他 > 详细

openstack dashboard二次开发

时间:2019-07-19 17:11:05      阅读:119      评论:0      收藏:0      [点我收藏+]
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): 

 
 
技术分享图片

openstack dashboard二次开发

原文:https://www.cnblogs.com/wujx9/p/11214206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!