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

  • Post author:
  • Post category:其他


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

增加Dashboard(一级菜单)

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

|--__init__.py
|--admin
|--project
|--identity
|--router
|--settings

在博主以前的文章

OpenStack(kilo)界面dashboard的二次开发(一)

中已经说明,以上几个文件夹代表了openstack界面上的几个一级菜单(Dashboard)。对于Dashboard下的PanelGroup与Panel的自定义增加以及相关文件结构已经分别在

OpenStack(kilo)界面dashboard的二次开发(一)



OpenStack(kilo)界面dashboard的二次开发(二)

中简单总结了,这里就不总结文件结构了。现在增加一个Dashboard,首先在dashboards下创建一个文件夹如下:

|--__init__.py
|--admin
|--project
|--identity
|--router
|--settings
|--myproject   #自定义增加的

myproject的文件结构如下:

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

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

dashboard.py

#-*- coding:utf-8 -*-

from django.utils.translation import ugettext_lazy as _

import horizon

'''上一篇博文中增加的PanelGroup'''
class MyPanels(horizon.PanelGroup):
    slug = "mypanelgroup"
    name = "Mypanelgroup"
    panels = ('mypanel',)

class Myproject(horizon.Dashboard):
    name = "扶艾的项目"
    slug = "myproject"
    panels = (MyPanels,)
    default_panel = 'mypanel'
    permissions = ('openstack.role.admin',)


horizon.register(Myproject)

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

mypanel
|--__init__.py
|--panel.py
|--tables.py
|--templates
  |--mypanel
    |--index.html
|--urls.py
|--views.py

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

panel.py

import horizon

from openstack_dashboard.dashboards.myproject import dashboard


class Mypanel(horizon.Panel):
    name = "mypanel"
    slug = 'mypanel'
    permissions = ('openstack.roles.admin', 'openstack.services.compute')


dashboard.Myproject.register(Mypanel)

tables.py

from horizon import tables

class MypanelTable(tables.DataTable):
    column1 = tables.Column("column1", verbose_name="column1")
    class Meta(object):
        name = "mypaneltable"
        verbose_name = "mypaneltable"

index.html

{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "mypanel" %}{% endblock %}

{% block main %}
    {{ table.render }}
{% endblock %}

urls.py

from django.conf.urls import patterns
from django.conf.urls import url

from openstack_dashboard.dashboards.myproject.mypanel import views


urlpatterns = patterns(
    'openstack_dashboard.dashboards.myproject.mypanel.views',
    url(r'^$', views.MypanelIndexView.as_view(), name='index'),
)

views.py

from horizon import tables

from openstack_dashboard.dashboards.myproject.mypanel \
    import tables as project_tables

class MypanelIndexView(tables.DataTableView):
    table_class = project_tables.MypanelTable
    template_name = 'myproject/mypanel/index.html'
    page_title = "mypanel"

    def get_data(self):
        data = []
        return data

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

_35_myproject.py

DASHBOARD = 'myproject'

ADD_INSTALLED_APPS = [
    'openstack_dashboard.dashboards.myproject',
]

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

这里写图片描述

更多精彩文章,请搜索微信公众号

“扶艾”

。我们定期分享

OpenStack

相关技术文章,在这里,只有

纯干货



这里写图片描述



版权声明:本文为LL_JCB原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。