From 66801d9eceaaa58afc9ae97b3aa3ca3d133bde3e Mon Sep 17 00:00:00 2001 From: Rakesh Venkatesh Date: Wed, 10 Feb 2021 16:35:42 +0100 Subject: [PATCH 1/2] 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. --- .../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 6cc0ace1e056..500e1dce6cb5 100644 --- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -1251,8 +1251,11 @@ public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, Depl 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 f7c22c209852..3fb10b7a8c46 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 boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, Depl } 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 987f07d7659d..4e12ba24658e 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 dev eth1 + done fi ip route delete default From b03498e2f7ea3a2bd66cfb322ff7f4c13f80bb3e Mon Sep 17 00:00:00 2001 From: Rakesh Venkatesh Date: Wed, 29 Sep 2021 11:36:01 +0200 Subject: [PATCH 2/2] add local gateway --- systemvm/debian/opt/cloud/bin/setup/common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/systemvm/debian/opt/cloud/bin/setup/common.sh b/systemvm/debian/opt/cloud/bin/setup/common.sh index 4e12ba24658e..780cf54a947b 100755 --- a/systemvm/debian/opt/cloud/bin/setup/common.sh +++ b/systemvm/debian/opt/cloud/bin/setup/common.sh @@ -326,7 +326,7 @@ setup_common() { cidrs=(${MGMTNET//,/ }) for cidr in ${cidrs[@]} do - ip route add $cidr dev eth1 + ip route add $cidr via $LOCAL_GW dev eth1 done fi