ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenStack(kilo)界面dashboard的二次开发(三)-增加Dashboard

2021-05-07 09:56:02  阅读:226  来源: 互联网

标签:-- myproject dashboard Dashboard kilo 二次开发 openstack mypanel


前面的文章已经完成了panel与panelgroup的自定义增加,这篇博文将对Dashboard(一级菜单)的增加进行一个简单总结。

增加Dashboard(一级菜单)

首先进入/usr/share/openstack-dashbaord/openstack_dashboard/dashboards目录,会看到如下的目录结构:

1|--__init__.py
2|--admin
3|--project
4|--identity
5|--router
6|--settings

在以前的文章OpenStack(kilo)界面dashboard的二次开发(一)中已经说明,以上几个文件夹代表了openstack界面上的几个一级菜单(Dashboard)。对于Dashboard下的PanelGroup与Panel的自定义增加以及相关文件结构已经分别在OpenStack(kilo)界面dashboard的二次开发(一)OpenStack(kilo)界面dashboard的二次开发(二)中简单总结了,这里就不总结文件结构了。现在增加一个Dashboard,首先在dashboards下创建一个文件夹如下:

1|--__init__.py
2|--admin
3|--project
4|--identity
5|--router
6|--settings
7|--myproject   #自定义增加的

myproject的文件结构如下:

1myproject
2|--dashboard.py
3|--__init__.py
4|--mypanel           #这是在前面博文中增加的Panel,现在放到这来

接下来分别看看每个文件的内容: 

dashboard.py

 1#-*- coding:utf-8 -*-
2
3from django.utils.translation import ugettext_lazy as _
4
5import horizon
6
7'''上一篇博文中增加的PanelGroup'''
8class MyPanels(horizon.PanelGroup):
9    slug = "mypanelgroup"
10    name = "Mypanelgroup"
11    panels = ('mypanel',)
12
13class Myproject(horizon.Dashboard):
14    name = "扶艾的项目"
15    slug = "myproject"
16    panels = (MyPanels,)
17    default_panel = 'mypanel'
18    permissions = ('openstack.role.admin',)
19
20
21horizon.register(Myproject)

然后看看mypanel文件夹的结构:

1mypanel
2|--__init__.py
3|--panel.py
4|--tables.py
5|--templates
6  |--mypanel
7    |--index.html
8|--urls.py
9|--views.py

这些文件的作用已将在前面博文总结,这里就不再赘述了。下面分别看看它们里面的内容: 

panel.py

 1import horizon
2
3from openstack_dashboard.dashboards.myproject import dashboard
4
5
6class Mypanel(horizon.Panel):
7    name = "mypanel"
8    slug = 'mypanel'
9    permissions = ('openstack.roles.admin', 'openstack.services.compute')
10
11
12dashboard.Myproject.register(Mypanel)

tables.py

1from horizon import tables
2
3class MypanelTable(tables.DataTable):
4    column1 = tables.Column("column1", verbose_name="column1")
5    class Meta(object):
6        name = "mypaneltable"
7        verbose_name = "mypaneltable"

index.html

1{% extends 'base.html' %}
2{% load i18n %}
3{% block title %}{% trans "mypanel" %}{% endblock %}
4
5{% block main %}
6    {{ table.render }}
7{% endblock %}

urls.py

 1from django.conf.urls import patterns
2from django.conf.urls import url
3
4from openstack_dashboard.dashboards.myproject.mypanel import views
5
6
7urlpatterns = patterns(
8    'openstack_dashboard.dashboards.myproject.mypanel.views',
9    url(r'^$', views.MypanelIndexView.as_view(), name='index'),
10)

views.py

 1from horizon import tables
2
3from openstack_dashboard.dashboards.myproject.mypanel \
4    import tables as project_tables
5
6class MypanelIndexView(tables.DataTableView):
7    table_class = project_tables.MypanelTable
8    template_name = 'myproject/mypanel/index.html'
9    page_title = "mypanel"
10
11    def get_data(self):
12        data = []
13        return data

上面即是要增加Dashboard所需要的文件,并且把之前博文中自定义的  PanelGroup与Panel加了进来。现在有了这些文件重启httpd服务,界面上仍然不会显示自定义的Dashboard。因为开关没打开,这时候还需要增加一个文件来启用它。进入/usr/share/openstack-dashboard /openstack_dashboard / enabled/文件夹可以看到很多以下划线加数字开头的文件,这些都是启用那些Dashboard的文件,模仿一个增加: 

_35_myproject.py

1DASHBOARD = 'myproject'
2
3ADD_INSTALLED_APPS = [
4    'openstack_dashboard.dashboards.myproject',
5]

该文件夹的名称前面的数字大小代表的是Dashboard在菜单栏的顺序,数字越小越靠前,这里是35,目前是最大的,所以Dashboard会显示在最后。重启httpd服务,查看效果。

图片


标签:--,myproject,dashboard,Dashboard,kilo,二次开发,openstack,mypanel
来源: https://blog.51cto.com/u_15127625/2758240

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有