配置系統(tǒng)API
1.創(chuàng)建一個(gè)配置模塊(create module
在配置系統(tǒng)中生成一個(gè)模塊
- 請(qǐng)求體
POST /v1/create/module
Content-Type:application/json
{
"module_name":"cos_cgi"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
如果出現(xiàn)錯(cuò)誤,會(huì)體現(xiàn)在code 和 error中。如果遇到http status非200,也認(rèn)為是錯(cuò)誤
2.創(chuàng)建配置的環(huán)境分類
在配置系統(tǒng)中生成一個(gè)模塊配置的環(huán)境分類
- 請(qǐng)求體
POST /v1/create/env
Content-Type:application/json
{
"module_name":"cos_cgi",
"env_name":"test"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
如果出現(xiàn)錯(cuò)誤,會(huì)體現(xiàn)在code 和 error中。如果遇到http status非200,也認(rèn)為是錯(cuò)誤
3.創(chuàng)建配置所在模塊及環(huán)境下的配置項(xiàng)分類
- 請(qǐng)求體
POST /v1/create/category
Content-Type:application/json
{
"module_name":"cos_cgi",
"env_name":"test",
"category": "ap-shanghai"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
如果出現(xiàn)錯(cuò)誤,會(huì)體現(xiàn)在code 和 error中。如果遇到http status非200,也認(rèn)為是錯(cuò)誤
4.批量創(chuàng)建配置項(xiàng)
在一個(gè)特定的模塊、環(huán)境、分類下批量的創(chuàng)建配置項(xiàng)
- 請(qǐng)求體
POST /v1/create/batch/config
Content-Type:application/json
{
"module_name": "test_cgi",
"env_name": "dev",
"category": {
"category_name" : "common",
"ns" : [
{
"name": "file1",
"kv_pair":
{
"kvs": [
{
"key":"min_slice_size",
"value":"1024000"
},
{
"key":"max_slice_size",
"value":"20971520"
},
{
"key": "serial_upload",
"value": "1",
"comment": "順序上傳分片的標(biāo)志 0:可以并發(fā) 1:必須順序上傳"
}
]
}
}
]
}
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
如果出現(xiàn)錯(cuò)誤,會(huì)體現(xiàn)在code 和 error中。如果遇到http status非200,也認(rèn)為是錯(cuò)誤
5.通過module來獲取module下所有的配置項(xiàng)
- 請(qǐng)求體
POST /v1/getconfig/module
Content-Type:application/json
{
"module_name":"cos-cgi"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"module_conf": {
"module_name": "cos-cgi",
"env_conf": [
{
"env_name": "prod",
"ctg": [
{
"category_name": "ap-shanghai",
"ns": [
{
"name": "accelerate",
"kv_pair": {
"kvs": [
{
"key": "dsa_server_domain",
"value": "openapi.dsa.tencentyun.com"
}
]
}
}
]
}
]
}
]
}
}
如果出現(xiàn)錯(cuò)誤,會(huì)體現(xiàn)在code 和 error中。如果遇到http status非200,也認(rèn)為是錯(cuò)誤
6.通過module和env來獲取配置
- 請(qǐng)求體
POST /v1/getconfig/env
Content-Type:application/json
{
"module_name":"cos-cgi",
"env_name":"prod"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"module_conf": {
"module_name": "cos-cgi",
"env_conf": [
{
"env_name": "prod",
"ctg": [
{
"category_name": "ap-shanghai",
"ns": [
{
"name": "accelerate",
"kv_pair": {
"kvs": [
{
"key": "dsa_server_domain",
"value": "openapi.dsa.tencentyun.com"
}
]
}
}
]
}
]
}
]
}
}
如果出現(xiàn)錯(cuò)誤,會(huì)體現(xiàn)在code 和 error中。如果遇到http status非200,也認(rèn)為是錯(cuò)誤
7.通過module、env和category來獲取配置項(xiàng)
- 請(qǐng)求體
POST /v1/getconfig/category
Content-Type:application/json
{
"module_name":"cos-cgi",
"env_name":"prod",
"category_name":"ap-shanghai"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"module_conf": {
"module_name": "cos-cgi",
"env_conf": [
{
"env_name": "prod",
"ctg": [
{
"category_name": "ap-shanghai",
"ns": [
{
"name": "accelerate",
"kv_pair": {
"kvs": [
{
"key": "dsa_server_domain",
"value": "openapi.dsa.tencentyun.com"
}
]
}
}
]
}
]
}
]
}
}
如果出現(xiàn)錯(cuò)誤,會(huì)體現(xiàn)在code 和 error中。如果遇到http status非200,也認(rèn)為是錯(cuò)誤
8.獲取在配置系統(tǒng)中管理的所有module名字
- 請(qǐng)求體
POST /v1/getconfig/modules
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"modules": [
"cos-cgi"
]
}
9.刪除一個(gè)module
刪除一個(gè)module,其下面的所有配置項(xiàng)都刪除
- 請(qǐng)求體
POST /v1/delete/module
Content-Type:application/json
{
"module_name":"cos_cgi"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
10.刪除一個(gè)module下的一個(gè)env
刪除一個(gè)module下的一個(gè)env,其env下面的所有配置項(xiàng)都刪除
- 請(qǐng)求體
POST /v1/delete/env
Content-Type:application/json
{
"module_name":"cos_cgi",
"env_name":"test"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
11.刪除一個(gè)module及env下的一個(gè)category分類
刪除一個(gè)module及env下的category,其category下面的所有配置項(xiàng)都刪除
- 請(qǐng)求體
POST /v1/delete/category
Content-Type:application/json
{
"module_name":"cos_cgi",
"env_name":"test",
"category":{
"category_name": "ap-shanghai"
}
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
刪除刪除一個(gè)module及env下的category,其category部分配置項(xiàng)
- 請(qǐng)求體
POST /v1/delete/category
Content-Type:application/json
{
"module_name":"cos_cgi",
"env_name":"test",
"category": {
"category_name" : "common",
"ns" : [
{
"name": "file1",
"kv_pair":
{
"kvs": [
{
"key":"min_slice_size",
"value":"1024000"
},
{
"key":"max_slice_size",
"value":"20971520"
},
{
"key": "serial_upload",
"value": "1",
"comment": "順序上傳分片的標(biāo)志 0:可以并發(fā) 1:必須順序上傳"
}
]
}
}
]
}
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
12.提交配置的修改
提交配置僅僅是對(duì)配置上的修改生成一個(gè)版本。不做下發(fā)的操作
- 請(qǐng)求體
POST /v1/config/submit
Content-Type:application/json
{
"module_name": "cos-cgi",
"env_name" : "prod",
"category": "ap-shanghai",
"external_category":[
"common"
]
}
// 生成的配置以category指定的為主,但是可以附加上external_category上的配置項(xiàng)
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"version": "1.2" // 返回的版本號(hào)
}
13.指定版本升級(jí)配置
下發(fā)指定版本的配置,并且通過灰度開關(guān)來指定下發(fā)策略
- 請(qǐng)求體
POST /v1/config/upgrade
Content-Type:application/json
{
"module_name": "cos-cgi",
"env_name" : "prod",
"category": "ap-shanghai",
"version":"1.2",
"upgrade_percent":0.8,
"pre_script": "",
"post_script": "",
"local_file_path":"/tmp/filecloud_coss3.ini"
}
// 生成的配置以category指定的為主,但是可以附加上external_category上的配置項(xiàng)
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success"
}
14.通過module來獲取到配置的元數(shù)據(jù)信息
- 請(qǐng)求體
POST /v1/getconfig/meta/module"
Content-Type:application/json
{
"module_name":"cos-cgi"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"module_conf": {
"module_name": "cos-cgi",
"env_conf": [
{
"env_name": "prod",
"ctg": [
{
"category_name": "ap-shanghai",
"ns": [
{
"name": "1.1",
"kv_pair": {
"kvs": [
{
"key": "cos_file_md5",
"value": "78601ddf3c327fa4a2a2a595f5609f55"
},
{
"key": "cos_file_path",
"value": "cos-cgi/prod/ap-shanghai/1.1"
},
{
{
"key": "pre_script",
"value": ""
},
{
"key": "post_script",
"value": ""
},
{
"key": "local_file_path",
"value": "/tmp/filecloud_coss3.ini"
}
]
}
},
{
"name": "1.2",
"kv_pair": {
"kvs": [
{
"key": "cos_file_md5",
"value": "0015a32e4093fc82b387e61e7679f8b6"
},
{
"key": "cos_file_path",
"value": "cos-cgi/prod/ap-shanghai/1.2"
},
{
"key": "pre_script",
"value": ""
},
{
"key": "post_script",
"value": ""
},
{
"key": "local_file_path",
"value": "/tmp/filecloud_coss3.ini"
}
]
}
},
{
"name": "current_version",
"kv_pair": {
"kvs": [
{
"key": "last_version",
"value": "1.2"
},
{
"key": "local_file_path",
"value": "/tmp/filecloud_coss3.ini"
},
{
"key": "upgrade_percent",
"value": "0.8"
},
{
"key": "version_id",
"value": "1.2"
},
]
}
}
]
}
]
}
]
}
}
如果出現(xiàn)錯(cuò)誤,會(huì)體現(xiàn)在code 和 error中。如果遇到http status非200,也認(rèn)為是錯(cuò)誤
15.獲取在配置系統(tǒng)中管理的module下所有的env的名字
- 請(qǐng)求體
POST /v1/getconfig/envs
Content-Type:application/json
{
"module_name":"cos-cgi"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"envs": [
"prod"
]
}
16.獲取在配置系統(tǒng)中管理的特定module和env下所有category的名字
- 請(qǐng)求體
POST /v1/getconfig/categories
Content-Type:application/json
{
"module_name":"cos-cgi",
"env_name":"prod"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"categories": [
"common", "ap-shanghai"
]
}
17.根據(jù)module獲取當(dāng)前園區(qū)下所有agent的狀態(tài)信息
** According the module get the agentinfo
- 請(qǐng)求體
POST /v1/getagentinfo/module
Content-Type:application/json
{
"module_name":"cos_cgi",
"env_name":"test",
"category_name": "ap-shanghai"
}
+ 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"agent_info" :[
{
"ip_addr" : "127.0.0.1",
"version": "1.2",
"last_alive": "0123456789",
"is_timeout": "true",
},
{
"ip_addr" : "127.0.0.1",
"version": "1.2",
"last_alive": "0123456789",
"is_timeout": "true",
},
]
}
18.通過request module來獲取指定園區(qū)下配置的元數(shù)據(jù)信息
- 請(qǐng)求體
POST /v1/getconfig/meta/category
Content-Type:application/json
{
"module_name":"cos-cgi",
"env_name":"test",
"category": "ap-shanghai"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"ctg": {
"category_name": "ap-shanghai",
"ns": [
{
"name": "1.1",
"kv_pair": {
"kvs": [
{
"key": "cos_file_md5",
"value": "78601ddf3c327fa4a2a2a595f5609f55"
},
{
"key": "cos_file_path",
"value": "cos-cgi/prod/ap-shanghai/1.1"
},
{
{
"key": "pre_script",
"value": ""
},
{
"key": "post_script",
"value": ""
},
{
"key": "local_file_path",
"value": "/tmp/filecloud_coss3.ini"
}
]
},
{
"name": "1.2",
"kv_pair": {
"kvs": [
{
"key": "cos_file_md5",
"value": "0015a32e4093fc82b387e61e7679f8b6"
},
{
"key": "cos_file_path",
"value": "cos-cgi/prod/ap-shanghai/1.2"
},
{
"key": "pre_script",
"value": ""
},
{
"key": "post_script",
"value": ""
},
{
"key": "local_file_path",
"value": "/tmp/filecloud_coss3.ini"
}
]
}
},
{
"name": "current_version",
"kv_pair": {
"kvs": [
{
"key": "last_version",
"value": "1.2"
},
{
"key": "local_file_path",
"value": "/tmp/filecloud_coss3.ini"
},
{
"key": "upgrade_percent",
"value": "0.8"
},
{
"key": "version_id",
"value": "1.2"
},
]
}
}
]
}
19. ** TODO 需要從狀態(tài)流轉(zhuǎn)為事件流,下面結(jié)構(gòu)將會(huì)修改
**根據(jù)module獲取當(dāng)前園區(qū)下版本下發(fā)的狀態(tài)**
** agent_status: progress, fail,success
+ 請(qǐng)求體
POST /v1/getupgradeinfo/category
Content-Type:application/json
{
"module_name":"cos_cgi",
"env_name":"test",
"category": "ap-shanghai"
}
- 響應(yīng)體
HTTP/1.1 200 OK
Content-Type:application/json
{
"code": 0,
"error": "success",
"upgrade_info" [
{
"version":"1.2",
"timestamp":"0123456789",
"node_info" : [
{
"node_ip":"127.0.0.1",
"agent_detials":[
{
"agent_ip":"127.0.1.12",
"agent_status":"progress",
"agent_msg":"pre script exec failed",
},
{
...other agent_details
},
]
},
{
...other node_info
},
]
},
{
...other_upgrade_info
},
]
}