如何在仪表板中添加新面板以显示用户输入表单?

时间:2014-06-10 06:12:14

标签: openstack-nova openstack-horizon

我正在尝试在open-stack-dashboard中添加一个自定义仪表板,该仪表板将显示显示接受用户数据的表单的面板。在哪里创建和定义我的models.py到面板,因为仪表板的settings.py不包含任何数据库配置?

1 个答案:

答案 0 :(得分:1)

编辑:如果您使用的是Liberty版本或更高版本,我建议不要直接附加数据库。在外部创建自己的rest API(使用django-rest-framework轻松完成)并使用angularjs获取数据。这是Horizo​​n的新标准方式。

Horizo​​n没有数据库。它只依赖于对keystone的API调用以及服务目录中公开的任何API。如果要存储自己的模型,可以在任何django应用程序中以标准方式配置数据库。

在openstack_dashboard / local / local_settings.py中添加db info,这样就不会篡改默认设置。

DATABASE_ROUTERS = [...]
DATABASES = {
    'default': {},
    'mydb1': { ... },
    'mydb2': { ... },
}

这假设您实际上必须存储自定义数据。我猜想连接数据库或API以获取更多客户信息是很正常的。注册流程,结算信息和其他自定义内容。

还要确保在源树之外创建自定义内容,并在openstack_dashboard / local / enabled中将其挂钩。这使得在升级地平线源时将来更加清洁。

示例:

openstack_dashboard
├── ....
horizon
├── ...
mystuff
├── horizon
│   ├── mydashboard
│   │   ├── panel1
│   │   │   ├── __init__.py
│   │   │   ├── panel.py
│   │   │   ├── urls.py
│   │   │   ├── views.py
│   │   ├── panel2
│   │   │   ├── ....
│   │   ├── dashboard.py
│   │   ├── __init__.py
│   │   ├── models.py (Unless defined elsewhere)
│   │   ├── static
│   │   └── templates

然后在openstack_dashboard / local / enabled / _50_mydashboard.py中导入仪表板包

# The name of the dashboard to be added to HORIZON['dashboards']. Required.
DASHBOARD = 'mydashboard'
# If set to True, this dashboard will be set as the default dashboard when the user logs in
DEFAULT = False
# If set to True, this dashboard will not be added to the settings.
DISABLED = False
# A dictionary of exception classes to be added to HORIZON['exceptions'].
#ADD_EXCEPTIONS = {}
# A list of applications to be added to INSTALLED_APPS.
ADD_INSTALLED_APPS = ['mystuff.horizon.mydashboard']

对于仪表板和面板设置: http://docs.openstack.org/developer/horizon/topics/tutorial.html

自定义稳定主题: http://www.matthias-runge.de/custom-theme-for-horizon.html