From 831f7cff545d391c994ad51abafa2b0c8e095734 Mon Sep 17 00:00:00 2001 From: Rakesh Date: Tue, 22 Feb 2022 12:11:31 +0100 Subject: [PATCH] Support mutiple management networks in systemvms (#4678) * Support mutliple management networks in systemvms Currently only one management.network.cidr is suuported in systemvms Allow supporting comma separated list of cidr's so that multiple networks are reachable from systemvms. * add local gateway Co-authored-by: Rakesh Venkatesh --- .../com/cloud/consoleproxy/ConsoleProxyManagerImpl.java | 5 ++++- .../secondarystorage/SecondaryStorageManagerImpl.java | 5 ++++- systemvm/debian/opt/cloud/bin/setup/common.sh | 7 ++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index a3177fa7705..ff384bc845c 100644 --- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -1254,8 +1254,11 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy if (nic.getTrafficType() == TrafficType.Management) { String mgmt_cidr = configurationDao.getValue(Config.ManagementNetwork.key()); - if (NetUtils.isValidIp4Cidr(mgmt_cidr)) { + if (NetUtils.isValidCidrList(mgmt_cidr)) { + s_logger.debug("Management server cidr list is " + mgmt_cidr); buf.append(" mgmtcidr=").append(mgmt_cidr); + } else { + s_logger.error("Invalid management cidr list: " + mgmt_cidr); } buf.append(" localgw=").append(dest.getPod().getGateway()); } diff --git a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java index d3d64fe10f5..8906d781205 100644 --- a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java +++ b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java @@ -1125,8 +1125,11 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar } if (nic.getTrafficType() == TrafficType.Management) { String mgmt_cidr = _configDao.getValue(Config.ManagementNetwork.key()); - if (NetUtils.isValidIp4Cidr(mgmt_cidr)) { + if (NetUtils.isValidCidrList(mgmt_cidr)) { + s_logger.debug("Management server cidr list is " + mgmt_cidr); buf.append(" mgmtcidr=").append(mgmt_cidr); + } else { + s_logger.error("Inavlid management server cidr list: " + mgmt_cidr); } buf.append(" localgw=").append(dest.getPod().getGateway()); buf.append(" private.network.device=").append("eth").append(deviceId); diff --git a/systemvm/debian/opt/cloud/bin/setup/common.sh b/systemvm/debian/opt/cloud/bin/setup/common.sh index 60b88754bee..ceb3150207b 100755 --- a/systemvm/debian/opt/cloud/bin/setup/common.sh +++ b/systemvm/debian/opt/cloud/bin/setup/common.sh @@ -322,7 +322,12 @@ setup_common() { if [ -n "$MGMTNET" -a -n "$LOCAL_GW" ] then - ip route add $MGMTNET via $LOCAL_GW dev eth1 + log_it "Received mgmt cidr : $MGMTNET" + cidrs=(${MGMTNET//,/ }) + for cidr in ${cidrs[@]} + do + ip route add $cidr via $LOCAL_GW dev eth1 + done fi ip route delete default