删除 SiteGroup 会对附属站点连接的 CircuitTerminations 进行破坏性级联删除
作者: klausps创建于 2026年9月16日更新于 2026年9月17日
标签type: bugstatus: needs ownerseverity: lownetbox
QQ 网络框版
NetBox社区
QQ 网络框版本
页:1
XPython 版本
3.13 联合国
- 重现步骤
- 建立一个名为 " SG1 " 的网站小组。
- 创建一个名为
A区 ' 的网站,并将其分配给SG1 ' 。 - 创建供应商、电路类型和电路。
- 为线路创建电路终止:
- 终止类型:场地
- 终止:A站点
- 可选地将电缆连接到电路终点站,以显示 相关电缆终止的额外损失。
- 只删除 " SG1 " 网站组。
- 检查电路和物体变化日志。 这种行为被观察到在NetBox v4.6.8. 相关 电路终止模型字段仍然使用相同的删除行为 目前稳定的v4.7.1源。
• 预期行为
删除 Site Group 只应删除该组织的分组。
因为Site.group'是无效的,使用SET NULL',Site A'应该活下来。 没有指定组。 实际终止目标的电路终止 A区 ' 及其电缆终点协会也必须生存。
删除分组对象不得删除附在其中的电路基础设施 仅属于该团体的遗址。
观察行为
`Site A ' 幸存下来,其群体已清除,但巡回终结是 从隐藏的 {site group} 缓存字段删除。
如果电路终止连接到一条电缆,则关联 电缆终止也被删除 。
这是非常危险和破坏性的行为。 用户请求删除 组织组合对象,但 NetBox 执行无关, 可能大规模删除其实际使用的线路和电缆数据 终止目标仍然存在。
在揭露这个问题的生产事件中,一个网站组删除 请求导致删除:
- 147个电路终止对象
- 141个电缆终止对象
受影响的地点和电路本身依然存在。 由此造成的损害是: 只有在外部同步进程试图 重建缺失的终止和电缆端点协会。
这是一种不相称和出乎意料的级联,极有可能 静态质量数据丢失.
可疑原因
`Circuit Termination.cache conference objects ()' 使祖先非正常化 实际终止目标进入缓存字段。
当终止目标是一个站点时,它存储站点的组如下:
https://GitHub.com/netbox-community/netbox/blob/v4.7.1/netbox/电路/模型/电路.py#L426-L429
elif 终止 type ==.get model('dcim','site'):
自我. 区域 = 自我.结束。
自我。 site group = 自我. 终结。 group
site = 自定义
然而,缓存只使用 site 组域使用 delete=模型. 卡塞达:
https://GitHub.com/netbox-community/netbox/blob/v4.7.1/netbox/电路/模型/电路.py#L336-L342
站点 组=型号. 外键( E)
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}请说 现场组,
互联网档案馆的存檔,存档日期2013-12-02.
. . . . . . .内容来源: netbox-community/netbox