From e81f02f9b543fade0b28c9a107787078937c8392 Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Wed, 9 Mar 2011 09:35:27 -0800 Subject: [PATCH] more changes for direct networks --- .../com/cloud/upgrade/dao/Upgrade217to22.java | 17 +++++++++++++++-- utils/src/com/cloud/utils/net/NetUtils.java | 8 ++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/upgrade/dao/Upgrade217to22.java b/server/src/com/cloud/upgrade/dao/Upgrade217to22.java index 196ef7ec0f5..1b7a58dc52e 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade217to22.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade217to22.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import com.cloud.utils.PropertiesUtil; import com.cloud.utils.exception.CloudRuntimeException; +import com.cloud.utils.net.NetUtils; public class Upgrade217to22 implements DbUpgrade { boolean _basicZone; @@ -275,8 +276,6 @@ public class Upgrade217to22 implements DbUpgrade { pstmt.close(); } - pstmt = conn.prepareStatement("SELECT id FROM vlan WHERE vlan_type='DirectAttached'"); - } protected void upgradeDataCenter(Connection conn) { @@ -446,6 +445,20 @@ public class Upgrade217to22 implements DbUpgrade { pstmt.close(); } + upgradeUserIpAddress(conn, dcId, publicNetworkId, "VirtualNetwork"); + pstmt = conn.prepareStatement("SELECT id, vlan_id, vlan_gateway, vlan_netmask FROM vlan WHERE vlan_type='DirectAttached' AND data_center_id=?"); + pstmt.setLong(1, dcId); + rs = pstmt.executeQuery(); + while (rs.next()) { + long vlanId = rs.getLong(1); + String tag = rs.getString(2); + String gateway = rs.getString(3); + String netmask = rs.getString(4); + String cidr = NetUtils.getCidrFromGatewayAndNetmask(gateway, netmask); + insertNetwork(conn, "DirectNetwork" + vlanId, "Direct network created for " + vlanId, "Guest", "Vlan", "vlan://" + tag, gateway, cidr, "Dhcp", 4, dcId, "DirectNetworkGuru", "Setup", 0, 0, null, null, "DirectAttached", true, null, true, null); + } + + upgradeUserIpAddress(conn, dcId, publicNetworkId, "VirtualNetwork"); } diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java index 153f5bc057e..b5147bea9da 100755 --- a/utils/src/com/cloud/utils/net/NetUtils.java +++ b/utils/src/com/cloud/utils/net/NetUtils.java @@ -496,6 +496,14 @@ public class NetUtils { return null; } + public static String getCidrFromGatewayAndNetmask(String gatewayStr, String netmaskStr) { + long netmask = ip2Long(netmaskStr); + long gateway = ip2Long(gatewayStr); + long firstPart = gateway & netmask; + long size = getCidrSize(netmaskStr); + return long2Ip(firstPart) + "/" + size; + } + public static String[] getIpRangeFromCidr(String cidr, long size) { assert (size < 32) : "You do know this is not for ipv6 right? Keep it smaller than 32 but you have " + size; String[] result = new String[2];