CloudFoundry源码分析:Cloud Controller(1)平台信息和用户管理

24 篇文章 0 订阅
11 篇文章 0 订阅

概述

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:     xxxxxxx@xxxxx.com
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信息

其他

应用管理和服务管理模块将单独介绍。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值