@Override public boolean applyGlobalLoadBalancerRule(long zoneId, long physicalNetworkId, GlobalLoadBalancerConfigCommand gslbConfigCmd) throws ResourceUnavailableException { long zoneGslbProviderHosId = 0; // find the NetScaler device configured as gslb service provider in the // zone ExternalLoadBalancerDeviceVO nsGslbProvider = findGslbProvider(zoneId, physicalNetworkId); if (nsGslbProvider == null) { String msg = "Unable to find a NetScaler configured as gslb service provider in zone " + zoneId; s_logger.debug(msg); throw new ResourceUnavailableException(msg, DataCenter.class, zoneId); } // get the host Id corresponding to NetScaler acting as GSLB service // provider in the zone zoneGslbProviderHosId = nsGslbProvider.getHostId(); // send gslb configuration to NetScaler device Answer answer = _agentMgr.easySend(zoneGslbProviderHosId, gslbConfigCmd); if (answer == null || !answer.getResult()) { String msg = "Unable to apply global load balancer rule to the gslb service provider in zone " + zoneId; s_logger.debug(msg); throw new ResourceUnavailableException(msg, DataCenter.class, zoneId); } return true; }
@Override public boolean deleteNetscalerLoadBalancer(DeleteNetscalerLoadBalancerCmd cmd) { Long lbDeviceId = cmd.getLoadBalancerDeviceId(); ExternalLoadBalancerDeviceVO lbDeviceVo = _lbDeviceDao.findById(lbDeviceId); if ((lbDeviceVo == null) || !isNetscalerDevice(lbDeviceVo.getDeviceName())) { throw new InvalidParameterValueException("No netscaler device found with ID: " + lbDeviceId); } return deleteExternalLoadBalancer(lbDeviceVo.getHostId()); }
@Override public List<Host> listExternalLoadBalancers(long physicalNetworkId, String deviceName) { List<Host> lbHosts = new ArrayList<Host>(); NetworkDevice lbNetworkDevice = NetworkDevice.getNetworkDevice(deviceName); PhysicalNetworkVO pNetwork = null; pNetwork = _physicalNetworkDao.findById(physicalNetworkId); if ((pNetwork == null) || (lbNetworkDevice == null)) { throw new InvalidParameterValueException("Atleast one of the required parameter physical networkId, device name is invalid."); } PhysicalNetworkServiceProviderVO ntwkSvcProvider = _physicalNetworkServiceProviderDao.findByServiceProvider(pNetwork.getId(), lbNetworkDevice.getNetworkServiceProvder()); // if provider not configured in to physical network, then there can be no instances if (ntwkSvcProvider == null) { return null; } List<ExternalLoadBalancerDeviceVO> lbDevices = _externalLoadBalancerDeviceDao.listByPhysicalNetworkAndProvider(physicalNetworkId, ntwkSvcProvider.getProviderName()); for (ExternalLoadBalancerDeviceVO provderInstance : lbDevices) { lbHosts.add(_hostDao.findById(provderInstance.getHostId())); } return lbHosts; }
.toArray(new LoadBalancerTO[numLoadBalancersForCommand]); HealthCheckLBConfigCommand cmd = new HealthCheckLBConfigCommand(loadBalancersForCommand, network.getId()); HostVO externalLoadBalancer = _hostDao.findById(lbDeviceVO.getHostId()); answer = (HealthCheckLBConfigAnswer)_agentMgr.easySend(externalLoadBalancer.getId(), cmd); return answer.getLoadBalancers();
answer = (SetStaticNatRulesAnswer)_agentMgr.send(lbDevice.getHostId(), cmd); if (answer == null) { return false; SetStaticNatRulesAnswer answer = (SetStaticNatRulesAnswer)_agentMgr.send(lbDevice.getHostId(), cmd); if (answer == null) { String errMsg = "Failed to configure INAT rule on NetScaler device " + lbDevice.getHostId(); s_logger.error(errMsg); throw new ResourceUnavailableException(errMsg, this.getClass(), 0);
@Override public void doInTransactionWithoutResult(TransactionStatus status) { _lbDeviceDao.update(lbDeviceId, lbDeviceVo); for (Long podId : podsToAssociate) { NetScalerPodVO nsPodVo = new NetScalerPodVO(lbDeviceId, podId); _netscalerPodDao.persist(nsPodVo); } for (Long podId : podsToDeassociate) { NetScalerPodVO nsPodVo = _netscalerPodDao.findByPodId(podId); _netscalerPodDao.remove(nsPodVo.getId()); } // FIXME get the row lock to avoid race condition _detailsDao.persist(lbDeviceVo.getHostId(), lbDetails); } });
externalLoadBalancer = externalNcc; } else { externalLoadBalancer = _hostDao.findById(lbDeviceVO.getHostId());
LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(loadBalancersForCommand, null); HostVO externalLoadBalancer = _hostDao.findById(lbDeviceVO.getHostId()); Answer answer = _agentMgr.easySend(externalLoadBalancer.getId(), cmd); if (answer == null || !answer.getResult()) {
HostVO externalLoadBalancer = _hostDao.findById(lbDeviceVO.getHostId()); if (externalLoadBalancer != null) { ExternalNetworkResourceUsageCommand cmd = new ExternalNetworkResourceUsageCommand();
return null; } else { externalLoadBalancer = _hostDao.findById(lbDeviceVO.getHostId());
Host lbHost = _hostDao.findById(lbDevice.getHostId()); String lbIP = lbHost.getPrivateIpAddress(); DestroyLoadBalancerApplianceCommand lbDeleteCmd = new DestroyLoadBalancerApplianceCommand(lbIP);
@Override public NetscalerLoadBalancerResponse createNetscalerLoadBalancerResponse(ExternalLoadBalancerDeviceVO lbDeviceVO) { NetscalerLoadBalancerResponse response = new NetscalerLoadBalancerResponse(); Host lbHost = _hostDao.findById(lbDeviceVO.getHostId()); Map<String, String> lbDetails = _detailsDao.findDetails(lbDeviceVO.getHostId()); response.setId(lbDeviceVO.getUuid()); response.setIpAddress(lbHost.getPrivateIpAddress());
return true; } else { externalLoadBalancer = _hostDao.findById(lbDeviceVO.getHostId());
externalLoadBalancer = _hostDao.findById(lbDeviceVO.getHostId()); s_logger.debug("Allocated external load balancer device:" + lbDeviceVO.getId() + " for the network: " + guestConfig.getId()); } else { externalLoadBalancer = _hostDao.findById(lbDeviceVO.getHostId()); assert (externalLoadBalancer != null) : "There is no device assigned to this network how did shutdown network ended up here??";
CreateLoadBalancerApplianceAnswer createLbAnswer = null; try { createLbAnswer = (CreateLoadBalancerApplianceAnswer)_agentMgr.easySend(lbProviderDevice.getHostId(), lbProvisionCmd); if (createLbAnswer == null || !createLbAnswer.getResult()) { s_logger.error("Could not provision load balancer instance on the load balancer device " + lbProviderDevice.getId()); managedLb.setParentHostId(lbProviderDevice.getHostId()); _externalLoadBalancerDeviceDao.update(lbAppliance.getId(), managedLb); } else { DestroyLoadBalancerApplianceAnswer answer = null; try { answer = (DestroyLoadBalancerApplianceAnswer)_agentMgr.easySend(lbProviderDevice.getHostId(), lbDeleteCmd); if (answer == null || !answer.getResult()) { s_logger.warn("Failed to destroy load balancer appliance created");