插件化的Panels和Groups

介绍

Horizon允许在不修改默认设置的情况下添加仪表板、面板和面板组。 插件化的设置是一种机制,允许将设置存储在单独的文件中。 这些文件在启动时被读取,并用于修改默认设置。

仪表板配置文件的默认位置是 openstack_dashboard/enabled, 使用另一个目录openstack_dashboard/local/enabled  是用于本地覆盖。 这两组文件都将被加载, 但是 openstack_dashboard/local/enabled 设置将覆盖默认设置。 这些设置应用文件名的字母顺序。 如果相同的仪表板在 enabledlocal/enabled 都有配置文件,在local/enabled将会被使用。 注意,因为python模块的名称不能以数字开头, 这些文件通常以一个主要的下划线和一个数字来命名,这样您就可以轻松地控制它们的顺序。

一般的可插件化设置

在描述具体的用例之前,可以在任何插件化的设置文件中使用以下配置变量.

ADD_EXCEPTIONSNew in version 2014.1(Icehouse).

可以向配置变量 HORIZON['exceptions'] 里加 异常类字典。

ADD_INSTALLED_APPSNew in version 2014.1(Icehouse).

应用程序列表插入到 INSTALLED_APPS 列表之前,当需要从插件中暴露静态文件时需要使用此设置。

ADD_ANGULAR_MODULES New in version 2014.2(Juno).

当Angular bootstraps时, AngularJS模块列表会被加载。 这些模块会作为依赖被添加到root Horizon application horizon 。

ADD_JS_FILES New in version 2014.2(Juno).

javascript源文件列表会被引进每个页面上加载的压缩文件集中。 这对于AngularJS模块来说是必需的,因为这些被添加进 ADD_ANGULAR_MODULES 的模块会引用到 javascript源文件, 因此需要在每个页面中加进来。

ADD_JS_SPEC_FILESNew in version 2015.1(Kilo).

javascript规范文件的列表会被引入来与 Jasmine规范运行器集成。Jasmine是一个用于测试JavaScript代码的行为驱动开发框架。

ADD_SCSS_FILESNew in version 8.0.0(Liberty).

scss文件列表会被引进每个页面上加载的压缩文件集中。 建议每个仪表板上一个scss文件,如果需要为面板引用额外的scss文件,请使用@import。

ADD_XSTATIC_MODULESNew in version 14.0.0(Rocky).

包含javascript和scss文件的xstatic模块列表会被引进每个页面上加载的压缩文件集中。相关的文件应该在 ADD_XSTATIC_MODULES 进行添加而不是在 ADD_JS_FILES 添加。 这个选项配置值为一个元组列表,每个元组包含一个xstatic模块和一个要加载的javascript文件列表。 有关更多细节,请查看 openstack_dashboard/utils/settings.py 中的 BASE_XSTATIC_MODULES 注释。

例子:

ADD_XSTATIC_MODULES = [
    ('xstatic.pkg.foo', ['foo.js']),
    ('xstatic.pkg.bar', None),
]

AUTO_DISCOVER_STATIC_FILESNew in version 8.0.0(Liberty).

如果设置为True, JavaScript文件和angular静态html模板文件将自动地从ADD_INSTALLED_APPS中的每个 app的静态文件夹中发现。

JavaScript源文件将根据命名约定进行排序: 首先列出带有 .module.js 扩展名的文件, 接着是其他的JavaScript源文件。

用于测试的JavaScript文件也将根据命名约定进行排序:首先列出带有 .mock.js 扩展名的文件,接着是 带有.spec.js扩展名的文件。

如果 ADD_JS_FILES 与/或者 ADD_JS_SPEC_FILES 也被指定,手动列出的文件将被附加到自动发现的文件。

DISABLEDNew in version 2014.1(Icehouse).

如果设置为True, 此设置文件不会添加到设置中。

EXTRA_TABSNew in version 14.0.0(Rocky).

额外的选项卡可以添加到一个选项卡组中,通过使用这个设置来实现在horizon或其他的horizon插件。 在对应的选项卡组中定义的默认选项卡后将显示额外的选项卡。

这是一个字典配置。字典的key 指定添加额外标签的标签组。key必须匹配目标选项卡组的完整类名。 字典值是一个额外标签类的全称列表(此值的模块名和类名必须用句点分隔)。 通过EXTRA_TABS 指定的tabs将按照注册的顺序显示。

有些情况下,您可能希望指定额外选项卡的顺序,因为多个horizon插件可以注册额外的选项卡。 可以在EXTRA_TABS 配置中,通过使用带有优先权和选项卡类名的元组而不是一个额外选项卡全名作为字典值的方式来指定每个选项卡的优先权。优先级是一个整数,数值小的优先级高。如果有个选项卡忘记设置优先权,它的优先权会被设为0。

例子:

EXTRA_TABS = {
    'openstack_dashboard.dashboards.project.networks.tabs.NetworkDetailsTabs': (
        'openstack_dashboard.dashboards.project.networks.subnets.tabs.SubnetsTab',
        'openstack_dashboard.dashboards.project.networks.ports.tabs.PortsTab',
    ),
}

带优先权的例子:

EXTRA_TABS = {
    'openstack_dashboard.dashboards.project.networks.tabs.NetworkDetailsTabs': (
        (1, 'openstack_dashboard.dashboards.project.networks.subnets.tabs.SubnetsTab'),
        (2, 'openstack_dashboard.dashboards.project.networks.ports.tabs.PortsTab'),
    ),
}

UPDATE_HORIZON_CONFIGNew in version 2014.2(Juno).

设置的字典值会更新 HORIZON_CONFIG 中数值。

 Dashboards的插件化设置New in version 2014.1(Icehouse).

下面的配置是用于注册仪表板的。

DASHBOARD New in version 2014.1(Icehouse).

 此值为dashboard的slug字段值,会被添加到 HORIZON['dashboards']。是必选项。

DEFAULT New in version 2014.1(Icehouse).

如果设置为True, 这个dashboard将被设置为默认的dashboard。

例子:

若要在本地禁用dashboard,用下面内容创建一个 openstack_dashboard/local/enabled/_40_dashboard-name.py 文件:

DASHBOARD = '<dashboard-name>'
DISABLED = True

添加一个 Tuskar-UI(Infrastructure) 仪表板,首先必须安装它,然后创建一个文件 openstack_dashboard/local/enabled/_50_tuskar.py

from tuskar_ui import exceptions

DASHBOARD = 'infrastructure'
ADD_INSTALLED_APPS = [
    'tuskar_ui.infrastructure',
]
ADD_EXCEPTIONS = {
    'recoverable': exceptions.RECOVERABLE,
    'not_found': exceptions.NOT_FOUND,
    'unauthorized': exceptions.UNAUTHORIZED,
}

Panels的插件化设置New in version 2014.1(Icehouse).

下面的配置用于注册或删除panel。

PANEL New in version 2014.1(Icehouse).

此值为panel的slug字段值,会被添加到 HORIZON_CONFIG 。是必选项。

PANEL_DASHBOARD New in version 2014.1(Icehouse).

指定与 PANEL 相关的 dashboard的slug值。是必选项。此配置是将panel设为指定的dashbaord。

PANEL_GROUP New in version 2014.1(Icehouse).

指定与 PANEL 相关的panel组的slug值。此配置是将panel设为指定的组。 如果您希望此panel不在组里面,将此值设置为 “default”。

DEFAULT_PANEL New in version 2014.1(Icehouse).

如果设置此值,它将更新 PANEL_DASHBOARD 的默认panel。

ADD_PANEL New in version 2014.1(Icehouse).

此值为要添加的panel的Python类。

REMOVE_PANEL New in version 2014.1(Icehouse).

如果设置为True,panel将会从 PANEL_DASHBOARD或PANEL_GROUP移除。

例子:

要在Admin dashboard里的Admin panel group添加 一个panel,用下面内容创建一个 openstack_dashboard/local/enabled/_60_admin_add_panel.py 文件:

PANEL = 'plugin_panel'
PANEL_DASHBOARD = 'admin'
PANEL_GROUP = 'admin'
ADD_PANEL = 'test_panels.plugin_panel.panel.PluginPanel'

要将 Admin dashboard里的 Admin panel group的 Info panel 删除,用以下内容创建一个 openstack_dashboard/local/enabled/_70_admin_remove_panel.py 文件:

PANEL = 'info'
PANEL_DASHBOARD = 'admin'
PANEL_GROUP = 'admin'
REMOVE_PANEL = True

要将 Admin dashboard 里的默认panel改为 Instances,用下面内容创建一个 openstack_dashboard/local/enabled/_80_admin_default_panel.py 文件:

PANEL = 'instances'
PANEL_DASHBOARD = 'admin'
PANEL_GROUP = 'admin'
DEFAULT_PANEL = 'instances'

Panels组的插件化设置 New in version 2014.1(Icehouse).

下面的配置用于注册或删除panel组。

PANEL_GROUP New in version 2014.1(Icehouse).

此值为panel组的slug字段值,会被添加到 HORIZON_CONFIG 。是必选项。

PANEL_GROUP_NAME New in version 2014.1(Icehouse).

PANEL_GROUP 显示的名字。是必选项。

PANEL_GROUP_DASHBOARD New in version 2014.1(Icehouse).

指定与 PANEL_GROUP 相关的 dashboard的slug值。是必选项。此配置是将panel组设为指定的dashbaord。

例子:

添加一个新的panel组到 Admin dashboard,用以下内容创建 openstack_dashboard/local/enabled/_90_admin_add_panel_group.py

PANEL_GROUP = 'plugin_panel_group'
PANEL_GROUP_NAME = 'Plugin Panel Group'
PANEL_GROUP_DASHBOARD = 'admin'

 

转载自:http://luozn.top/2018/04/13/227/

 

转载于:https://my.oschina.net/jennerlo/blog/1795266

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值