A thing to stress here is that we plan to support this after release so early comment is very welcome. I think Ian is trying to express the same but I wanted to make sure;) Thanks John.
On Thu, Feb 5, 2015 at 5:50 PM, Ian Southam <isout...@schubergphilis.com> wrote: > One of the many things on “to fix” list but thanks, we do not want to go > forward with stupid stuff in there, the idea is to make things better! > > — > Cheers > Ian > > On 04 Feb 2015, at 22:53, John Kinsella <j...@stratosec.co> wrote: > >> 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 { >>> >> > -- Daan