From 8486a899afc123ecdfcd67131effeb49d9a849ed Mon Sep 17 00:00:00 2001 From: dheeraj12347 Date: Thu, 19 Mar 2026 18:23:49 +0530 Subject: [PATCH] Handle non-OvsFetchInterfaceAnswer in OVS tunnel manager --- .../network/ovs/OvsTunnelManagerImpl.java | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/plugins/network-elements/ovs/src/main/java/com/cloud/network/ovs/OvsTunnelManagerImpl.java b/plugins/network-elements/ovs/src/main/java/com/cloud/network/ovs/OvsTunnelManagerImpl.java index 804f29c01b1e..5e00cdf5c809 100644 --- a/plugins/network-elements/ovs/src/main/java/com/cloud/network/ovs/OvsTunnelManagerImpl.java +++ b/plugins/network-elements/ovs/src/main/java/com/cloud/network/ovs/OvsTunnelManagerImpl.java @@ -171,17 +171,31 @@ protected OvsTunnelInterfaceVO createInterfaceRecord(String ip, } private String handleFetchInterfaceAnswer(Answer[] answers, Long hostId) { - OvsFetchInterfaceAnswer ans = (OvsFetchInterfaceAnswer)answers[0]; + if (answers == null || answers.length == 0 || answers[0] == null) { + logger.warn("No answer returned for OvsFetchInterfaceCommand from host " + hostId); + return null; + } + + Answer answer = answers[0]; + + if (!(answer instanceof OvsFetchInterfaceAnswer)) { + logger.warn("Expected OvsFetchInterfaceAnswer from host " + hostId + + " but got " + answer.getClass().getSimpleName() + + " with details: " + answer.getDetails()); + return null; + } + + OvsFetchInterfaceAnswer ans = (OvsFetchInterfaceAnswer) answer; + if (ans.getResult()) { - if (ans.getIp() != null && !("".equals(ans.getIp()))) { + if (ans.getIp() != null && !ans.getIp().isEmpty()) { OvsTunnelInterfaceVO ti = createInterfaceRecord(ans.getIp(), - ans.getNetmask(), ans.getMac(), hostId, ans.getLabel()); + ans.getNetmask(), ans.getMac(), hostId, ans.getLabel()); return ti.getIp(); } } - // Fetch interface failed! - logger.warn("Unable to fetch the IP address for the GRE tunnel endpoint" - + ans.getDetails()); + + logger.warn("Unable to fetch the IP address for the GRE tunnel endpoint: " + ans.getDetails()); return null; }