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 @@

[](https://github.com/veops/cmdb/blob/master/LICENSE)
-[](https://github.com/sendya/ant-design-pro-vue)
-[](https://github.com/pallets/flask)
-
+[](https://github.com/sendya/ant-design-pro-vue)
+[](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
-
+ 
[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)**_
-
\ No newline at end of file
+
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 @@
### 系统概览
+
- 服务树
-
+ 
- 资源视图
@@ -29,4 +30,3 @@
- 定制仪表盘

-