generate random password for redundant VPC

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

Branch: refs/heads/master
Commit: 4b6604318dad00d92c0307a114ef7d84b9096e16
Parents: baa758a
Author: wilderrodrigues <wrodrig...@schubergphilis.com>
Authored: Tue Feb 10 16:43:40 2015 +0100
Committer: wilderrodrigues <wrodrig...@schubergphilis.com>
Committed: Mon Mar 16 11:40:06 2015 +0100

----------------------------------------------------------------------
 .../VirtualNetworkApplianceManagerImpl.java     | 26 +++++++++++++++++++-
 .../VpcVirtualNetworkApplianceManagerImpl.java  |  3 ---
 .../debian/config/opt/cloud/bin/cs/CsDatabag.py |  5 ++++
 .../config/opt/cloud/bin/cs/CsRedundant.py      |  1 +
 .../opt/cloud/templates/keepalived.conf.templ   |  2 +-
 5 files changed, 32 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4b660431/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 234c745..5a97eb3 100644
--- 
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ 
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -17,6 +17,9 @@
 
 package com.cloud.network.router;
 
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -177,6 +180,8 @@ import com.cloud.network.rules.StaticNat;
 import com.cloud.network.rules.StaticNatImpl;
 import com.cloud.network.rules.StaticNatRule;
 import com.cloud.network.rules.dao.PortForwardingRulesDao;
+import com.cloud.network.vpc.Vpc;
+import com.cloud.network.vpc.dao.VpcDao;
 import com.cloud.network.vpn.Site2SiteVpnManager;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.offering.ServiceOffering;
@@ -356,6 +361,8 @@ Configurable, StateListener<State, VirtualMachine.Event, 
VirtualMachine> {
     @Inject
     AsyncJobManager _asyncMgr;
     @Inject
+    protected VpcDao _vpcDao;
+    @Inject
     protected ApiAsyncJobDispatcher _asyncDispatcher;
     @Inject
     OpRouterMonitorServiceDao _opRouterMonitorServiceDao;
@@ -1174,7 +1181,7 @@ Configurable, StateListener<State, VirtualMachine.Event, 
VirtualMachine> {
                         router = router1;
                     }
                     // && router.getState() == State.Stopped
-                    if (router.getHostId() == null) {
+                    if (router.getHostId() == null && router.getState() == 
State.Running) {
                         s_logger.debug("Skip router pair (" + 
router0.getInstanceName() + "," + router1.getInstanceName() + ") due to can't 
find host");
                         continue;
                     }
@@ -1623,6 +1630,23 @@ Configurable, StateListener<State, VirtualMachine.Event, 
VirtualMachine> {
                 // For a redundant VPC router, both shall have the same router 
id. It will be used by the VRRP virtural_router_id attribute.
                 // So we use the VPC id to avoid group problems.
                 buf.append(" router_id=").append(vpcId);
+
+                // Will build the routers password based on the VPC ID and 
UUID.
+                final Vpc vpc = _vpcDao.findById(vpcId);
+
+                try {
+                    final MessageDigest digest = 
MessageDigest.getInstance("SHA-512");
+                    final byte [] rawDigest = vpc.getUuid().getBytes();
+                    digest.update(rawDigest);
+
+                    final BigInteger password = new BigInteger(1, 
digest.digest());
+                    buf.append(" router_password=").append(password);
+
+                } catch (final NoSuchAlgorithmException e) {
+                    s_logger.error("Failed to pssword! Will use the plan B 
instead.");
+                    buf.append(" router_password=").append(vpc.getUuid());
+                }
+
             } else {
                 routers = _routerDao.listByNetworkAndRole(nic.getNetworkId(), 
Role.VIRTUAL_ROUTER);
             }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4b660431/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
 
b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
index 77cc0de..f10e5a1 100644
--- 
a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++ 
b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -74,7 +74,6 @@ import com.cloud.network.vpc.VpcManager;
 import com.cloud.network.vpc.VpcVO;
 import com.cloud.network.vpc.dao.PrivateIpDao;
 import com.cloud.network.vpc.dao.StaticRouteDao;
-import com.cloud.network.vpc.dao.VpcDao;
 import com.cloud.network.vpc.dao.VpcGatewayDao;
 import com.cloud.network.vpn.Site2SiteVpnManager;
 import com.cloud.user.UserStatisticsVO;
@@ -100,8 +99,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
     private static final Logger s_logger = 
Logger.getLogger(VpcVirtualNetworkApplianceManagerImpl.class);
 
     @Inject
-    private VpcDao _vpcDao;
-    @Inject
     private NetworkACLManager _networkACLMgr;
     @Inject
     private VMInstanceDao _vmDao;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4b660431/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py
----------------------------------------------------------------------
diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py 
b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py
index 4ace7bb..d58a642 100644
--- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py
+++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py
@@ -127,3 +127,8 @@ class CsCmdLine(CsDataBag):
         if "router_id" in self.idata():
             return self.idata()['router_id']
         return 1
+
+    def get_router_password(self):
+        if "router_password" in self.idata():
+            return self.idata()['router_password']
+        return "k3ep@liv3D"

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4b660431/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py
----------------------------------------------------------------------
diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py 
b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py
index 5054f76..a947fd1 100644
--- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py
+++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py
@@ -122,6 +122,7 @@ class CsRedundant(object):
         file.search(" state ", "    state %s" % "EQUAL")
         file.search(" virtual_router_id ", "    virtual_router_id %s" % 
self.cl.get_router_id())
         file.greplace("[RROUTER_BIN_PATH]", self.CS_ROUTER_DIR)
+        file.section("authentication {", "}", [ "        auth_type AH \n", "   
     auth_pass %s\n" % self.cl.get_router_password()] )
         file.section("virtual_ipaddress {", "}", self._collect_ips())
         file.commit()
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4b660431/systemvm/patches/debian/config/opt/cloud/templates/keepalived.conf.templ
----------------------------------------------------------------------
diff --git 
a/systemvm/patches/debian/config/opt/cloud/templates/keepalived.conf.templ 
b/systemvm/patches/debian/config/opt/cloud/templates/keepalived.conf.templ
index 957b913..f494df0 100644
--- a/systemvm/patches/debian/config/opt/cloud/templates/keepalived.conf.templ
+++ b/systemvm/patches/debian/config/opt/cloud/templates/keepalived.conf.templ
@@ -40,7 +40,7 @@ vrrp_instance inside_network {
     advert_int 1
     authentication {
         auth_type AH
-        auth_pass k33p@live
+        auth_pass PASS
     }
 
     virtual_ipaddress {

Reply via email to