You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ya...@apache.org on 2013/06/14 01:05:42 UTC

[1/2] git commit: updated refs/heads/master to 5a8a2a2

Updated Branches:
  refs/heads/master 263062526 -> 5a8a2a259


CLOUDSTACK-2792: Send "saved_password" to BACKUP router when reset password for user VM

Otherwise when MASTER failed, the user VM would get password reset again after
reboot.

But this fix still have issues if MASTER is failure before VM boot up, but in
that case, password of user VM won't change and user would request password
change again, then it would be fine.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5a8a2a25
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5a8a2a25
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5a8a2a25

Branch: refs/heads/master
Commit: 5a8a2a259ea6e049b3e5810ff3a432d6ca7767e1
Parents: fbe6b27
Author: Sheng Yang <sh...@citrix.com>
Authored: Fri May 31 16:29:03 2013 -0700
Committer: Sheng Yang <sh...@citrix.com>
Committed: Thu Jun 13 16:05:15 2013 -0700

----------------------------------------------------------------------
 .../network/router/VirtualNetworkApplianceManagerImpl.java    | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5a8a2a25/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 01f86ec..8da5176 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -3353,7 +3353,12 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
 
         // password should be set only on default network element
         if (password != null && nic.isDefaultNic()) {
-            final String encodedPassword = PasswordGenerator.rot13(password);
+            String encodedPassword = PasswordGenerator.rot13(password);
+            // We would unset password for BACKUP router in the RvR, to prevent user from accidently reset the 
+            // password again after BACKUP become MASTER
+            if (router.getIsRedundantRouter() && router.getRedundantState() != RedundantState.MASTER) {
+            	encodedPassword = PasswordGenerator.rot13("saved_password");
+            }
             SavePasswordCommand cmd = new SavePasswordCommand(encodedPassword, nic.getIp4Address(), profile.getVirtualMachine().getHostName());
             cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, getRouterControlIp(router.getId()));
             cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, getRouterIpInNetwork(nic.getNetworkId(), router.getId()));


[2/2] git commit: updated refs/heads/master to 5a8a2a2

Posted by ya...@apache.org.
CLOUDSTACK-1170: Redundant Router: Ensure MACs are same on other than first public nic


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/fbe6b273
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/fbe6b273
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/fbe6b273

Branch: refs/heads/master
Commit: fbe6b273e3112ce53b24d7a5db6be95b1bd8d5ae
Parents: 2630625
Author: Sheng Yang <sh...@citrix.com>
Authored: Thu Jun 13 14:57:47 2013 -0700
Committer: Sheng Yang <sh...@citrix.com>
Committed: Thu Jun 13 16:05:15 2013 -0700

----------------------------------------------------------------------
 .../VirtualNetworkApplianceManagerImpl.java      | 19 ++++++++++++++++++-
 utils/src/com/cloud/utils/net/NetUtils.java      |  9 +++++++++
 utils/test/com/cloud/utils/net/NetUtilsTest.java | 13 +++++++++++++
 3 files changed, 40 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fbe6b273/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index db4786a..01f86ec 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -3144,6 +3144,16 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
             vlanIpMap.put(vlanTag, ipList);
         }
 
+        List<NicVO> nics = _nicDao.listByVmId(router.getId());
+        String baseMac = null;
+        for (NicVO nic : nics) {
+        	NetworkVO nw = _networkDao.findById(nic.getNetworkId());
+        	if (nw.getTrafficType() == TrafficType.Public) {
+        		baseMac = nic.getMacAddress();
+        		break;
+        	}
+        }
+
         for (Map.Entry<String, ArrayList<PublicIpAddress>> vlanAndIp : vlanIpMap.entrySet()) {
             List<PublicIpAddress> ipAddrList = vlanAndIp.getValue();
             // Source nat ip address should always be sent first
@@ -3175,7 +3185,14 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
                 String vlanId = ipAddr.getVlanTag();
                 String vlanGateway = ipAddr.getGateway();
                 String vlanNetmask = ipAddr.getNetmask();
-                String vifMacAddress = ipAddr.getMacAddress();
+                String vifMacAddress = null;
+                // For non-source nat IP, set the mac to be something based on first public nic's MAC
+                // We cannot depends on first ip because we need to deal with first ip of other nics
+                if (!ipAddr.isSourceNat() && ipAddr.getVlanId() != 0) {
+                	vifMacAddress = NetUtils.generateMacOnIncrease(baseMac, ipAddr.getVlanId());
+                } else {
+                	vifMacAddress = ipAddr.getMacAddress();
+                }
 
                 IpAddressTO ip = new IpAddressTO(ipAddr.getAccountId(), ipAddr.getAddress().addr(), add, firstIP, 
                         sourceNat, vlanId, vlanGateway, vlanNetmask, vifMacAddress, networkRate, ipAddr.isOneToOneNat());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fbe6b273/utils/src/com/cloud/utils/net/NetUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java
index ec0ff05..5c13454 100755
--- a/utils/src/com/cloud/utils/net/NetUtils.java
+++ b/utils/src/com/cloud/utils/net/NetUtils.java
@@ -1394,4 +1394,13 @@ public class NetUtils {
 		return null;
 	}
 
+	public static String generateMacOnIncrease(String baseMac, long l) {
+		long mac = mac2Long(baseMac);
+		if (l > 0xFFFFl) {
+			return null;
+		}
+		mac = mac + (l << 24);
+		mac = mac & 0x06FFFFFFFFFFl;
+		return long2Mac(mac);
+	}
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fbe6b273/utils/test/com/cloud/utils/net/NetUtilsTest.java
----------------------------------------------------------------------
diff --git a/utils/test/com/cloud/utils/net/NetUtilsTest.java b/utils/test/com/cloud/utils/net/NetUtilsTest.java
index 9952d3c..38fe21d 100644
--- a/utils/test/com/cloud/utils/net/NetUtilsTest.java
+++ b/utils/test/com/cloud/utils/net/NetUtilsTest.java
@@ -155,4 +155,17 @@ public class NetUtilsTest extends TestCase {
         //Check for Incorrect format of CIDR
         assertFalse(NetUtils.isSameIpRange(cidrFirst, "10.3.6.5/50"));
     }
+
+    public void testMacGenerateion() {
+    	String mac = "06:01:23:00:45:67";
+    	String newMac = NetUtils.generateMacOnIncrease(mac, 2);
+    	assertTrue(newMac.equals("06:01:25:00:45:67"));
+    	newMac = NetUtils.generateMacOnIncrease(mac, 16);
+    	assertTrue(newMac.equals("06:01:33:00:45:67"));
+    	mac = "06:ff:ff:00:45:67";
+    	newMac = NetUtils.generateMacOnIncrease(mac, 1);
+    	assertTrue(newMac.equals("06:00:00:00:45:67"));
+    	newMac = NetUtils.generateMacOnIncrease(mac, 16);
+    	assertTrue(newMac.equals("06:00:0f:00:45:67"));
+    }
 }