fix(xo-server-sdn-controller): Wrap preferred-center lookup in try/catch

The value stored for preferred-center could be wrong or out-of-date. If no XAPI 
object exists with such uuid (the host designed as preferred center was 
removed from XAPI), avoid to hard fail, and consider the value is absent.
This commit is contained in:
Sebastien Rodot
2026-10-19 17:35:33 +02:00
committed by Sebastien Marie
parent 767fc2cb76
commit b9fa292b9d

View File

@@ -539,10 +539,18 @@ class SDNController extends EventEmitter {
let privateNetwork = this.privateNetworks[uuid]
if (privateNetwork === undefined) {
const preferredCenterUuid = otherConfig['xo:sdn-controller:preferred-center']
const preferredCenter =
preferredCenterUuid !== undefined
? this._xo.getXapiObject(this._xo.getObject(preferredCenterUuid, 'host'))
: undefined
let preferredCenter
if (preferredCenterUuid !== undefined) {
try {
preferredCenter = this._xo.getXapiObject(this._xo.getObject(preferredCenterUuid, 'host'))
} catch (error) {
log.warn('Stale preferred center, will be elected when a host becomes available', {
network: network.name_label,
preferredCenterUuid,
error,
})
}
}
privateNetwork = new PrivateNetwork(this, uuid, preferredCenter)
this.privateNetworks[uuid] = privateNetwork
}