#23185·netbox

删除 SiteGroup 会对附属站点连接的 CircuitTerminations 进行破坏性级联删除

作者: klausps创建于 2026年9月16日更新于 2026年9月17日
标签type: bugstatus: needs ownerseverity: lownetbox

QQ 网络框版

NetBox社区

QQ 网络框版本

页:1

XPython 版本

3.13 联合国

  • 重现步骤
  1. 建立一个名为 " SG1 " 的网站小组。
  2. 创建一个名为A区 ' 的网站,并将其分配给SG1 ' 。
  3. 创建供应商、电路类型和电路。
  4. 为线路创建电路终止:
  • 终止类型:场地
  • 终止:A站点
  1. 可选地将电缆连接到电路终点站,以显示 相关电缆终止的额外损失。
  2. 只删除 " SG1 " 网站组。
  3. 检查电路和物体变化日志。 这种行为被观察到在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