概述
Cloud_Controller是Cloud Foundry的中心控制器,負責整個Cloud Foundry管理工作:包括平台資訊管理、使用者管理、應用管理、服務管理等。
業務子產品
Cloud_Controller是一個标準的rails應用(除了views部分)。通過路由表,我們可以發現Cloud_Controller的所有請求及處理入口,主要包括四個部分
(1)平台相關資訊(info),由DefaultController處理請求。
(2)使用者相關資訊(users),由UsersController處理請求,對應模型結構主要有User。
(3)應用相關資訊(apps),由AppsController處理請求,對應模型結構主要有App、AppCollaboration、Route及其他輔助類
(4)服務相關資訊(services),由ServicesController處理請求,對應模型結構主要有Service、ServiceConfig、ServiceBinding、BindingToken及其他輔助類
平台資訊管理
DefaultController包括info、runtime_info、service_info三個主要方法,分别對應vmc info、vmc runtimes和vmc services三個指令。
get 'info' => 'default#info', :as => :cloud_info
get 'info/services' => 'default#service_info', :as => :cloud_service_info
get 'info/runtimes' => 'default#runtime_info', :as => :cloud_runtime_info
(1)info傳回平台的基本資訊
VMware's Cloud Application Platform
For support visit http://support.cloudfoundry.com
Target: http://api.cloudfoundry.com (v0.999)
Client: v0.3.21
如果目前使用者登入,傳回資訊将包括使用者資訊
User: [email protected]
Usage: Memory (128.0M of 2.0G total)
Services (1 of 16 total)
Apps (1 of 20 total)
(2)service_info傳回系統的服務資訊
傳回系統的對使用者可見的服務資訊,vmc services。
svcs = Service.active_services.select {|svc| svc.visible_to_user?(user)}
+------------+---------+---------------------------------------+
| Service | Version | Description |
+------------+---------+---------------------------------------+
| mongodb | 2.0 | MongoDB NoSQL store |
| mysql | 5.1 | MySQL database service |
| postgresql | 9.0 | PostgreSQL database service (vFabric) |
| rabbitmq | 2.4 | RabbitMQ message queue |
| redis | 2.2 | Redis key-value store service |
+------------+---------+---------------------------------------+
(3)runtime_info傳回系統的運作時資訊
+--------+-------------+-----------+
| Name | Description | Version |
+--------+-------------+-----------+
| node | Node.js | 0.4.12 |
| java7 | Java 7 | 1.7 |
| java | Java 6 | 1.6 |
| node08 | Node.js | 0.8.2 |
| node06 | Node.js | 0.6.8 |
| ruby19 | Ruby 1.9 | 1.9.2p180 |
| ruby18 | Ruby 1.8 | 1.8.7 |
+--------+-------------+-----------+
使用者資訊管理
UsersController包括create、delete、update、info、list共5個主要方法。
get 'users' => 'users#list', :as => :list_users
post 'users' => 'users#create', :as => :create_user
get 'users/*email' => 'users#info', :as => :user_info
delete 'users/*email' => 'users#delete', :as => :delete_user
put 'users/*email' => 'users#update', :as => :update_user
post 'users/*email/tokens' => 'user_tokens#create', :as => :create_token
(1)create建立新使用者
如果UAA認證開啟的話,就先經過UAA認證,生成賬号
user = user_account.create(body_params[:email], body_params[:password], body_params[:email])
然後建立User對象執行個體
user = ::User.new :email => body_params[:email]
user.set_and_encrypt_password(body_params[:password])
記錄存入users表。
(2)delete删除使用者
如果UAA認證開啟的話,就先經過UAA删除認證資訊
user_account.delete_by_name(params['email'])
然後删除使用者所有的服務和APP
target_user.service_configs.each { |cfg| cfg.unprovision }
target_user.apps.each do |app|
if app.owner == target_user
app.purge_all_resources!
app.destroy
end
end
最後删除使用者
target_user.destroy
(3)update更新使用者資訊,就是修改密碼
(4)info檢視使用者資訊
普通使用者隻能檢視自己的使用者資訊,管理使用者可以檢視所有使用者資訊
(5)list傳回使用者資訊及擁有的app資訊
其他
應用管理和服務管理子產品将單獨介紹。