蓝鲸配置平台(bk-cmdb)删除模块接口 delete_module 使用与实现详解
后端企业应用运维【免费下载链接】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),仅供参考

相关新闻

JavaWeb运动健康管理系统:三层架构与Servlet/JSP实战解析

JavaWeb运动健康管理系统:三层架构与Servlet/JSP实战解析

简介:基于JavaWeb的运动与健康管理系统完整源代码与数据库,适合JavaWeb方向初学者、毕业设计选题者以及健康管理类项目研究者。系统实现用户注册登录、运动数据录入、健康指标跟踪、趋势分析、个性化提醒与社区分享等功能逻辑,数据库方面包含…

2026/10/15 15:37:37 阅读更多 →
AXI4协议核心原理与FPGA系统集成实战指南

AXI4协议核心原理与FPGA系统集成实战指南

1. 项目概述:AXI4不是“总线协议”,而是系统级通信的底层语言刚接触Xilinx FPGA开发的朋友,常把“AXI4”当成一个需要背诵的名词——就像学生时代记“TCP/IP四层模型”那样,只记得它叫“高级可扩展接口”,缩写是AXI4&a…

2026/10/15 15:37:37 阅读更多 →
Dendron 的 Selection to Items 功能实战:把选区中的 Wiki 链接一键变成可检索条目

Dendron 的 Selection to Items 功能实战:把选区中的 Wiki 链接一键变成可检索条目

知识管理知识库 【免费下载链接】dendron The personal knowledge management (PKM) tool that grows as you do! 项目地址: https://gitcode.com/gh_mirrors/de/dendron 点击查看 免费下载 本篇技术指南聚焦于 Dendron 笔记插件中 Selection to Items(…

2026/10/15 15:37:37 阅读更多 →

最新新闻

STM32+华为云IoT+Qt:智能家居全栈开发实战

STM32+华为云IoT+Qt:智能家居全栈开发实战

1. 项目缘起与整体架构拆解智能家居这个词已经被说烂了,但真正自己动手从零搭一套完整系统的人并不多。大部分人要么停留在用现成模组点个灯的阶段,要么卡在设备上云这一步就放弃了。我当初做这个项目的出发点很简单:家里有几台老式空调和加湿…

2026/10/15 16:28:41 阅读更多 →
储能EMS社招面试全攻略:核心考点与避坑指南

储能EMS社招面试全攻略:核心考点与避坑指南

1. 储能EMS社招面试到底在考什么储能EMS,全称Energy Management System,直译过来就是能量管理系统。放在储能行业里,它是一套负责调度、监控、优化储能电站充放电策略的软件系统。社招面试和校招面试最大的区别在于:校招可以容忍你…

2026/10/15 16:28:41 阅读更多 →
Oppia 测试模块映射体系全解析:core/tests/test-modules-mappings 如何驱动 GitHub CI 精准测试

Oppia 测试模块映射体系全解析:core/tests/test-modules-mappings 如何驱动 GitHub CI 精准测试

教育后端前端 【免费下载链接】oppia A free, online learning platform to make quality education accessible for all. 项目地址: https://gitcode.com/gh_mirrors/op/oppia 点击查看 免费下载 在 Oppia 的 CI 流程中,每一次 Pull Request 并不会盲目…

2026/10/15 16:28:41 阅读更多 →
编译原理基础:从语言定义到文法分类与语法分析

编译原理基础:从语言定义到文法分类与语法分析

1. 项目概述语言的定义是整个编译原理的起点,也是最容易被初学者一带而过的部分。很多人学编译原理一上来就啃词法分析、语法分析,结果看到自动机、文法推导就懵了,根子就在于没有真正理解“语言”到底是个什么东西。哈工大这套课程把语言的定…

2026/10/15 16:28:41 阅读更多 →
Qt低功耗蓝牙开发实战:从GATT通信到MTU协商与Notify订阅

Qt低功耗蓝牙开发实战:从GATT通信到MTU协商与Notify订阅

简介:本资源是一套基于Qt框架的低功耗蓝牙(BLE)特征值读写测试例程,面向嵌入式开发、物联网应用及跨平台桌面端BLE通信初学者与进阶开发者,解决BLE设备调试中服务发现、GATT特征交互、异步读写响应等核心实践难点。压缩…

2026/10/15 16:28:41 阅读更多 →
AP-0316语音处理模组实战:回声消除与波束成形调试指南

AP-0316语音处理模组实战:回声消除与波束成形调试指南

1. 这块模组到底解决了什么问题语音交互这件事,看起来简单,做起来处处是坑。你对着设备喊一句话,设备听到的可能是:你自己的声音、隔壁房间的电视声、空调出风口的呼呼声、桌面共振的低频嗡嗡声,以及电路本身产生的底噪…

2026/10/15 16:27:40 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →