Would be nice if we weren’t setting a static VRRP password... John
> On Feb 4, 2015, at 12:28 PM, d...@apache.org wrote: > > Fix router priuority using the same logic as the one for the state > Fix the router state. do not show UNKNOW, but MASTER or BACKUP depending on > the type of router > Implement the virtual_router_id to be passed as a boot parameter to the router > - it is needed for the keepalived configuration > > > Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo > Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5303d2a8 > Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5303d2a8 > Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5303d2a8 > > Branch: refs/heads/feature/systemvm-persistent-config > Commit: 5303d2a8e4ccd34d518c7e529d3ebd95e2933808 > Parents: cc384ee > Author: wilderrodrigues <wrodrig...@schubergphilis.com> > Authored: Tue Jan 27 14:05:38 2015 +0100 > Committer: wilderrodrigues <wrodrig...@schubergphilis.com> > Committed: Wed Feb 4 18:47:09 2015 +0100 > > ---------------------------------------------------------------------- > .../VirtualNetworkApplianceManagerImpl.java | 22 +++++++++++++------- > .../debian/config/opt/cloud/bin/cs/CsDatabag.py | 7 ++++++- > .../config/opt/cloud/bin/cs/CsRedundant.py | 3 ++- > .../opt/cloud/templates/keepalived.conf.templ | 4 ++-- > 4 files changed, 24 insertions(+), 12 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5303d2a8/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 f0730f5..1c32c7e 100644 > --- > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > +++ > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > @@ -1302,23 +1302,24 @@ Configurable, StateListener<State, > VirtualMachine.Event, VirtualMachine> { > } > } > > - protected int getUpdatedPriority(final Network network, final > List<DomainRouterVO> routers, final DomainRouterVO exclude) > + protected int getUpdatedPriority(final Network network, final > List<DomainRouterVO> routers, final DomainRouterVO masterRouter) > throws InsufficientVirtualNetworkCapacityException { > int priority; > if (routers.size() == 0) { > priority = DEFAULT_PRIORITY; > } else { > int maxPriority = 0; > - for (final DomainRouterVO r : routers) { > - if (!r.getIsRedundantRouter()) { > + > + final DomainRouterVO router0 = routers.get(0); > + if (router0.getId() == masterRouter.getId()) { > + if (!router0.getIsRedundantRouter()) { > throw new CloudRuntimeException("Redundant router is > mixed with single router in one network!"); > } > - // FIXME Assume the maxPriority one should be running or just > - // created. > - if (r.getId() != exclude.getId() && > _nwHelper.getRealPriority(r) > maxPriority) { > - maxPriority = _nwHelper.getRealPriority(r); > - } > + maxPriority = _nwHelper.getRealPriority(router0); > + } else { > + maxPriority = DEFAULT_PRIORITY; > } > + > if (maxPriority == 0) { > return DEFAULT_PRIORITY; > } > @@ -1330,6 +1331,7 @@ Configurable, StateListener<State, > VirtualMachine.Event, VirtualMachine> { > throw new InsufficientVirtualNetworkCapacityException("Too > many times fail-over happened! Current maximum priority is too high as " + > maxPriority + "!", > network.getId()); > } > + > priority = maxPriority - DEFAULT_DELTA + 1; > } > return priority; > @@ -1589,6 +1591,7 @@ Configurable, StateListener<State, > VirtualMachine.Event, VirtualMachine> { > final boolean isRedundant = router.getIsRedundantRouter(); > if (isRedundant) { > buf.append(" redundant_router=1"); > + buf.append(" router_id=").append(router.getId()); > > final Long vpcId = router.getVpcId(); > final List<DomainRouterVO> routers; > @@ -1599,13 +1602,16 @@ Configurable, StateListener<State, > VirtualMachine.Event, VirtualMachine> { > } > > String redundantState = RedundantState.BACKUP.toString(); > + router.setRedundantState(RedundantState.BACKUP); > if (routers.size() == 0) { > redundantState = RedundantState.MASTER.toString(); > + router.setRedundantState(RedundantState.MASTER); > } else { > final DomainRouterVO router0 = routers.get(0); > > if (router.getId() == router0.getId()) { > redundantState = RedundantState.MASTER.toString(); > + router.setRedundantState(RedundantState.MASTER); > } > } > > > http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5303d2a8/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 d1d899b..187a0cb 100644 > --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py > +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py > @@ -129,4 +129,9 @@ class CsCmdLine(CsDataBag): > def get_state(self): > if "redundant_state" in self.idata(): > return self.idata()['redundant_state'] > - return "MASTER" > \ No newline at end of file > + return "MASTER" > + > + def get_router_id(self): > + if "router_id" in self.idata(): > + return self.idata()['router_id'] > + return 1 > \ No newline at end of file > > http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5303d2a8/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 267cc1c..9569f08 100644 > --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py > +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py > @@ -102,6 +102,7 @@ class CsRedundant(object): > file.search(" priority ", " priority %s" % self.cl.get_priority()) > file.search(" weight ", " weight %s" % 2) > file.search(" state ", " state %s" % self.cl.get_state()) > + 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("virtual_ipaddress {", "}", self._collect_ips()) > file.commit() > @@ -122,7 +123,7 @@ class CsRedundant(object): > if connt.is_changed(): > CsHelper.service("conntrackd", "restart") > > - if file.is_changed() and self.cl.get_state() == 'MASTER': > + if file.is_changed(): > CsHelper.service("keepalived", "restart") > > # FIXME > > http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5303d2a8/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 9f3c24b..ef27617 100644 > --- a/systemvm/patches/debian/config/opt/cloud/templates/keepalived.conf.templ > +++ b/systemvm/patches/debian/config/opt/cloud/templates/keepalived.conf.templ > @@ -38,8 +38,8 @@ vrrp_instance inside_network { > > advert_int 1 > authentication { > - auth_type PASS > - auth_pass WORD > + auth_type AH > + auth_pass k33p@live > } > > virtual_ipaddress { >