代码结构
后端代码结构
- build: 编译、构建相关的目录,每个组件在此目录下均有对应的目录
- cmd: 各个组件的入口函数(main函数)所在目录
- climc: 命令行工具climc代码
- shell: 各个服务对应的命令行工具代码
- climc: 命令行工具climc代码
- docs: API swagger 文档,目前没用了
- locales: 本地化代码目录,主要负责response中信息的本地化
- pkg: 主要代码
- ansibleserver: ansibleserver代码,执行ansible的服务
- apigateway: API网关代码
- app: web服务工具包
- clientman: 访问其他服务client相关代码
- constants: 常量
- handler: web服务handler
- options: 服务的参数
- policy: keystone权限client代码
- service: 主要的服务代码
- apihelper: web服务工具包
- apis: API数据结构,一般来说每个目录对应一个组件
- compute: region的API数据结构
- zz_generated.model.go: 根据region的models自动生成的对应的数据结构
- compute: region的API数据结构
- appctx: context 工具包
- appsrv: web框架
- dispatcher: web路由相关代码
- baremetal: baremetal-agent 服务代码
- cloudcommon: 通用工具包
- agent: agent服务通用包,目前被baremetal-agent和esxi-agent所使用
- app: web服务工具包
- cmdline: 命令行工具包
- cronman: cronjob工具包
- db: 服务models通用代码
- lockman: 锁工具包
- proxy: 代理设置,主要被pkg/compute/models/cloudaccounts.go使用
- quotas: 配额相关代码
- taskman: 异步任务代码
- elect: etcd相关代码
- etcd: etcd相关代码
- informer: 订阅通知相关代码,如果关注某些model的变化,就可以订阅
- notifyclient: notify服务对应的client代码
- options: 通用的options
- pending_delete: pending_delete相关的option
- policy: model默认权限通用代码,主要用来为各个服务的model设置默认的keystone权限
- service: sevice通用代码
- syncman: informer使用相关代码
- watcher: 监视服务的model
- validators: 校验web请求参数的通用代码
- workmanager: worker代码
- cloudevent: cloudevent服务,公有云日志
- cloudid: cloudid服务,公有云免密登陆
- cloudmon: cloudmon服务,公有云监控
- collectors: 各个公有云的监控数据收集
- cloudprovider: 多云的通用数据结构
- cloudproxy: 代理服务,可以通过代理访问vpc内部的虚拟机
- compute: region服 务代码
- baremetal: baremetal相关代码
- capabilities: capabilities接口代码
- guestdrivers: 多云场景下,虚拟机相关的操作代码,不同的云实现driver
- hostdrivers: 多云场景下,宿主机相关的操作代码,不同的云实现driver
- misc: 托管已有操作系统的物理机,接口代码
- models: 服务资源模型代码,一般一个model对应数据库中的一张表
- options: 服务选项
- policy: 资源model默认权限
- regiondrivers: 多云场景下,region级别的云资源操作代码,不同的云实现driver
- service: service启动的代码
- specs: 获取物理机和GPU规格的代码,用来创建裸金属和GPU虚拟机
- sshkeys: 获取sshkey的代码,包括全局的sshkey和project的sshkey,可以用来访问虚拟机
- storagedrivers: 多云场景下,存储相关的操作代码,不同的云实现driver
- tasks: 服务相关的异步任务代码,比如创建虚拟机最终会作为异步任务执行
- usages: 获取云资源使用量统计的接口
- controller: 控制器代码
- autoscaling: 弹性伸缩控制器,主要用于实现虚拟机的弹性伸缩功能
- devtool: 运维工具服务,比如安装监控agent
- esxi: esxi-agent服务,主要用来操作vmware集群或者esxi宿主机
- hostimage: 部署在每台宿主机上,和镜像相关的服务
- hostman: host服务相关代码
- diskutils: 磁盘操作工具包
- fsutils: 文件系统操作工具包
- libguestfs: 调用libguestfs的工具包
- nbd: 调用nbd模块的工具包
- downloader: 下载代码,包括镜像、快照等下载
- guestfs: 主要用来mount完虚拟机磁盘后,检测磁盘的fs,并做一些初始化操作
- guestman: host服务中,虚拟机相关接口
- host_health: 宿主机健康检查相关接口
- hostdeployer: host-deployer服务代码,host-deployer主要用来初始化虚拟机
- hosthandler: host服务中,宿主机相关接口
- storageman: host服务中,存储相关接口
- diskutils: 磁盘操作工具包
- httperrors: web服务errors工具包
- i18n: 本地化工具包
- image: glance服务代码
- drivers: 存储driver
- keystone: keystone服务代码,主要是鉴权以及用户管理
- lbagent: 负载均衡agent代码
- logger: 日志服务
- mcclient: 后端服务通用client代码
- auth: 鉴权相关
- informer: model订阅通知
- modules: 每种资源对应一个module
- options: 请求的结构体,目前主要被climc调用
- monitor: 监控服务
- multicloud: 多云纳管,纳管各种云的代码,实现cloudpods定义的资源接口
- aliyun: 阿里云纳管
- shell: 每个云都会实现一个命令行工具,方便调试,对应cmd/aliyuncli
- aliyun: 阿里云纳管
- notify: 通知服务
- rpc: 通知服务的rpc模块,用于调用notify-plugins组件
- proxy: web框架调用的代理代码
- s3gateway: s3网关服务
- scheduler: 调度器服务
- algorithm: 调度的两大步骤
- predicates: 过滤宿主机
- priorities: 给宿主机打分
- algorithmprovider: 启用那些predicates和priorities
- api: API数据结构
- cache: 宿主机的缓存,宿主机的信息会缓存,提高调度效率
- core: 核心代码,主要是调度的实现
- test: 调度器的测试代码
- mock: mock测试
- algorithm: 调度的两大步骤
- util: 工具包
- alipayclient: 支付宝客户端
- ansible: ansible工具包
- ansiblev2: ansible工具包v2
- atexit: web框架代码
- billing: 计费工具
- bitmap: 位图
- cephutils: cepu存储
- cgrouputils: Ccroup
- choices: 命令行工具中的选项参数
- fileutils2: 文件操作工具包
- fuseutils: fuse工具包
- gin: web框架gin
- httputils: http工具包,主要用来构造client
- imagetools: 镜像工具
- influxdb: influxdb
- logclient: 日志client,服务资源的操作可以借此记录日志
- qemuimg: 调用qemu-img 工具包
- qemutils: qemu工具包
- rbacutils: rbac鉴权工具包
- regutils2: 正则工具包
- s3auth: s3鉴权
- vmdkutils: vmware vmdk工具包
- vpcagent: vpc agent服务,实现私有云的vpc功能
- webconsole: webconsole服务,比如vnc接口
- yunionconf: 配置服务
- scripts: 开发用到的各种脚本
- gencopyright.sh: 生成copyright
- cherry_pick_pull.sh: 最常用的,cherry pick PR 到其他分支
前端代码结构
- containers: 功能模块(对应一级菜单)
- Dashboard: 控制面板
- components: 模块内组件
- extends: 控制面板不同种类的磁贴目录
- locales: 国际化(控制面板部分)
- router: 路由
- sections: 磁贴配置时使用的业务组件
- styles: 样式文件
- utils: 工具方法
- views: 页面展示文件
- Cloudenv: 多云管理
- contants: 模块内常量
- locales: 国际化(当前模块部分)
- router: 路由(当前模块部分)
- sections: 业务组件
- utils: 工具方法
- views: 模块页面(对应二级菜单)
- cloudaccount: 模块名
- components: 组件目录,其中 List.vue 为当前二级菜单模块的列表页
- create: 新建相关页面
- dialogs: 弹框组件
- mixins: 提供当前模块列表、详情、新建、弹框等使用的mixin,常见singleAction.js(列表单行操作按钮)与columns.js(定义列表表头)
- sidepage: 包含但不限于详情页的侧边栏组件
- utils: 工具方法
- index.vue: 当前模块的入口文件
- cloudaccount: 模块名
- Compute: 主机
- 以下各模块代码结构同 多云管理
- DB: 数据库
- Helm: 运维工具
- IAM: 认证与安全
- K8S: 容器
- Middleware: 中间件
- Monitor: 监控
- Network: 网络
- Storage: 存储
- Dashboard: 控制面板
- mock: API管理(测试用)
- public:
- index.html: 入口页面
- scope: 授权相关
- scripts: 可执行脚本
- src: 源码目录
- assets: 静态资源
- components: 全局通用组件(可直接使用,无需引入)
- config: 配置,包含插件、主题、语言、渠道等
- constants: 全局常量,包含多云类型、全局搜索、色彩配置、监控等
- layouts: 页面排版相关组件
- locales: 国际化(全局)
- mixins: 全局mixin
- plugins: 插件目录
- router: 全局路由(包含scope和containers中的路由)
- sections: 全局业务组件
- store: 全局状态管理
- styles: 样式
- tools: 包含国际化插件
- utils: 全局工具方法(http、表单验证、列表、echart、storage、授权、error等)
- views: 页面(用户信息、工单信息、全局搜索、邮箱验证等)
- tests: 测试文件目录
- upload: 打包发布流程配置
- .env.development: 开发环境变量
- .env.production: 生产环境变量
- .gitignore: Git忽略文件
- package.json: npm包配置文件
- package-lock.json: npm包版本锁定文件
- yarn.lock: npm包版本锁定文件
- vue.config.js: Vue配置文件
- README.md: 项目介绍
- .eslintrc.js: ESlint配置文件
- .travirs.yml: Travis CI配置文件
- babel.config.js: Babel配置文件
- Dockerfile: 构建镜像文件
- jest.config.js: 单元测试配合文件