horizon學習小結

1、寫在前面

                做dashboard的二次開發,接觸了horizon,從不熟悉到熟悉,做了些筆記與總結,不涵蓋工作機密的東西,寫這個只是讓自己方便以後回憶而已。

2、content

      openstack包括horizon(基於django-based),cinder(用來Block storage),nova(用來conmpute),neutron(網絡 a virtual network service ),swift(用來object storage),ceilometer(監控採集數據),sahara(用來provide users with simple means to provison a Hadoop  cluster by specifying serveral parameters like Hadoop version,cluster topology,nodes hardware details and a few more.--官方描述),heat(模板),keystone(認證),glance(鏡像)等項目,還有一些沒聽過名字的。

       horizon摘抄筆記:

Horizon是一個基於django webframework開發的python wsgi程序。

Horizon前端是bootstrap+jquery+less。

Horizon需要和幾乎所有的openstack service API打交道,且各個服務可能有多個API版本,horizon需要針對API的多版本做兼容。

Horizon的設計類似Django的設計。

Django設計專注於代碼的高度可重用性,信奉DRY(don’t repeat yourself)原則,一切面向對象。

補充:web開發常識:網站程序基本有三部分組成:業務邏輯代碼(python),靜態文件(js/css),模板,webserver發起請求,server程序找到當前URL的對應模板,填充模板變量(html源碼),返回給瀏覽器,瀏覽器渲染頁面。

爲了提高頁面複用率,horizon將頁面上所有元素模板化,網頁中的常見元素,表單,表格,標籤頁,全部封裝成python類,每個組件有自己對應的一個html模板,當渲染整個頁面的時候,horizon先找到當前頁面有多少個組件,將各個組件分別進行渲染成一段html片段,最後拼接成一個完整的html頁面,返回給瀏覽器。

       horizon代碼分析:

最主要用到的兩個地方,horizon和openstack_dashboard,依據openstack版本的不同,他倆所處的位置不一樣,有時候是在同一個文件夾下,有時候不在同一個文件夾下。這裏在同一文件夾。

horizon目錄下static包括修改js,css等文件,templates下包括頁面顯示的基本模板。在openstack_dashboard下每一個mypanel的templates都會包括這些基模板。

openstack_dashboard/dashboards/下包括

admin,project下的每個文件夾叫mypanel,可以被創建,horizon面板的設計:分爲三層:Dashboard—PanelGroup—Panel

Horizon中現有的dashboard有4個:

1、 project:用戶登錄後的項目面板

2、 admin:管理員登錄後看到管理員面板

3、 settings:右上角的設置面板,包括設置語言,時區,更改密碼

4、 router:ciso nexus 1000v的管理面板

Dashboard.py: 位於每個Dashboard的根目錄,其作用是註冊Dashboard(django裏稱爲app)以及設置Dashboard的屬性,比如Dashboard裏有哪些panel。

一個mypanel(可用django創建app的方式創建)通常情況下的組件有,分別爲panel.py、tab.py(可選)、table.py和views.py,urls.py,tests.py 其中,panel是註冊、tab分頁標籤,table展示在頁面的表格,真正展示數據的在view裏面。tests.p測試,__init__.py創建自動生成的空文件。它們的關係是,tab包含table,view包含table或者tab。urls負責鏈接分頁tabs.py。

以project下的access_and_security爲例說明:

其中api_access,floating_ips,keypairs,security_groups相當於分頁標籤。每個分頁標籤下的結構

這個結構應該不是和創建mypanel一樣,因爲是顯示在右側頁面裏的標籤。

 

 

 

      

      

 

發佈了48 篇原創文章 · 獲贊 10 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章