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
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)
返回系统的对用户可见的服务信息,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 | +------------+---------+---------------------------------------+
+--------+-------------+-----------+ | 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
如果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表。
如果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
普通用户只能查看自己的用户信息,管理用户可以查看所有用户信息
应用管理和服务管理模块将单独介绍。