Skip to content

Commit 764ebe6

Browse files
authored
feat(apigw/sync_resource): support doc (TencentBlueKing#197)
1 parent 5c0bd5b commit 764ebe6

5 files changed

Lines changed: 28 additions & 4 deletions

File tree

sdks/apigw-manager/README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,9 @@ definition.yaml 指定的环境配置适用于 `sync_apigw_stage` 命令,而
7676

7777
### 6. 注册网关资源时如果只想注册生成版本,不进行版本发布,该如何操作?
7878

79-
`create_version_and_release_apigw` 是进行网关资源生成版本和发布的命令,可以通过指定 `--no-pub` 只进行版本生成,不进行资源发布。
79+
`create_version_and_release_apigw` 是进行网关资源生成版本和发布的命令,可以通过指定 `--no-pub` 只进行版本生成,不进行资源发布。
80+
81+
82+
### 7. 同步网关资源的同时想直接根据 `resources.yaml` 即 swagger 或者 openapi3.0 生成文档,该如何操作?
83+
84+
`sync_apigw_resources` 是进行网关资源同步命令,可以通过指定 `--doc_language`: en/zh 生成接口文档

sdks/apigw-manager/docs/sync-apigateway-with-django.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ python manage.py sync_apigw_stage --gateway-name=${gateway_name} --file="${defin
3434
#
3535
# --delete: 当资源在服务端存在,却未出现在资源定义文件中时,指定本参数会强制删除这类资源,以保证服务端资源和文件内容完全一致。
3636
# 如果未指定本参数,将忽略未出现的资源
37+
# --doc_language: en/zh 是否生成接口文档(中文/英文)
3738
python manage.py sync_apigw_resources --delete --gateway-name=${gateway_name} --file="${resources_file}"
3839

3940
# 可选,同步资源文档
@@ -169,7 +170,7 @@ python manage.py grant_apigw_permissions --gateway-name=${gateway_name} --file="
169170
# 同步网关基本信息
170171
python manage.py sync_apigw_config --gateway-name=${gateway_name} --file="${definition_file}"
171172

172-
# 同步网关资源;--delete 将删除网关中未在 resources.yaml 存在的资源
173+
# 同步网关资源;--delete 将删除网关中未在 resources.yaml 存在的资源, 指定参数 --doc_language en/zh 是否生成接口文档(中文/英文)
173174
python manage.py sync_apigw_resources --delete --gateway-name=${gateway_name} --file="${resources_file}"
174175

175176
# 同步网关环境信息

sdks/apigw-manager/docs/sync-apigateway-with-docker.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ call_command_or_warning migrate apigw
7272
title "syncing apigateway"
7373
call_definition_command_or_exit sync_apigw_config "${definition_file}" --gateway-name=${gateway_name}
7474
call_definition_command_or_exit sync_apigw_stage "${definition_file}" --gateway-name=${gateway_name}
75+
# --doc_language: en/zh 是否生成接口文档(中文/英文)
7576
call_definition_command_or_exit sync_apigw_resources "${resources_file}" --gateway-name=${gateway_name} --delete
7677
call_definition_command_or_exit sync_resource_docs_by_archive "${definition_file}" --gateway-name=${gateway_name} --safe-mode
7778
call_definition_command_or_exit grant_apigw_permissions "${definition_file}" --gateway-name=${gateway_name}
@@ -292,6 +293,7 @@ call_definition_command_or_exit sync_apigw_config "${definition_file}" --gateway
292293
#
293294
# --delete: 当资源在服务端存在,却未出现在资源定义文件中时,指定本参数会强制删除这类资源,以保证服务端资源和文件内容完全一致。
294295
# 如果未指定本参数,将忽略未出现的资源
296+
# --doc_language: en/zh 是否生成接口文档(中文/英文)
295297
call_definition_command_or_exit sync_apigw_resources "${resources_file}" --gateway-name=${gateway_name} --delete
296298

297299
# 同步网关环境信息

sdks/apigw-manager/src/apigw_manager/apigw/management/commands/sync_apigw_resources.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ def add_arguments(self, parser):
3030
help="delete extraneous resources from existing resources",
3131
)
3232

33+
parser.add_argument(
34+
"--doc_language",
35+
type=str,
36+
default=None,
37+
help="language for gen api doc: en/zh",
38+
)
39+
3340
def _update_signature(self, gateway_name, definition, added, deleted):
3441
signature = hashlib.md5(json.dumps(definition, sort_keys=True).encode("utf-8")).hexdigest()
3542

@@ -41,7 +48,15 @@ def _update_signature(self, gateway_name, definition, added, deleted):
4148
manager.mark_dirty(gateway_name)
4249

4350
def do(self, manager, definition, configuration, *args, **kwargs):
44-
result = manager.sync_resources_config(content=definition, delete=kwargs["delete"])
51+
sync_args = {
52+
'content': definition,
53+
'delete': kwargs["delete"],
54+
}
55+
56+
if 'doc_language' in kwargs:
57+
sync_args['doc_language'] = kwargs['doc_language']
58+
59+
result = manager.sync_resources_config(**sync_args)
4560

4661
added_count = len(result["added"])
4762
deleted_count = len(result["deleted"])

sdks/apigw-manager/tests/apigw_manager/apigw/management/commands/test_sync_apigw_resources.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@ def test_do(mocker, configuration, command, manager, resource_signature_manager)
4141
manager.sync_resources_config.return_value = result
4242
definition = {}
4343

44-
command.do(manager, definition, configuration, delete=True)
44+
command.do(manager, definition, configuration, delete=True,doc_language="en")
4545

4646
manager.sync_resources_config.assert_called_once_with(
4747
content=definition,
4848
delete=True,
49+
doc_language="en"
4950
)
5051
resource_signature_manager.update_signature.assert_called_once_with(configuration.gateway_name, mocker.ANY)
5152
resource_signature_manager.mark_dirty.assert_called_once_with(configuration.gateway_name)

0 commit comments

Comments
 (0)