From 939d9dc3cd550244acef294f6d692c417e5b6cdd Mon Sep 17 00:00:00 2001 From: pycook Date: Wed, 12 Jul 2023 10:14:47 +0800 Subject: [PATCH] md format --- README_en.md | 48 +- docs/cmdb_api.md | 1210 +++++++++++++++++++--------------------- docs/cmdb_query_api.md | 264 +++++---- docs/docker.md | 3 +- docs/docker_en.md | 9 +- docs/local.md | 41 +- docs/local_en.md | 38 +- docs/makefile.md | 21 +- docs/makefile_en.md | 23 +- docs/screenshot.md | 4 +- 10 files changed, 808 insertions(+), 853 deletions(-) diff --git a/README_en.md b/README_en.md index c17751e..e970f93 100644 --- a/README_en.md +++ b/README_en.md @@ -1,43 +1,46 @@ ![基础资源视图](docs/logo.png) [![License](https://img.shields.io/badge/License-AGPLv3-brightgreen)](https://github.com/veops/cmdb/blob/master/LICENSE) -[![UI](https://img.shields.io/badge/UI-Ant%20Design%20Pro%20Vue-brightgreen)](https://github.com/sendya/ant-design-pro-vue) -[![API](https://img.shields.io/badge/API-Flask-brightgreen)](https://github.com/pallets/flask) - +[![UI](https://img.shields.io/badge/UI-Ant%20Design%20Pro%20Vue-brightgreen)](https://github.com/sendya/ant-design-pro-vue) +[![API](https://img.shields.io/badge/API-Flask-brightgreen)](https://github.com/pallets/flask) [English](README_en.md) / [中文](README.md) ## DEMO ONLINE -- Preview online: CMDB - - username: demo - - password: 123456 - -> **ATTENTION**: branch `master` may be unstable as the result of continued development, please pull code from [releases](https://github.com/veops/cmdb/releases) -Overview -------------- +- Preview online: CMDB + - username: demo + - password: 123456 + +> **ATTENTION**: branch `master` may be unstable as the result of continued development, please pull code from [releases](https://github.com/veops/cmdb/releases) + +## Overview + ### Technical Architecture + ### Document + - Design Document - API Documentation - Practice of Tree View - ### Features + - Flexibility 1. Standardize and manage complex data assets 2. Automatically discover and inventory IT assets - Security 1. Fine-grained access control - 2. Comprehensive operation logs + 2. Comprehensive operation logs - Multi-application 1. Rich view display dimensions 2. Provide Restful API 3. Custom field triggers ### Main Features + - Model attributes support indexing, multiple values, default sorting, font color, and computed properties. - Support automatic discovery, scheduled inspections, and file import. - Support resource, tree view, and relationship view display. @@ -46,23 +49,27 @@ Overview - Support cross-model search. ### System Overview + - Service Tree -![1](docs/0.png "首页展示") + ![1](docs/0.png "首页展示") [View more screenshots](docs/screenshot.md) ### More Features + > Welcome to visit VeOps official website to discover more free operations and maintenance systems. ## Recommended + [Spug - Open source lightweight automated operation and maintenance platform](https://github.com/openspug/spug) -Installation ----- -### [One-Click Docker Quick Build](docs/docker_en.md) -### [Local Setup](docs/local_en.md) -### [Installation with Makefile](docs/makefile_en.md) +## Installation +### [One-Click Docker Quick Build](docs/docker_en.md) + +### [Local Setup](docs/local_en.md) + +### [Installation with Makefile](docs/makefile_en.md) ## Contributing @@ -72,7 +79,8 @@ Installation 1. Push to the branch (`git push origin my-feature`) 1. Create new Pull Request ------ +--- + _**Welcome to join us through QQ group(336164978)**_ -![QQgroup](docs/qr_code.jpg) \ No newline at end of file +![QQgroup](docs/qr_code.jpg) diff --git a/docs/cmdb_api.md b/docs/cmdb_api.md index e97c477..18c4b28 100644 --- a/docs/cmdb_api.md +++ b/docs/cmdb_api.md @@ -1,4 +1,4 @@ -# CMDB API文档 +# CMDB API 文档 ``` Rule Endpoint @@ -79,659 +79,607 @@ Rule Endpoint ``` ## 状态返回码的定义 -* 200:成功 -* 400:失败 -* 401:未认证 -* 403:no permission -* 404:not found -* 500:服务器未知错误 +- 200:成功 +- 400:失败 +- 401:未认证 +- 403:no permission +- 404:not found +- 500:服务器未知错误 ## 用户接口 -### CI搜索接口 +### CI 搜索接口 -* GET `/api/v0.1/ci/s` -* 参数 - * `string:_type` 搜索的ci_type,多个用分号隔开, 例如: _type:(server;vservser) - * `string:q` 搜索表达式, 例如`q=hostname:cmdb*` - * `string:fl` 返回字段(id, attr_name, attr_alias均可),英文半角逗号分隔 - * `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name` - * `count` 指定一次返回CI数 - * `facet` 属性字段,逗号分隔,返回属性字段对应的所有值 - -* 搜索表达式: - * 简单的字符串 - * `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias` - * 以上的组合,逗号分隔 - -* 组合查询支持 - * `AND`关系-`默认关系` - * `OR`关系 - eg.`-hostname:cmdb*`、 - * `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*` - * `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔 - * `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔 - * `COMPARISON`查询. eg. `cpu_core_num:>5` 支持`>, >=, <, <=` +- GET `/api/v0.1/ci/s` +- 参数 + - `string:_type` 搜索的 ci_type,多个用分号隔开, 例如: \_type:(server;vservser) + - `string:q` 搜索表达式, 例如`q=hostname:cmdb*` + - `string:fl` 返回字段(id, attr_name, attr_alias 均可),英文半角逗号分隔 + - `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name` + - `count` 指定一次返回 CI 数 + - `facet` 属性字段,逗号分隔,返回属性字段对应的所有值 +- 搜索表达式: + - 简单的字符串 + - `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias` + - 以上的组合,逗号分隔 +- 组合查询支持 + - `AND`关系-`默认关系` + - `OR`关系 - eg.`-hostname:cmdb*`、 + - `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*` + - `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔 + - `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔 + - `COMPARISON`查询. eg. `cpu_core_num:>5` 支持`>, >=, <, <=` + +### CI Relation 搜索接口 + +- GET `/api/v0.1/ci_relations/s` +- 参数 + - `int:root_id` 搜索的根节点的 ci_id + - `int:level` 搜索的层级 + - `string:_type` 搜索的 ci_type,多个用分号隔开, 例如: \_type:(docker;kvm) + - `string:q` 搜索表达式, 例如`q=hostname:cmdb*` + - `string:fl` 返回字段(id, attr_name, attr_alias 均可),英文半角逗号分隔 + - `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name` + - `count` 指定一次返回 CI 数 + - `facet` 属性字段,逗号分隔,返回属性字段对应的所有值 +- 搜索表达式: + - 简单的字符串 + - `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias` + - 以上的组合,逗号分隔 +- 组合查询支持 + - `AND`关系-`默认关系` + - `OR`关系 - eg.`-hostname:cmdb*`、 + - `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*` + - `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔 + - `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔 + - `COMPARISON`查询. eg. `cpu_count:>5` 支持`>, >=, <, <=` -### CI Relation搜索接口 -* GET `/api/v0.1/ci_relations/s` -* 参数 - * `int:root_id` 搜索的根节点的ci_id - * `int:level` 搜索的层级 - * `string:_type` 搜索的ci_type,多个用分号隔开, 例如: _type:(docker;kvm) - * `string:q` 搜索表达式, 例如`q=hostname:cmdb*` - * `string:fl` 返回字段(id, attr_name, attr_alias均可),英文半角逗号分隔 - * `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name` - * `count` 指定一次返回CI数 - * `facet` 属性字段,逗号分隔,返回属性字段对应的所有值 - -* 搜索表达式: - * 简单的字符串 - * `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias` - * 以上的组合,逗号分隔 - -* 组合查询支持 - * `AND`关系-`默认关系` - * `OR`关系 - eg.`-hostname:cmdb*`、 - * `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*` - * `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔 - * `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔 - * `COMPARISON`查询. eg. `cpu_count:>5` 支持`>, >=, <, <=` - - ## api key 认证 -每个用户会自动生成一个 `api key` 和 一个`secret`, 通过API接口使用的时候,需要提供一个参数 `_key`值为您的`api key`, 以及参数`_secret`值为除`_key`以外的参数,按照**参数名的字典序**排列,并连接到`url path` + `secret`之后的`sha1`**十六进制**值。 - +每个用户会自动生成一个 `api key` 和 一个`secret`, 通过 API 接口使用的时候,需要提供一个参数 `_key`值为您的`api key`, 以及参数`_secret`值为除`_key`以外的参数,按照**参数名的字典序**排列,并连接到`url path` + `secret`之后的`sha1`**十六进制**值。 ## 管理接口 -### Attribute管理接口 -* GET `/api/v0.1/attributes/s` 列出所有属性 - * param - * `string:q` 属性名称或者别名,允许为空 - * return - - ``` - { - "numfound": 1, - "attributes": [ - { - "attr_name": "idc", - "is_choice": true, - "choice_value": ["南汇", "欧阳路"], - "attr_id": 1, - "is_multivalue": false, - "attr_alias": "IDC", - "value_type": "text", - "is_uniq": false - } - } - ``` - - * error 无 - +### Attribute 管理接口 -* GET `/api/v0.1/attributes/`、 `/api/v0.1/attributes/` 根据属性名称、别名或ID获取属性 - * param - * `string:attr_name` 属性名称或别名 - * `int:attr_id` 属性ID - * `attr_id`和`attr_name`选其一 - * return - - ``` - { - "attribute": { - "attr_name": "idc", - "is_choice": true, - "choice_value": ["南汇", "欧阳路"], - "attr_id": 1, - "is_multivalue": false, - "attr_alias": "IDC", - "value_type": "text", - "is_uniq": false - }, - } - ``` - - * error - * `404` 找不到属性 - -* POST `/api/v0.1/attributes` 增加新的属性 - * param - * `string:attr_name` 属性名称 - * `string:attr_alias` 属性别名,可为空,为空时等于`attr_name` - * `boolean:choice_value` 若属性有预定义值, 则不能为空 - * `boolean:is_multivalue` 属性是否允许多值,默认`False` - * `boolean:is_uniq` 属性是否唯一,默认`False` - * `string:value_type` 属性值类型, `Enum("text", "int", "float", "date")`, 默认`text` - - * return - - ``` - { - "attr_id":1 - } - ``` - - * error - * `500` 属性已存在 - * `500` 属性增加失败 - - * PUT `/api/v0.1/attributes/` 修改属性 - * param - * `string:attr_name` 属性名称 - * `string:attr_alias` 属性别名,可为空,为空时等于`attr_name` - * `boolean:choice_value` 若属性有预定义值, 则不能为空 - * `boolean:is_multivalue` 属性是否允许多值,值为0或者1,默认`False` - * `boolean:is_uniq` 属性是否唯一,值为0或者1,默认`False` - * `string:value_type` 属性值类型, `Enum("text", "int", "float", "date")`, 默认`text` - - * return - - ``` - { - "attr_id":1 - } - ``` - - * error - * `500` 属性已存在 - * `500` 属性增加失败 - - * DELETE `/api/v0.1/attributes/` 根据ID删除属性 - * param - * `int:attr_id` 属性ID - * return - - ``` - { - "message":"attribute %s deleted" % attr_name - } - ``` - - * error - * `404` 属性不存在 - * `500` 删除属性失败 - -#### CIType属性管理 - - * GET `/api/v0.1/ci_types//attributes` 根据type_id查询固有属性列表 - * return - - ``` - { - "attributes": [ - { - "attr_name": "idc", - "is_choice": true, - "choice_value": ["南汇", "欧阳路"], - "attr_id": 1, - "is_multivalue": false, - "attr_alias": "IDC", - "value_type": "text", - "is_uniq": false - }, - ], - "type_id": 1, - } - ``` - -* POST `/api/v0.1/ci_types//attributes` 根据`attr_id`增加CIType的属性 - * param - * `string:attr_id` `,`分隔的`attr_id` - * `int:is_required` 0或者1 - - * return - - ``` - { - "attributes":[1, 2, 3] - } - ``` - - * error - * `404` CIType不存在 - * `404` 属性不存在 - * `500` 增加失败 - -* DELETE `/api/v0.1/ci_types//attributes` 删除CIType的属性 - * param - * `string:attr_id` `,`分隔的`attr_id` - - * return - - ``` - { - "attributes":[1, 2, 3] - } - ``` - - * error - * `404` CIType不存在 - * `404` 属性不存在 - * `500` 增加失败 - - -### CIType管理接口 +- GET `/api/v0.1/attributes/s` 列出所有属性 -* `/api/v0.1/ci_types` 列出所有CI类型 - * param `string:type_name` 类型名称,允许为空 - * return - - ``` - { - "numfound": 2, - "ci_types": [ - { - "uniq_key": "sn", - "type_name": "物理机", - "type_id": 1, - "enabled": True, - "icon_url": "" - }, - { - "uniq_key": "uuid", - "type_name": "KVM", - "type_id": 2, - "enabled": True, - "icon_url": "" - } - ], - } - ``` - * error 无 - -* GET `/api/v0.1/ci_types/query` 查询CI类型 - * param `string:q` 可以是type_id, type_name, type_alias - * return - - ``` - { - "citype": { - "type_name": "software", - "type_id": 4, - "icon_url": "", - "type_alias": "\u8f6f\u4ef6", - "enabled": true, - "uniq_key": 21 - } - } - ``` - * error - * `400` message=输入参数缺失 - * `404` message='citype is not found' - -* POST `/api/v0.1/ci_types` 增加新CIType - * param (下列参数任意一个或多个) - * `string:type_name` CIType名称 - * `string:type_alias` 类型别名,可为空 - * `int:_id` 唯一属性ID - * `string:unique` 唯一属性名称 - * `_id`和`unique`只能二选一 - * `icon_url` - * `enabled` 0/1 - * return - - ``` - { - "type_id": 2 - } - ``` - - * error - * `400` message=输入参数缺失 - * `500` message=CIType已存在 - * `500` message=唯一属性不存在 - * `500` message=唯一属性不是唯一的 - -* PUT `/api/v0.1/ci_types/` 修改CIType - * param (下列参数任意一个或多个) - * `string:type_name` CIType名称 - * `string:type_alias` 类型别名,可为空 - * `int:_id` 唯一属性ID - * `string:unique` 唯一属性名称 - * `_id`和`unique`只能二选一 - * `icon_url` - * `enabled` 0/1 - * return - - ``` - { - "type_id": 2 - } - ``` - - * error - * `400` message=输入参数缺失 - * `500` message=CIType已存在 - * `500` message=唯一属性不存在 - * `500` message=唯一属性不是唯一的 + - param + - `string:q` 属性名称或者别名,允许为空 + - return -* GET/POST `/api/v0.1/ci_types//enable` 修改CIType - * param - * `enabled` 0 or 1 - * return - - ``` - { - "type_id": 2 - } - ``` - - * error - * `500` 设置失败 - * `404` CIType不存在 - -* DELETE `/api/v0.1/ci_types/` 根据ID删除CIType - * return - - ``` - { - "message":"ci type %s deleted" % type_name - } - ``` - * error - * `500` 删除失败 - * `404` CIType不存在 - -### CITypeRelation管理接口 - -* GET `/api/v0.1/relation_types` 列出所有CIType关系类型名 - * return - - ``` - [ + ``` + { + "numfound": 1, + "attributes": [ { - "created_at": null, - "deleted": false, - "deleted_at": null, - "id": 1, - "name": "contain", - "updated_at": null + "attr_name": "idc", + "is_choice": true, + "choice_value": ["南汇", "欧阳路"], + "attr_id": 1, + "is_multivalue": false, + "attr_alias": "IDC", + "value_type": "text", + "is_uniq": false + } + } + ``` + + - error 无 + +- GET `/api/v0.1/attributes/`、 `/api/v0.1/attributes/` 根据属性名称、别名或 ID 获取属性 + - param + - `string:attr_name` 属性名称或别名 + - `int:attr_id` 属性 ID + - `attr_id`和`attr_name`选其一 + - return + ``` + { + "attribute": { + "attr_name": "idc", + "is_choice": true, + "choice_value": ["南汇", "欧阳路"], + "attr_id": 1, + "is_multivalue": false, + "attr_alias": "IDC", + "value_type": "text", + "is_uniq": false + }, + } + ``` + - error + - `404` 找不到属性 +- POST `/api/v0.1/attributes` 增加新的属性 + - param + - `string:attr_name` 属性名称 + - `string:attr_alias` 属性别名,可为空,为空时等于`attr_name` + - `boolean:choice_value` 若属性有预定义值, 则不能为空 + - `boolean:is_multivalue` 属性是否允许多值,默认`False` + - `boolean:is_uniq` 属性是否唯一,默认`False` + - `string:value_type` 属性值类型, `Enum("text", "int", "float", "date")`, 默认`text` + - return + ``` + { + "attr_id":1 + } + ``` + - error + - `500` 属性已存在 + - `500` 属性增加失败 +- PUT `/api/v0.1/attributes/` 修改属性 + + - param + - `string:attr_name` 属性名称 + - `string:attr_alias` 属性别名,可为空,为空时等于`attr_name` + - `boolean:choice_value` 若属性有预定义值, 则不能为空 + - `boolean:is_multivalue` 属性是否允许多值,值为 0 或者 1,默认`False` + - `boolean:is_uniq` 属性是否唯一,值为 0 或者 1,默认`False` + - `string:value_type` 属性值类型, `Enum("text", "int", "float", "date")`, 默认`text` + - return + + ``` + { + "attr_id":1 + } + ``` + + - error + - `500` 属性已存在 + - `500` 属性增加失败 + +- DELETE `/api/v0.1/attributes/` 根据 ID 删除属性 + - param + - `int:attr_id` 属性 ID + - return + ``` + { + "message":"attribute %s deleted" % attr_name + } + ``` + - error + - `404` 属性不存在 + - `500` 删除属性失败 + +#### CIType 属性管理 + +- GET `/api/v0.1/ci_types//attributes` 根据 type_id 查询固有属性列表 + - return + ``` + { + "attributes": [ + { + "attr_name": "idc", + "is_choice": true, + "choice_value": ["南汇", "欧阳路"], + "attr_id": 1, + "is_multivalue": false, + "attr_alias": "IDC", + "value_type": "text", + "is_uniq": false + }, + ], + "type_id": 1, + } + ``` +- POST `/api/v0.1/ci_types//attributes` 根据`attr_id`增加 CIType 的属性 + - param + - `string:attr_id` `,`分隔的`attr_id` + - `int:is_required` 0 或者 1 + - return + ``` + { + "attributes":[1, 2, 3] + } + ``` + - error + - `404` CIType 不存在 + - `404` 属性不存在 + - `500` 增加失败 +- DELETE `/api/v0.1/ci_types//attributes` 删除 CIType 的属性 + - param + + - `string:attr_id` `,`分隔的`attr_id` + + - return + ``` + { + "attributes":[1, 2, 3] + } + ``` + - error + - `404` CIType 不存在 + - `404` 属性不存在 + - `500` 增加失败 + +### CIType 管理接口 + +- `/api/v0.1/ci_types` 列出所有 CI 类型 + - param `string:type_name` 类型名称,允许为空 + - return + ``` + { + "numfound": 2, + "ci_types": [ + { + "uniq_key": "sn", + "type_name": "物理机", + "type_id": 1, + "enabled": True, + "icon_url": "" + }, + { + "uniq_key": "uuid", + "type_name": "KVM", + "type_id": 2, + "enabled": True, + "icon_url": "" + } + ], + } + ``` + - error 无 +- GET `/api/v0.1/ci_types/query` 查询 CI 类型 + - param `string:q` 可以是 type_id, type_name, type_alias + - return + ``` + { + "citype": { + "type_name": "software", + "type_id": 4, + "icon_url": "", + "type_alias": "\u8f6f\u4ef6", + "enabled": true, + "uniq_key": 21 + } + } + ``` + - error + - `400` message=输入参数缺失 + - `404` message='citype is not found' +- POST `/api/v0.1/ci_types` 增加新 CIType + - param (下列参数任意一个或多个) + - `string:type_name` CIType 名称 + - `string:type_alias` 类型别名,可为空 + - `int:_id` 唯一属性 ID + - `string:unique` 唯一属性名称 + - `_id`和`unique`只能二选一 + - `icon_url` + - `enabled` 0/1 + - return + ``` + { + "type_id": 2 + } + ``` + - error + - `400` message=输入参数缺失 + - `500` message=CIType 已存在 + - `500` message=唯一属性不存在 + - `500` message=唯一属性不是唯一的 +- PUT `/api/v0.1/ci_types/` 修改 CIType + + - param (下列参数任意一个或多个) + - `string:type_name` CIType 名称 + - `string:type_alias` 类型别名,可为空 + - `int:_id` 唯一属性 ID + - `string:unique` 唯一属性名称 + - `_id`和`unique`只能二选一 + - `icon_url` + - `enabled` 0/1 + - return + + ``` + { + "type_id": 2 + } + ``` + + - error + - `400` message=输入参数缺失 + - `500` message=CIType 已存在 + - `500` message=唯一属性不存在 + - `500` message=唯一属性不是唯一的 + +- GET/POST `/api/v0.1/ci_types//enable` 修改 CIType + - param + - `enabled` 0 or 1 + - return + ``` + { + "type_id": 2 + } + ``` + - error + - `500` 设置失败 + - `404` CIType 不存在 +- DELETE `/api/v0.1/ci_types/` 根据 ID 删除 CIType + - return + ``` + { + "message":"ci type %s deleted" % type_name + } + ``` + - error + - `500` 删除失败 + - `404` CIType 不存在 + +### CITypeRelation 管理接口 + +- GET `/api/v0.1/relation_types` 列出所有 CIType 关系类型名 + - return + ``` + [ + { + "created_at": null, + "deleted": false, + "deleted_at": null, + "id": 1, + "name": "contain", + "updated_at": null + } + ] + ``` + - error 无 +- GET `/api/v0.1/ci_type_relations//children` 返回所有 child id + - return + ``` + { + "children": [ + { + "ctr_id": 1, + "type_name": "project", + "type_id": 2, + "icon_url": "", + "type_alias": "应用", + "enabled": true, + "uniq_key": 3 } ] - ``` - * error 无 - -* GET `/api/v0.1/ci_type_relations//children` 返回所有child id - * return - - ``` - { - "children": [ - { - "ctr_id": 1, - "type_name": "project", - "type_id": 2, - "icon_url": "", - "type_alias": "应用", - "enabled": true, - "uniq_key": 3 - } + } + ``` + - error 无 +- GET `/api/v0.1/ci_type_relations//parents` 返回 parent id + + - return + + ``` + { + "parents": [{'parent':1, 'relaltion_type': 'containes', "ctr_id":1}], + } + ``` + + - error 无 + +- POST `/api/v0.1/ci_type_relations//` 增加 CIType 关系 + - param + - `string:relation_type` 类型名称 + - return + ``` + { + "ctr_id": 1 + } + ``` + - error + - `500` 增加失败 + - `404` CIType 不存在 +- DELETE `/api/v0.1/ci_type_relations/` 根据`ctr_id`删除 CIType 关系 + - return + ``` + { + "message": "CIType relation deleted" + } + ``` + - error + - `500` 删除失败 + - `404` 关系不存在 + +### CI 管理接口 + +- GET `/api/v0.1/ci/type/` 查询 CIType 的所有 CI,一次返回 25 条记录 + + - param + + - `string:fields` 返回属性名、id,逗号隔开 + - `string:ret_key` 返回属性 key,默认'name',还可是'id', 'alias' + - `int:page` 页码 + + - return + + ``` + { + "numfound": 1, + "type_id":1, + "page": 1, + "cis": [ + { + "ci_type": "KVM", + "_type": 1, + "nic": [ + 2 + ], + "hostname": "xxxxxx", + "_unique": "xxxxxx", + "_id": 1 + } ] - } - ``` - * error 无 - -* GET `/api/v0.1/ci_type_relations//parents` 返回parent id - * return - - ``` - { - "parents": [{'parent':1, 'relaltion_type': 'containes', "ctr_id":1}], - } - ``` - * error 无 - + } + ``` -* POST `/api/v0.1/ci_type_relations//` 增加CIType关系 - * param - * `string:relation_type` 类型名称 - * return - - ``` - { - "ctr_id": 1 - } - ``` - * error - * `500` 增加失败 - * `404` CIType不存在 - -* DELETE `/api/v0.1/ci_type_relations/` 根据`ctr_id`删除CIType关系 - * return - - ``` - { - "message": "CIType relation deleted" - } - ``` - * error - * `500` 删除失败 - * `404` 关系不存在 - + - error + - `404` CIType 不存在 +- GET `/api/v0.1/ci/` 查询 CI -### CI管理接口 + - return -* GET `/api/v0.1/ci/type/` 查询CIType的所有CI,一次返回25条记录 - * param - * `string:fields` 返回属性名、id,逗号隔开 - * `string:ret_key` 返回属性key,默认'name',还可是'id', 'alias' - * `int:page` 页码 - - * return - - ``` - { - "numfound": 1, - "type_id":1, - "page": 1, - "cis": [ - { - "ci_type": "KVM", - "_type": 1, - "nic": [ - 2 - ], - "hostname": "xxxxxx", - "_unique": "xxxxxx", + ``` + { + "ci": { + "ci_type": "KVM", + "_type": 1, + "nic": [2], + "hostname": "xxxxx", + "_unique": "xxxxx", "_id": 1 - } - ] - } - ``` - * error - * `404` CIType不存在 - -* GET `/api/v0.1/ci/` 查询CI - - * return - - ``` - { - "ci": { - "ci_type": "KVM", - "_type": 1, - "nic": [2], - "hostname": "xxxxx", - "_unique": "xxxxx", - "_id": 1 - }, - "ci_id": 1 - } - ``` - * error 无 - - - -* POST `/api/v0.1/ci` 增加CI - * param - * `string:ci_type` CIType name 或者id - * `string:_no_attribute_policy` 当添加不存在的attribute时的策略, 默认`ignore` - * 其他url参数`k=v`: `k` 为属性名(id或别名亦可), `v`为对应的值 - * 此CIType的`unique`字段必须包含在url参数中 - * return - - ``` - { - "ci_id": 1, - } - ``` - * error - * `500` 添加失败 - -* PUT `/api/v0.1/ci` 修改CI - * param - * `string:ci_type` CIType name 或者id - * `string:_no_attribute_policy` 当添加不存在的attribute时的策略, 默认`ignore` - * 其他url参数`k=v`: `k` 为属性名(id或别名亦可), `v`为对应的值 - * 此CIType的`unique`字段必须包含在url参数中 - * return - - ``` - { - "ci_id":1, - } - ``` - * error - * `500` 添加失败 - -* DELETE `/api/v0.1/ci/` 删除ci - * return - - ``` - { - "message":"ok", - } - ``` - * error - * `500` 删除失败 - - -## CI Relation管理接口 - -* GET `/api/v0.1/ci_relations//second_cis` 返回所有second cis - * return - - ``` - { - "numfound": 1, - "second_cis": [ - { - "ci_type": "project", - "ci_type_alias": "应用", - "_type": 2, - "_id": 18, - "project_name": "cmdb-api" - } - ] - } - ``` - * error 无 - -* GET `/api/v0.1/ci_relations//first_cis` 返回first cis - * return - - ``` - { - "first_cis": [ - { - "ci_type": "project", - "ci_type_alias": "应用", - "_type": 2, - "_id": 18, - "project_name": "cmdb-api" - } - ], - "numfound": 1 - } - ``` - * error 无 - + }, + "ci_id": 1 + } + ``` + + - error 无 + +- POST `/api/v0.1/ci` 增加 CI + - param + - `string:ci_type` CIType name 或者 id + - `string:_no_attribute_policy` 当添加不存在的 attribute 时的策略, 默认`ignore` + - 其他 url 参数`k=v`: `k` 为属性名(id 或别名亦可), `v`为对应的值 + - 此 CIType 的`unique`字段必须包含在 url 参数中 + - return + ``` + { + "ci_id": 1, + } + ``` + - error + - `500` 添加失败 +- PUT `/api/v0.1/ci` 修改 CI + - param + - `string:ci_type` CIType name 或者 id + - `string:_no_attribute_policy` 当添加不存在的 attribute 时的策略, 默认`ignore` + - 其他 url 参数`k=v`: `k` 为属性名(id 或别名亦可), `v`为对应的值 + - 此 CIType 的`unique`字段必须包含在 url 参数中 + - return + ``` + { + "ci_id":1, + } + ``` + - error + - `500` 添加失败 +- DELETE `/api/v0.1/ci/` 删除 ci + - return + ``` + { + "message":"ok", + } + ``` + - error + - `500` 删除失败 + +## CI Relation 管理接口 + +- GET `/api/v0.1/ci_relations//second_cis` 返回所有 second cis + - return + ``` + { + "numfound": 1, + "second_cis": [ + { + "ci_type": "project", + "ci_type_alias": "应用", + "_type": 2, + "_id": 18, + "project_name": "cmdb-api" + } + ] + } + ``` + - error 无 +- GET `/api/v0.1/ci_relations//first_cis` 返回 first cis + + - return + + ``` + { + "first_cis": [ + { + "ci_type": "project", + "ci_type_alias": "应用", + "_type": 2, + "_id": 18, + "project_name": "cmdb-api" + } + ], + "numfound": 1 + } + ``` + + - error 无 + +- POST `/api/v0.1/ci_relations//` 增加 CI 关系 + - param + - `int: more` more 实例 + - `string:relation_type` 类型名称 + - return + ``` + { + "cr_id":1 + } + ``` + - error + - `500` 增加失败 + - `404` CI 不存在 +- DELETE `/api/v0.1/ci_relations/` 根据`cr_id`删除 CI 关系 + - return + ``` + { + "message":"CIType relation deleted" + } + ``` + - error + - `500` 删除失败 + - `404` 关系不存在 -* POST `/api/v0.1/ci_relations//` 增加CI关系 - * param - * `int: more` more实例 - * `string:relation_type` 类型名称 - * return - - ``` - { - "cr_id":1 - } - ``` - * error - * `500` 增加失败 - * `404` CI不存在 - -* DELETE `/api/v0.1/ci_relations/` 根据`cr_id`删除CI关系 - * return - - ``` - { - "message":"CIType relation deleted" - } - ``` - * error - * `500` 删除失败 - * `404` 关系不存在 - - - ## 历史记录管理接口 -* GET `/api/v0.1/history/records` 查询历史记录 - * param - * `int: page` - * `string: username` 变更用户 - * `string: start` 变更开始时间 - * `string: end` 变更结束时间 - * return - - ``` - { - "username": "", - "start": "2014-12-31 14:57:43", - "end": "2015-01-07 14:57:43", - "records": [ - { - "origin": null, - "attr_history": [], - "timestamp": "2015-01-01 22:12:39", - "reason": null, - "rel_history": { - "add": 1 - }, - "user": 1, - "record_id": 1234, - "ticket_id": null - } + +- GET `/api/v0.1/history/records` 查询历史记录 + - param + - `int: page` + - `string: username` 变更用户 + - `string: start` 变更开始时间 + - `string: end` 变更结束时间 + - return + ``` + { + "username": "", + "start": "2014-12-31 14:57:43", + "end": "2015-01-07 14:57:43", + "records": [ + { + "origin": null, + "attr_history": [], + "timestamp": "2015-01-01 22:12:39", + "reason": null, + "rel_history": { + "add": 1 + }, + "user": 1, + "record_id": 1234, + "ticket_id": null + } + ] + } + ``` + - error 无 +- GET `/api/v0.1/history/records/` 历史记录详情 + - return + ``` + { + "username": "demo", + "timestamp": "2015-01-02 20:21:16", + "rel_history": { + "add": [ + [ + 123, + "deploy", + 234 ] - } - ``` - * error 无 - - * GET `/api/v0.1/history/records/` 历史记录详情 - * return - - ``` - { - "username": "demo", - "timestamp": "2015-01-02 20:21:16", - "rel_history": { - "add": [ - [ - 123, - "deploy", - 234 - ] - ], - "delete": [] - }, - "attr_history": {} - } - ``` - - * error - * `404` 该记录不存在 + ], + "delete": [] + }, + "attr_history": {} + } + ``` + - error + - `404` 该记录不存在 diff --git a/docs/cmdb_query_api.md b/docs/cmdb_query_api.md index 2c9efdc..18f999f 100644 --- a/docs/cmdb_query_api.md +++ b/docs/cmdb_query_api.md @@ -1,143 +1,133 @@ -# CMDB查询 API文档 - - +# CMDB 查询 API 文档 ## 用户接口 -### CI通用搜索接口 -##### 搜索所有的CI实例 +### CI 通用搜索接口 -* GET `/api/v0.1/ci/s` -* 参数 - * `string:_type` 搜索的ci_type,多个用分号隔开, 例如: _type:(docker;kvm) - * `string:q` 搜索表达式, 例如`q=hostname:cmdb*` - * `string:fl` 返回字段(id, attr_name, attr_alias均可),英文半角逗号分隔 - * `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name` - * `count` 指定一次返回CI数 - * `facet` 属性字段,逗号分隔,返回属性字段对应的所有值 - -* 搜索表达式: - * 简单的字符串 - * `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias` - * 以上的组合,逗号分隔 - -* 组合查询支持 - * `AND`关系-`默认关系` - * `OR`关系 - eg.`-hostname:cmdb*`、 - * `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*` - * `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔 - * `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔 - * `COMPARISON`查询. eg. `cpu_count:>5` 支持`>, >=, <, <=` - -* 返回结果 - * 搜索表达式 `/api/v0.1/ci/s?q=_type:kvm,status:在线,idc:南汇,private_ip:10.1.1.1*&page=1&fl=hostname,private_ip&facet=private_ip&count=1` - * 返回数据(默认json) - - ``` - { - facet: { - private_ip: [ - [ - "10.1.1.11", - 1, - "private_ip" - ], - [ - "10.1.1.12", - 1, - "private_ip" - ], - [ - "10.1.1.13", - 1, - "private_ip" - ] - ] - }, - total: 1, - numfound: 3, - result: [ - { - hostname: "xxx11", - private_ip: [ - "10.1.1.11" - ] - } - ], - counter: { - kvm: 1 - }, - page: 1 - } - ``` - -### CI Relation通用搜索接口 +##### 搜索所有的 CI 实例 -##### 搜索所有的CI之间的关系,比如某一个产品线线的所有应用或者是所有服务器 +- GET `/api/v0.1/ci/s` +- 参数 + - `string:_type` 搜索的 ci_type,多个用分号隔开, 例如: \_type:(docker;kvm) + - `string:q` 搜索表达式, 例如`q=hostname:cmdb*` + - `string:fl` 返回字段(id, attr_name, attr_alias 均可),英文半角逗号分隔 + - `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name` + - `count` 指定一次返回 CI 数 + - `facet` 属性字段,逗号分隔,返回属性字段对应的所有值 +- 搜索表达式: + - 简单的字符串 + - `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias` + - 以上的组合,逗号分隔 +- 组合查询支持 + - `AND`关系-`默认关系` + - `OR`关系 - eg.`-hostname:cmdb*`、 + - `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*` + - `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔 + - `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔 + - `COMPARISON`查询. eg. `cpu_count:>5` 支持`>, >=, <, <=` +- 返回结果 + - 搜索表达式 `/api/v0.1/ci/s?q=_type:kvm,status:在线,idc:南汇,private_ip:10.1.1.1*&page=1&fl=hostname,private_ip&facet=private_ip&count=1` + - 返回数据(默认 json) + ``` + { + facet: { + private_ip: [ + [ + "10.1.1.11", + 1, + "private_ip" + ], + [ + "10.1.1.12", + 1, + "private_ip" + ], + [ + "10.1.1.13", + 1, + "private_ip" + ] + ] + }, + total: 1, + numfound: 3, + result: [ + { + hostname: "xxx11", + private_ip: [ + "10.1.1.11" + ] + } + ], + counter: { + kvm: 1 + }, + page: 1 + } + ``` -* GET `/api/v0.1/ci_relations/s` -* 参数 - * `int:root_id` 搜索的根节点的ci_id - * `int:level` 搜索的层级 - * `string:_type` 搜索的ci_type,多个用分号隔开, 例如: _type:(docker;kvm) - * `string:q` 搜索表达式, 例如`q=hostname:cmdb*` - * `string:fl` 返回字段(id, attr_name, attr_alias均可),英文半角逗号分隔 - * `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name` - * `count` 指定一次返回CI数 - * `facet` 属性字段,逗号分隔,返回属性字段对应的所有值 - -* 搜索表达式: - * 简单的字符串 - * `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias` - * 以上的组合,逗号分隔 - -* 组合查询支持 - * `AND`关系-`默认关系` - * `OR`关系 - eg.`-hostname:cmdb*`、 - * `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*` - * `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔 - * `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔 - * `COMPARISON`查询. eg. `cpu_count:>5` 支持`>, >=, <, <=` - -* 返回结果 - * 搜索表达式 `/api/v0.1/ci_relations/s?root_id=53&level=3&q=_type:kvm,status:在线,idc:南汇,private_ip:10.1.1.1*&page=1&fl=hostname,private_ip&facet=private_ip&count=1` - * 返回数据(默认json) - - ``` - { - facet: { - private_ip: [ - [ - "10.1.1.11", - 1, - "private_ip" - ], - [ - "10.1.1.12", - 1, - "private_ip" - ], - [ - "10.1.1.13", - 1, - "private_ip" - ] - ] - }, - total: 1, - numfound: 3, - result: [ - { - hostname: "xxx11", - private_ip: [ - "10.1.1.11" - ] - } - ], - counter: { - kvm: 1 - }, - page: 1 - } - ``` - \ No newline at end of file +### CI Relation 通用搜索接口 + +##### 搜索所有的 CI 之间的关系,比如某一个产品线线的所有应用或者是所有服务器 + +- GET `/api/v0.1/ci_relations/s` +- 参数 + - `int:root_id` 搜索的根节点的 ci_id + - `int:level` 搜索的层级 + - `string:_type` 搜索的 ci_type,多个用分号隔开, 例如: \_type:(docker;kvm) + - `string:q` 搜索表达式, 例如`q=hostname:cmdb*` + - `string:fl` 返回字段(id, attr_name, attr_alias 均可),英文半角逗号分隔 + - `string:ret_key` 返回字段类型 `Enum("id", "name", "alias")` 默认 `name` + - `count` 指定一次返回 CI 数 + - `facet` 属性字段,逗号分隔,返回属性字段对应的所有值 +- 搜索表达式: + - 简单的字符串 + - `attribute:value` 指定属性搜索, `attribute`可以是`id`,`attr_name`和`attr_alias` + - 以上的组合,逗号分隔 +- 组合查询支持 + - `AND`关系-`默认关系` + - `OR`关系 - eg.`-hostname:cmdb*`、 + - `NOT`关系-属性字段前加`~`eg. `~hostname:cmdb*` + - `IN`查询. eg. `hostname:(cmdb*;cmdb-web*)` 小括号, 分号分隔 + - `RANGE`查询. eg. `hostname:[cmdb* _TO_ cmdb-web*]` `_TO_`分隔 + - `COMPARISON`查询. eg. `cpu_count:>5` 支持`>, >=, <, <=` +- 返回结果 + - 搜索表达式 `/api/v0.1/ci_relations/s?root_id=53&level=3&q=_type:kvm,status:在线,idc:南汇,private_ip:10.1.1.1*&page=1&fl=hostname,private_ip&facet=private_ip&count=1` + - 返回数据(默认 json) + ``` + { + facet: { + private_ip: [ + [ + "10.1.1.11", + 1, + "private_ip" + ], + [ + "10.1.1.12", + 1, + "private_ip" + ], + [ + "10.1.1.13", + 1, + "private_ip" + ] + ] + }, + total: 1, + numfound: 3, + result: [ + { + hostname: "xxx11", + private_ip: [ + "10.1.1.11" + ] + } + ], + counter: { + kvm: 1 + }, + page: 1 + } + ``` diff --git a/docs/docker.md b/docs/docker.md index e9b6d35..459340c 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -1,4 +1,5 @@ -- 进入主目录(先安装docker环境) +- 进入主目录(先安装 docker 环境) + ``` docker-compose up -d ``` diff --git a/docs/docker_en.md b/docs/docker_en.md index a1f0b80..34da411 100644 --- a/docs/docker_en.md +++ b/docs/docker_en.md @@ -1,9 +1,10 @@ ### Install by Docker + - Prepare: install docker and docker-compose - In directory cmdb - ``` - docker-compose up -d - ``` + ``` + docker-compose up -d + ``` - View: [http://127.0.0.1:8000](http://127.0.0.1:8000) - username: demo or admin -- password: 123456 \ No newline at end of file +- password: 123456 diff --git a/docs/local.md b/docs/local.md index e50cf20..e201601 100644 --- a/docs/local.md +++ b/docs/local.md @@ -1,32 +1,33 @@ -本地搭建: 环境和依赖 ----- +## 本地搭建: 环境和依赖 + - 存储: mysql, redis -- python版本: >=python3.8 +- python 版本: >=python3.8 -Install ----- -- 启动mysql服务, redis服务 +## Install -- 创建数据库cmdb +- 启动 mysql 服务, redis 服务 + +- 创建数据库 cmdb - 拉取代码 + ```bash git clone https://github.com/veops/cmdb.git cd cmdb cp cmdb-api/settings.example.py cmdb-api/settings.py ``` -**设置cmdb-api/settings.py里的database** + +**设置 cmdb-api/settings.py 里的 database** - 安装库 - - 后端: ```cd cmdb-api && pipenv run pipenv install && cd ..``` - - 前端: ```cd cmdb-ui && yarn install && cd ..``` - -- 创建数据库表: 进入**cmdb-api**目录执行 ```pipenv run flask db-setup && pipenv run flask init-cache``` -- 可以将docs/cmdb.sql导入到数据库里,登录用户和密码分别是:demo/123456 - + - 后端: `cd cmdb-api && pipenv run pipenv install && cd ..` + - 前端: `cd cmdb-ui && yarn install && cd ..` +- 创建数据库表: 进入**cmdb-api**目录执行 `pipenv run flask db-setup && pipenv run flask init-cache` +- 可以将 docs/cmdb.sql 导入到数据库里,登录用户和密码分别是:demo/123456 - 启动服务 - - 后端: 进入**cmdb-api**目录执行 ```pipenv run flask run -h 0.0.0.0``` - - 前端: 进入**cmdb-ui**目录执行```yarn run serve``` - - worker: 进入**cmdb-api**目录执行 ```pipenv run celery worker -A celery_worker.celery -E -Q cmdb_async --concurrency=1``` - - - 浏览器打开: [http://127.0.0.1:8000](http://127.0.0.1:8000) - - 如果是非本机访问, 要修改**cmdb-ui/.env**里**VUE_APP_API_BASE_URL**里的IP地址为后端服务的ip地址 + + - 后端: 进入**cmdb-api**目录执行 `pipenv run flask run -h 0.0.0.0` + - 前端: 进入**cmdb-ui**目录执行`yarn run serve` + - worker: 进入**cmdb-api**目录执行 `pipenv run celery worker -A celery_worker.celery -E -Q cmdb_async --concurrency=1` + + - 浏览器打开: [http://127.0.0.1:8000](http://127.0.0.1:8000) + - 如果是非本机访问, 要修改**cmdb-ui/.env**里**VUE_APP_API_BASE_URL**里的 IP 地址为后端服务的 ip 地址 diff --git a/docs/local_en.md b/docs/local_en.md index 2d59acd..33507f9 100644 --- a/docs/local_en.md +++ b/docs/local_en.md @@ -1,29 +1,31 @@ ### Install + - Start mysql, redis - Create mysql database: cmdb - Pull code - ```bash - git clone https://github.com/veops/cmdb.git - cd cmdb - cp cmdb-api/settings.example.py cmdb-api/settings.py - ``` - **set database in config file cmdb-api/settings.py** + + ```bash + git clone https://github.com/veops/cmdb.git + cd cmdb + cp cmdb-api/settings.example.py cmdb-api/settings.py + ``` + + **set database in config file cmdb-api/settings.py** - Install library - - backend: ```cd cmdb-api && pipenv run pipenv install && cd ..``` - - frontend: ```cd cmdb-ui && yarn install && cd ..``` - + - backend: `cd cmdb-api && pipenv run pipenv install && cd ..` + - frontend: `cd cmdb-ui && yarn install && cd ..` - Create tables of cmdb database: - - in **cmdb-api** directory: ```pipenv run flask db-setup && pipenv run flask init-cache``` -- Suggest step: (default: user:demo,password:123456) + in **cmdb-api** directory: `pipenv run flask db-setup && pipenv run flask init-cache` +- Suggest step: (default: user:demo,password:123456) - ``` source docs/cmdb.sql``` + ` source docs/cmdb.sql` - Start service - - backend: in **cmdb-api** directory: ```pipenv run flask run -h 0.0.0.0``` - - frontend: in **cmdb-ui** directory: ```yarn run serve``` - - worker: in **cmdb-api** directory: ```pipenv run celery worker -A celery_worker.celery -E -Q cmdb_async --concurrency=1``` - - - homepage: [http://127.0.0.1:8000](http://127.0.0.1:8000) + + - backend: in **cmdb-api** directory: `pipenv run flask run -h 0.0.0.0` + - frontend: in **cmdb-ui** directory: `yarn run serve` + - worker: in **cmdb-api** directory: `pipenv run celery worker -A celery_worker.celery -E -Q cmdb_async --concurrency=1` + + - homepage: [http://127.0.0.1:8000](http://127.0.0.1:8000) - if not run localhost: please change ip address(**VUE_APP_API_BASE_URL**) in config file **cmdb-ui/.env** into your backend ip address diff --git a/docs/makefile.md b/docs/makefile.md index d4ce27b..6df9526 100644 --- a/docs/makefile.md +++ b/docs/makefile.md @@ -1,19 +1,20 @@ -Install by Makefile ----- -- 启动mysql服务, redis服务 +## Install by Makefile -- 创建数据库cmdb +- 启动 mysql 服务, redis 服务 + +- 创建数据库 cmdb - 拉取代码 + ```bash git clone https://github.com/veops/cmdb.git cd cmdb cp cmdb-api/settings.example.py cmdb-api/settings.py ``` -**设置cmdb-api/settings.py里的database** -- 顺序在cmdb目录下执行 - - 环境: ```make env``` - - 启动API: ```make api``` - - 启动UI: ```make ui``` - - 启动worker: ```make worker``` +**设置 cmdb-api/settings.py 里的 database** +- 顺序在 cmdb 目录下执行 + - 环境: `make env` + - 启动 API: `make api` + - 启动 UI: `make ui` + - 启动 worker: `make worker` diff --git a/docs/makefile_en.md b/docs/makefile_en.md index 7e0dfea..00d2be3 100644 --- a/docs/makefile_en.md +++ b/docs/makefile_en.md @@ -1,16 +1,19 @@ ### Install by Makefile + - Start mysql,redis - Create mysql database: cmdb - Pull code - ```bash - git clone https://github.com/veops/cmdb.git - cd cmdb - cp cmdb-api/settings.example.py cmdb-api/settings.py - ``` - **set database in config file cmdb-api/settings.py** + + ```bash + git clone https://github.com/veops/cmdb.git + cd cmdb + cp cmdb-api/settings.example.py cmdb-api/settings.py + ``` + + **set database in config file cmdb-api/settings.py** - In cmdb directory,start in order as follows: - - enviroment: ```make env``` - - start API: ```make api``` - - start UI: ```make ui``` - - start worker: ```make worker``` \ No newline at end of file + - enviroment: `make env` + - start API: `make api` + - start UI: `make ui` + - start worker: `make worker` diff --git a/docs/screenshot.md b/docs/screenshot.md index a74c759..b7a2b82 100644 --- a/docs/screenshot.md +++ b/docs/screenshot.md @@ -1,6 +1,7 @@ ### 系统概览 + - 服务树 -![1](0.png "首页展示") + ![1](0.png "首页展示") - 资源视图 @@ -29,4 +30,3 @@ - 定制仪表盘 ![10](10.jpg "定制仪表盘") -