Cake 架構

starter

 
start/src/
 

 
center

  • server.py
  • nodeMgt.py
  • nodeState.py (改NodeBaseState)

三層對應

例如我們要修改server.py內的xxx-hostname
其他二隻程式必須要有相對的function去對應
以這個例子來看,為 rename

center

  • centerMgt (centerHA才用的到)

node

  • server.py (要做事情了)

 


 

 
center/server.py
 

 
控管node
 
程式起始點
node_join (無centerHA主要是執行這支,加入其他node)
standby_center_join (有centerHA就執行這支)
 
Cake-bootstrap
 
vs_data (openvswich的設定)
 
center pyro打開
node pyro打開
兩者之間是利用pyro互相溝通
 
centerProxy 開啟
 
每個動作都是call一個API
 

# 頁面卡住的問題
# 多半是storage造成
# 這時查看LOG會讓DEBUG變得比較容易
/var/log/vinfra/common

主要有三種LOG
  • node-<UUID>.log (nodeMgt, nodeState的LOG)
  • starter-center.log (center/server.py的LOG)
  • starter-node.log (node/server.py的LOG)

 
目前CAKE HPC可能有問題的地方
node/server.py

  • apply_nfs_storage

 
看centerdb的東東

python

from dao import db_api

dir(db_api)

db_api.get_hosts()

db_api.get_host_vswitchs_ports('UUID)

 
客戶常見問題
hostname跳來跳去 => UUID相衝
 

 

 
common/cake/network
 

 
複雜的東西 好像都沒註解
 
看架構圖
主要是這支 NetworkController
 
(待填)→ NetworkController ← (待填)
 
比較主要的是這三支
 
想查ovs指令看這隻就好
把ovs指令整再一起
ovscmd.py

CONFIG設定 
lib/setting.py
 


 

 
consoleTool.py
 

 
create new screen
 
把這個東西想成HOMEPAGE
就是一進到consoleTool你會看到的頁面
show model
 
只要跟畫面有關係的
都是 show 開頭
 


 

web

controller

  • action view
    • render (template/vm/…)
      • xxx.mako

 


 
在 CAKE UI 看到的所有東西都是在

/cake/center
/cake/web

這兩個目錄下實作的

其中
center 為 backend 部分
web 為 frontend 部分
以前的 br0 就是對應到 mgmt
以前的 br1 就是對應到 web

其中 mgmt 是對內網路, 可以在 console 下透過 consoleTool 修改 IP
web 是對外網路, 可以在 CAKE UI 上直接修改 IP

 

 

手冊連結

CAKE wiki 】→【 Quick link 】→【 Manual 】→【 III/oreo/1.3.5 】
 

雜技

執行Linux commands

cake/starter/src/lib/util.py:31
usage: runcmd(CMD)
 

判斷center是否shutdown

self.centerFlag = bool(cfg.get('role','center')=='true')
if self.centerFlag is true 代表center是shutdown的狀態
 

互動yo

python
>>> from vinfra.dm import globalResource as gr
>>> cake_proxy = gr.getVinfraServiceProxy()
>>>

 

Logger

  • node-<UUID>.log (nodeMgt, nodeState的LOG)
  • starter-center.log (center/server.py的LOG)
  • starter-node.log (node/server.py的LOG)
  • cakeweb
    • /var/log/vinfra/web.log
除非特別註明,本頁內容採用以下授權方式: Creative Commons Attribution-ShareAlike 3.0 License