代码结构
后端代码结构
- 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: 单元测试配合文件