• openstack horizon 学习(1) 总览


    关于Horizon的设计理念:

    来自官网(http://docs.openstack.org/developer/horizon/intro.html):

    Horizon holds several key values at the core of its design and architecture:

    Core Support: Out-of-the-box support for all core OpenStack projects.
    Extensible: Anyone can add a new component as a “first-class citizen”.
    Manageable: The core codebase should be simple and easy-to-navigate.
    Consistent: Visual and interaction paradigms are maintained throughout.
    Stable: A reliable API with an emphasis on backwards-compatibility.
    Usable: Providing an awesome interface that people want to use.

    The only way to attain and uphold those ideals is to make it easy for developers to implement those values.

    官网中特别强调了一句话:

    At its core, Horizon should be a registration pattern for applications to hook into

    Horizon要像积木一样,(除了Core以外的)应用是可拔插的。灵活,看上去也Cool。

    来看下Horizon的结构:

    This project is a bit different from other OpenStack projects in that it has two very distinct components underneath it: horizon, and openstack_dashboard.

    The horizon directory holds the generic libraries and components that can be used in any Django project.

    The openstack_dashboard directory contains a reference Django project that uses horizon.

    Horizon的设计基于Django框架,遵循DRY原则。

    首先我们先看看 horizon/ 这个目录。horizon这个目录包括了具体应用可能需要用到的公共组件,如table,form等等。

    另外一个重要的目录就是 openstack_dashboard/ 这个目录,具体的应用视图是定义在这个目录下的,比如networks的dashboard目录就是 openstack_dashboard/project/networks/ ,每个具体应用的目录结构跟django的app结构相似:

    project/
    |---__init__.py
    |---dashboard.py <-----Registers the app with Horizon and sets dashboard properties
    |---overview/
    |---images/
        |-- images
        |-- __init__.py
        |---panel.py <-----Registers the panel in the app and defines panel properties
        |-- snapshots/
        |-- templates/
        |-- tests.py
        |-- urls.py
        |-- views.py
        ...
    ...

    其他细节,等需要用到在详细介绍。

  • 相关阅读:
    解决Nginx不支持pathinfo的问题
    PHP获取当前服务器信息的基本语句
    权重结构的加权排序算法
    《深入探讨C++对象模型》笔记 二
    链表的一些常用操作
    invalidate作用
    GetMessage()和PeekMessage()区别
    C语言程序编译的内存分配
    assert() 宏用法
    开始写博客
  • 原文地址:https://www.cnblogs.com/mcflurry/p/4624986.html
Copyright © 2020-2023  润新知