后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载导读delete_module是蓝鲸配置平台BlueKing CMDBbk-cmdb早期由 ESB 封装对外提供的 CMDB 组件接口之一用于按业务bk_biz_id、集群bk_set_id、模块bk_module_id三个层级维度删除拓扑中的指定模块调用方需具备业务拓扑删除权限。本文基于仓库内 docs/apidoc/esb-cc/en/delete_module.md 与 中文版文档 展开并结合 topo_server 的模块删除实现源码完整梳理接口请求参数、调用示例、响应结构、权限校验与底层删除链路帮助开发者在对接 ESB 或自建自动化拓扑管理时正确、安全地使用该接口。说明docs/apidoc/esb-cc目录在仓库内被标注为“早期由 ESB 维护的组件文档ESB 封装的 CMDB 组件此文件夹里的内容需要保留请勿往里面添加任何新的接口”因此本文所讲接口属于历史 ESB 组件化封装的稳定契约与当前 docs/apidoc/apigw 下的新一代 API 网关文档相互独立。一、功能描述与适用场景原文档对该接口的功能定义为Delete Module (Permission: Business Topology Deletion Permission) —— 删除模块权限业务拓扑删除权限。在 CMDB 的业务拓扑模型中业务Business下包含集群Set集群下包含模块Module。模块是主机等资源实例挂载的最小组织单元也是服务分类、服务模板、主机属性自动应用host apply rule等能力的承载对象。该接口用于在已明确业务、集群、模块三级定位的前提下删除一个具体的模块实例。典型的适用场景包括自动化运维平台通过 ESB 通道清理下线业务的空闲模块按模板驱动的批量拓扑初始化流程中对废弃模块做回收清理在业务拓扑删除权限被授予后由第三方系统完成合规的模块生命周期管理。二、请求参数详解2.1 公共参数common_args原文档中公共参数部分以占位符{{ common_args_desc }}引用 ESB 通用参数说明。从文档自带请求示例可见调用该接口时需要在请求体顶层携带 ESB 的通用认证与应用参数字段类型必选描述bk_app_codestring是应用标识即调用方在蓝鲸 PaaS 上注册的应用编码示例中为esb_testbk_app_secretstring是应用密钥用于应用级鉴权示例中为占位符xxxbk_usernamestring否操作用户名用于用户级鉴权与bk_token二选一或按 ESB 配置要求组合使用bk_tokenstring否用户登录态令牌用于用户级鉴权上述四个公共字段的具体取值规则由部署环境中的 ESB 组件决定实际接入时应以所在环境的 ESB 网关配置为准。接口参数则继续沿用 CMDB 侧的参数契约。2.2 接口参数Interface Parameters原文档给出的接口参数如下字段类型必选描述bk_supplier_accountstring否开发商账号Developer accountbk_biz_idint是业务 IDBusiness IDbk_set_idint是集群 IDCluster IDbk_module_idint是模块 IDModule ID各参数在请求体中以顶层字段形式携带其中bk_biz_id / bk_set_id / bk_module_id三者共同定位唯一模块实例缺一不可。结合源码可知它们最终会构成模块实例的完整查询条件bk_biz_id、bk_set_id、bk_module_id详见本文第四节。bk_supplier_account为开发商账号用于多开发商多租户场景下的账号区分可选默认场景可省略。三、请求与响应示例3.1 请求参数示例原文档给出的请求体示例Python 字典形式为{ bk_app_code: esb_test, bk_app_secret: xxx, bk_username: xxx, bk_token: xxx, bk_supplier_account: 123456789, bk_biz_id: 1, bk_set_id: 1, bk_module_id: 1 }即删除业务 1、集群 1 下的模块 1。实际发起请求时HTTP 方法为DELETE请求体携带上述 JSON 参数认证信息亦可按 ESB 通道约定放在 Header 中取决于具体网关配置。3.2 响应示例{ result: true, code: 0, message: success, permission: null, request_id: e43da4ef221746868dc4c837d36f3807, data: null }3.3 响应参数说明字段类型描述resultbool请求成功与否。true请求成功false请求失败codeint错误编码。0 表示 success0 表示失败错误messagestring请求失败返回的错误信息dataobject请求返回的数据。删除操作成功后 data 为 nullpermissionobject权限信息无权限时返回 nullrequest_idstring请求链 ID用于全链路日志追踪该响应结构与 CMDB 全局统一响应格式一致调用方应优先判断result与codecode 0才表示操作成功失败时结合message、request_id定位问题。四、源码级实现原理从 ESB 契约到底层删除链路虽然delete_module是 ESB 组件化封装但其在 CMDB 侧最终落地为 topo_server 的模块实例删除接口。以下依据仓库源码还原完整调用链。4.1 路由注册DELETE /module/{app_id}/{set_id}/{module_id}在 src/scene_server/topo_server/service/service_initfunc.go 的initModule中注册了模块相关路由utility.AddHandler(rest.Action{Verb: http.MethodDelete, Path: /module/{app_id}/{set_id}/{module_id}, Handler: s.DeleteModule})即 ESB 侧将bk_biz_id、bk_set_id、bk_module_id映射到路径参数app_id、set_id、module_id通过DELETE请求到达该处理器。与之对应的 apimachinery 客户端封装见 src/apimachinery/toposerver/inst/module.go其子路径为/module/%d/%d/%d分别填入 appID、setID、moduleIDsubPath : /module/%d/%d/%d err : t.client.Delete(). WithContext(ctx). Body(nil). SubResourcef(subPath, appID, setID, moduleID). ...4.2 处理器校验链模板约束与内置模块保护核心处理器位于 src/scene_server/topo_server/service/inst_module.go删除前依次执行以下校验路径参数解析分别从路径解析app_id、set_id、module_id解析失败返回参数类型错误CCErrCommParamsNeedInt。集群模板约束检查调用isSetInitializedByTemplate判断该集群是否由集群模板set template初始化。若由模板初始化则禁止直接操作其下模块错误码CCErrorTopoForbiddenOperateModuleOnSetInitializedByTemplate只能通过集群模板同步流程维护——这与模板化拓扑的“声明式管理”设计一致。内置模块保护检查调用checkIsBuiltInModule通过统计default字段不在[0, 4]范围内的模块数量来判断是否内置模块。源码注释明确当 default 值不等于 0 或 4 时为内置模块其中 4 表示主机池中用户自定义创建的模块。若命中内置模块如空闲机、故障机、待回收模块返回错误码CCErrorTopoForbiddenDeleteOrUpdateBuiltInSetModule禁止删除或修改。4.3 事务化删除模块实例 主机应用规则级联清理校验通过后删除动作被包裹在AutoRunTxn事务中执行保证多步写操作的原子性txnErr : s.Engine.CoreAPI.CoreService().Txn().AutoRunTxn(ctx.Kit.Ctx, ctx.Kit.Header, func() error { err s.Logics.ModuleOperation().DeleteModule(ctx.Kit, bizID, []int64{setID}, []int64{moduleID}) ... deleteRuleOption : metadata.DeleteHostApplyRuleOption{ ModuleIDs: []int64{moduleID}, } if err : s.Engine.CoreAPI.CoreService().HostApplyRule().DeleteHostApplyRule(ctx.Kit.Ctx, ctx.Kit.Header, bizID, deleteRuleOption); err ! nil { ... } return nil })事务内做两件事删除模块实例ModuleOperation().DeleteModule依据 src/scene_server/topo_server/logics/inst/module.go 组装删除条件——bk_biz_id精确匹配bk_set_id、bk_module_id使用BKDBININ 集合匹配最终调用DeleteInst删除模块对象实例对象模型 ID 为common.BKInnerObjIDModule。删除条件支持集合入参意味着底层删除逻辑天然支持批量模块删除。级联清理主机应用规则根据模块 ID 删除该模块关联的主机属性自动应用规则host apply rule避免删除模块后遗留悬空的规则数据。事务提交成功后处理器返回ctx.RespEntity(nil)对应响应中data: null的语义任一步失败则整个事务回滚并返回对应错误码。五、使用注意事项与限制结合原文档与源码实现使用该接口时有以下几点需要特别留意权限前置调用方必须具备业务拓扑删除权限否则 ESB/CMDB 侧会返回权限相关错误响应中的permission字段即用于承载权限信息。内置模块不可删除空闲机、故障机等default字段为 1、2、3 的内置模块禁止删除default 4的主机池自定义模块属于用户可管理的范围。模板化拓扑约束由集群模板初始化生成的集群其模块不允许直接删除必须通过集群模板同步链路管理源码中对应CCErrorTopoForbiddenOperateModuleOnSetInitializedByTemplate。删除具备级联副作用删除模块的同时会清理其主机应用规则若模块下仍挂载主机等资源实例建议在删除前先完成主机转移可参考同目录下的 transfer_host_module.md 等接口避免拓扑数据异常。历史文档契约本接口属于docs/apidoc/esb-cc目录下的存量 ESB 组件文档仓库明确要求不再向该目录新增接口新接入方应优先参考 docs/apidoc/apigw 下的现行 API 文档。六、常见失败场景与排查思路现象可能原因排查建议返回权限错误、permission非空调用方无业务拓扑删除权限检查bk_username/bk_token对应的用户权限提示“禁止删除或修改内置集群/模块”目标模块为内置模块default ∈ {1,2,3}确认模块的default字段值提示“禁止操作模板初始化的集群上的模块”集群由集群模板创建改走集群模板同步流程返回参数解析错误bk_biz_id/bk_set_id/bk_module_id缺失或非整数核对三级 ID 是否完整且为 int 类型返回code 0且resultfalse删除事务中任一步失败结合message与request_id在日志中检索rid即请求链 ID七、总结delete_module接口契约虽短小但背后承载了蓝鲸 CMDB 对拓扑实例删除的一整套保护与级联机制三级参数精确定位、内置模块与模板化集群双重防护、事务化删除保证数据一致性、主机应用规则级联清理。理解这些实现细节能帮助开发者在使用该接口时规避常见误删与失败场景也更利于理解 CMDB 拓扑实例管理创建、查询、更新、删除的统一设计范式。相关配套接口可继续阅读 create_module.md、search_module.md、update_module.md以构建完整的模块生命周期管理视图。赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐蓝鲸配置平台bk-cmdb批量删除业务集接口详解蓝鲸配置平台bk cmdb批量删除业务集接口详解 导读 本文围绕蓝鲸配置平台bk cmdb提供的批量删除业务集开放接口展开完整介绍接口的版本与权限后端企业应用运维蓝鲸配置平台bk-cmdb删除集群模板接口详解delete_set_template 调用与实践蓝鲸配置平台bk cmdb删除集群模板接口详解delete_set_template 调用与实践 集群模板Set Template是蓝鲸智云配置平台后端企业应用运维蓝鲸配置平台 BK-CMDB 删除模型接口 delete_object 使用与实现原理全解析蓝鲸配置平台 BK CMDB 删除模型接口 delete_object 使用与实现原理全解析 本文围绕蓝鲸智云配置平台BK CMDB对外开放的删除模型接后端企业应用运维创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考