浏览代码

更新文档,加入配置文档

James Iter 9 年之前
父节点
当前提交
269a978671
共有 7 个文件被更改,包括 270 次插入64 次删除
  1. 3 0
      README.md
  2. 184 0
      docs/config.md
  3. 1 1
      docs/disk.md
  4. 2 1
      docs/guest.md
  5. 8 0
      docs/state_code.md
  6. 72 61
      tests/test_config.py
  7. 0 1
      views/config.py

+ 3 - 0
README.md

@@ -22,6 +22,7 @@
     - [[状态码参考列表](docs/state_code.md)](#状态码参考列表)
     - [[过滤器操作符原语](docs/filter_primitive.md)](#过滤器操作符原语)
     - [[状态列表](docs/enum.md)](#状态列表)
+    - [[配置](docs/config.md)](#配置)
     - [[Guest](docs/guest.md)](#guest)
     - [[磁盘](docs/disk.md)](#磁盘)
 - [流程图](#流程图)
@@ -206,6 +207,8 @@ gunicorn -c gunicorn_config.py main:app
 
 ### [状态列表](docs/enum.md)
 
+### [配置](docs/config.md)
+
 ### [Guest](docs/guest.md)
 
 ### [磁盘](docs/disk.md)

+ 184 - 0
docs/config.md

@@ -0,0 +1,184 @@
+# Config
+
+[TOC]: # "目录"
+
+# 目录
+- [初始化配置](#初始化配置)
+- [获取配置信息](#获取配置信息)
+- [更新配置信息](#更新配置信息)
+
+
+## 初始化配置
+
+> 初始化 JimV 系统配置,只能执行一次。后面要更改,需通过更新接口操作。
+
+```http
+POST https://$domain
+  /api/config
+Body:
+{
+    "glusterfs_volume": "gv0",
+    "vm_network": "net-br0",
+    "vm_manage_network": "net-br0",
+    "start_ip": "10.10.3.1",
+    "end_ip": "10.10.6.254",
+    "start_vnc_port": 15900,
+    "netmask": "255.255.240.0",
+    "gateway": "10.10.15.254",
+    "dns1": "10.1.17.1",
+    "dns2": "223.5.5.5",
+    "rsa_private": "",
+    "rsa_public": ""
+}
+```
+
+|      参数名称      | 必须 |  类型  | 说明                                       |
+|:-----------------:|:---:|:------:|:-------------------------------------------|
+| glusterfs_volume  |  Y  | String | 分配给 JimV 使用的 GlusterFS 卷              |
+|    vm_network     |  Y  | String | 虚拟机使用的网络                             |
+| vm_manage_network |  Y  | String | 管理虚拟机的带外网络                         |
+|     start_ip      |  Y  | String | 虚拟化环境中,分配给虚拟机的起始 IP            |
+|      end_ip       |  Y  | String | 虚拟化环境中,分配给虚拟机的截止 IP            |
+|  start_vnc_port   |  Y  | String | 从宿主机分配给虚拟机的起始 VNC 端口            |
+|      netmask      |  Y  | String | 分配给虚拟机的子网掩码                        |
+|      gateway      |  Y  | String | 分配给虚拟机的网关                           |
+|       dns1        |  Y  | String | 分配给虚拟机的首 DNS 服务器地址               |
+|       dns2        |  Y  | String | 分配给虚拟机的备用 DNS 服务器地址              |
+|    rsa_private    |  Y  | String | 全局管理员,管理虚拟机时,所使用的 SSH RSA 私钥 |
+|    rsa_public     |  Y  | String | 注入进虚拟机的 SSH RSA  公钥                 |
+
+响应示例
+
+```json
+{
+    "state": {
+        "en-us": "OK",
+        "zh-cn": "成功",
+        "code": "200"
+    },
+    "data": {
+        "vm_manage_network": "net-br0",
+        "dns2": "223.5.5.5",
+        "dns1": "10.1.17.1",
+        "gateway": "10.10.15.254",
+        "netmask": "255.255.240.0",
+        "end_ip": "10.10.6.254",
+        "glusterfs_volume": "gv0",
+        "rsa_private": "",
+        "vm_network": "net-br0",
+        "start_ip": "10.10.3.1",
+        "rsa_public": "",
+        "start_vnc_port": 15900,
+        "id": 1
+    }
+}
+```
+
+
+## 获取配置信息
+
+> 获取 JimV 的配置信息
+
+```http
+GET https://$domain
+  /api/config
+```
+
+响应示例
+
+```json
+{
+    "state": {
+        "en-us": "OK",
+        "zh-cn": "成功",
+        "code": "200"
+    },
+    "data": {
+        "vm_manage_network": "net-br0",
+        "dns2": "223.5.5.5",
+        "dns1": "10.1.17.1",
+        "gateway": "10.10.15.254",
+        "netmask": "255.255.240.0",
+        "end_ip": "10.10.6.254",
+        "glusterfs_volume": "gv0",
+        "rsa_private": "",
+        "vm_network": "net-br0",
+        "start_ip": "10.10.3.1",
+        "rsa_public": "",
+        "start_vnc_port": 15900,
+        "id": 1
+    }
+}
+```
+
+|      参数名称      | 必须 |  类型  | 说明                                       |
+|:-----------------:|:---:|:------:|:-------------------------------------------|
+|        id         |  Y  |  Long  | 配置id                                     |
+| glusterfs_volume  |  Y  | String | 分配给 JimV 使用的 GlusterFS 卷              |
+|    vm_network     |  Y  | String | 虚拟机使用的网络                             |
+| vm_manage_network |  Y  | String | 管理虚拟机的带外网络                         |
+|     start_ip      |  Y  | String | 虚拟化环境中,分配给虚拟机的起始 IP            |
+|      end_ip       |  Y  | String | 虚拟化环境中,分配给虚拟机的截止 IP            |
+|  start_vnc_port   |  Y  |  Long  | 从宿主机分配给虚拟机的起始 VNC 端口            |
+|      netmask      |  Y  | String | 分配给虚拟机的子网掩码                        |
+|      gateway      |  Y  | String | 分配给虚拟机的网关                           |
+|       dns1        |  Y  | String | 分配给虚拟机的首 DNS 服务器地址               |
+|       dns2        |  Y  | String | 分配给虚拟机的备用 DNS 服务器地址              |
+|    rsa_private    |  Y  | String | 全局管理员,管理虚拟机时,所使用的 SSH RSA 私钥 |
+|    rsa_public     |  Y  | String | 注入进虚拟机的 SSH RSA  公钥                 |
+
+
+## 更新配置信息
+
+> 更新 JimV 的配置
+
+```http
+PATCH https://$domain
+  /api/config
+Body:
+{
+    "glusterfs_volume": "gv0",
+    "vm_network": "net-br0",
+    "vm_manage_network": "net-br0",
+    "start_ip": "10.10.7.1",
+    "end_ip": "10.10.9.254",
+    "start_vnc_port": 15900,
+    "netmask": "255.255.240",
+    "gateway": "10.10.15.254",
+    "dns1": "2223.5.5.5",
+    "dns2": "8.8.8.8",
+    "rsa_public": "what?",
+    "rsa_private": ""
+}
+```
+
+响应示例
+
+```json
+{
+    "state": {
+        "en-us": "OK",
+        "zh-cn": "成功",
+        "code": "200"
+    },
+    "data": {
+        "vm_manage_network": "net-br0",
+        "dns2": "8.8.8.8",
+        "dns1": "223.5.5.5",
+        "id": 1,
+        "netmask": "255.255.240.0",
+        "end_ip": "10.10.9.254",
+        "glusterfs_volume": "gv0",
+        "rsa_private": "",
+        "vm_network": "net-br0",
+        "start_ip": "10.10.7.1",
+        "rsa_public": "what?",
+        "start_vnc_port": 15900,
+        "gateway": "10.10.15.254"
+    }
+}
+```
+
+配置信息字段描述参见 [获取配置信息](#获取配置信息)
+
+

+ 1 - 1
docs/disk.md

@@ -1,6 +1,6 @@
 # Disk
 
-[TOC]: # " 目录"
+[TOC]: # "目录"
 
 # 目录
 - [创建磁盘](#创建磁盘)

+ 2 - 1
docs/guest.md

@@ -1,11 +1,12 @@
 # Guest
 
-[TOC levels=2]: # " 目录"
+[TOC levels=2]: # "目录"
 
 # 目录
 - [创建 Guest](#创建-guest)
 - [获取 Guest 信息](#获取-guest-信息)
 - [获取 Guest 列表](#获取-guest-列表)
+- [Guest 全文检索](#guest-全文检索)
 - [更改 Guest 信息](#更改-guest-信息)
 - [重启 Guest](#重启-guest)
 - [关闭 Guest](#关闭-guest)

+ 8 - 0
docs/state_code.md

@@ -1,4 +1,12 @@
 # 状态码
+
+[TOC]: # "目录"
+
+# 目录
+- [干状态码](#干状态码)
+- [枝状态码](#枝状态码)
+
+
 ## 干状态码
 |CODE|zh-cn|en-us|
 |:--:|:--|:--|

+ 72 - 61
tests/test_config.py

@@ -24,69 +24,80 @@ class TestConfig(unittest.TestCase):
     def tearDown(self):
         pass
 
-    # 创建 JimV 配置
-    def test_11_create(self):
-        payload = {
-            "glusterfs_volume": "gv0",
-            "vm_network": "net-br0",
-            "vm_manage_network": "net-br0",
-            "start_ip": "10.10.3.1",
-            "end_ip": "10.10.6.254",
-            "start_vnc_port": 15900,
-            "netmask": "255.255.240.0",
-            "gateway": "10.10.15.254",
-            "dns1": "10.1.17.1",
-            "dns2": "223.5.5.5",
-            "rsa_private": "",
-            "rsa_public": ""
-        }
-
-        url = TestConfig.base_url + '/config'
-        headers = {'content-type': 'application/json'}
-        r = requests.post(url, data=json.dumps(payload), headers=headers)
-        j_r = json.loads(r.content)
-        print json.dumps(j_r, ensure_ascii=False)
-        TestConfig.config_id = j_r['data']['id']
-        self.assertEqual('200', j_r['state']['code'])
+    # # 创建 JimV 配置
+    # def test_11_create(self):
+    #     payload = {
+    #         "glusterfs_volume": "gv0",
+    #         "vm_network": "net-br0",
+    #         "vm_manage_network": "net-br0",
+    #         "start_ip": "10.10.3.1",
+    #         "end_ip": "10.10.6.254",
+    #         "start_vnc_port": 15900,
+    #         "netmask": "255.255.240.0",
+    #         "gateway": "10.10.15.254",
+    #         "dns1": "10.1.17.1",
+    #         "dns2": "223.5.5.5",
+    #         "rsa_private": "",
+    #         "rsa_public": ""
+    #     }
+    #
+    #     url = TestConfig.base_url + '/config'
+    #     headers = {'content-type': 'application/json'}
+    #     r = requests.post(url, data=json.dumps(payload), headers=headers)
+    #     j_r = json.loads(r.content)
+    #     print json.dumps(j_r, ensure_ascii=False)
+    #     TestConfig.config_id = j_r['data']['id']
+    #     self.assertEqual('200', j_r['state']['code'])
 
     # 获取配置
-    def test_12_get(self):
-        url = TestConfig.base_url + '/config'
-        headers = {'content-type': 'application/json'}
-        r = requests.get(url, headers=headers)
-        j_r = json.loads(r.content)
-        print json.dumps(j_r, ensure_ascii=False)
-        self.assertEqual('200', j_r['state']['code'])
-
-    # 更新配置
-    def test_13_update(self):
-        payload = {
-            "rsa_public": "what?"
-        }
-
-        url = TestConfig.base_url + '/config'
-        headers = {'content-type': 'application/json'}
-        r = requests.patch(url, data=json.dumps(payload), headers=headers)
-        j_r = json.loads(r.content)
-        print json.dumps(j_r, ensure_ascii=False)
-        self.assertEqual('200', j_r['state']['code'])
-
-    # 校验更新结果
-    def test_14_get(self):
-        url = TestConfig.base_url + '/config'
-        headers = {'content-type': 'application/json'}
-        r = requests.get(url, headers=headers)
-        j_r = json.loads(r.content)
-        print json.dumps(j_r, ensure_ascii=False)
-        self.assertEqual('200', j_r['state']['code'])
-        self.assertEqual('what?', j_r['data']['rsa_public'])
-
-    # 删除配置
-    def test_15_delete(self):
-        url = TestConfig.base_url + '/config'
-        headers = {'content-type': 'application/json'}
-        r = requests.delete(url, headers=headers)
-        self.assertEqual(405, r.status_code)
+    # def test_12_get(self):
+    #     url = TestConfig.base_url + '/config'
+    #     headers = {'content-type': 'application/json'}
+    #     r = requests.get(url, headers=headers)
+    #     j_r = json.loads(r.content)
+    #     print json.dumps(j_r, ensure_ascii=False)
+    #     self.assertEqual('200', j_r['state']['code'])
+
+    # # 更新配置
+    # def test_13_update(self):
+    #     payload = {
+    #         "glusterfs_volume": "gv0",
+    #         "vm_network": "net-br0",
+    #         "vm_manage_network": "net-br0",
+    #         "start_ip": "10.10.7.1",
+    #         "end_ip": "10.10.9.254",
+    #         "start_vnc_port": 15900,
+    #         "netmask": "255.255.240.0",
+    #         "gateway": "10.10.15.254",
+    #         "dns1": "223.5.5.5",
+    #         "dns2": "8.8.8.8",
+    #         "rsa_public": "what?",
+    #         "rsa_private": ""
+    #     }
+    #
+    #     url = TestConfig.base_url + '/config'
+    #     headers = {'content-type': 'application/json'}
+    #     r = requests.patch(url, data=json.dumps(payload), headers=headers)
+    #     j_r = json.loads(r.content)
+    #     print json.dumps(j_r, ensure_ascii=False)
+    #     self.assertEqual('200', j_r['state']['code'])
+
+    # # 校验更新结果
+    # def test_14_get(self):
+    #     url = TestConfig.base_url + '/config'
+    #     headers = {'content-type': 'application/json'}
+    #     r = requests.get(url, headers=headers)
+    #     j_r = json.loads(r.content)
+    #     print json.dumps(j_r, ensure_ascii=False)
+    #     self.assertEqual('200', j_r['state']['code'])
+    #     self.assertEqual('what?', j_r['data']['rsa_public'])
+    #
+    # # 删除配置
+    # def test_15_delete(self):
+    #     url = TestConfig.base_url + '/config'
+    #     headers = {'content-type': 'application/json'}
+    #     r = requests.delete(url, headers=headers)
+    #     self.assertEqual(405, r.status_code)
 
 
 if __name__ == '__main__':

+ 0 - 1
views/config.py

@@ -173,7 +173,6 @@ def r_update():
         config.generate_available_ip2set()
         config.generate_available_vnc_port()
         config.update()
-        g.config = None
 
         config.get()