Updated Branches: refs/heads/4.2 5a2fd3e2a -> 91bf54652
CLOUDSTACK-3924 NPE while internal LB vm is getting created Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/91bf5465 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/91bf5465 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/91bf5465 Branch: refs/heads/4.2 Commit: 91bf54652ec6450a58f1c44d5d67069ac99a6462 Parents: 5a2fd3e Author: Rajesh Battala <[email protected]> Authored: Tue Jul 30 16:26:52 2013 +0530 Committer: Murali Reddy <[email protected]> Committed: Wed Jul 31 10:22:47 2013 +0530 ---------------------------------------------------------------------- .../lb/InternalLoadBalancerVMManagerImpl.java | 51 ++++++++++---------- 1 file changed, 26 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/91bf5465/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java ---------------------------------------------------------------------- diff --git a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java index 76507e9..80d8e41 100644 --- a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java +++ b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java @@ -5,7 +5,7 @@ // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, @@ -25,11 +25,12 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; -import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO; -import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO; +import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao; + import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager.OnError; import com.cloud.agent.api.Answer; @@ -209,7 +210,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements // Internal LB control command is sent over management server in VMware if (dest.getHost().getHypervisorType() == HypervisorType.VMware) { if (s_logger.isInfoEnabled()) { - s_logger.info("Check if we need to add management server explicit route to Internal LB. pod cidr: " + s_logger.info("Check if we need to add management server explicit route to Internal LB. pod cidr: " + dest.getPod().getCidrAddress() + "/" + dest.getPod().getCidrSize() + ", pod gateway: " + dest.getPod().getGateway() + ", management host: " + _mgmtHost); } @@ -326,7 +327,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements // restart network if restartNetwork = false is not specified in profile parameters boolean reprogramGuestNtwk = true; - if (profile.getParameter(Param.ReProgramGuestNetworks) != null + if (profile.getParameter(Param.ReProgramGuestNetworks) != null && (Boolean) profile.getParameter(Param.ReProgramGuestNetworks) == false) { reprogramGuestNtwk = false; } @@ -368,7 +369,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements @Override public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException, - InsufficientCapacityException { + InsufficientCapacityException { //not supported throw new UnsupportedOperationException("Plug nic is not supported for vm of type " + vm.getType()); } @@ -491,12 +492,12 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements Network guestNetwork = _ntwkModel.getNetwork(guestNetworkId); Nic guestNic = _nicDao.findByNtwkIdAndInstanceId(guestNetwork.getId(), internalLbVm.getId()); - NicProfile guestNicProfile = new NicProfile(guestNic, guestNetwork, guestNic.getBroadcastUri(), guestNic.getIsolationUri(), - _ntwkModel.getNetworkRate(guestNetwork.getId(), internalLbVm.getId()), - _ntwkModel.isSecurityGroupSupportedInNetwork(guestNetwork), + NicProfile guestNicProfile = new NicProfile(guestNic, guestNetwork, guestNic.getBroadcastUri(), guestNic.getIsolationUri(), + _ntwkModel.getNetworkRate(guestNetwork.getId(), internalLbVm.getId()), + _ntwkModel.isSecurityGroupSupportedInNetwork(guestNetwork), _ntwkModel.getNetworkTag(internalLbVm.getHypervisorType(), guestNetwork)); - NetworkOffering offering =_networkOfferingDao.findById(guestNetworkId); + NetworkOffering offering = _networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()); String maxconn= null; if (offering.getConcurrentConnections() == null) { maxconn = _configDao.getValue(Config.NetworkLBHaproxyMaxConn.key()); @@ -505,7 +506,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements maxconn = offering.getConcurrentConnections().toString(); } LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(lbs, guestNic.getIp4Address(), - guestNic.getIp4Address(), internalLbVm.getPrivateIpAddress(), + guestNic.getIp4Address(), internalLbVm.getPrivateIpAddress(), _itMgr.toNicTO(guestNicProfile, internalLbVm.getHypervisorType()), internalLbVm.getVpcId(), maxconn); cmd.lbStatsVisibility = _configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key()); @@ -555,7 +556,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements _accountMgr.checkAccess(caller, null, true, internalLbVm); - return _itMgr.expunge(internalLbVm, _accountMgr.getActiveUser(callerUserId), caller); + return _itMgr.expunge(internalLbVm, _accountMgr.getActiveUser(callerUserId), caller); } @@ -576,7 +577,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements protected VirtualRouter stopInternalLbVm(DomainRouterVO internalLbVm, boolean forced, Account caller, long callerUserId) throws ResourceUnavailableException, ConcurrentOperationException { s_logger.debug("Stopping internal lb vm " + internalLbVm); try { - if (_itMgr.advanceStop((DomainRouterVO) internalLbVm, forced, _accountMgr.getActiveUser(callerUserId), caller)) { + if (_itMgr.advanceStop(internalLbVm, forced, _accountMgr.getActiveUser(callerUserId), caller)) { return _internalLbVmDao.findById(internalLbVm.getId()); } else { return null; @@ -588,7 +589,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements @Override - public List<DomainRouterVO> deployInternalLbVm(Network guestNetwork, Ip requestedGuestIp, DeployDestination dest, + public List<DomainRouterVO> deployInternalLbVm(Network guestNetwork, Ip requestedGuestIp, DeployDestination dest, Account owner, Map<Param, Object> params) throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { @@ -597,7 +598,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements return startInternalLbVms(params, internalLbVms); } - protected List<DomainRouterVO> startInternalLbVms(Map<Param, Object> params, List<DomainRouterVO> internalLbVms) + protected List<DomainRouterVO> startInternalLbVms(Map<Param, Object> params, List<DomainRouterVO> internalLbVms) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { List<DomainRouterVO> runningInternalLbVms = null; @@ -623,8 +624,8 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements @DB - protected List<DomainRouterVO> findOrDeployInternalLbVm(Network guestNetwork, Ip requestedGuestIp, DeployDestination dest, - Account owner, Map<Param, Object> params) throws ConcurrentOperationException, + protected List<DomainRouterVO> findOrDeployInternalLbVm(Network guestNetwork, Ip requestedGuestIp, DeployDestination dest, + Account owner, Map<Param, Object> params) throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { List<DomainRouterVO> internalLbVms = new ArrayList<DomainRouterVO>(); @@ -702,7 +703,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements s_logger.debug("Adding nic for Internal LB in Guest network " + guestNetwork); NicProfile guestNic = new NicProfile(); if (guestIp != null) { - guestNic.setIp4Address(guestIp.addr()); + guestNic.setIp4Address(guestIp.addr()); } else { guestNic.setIp4Address(_ntwkMgr.acquireGuestIpAddress(guestNetwork, null)); } @@ -803,9 +804,9 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements continue; } - internalLbVm = new DomainRouterVO(id, routerOffering.getId(), internalLbProviderId, + internalLbVm = new DomainRouterVO(id, routerOffering.getId(), internalLbProviderId, VirtualMachineName.getSystemVmName(id, _instance, _internalLbVmNamePrefix), template.getId(), template.getHypervisorType(), - template.getGuestOSId(), owner.getDomainId(), owner.getId(), false, 0, false, + template.getGuestOSId(), owner.getDomainId(), owner.getId(), false, 0, false, RedundantState.UNKNOWN, false, false, VirtualMachine.Type.InternalLoadBalancerVm, vpcId); internalLbVm.setRole(Role.INTERNAL_LB_VM); internalLbVm = _itMgr.allocate(internalLbVm, template, routerOffering, networks, plan, null, owner); @@ -847,7 +848,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements - protected DomainRouterVO startInternalLbVm(DomainRouterVO internalLbVm, Account caller, long callerUserId, Map<Param, Object> params) + protected DomainRouterVO startInternalLbVm(DomainRouterVO internalLbVm, Account caller, long callerUserId, Map<Param, Object> params) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { s_logger.debug("Starting Internal LB VM " + internalLbVm); @@ -864,7 +865,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements } - protected List<HypervisorType> getHypervisors(DeployDestination dest, DeploymentPlan plan, + protected List<HypervisorType> getHypervisors(DeployDestination dest, DeploymentPlan plan, List<HypervisorType> supportedHypervisors) throws InsufficientServerCapacityException { List<HypervisorType> hypervisors = new ArrayList<HypervisorType>(); @@ -894,7 +895,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements } @Override - public boolean applyLoadBalancingRules(Network network, final List<LoadBalancingRule> rules, List<? extends VirtualRouter> internalLbVms) + public boolean applyLoadBalancingRules(Network network, final List<LoadBalancingRule> rules, List<? extends VirtualRouter> internalLbVms) throws ResourceUnavailableException { if (rules == null || rules.isEmpty()) { s_logger.debug("No lb rules to be applied for network " + network); @@ -910,7 +911,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements if (lbVm.getState() == State.Running) { return sendLBRules(lbVm, rules, network.getId()); } else if (lbVm.getState() == State.Stopped || lbVm.getState() == State.Stopping) { - s_logger.debug("Internal LB VM " + lbVm.getInstanceName() + " is in " + lbVm.getState() + + s_logger.debug("Internal LB VM " + lbVm.getInstanceName() + " is in " + lbVm.getState() + ", so not sending apply lb rules commands to the backend"); return true; } else { @@ -957,7 +958,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements @Override - public VirtualRouter startInternalLbVm(long internalLbVmId, Account caller, long callerUserId) + public VirtualRouter startInternalLbVm(long internalLbVmId, Account caller, long callerUserId) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
