fix(xo-server-sdn-controller): Wrap per-network processing in try/catch

Wrap the entire per-network registration body (after the privateNetwork creation 
check) in a try/catch so one network's failure doesn't affect others.

Reorder `xo:sdn-controller:vni` to after `privateNetwork.addNetwork()` call to 
manage more easily the undo.
This commit is contained in:
Sebastien Rodot
2026-10-19 17:35:33 +02:00
committed by Sebastien Marie
parent b9fa292b9d
commit 1329b7bc69

View File

@@ -555,18 +555,25 @@ class SDNController extends EventEmitter {
this.privateNetworks[uuid] = privateNetwork
}
const vni = otherConfig['xo:sdn-controller:vni']
if (vni === undefined) {
noVniNetworks.push(network)
} else {
this._prevVni = Math.max(this._prevVni, +vni)
}
try {
const vni = otherConfig['xo:sdn-controller:vni']
if (vni === undefined) {
noVniNetworks.push(network)
} else {
this._prevVni = Math.max(this._prevVni, +vni)
}
await privateNetwork.addNetwork(network)
await privateNetwork.addNetwork(network)
this._networks.set(network.$id, network.$ref)
if (privateNetwork.center !== undefined) {
this._starCenters.set(privateNetwork.center.$id, privateNetwork.center.$ref)
this._networks.set(network.$id, network.$ref)
if (privateNetwork.center !== undefined) {
this._starCenters.set(privateNetwork.center.$id, privateNetwork.center.$ref)
}
} catch (error) {
log.warn('Error registering network for SDN controller', {
network: network.name_label,
error,
})
}
})
)