mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-21 13:03:10 +01:00
bug 12919: pass all lb rules in transition (revoke/add) state to the backend when apply a single LB rule
status 12919: resolved fixed
This commit is contained in:
parent
1e675f45ba
commit
d20e10edd3
@ -20,7 +20,6 @@ package com.cloud.network.rules;
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.acl.ControlledEntity;
|
||||
import com.cloud.network.rules.FirewallRule.FirewallRuleType;
|
||||
|
||||
public interface FirewallRule extends ControlledEntity {
|
||||
enum Purpose {
|
||||
|
||||
@ -22,8 +22,6 @@ import java.util.List;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.network.IPAddressVO;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.FirewallRule.FirewallRuleType;
|
||||
@ -41,13 +39,12 @@ import com.cloud.utils.db.Transaction;
|
||||
|
||||
@Local(value=FirewallRulesDao.class) @DB(txn=false)
|
||||
public class FirewallRulesDaoImpl extends GenericDaoBase<FirewallRuleVO, Long> implements FirewallRulesDao {
|
||||
private static final Logger s_logger = Logger.getLogger(FirewallRulesDaoImpl.class);
|
||||
|
||||
protected final SearchBuilder<FirewallRuleVO> AllFieldsSearch;
|
||||
protected final SearchBuilder<FirewallRuleVO> NotRevokedSearch;
|
||||
protected final SearchBuilder<FirewallRuleVO> ReleaseSearch;
|
||||
protected SearchBuilder<FirewallRuleVO> VmSearch;
|
||||
protected final SearchBuilder<FirewallRuleVO> systemRuleSearch;
|
||||
protected final SearchBuilder<FirewallRuleVO> SystemRuleSearch;
|
||||
|
||||
protected final FirewallRulesCidrsDaoImpl _firewallRulesCidrsDao = ComponentLocator.inject(FirewallRulesCidrsDaoImpl.class);
|
||||
|
||||
@ -83,15 +80,16 @@ public class FirewallRulesDaoImpl extends GenericDaoBase<FirewallRuleVO, Long> i
|
||||
ReleaseSearch.and("ports", ReleaseSearch.entity().getSourcePortStart(), Op.IN);
|
||||
ReleaseSearch.done();
|
||||
|
||||
systemRuleSearch = createSearchBuilder();
|
||||
systemRuleSearch.and("type", systemRuleSearch.entity().getType(), Op.EQ);
|
||||
systemRuleSearch.and("ipId", systemRuleSearch.entity().getSourceIpAddressId(), Op.NULL);
|
||||
systemRuleSearch.done();
|
||||
SystemRuleSearch = createSearchBuilder();
|
||||
SystemRuleSearch.and("type", SystemRuleSearch.entity().getType(), Op.EQ);
|
||||
SystemRuleSearch.and("ipId", SystemRuleSearch.entity().getSourceIpAddressId(), Op.NULL);
|
||||
SystemRuleSearch.done();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FirewallRuleVO> listSystemRules() {
|
||||
SearchCriteria<FirewallRuleVO> sc = systemRuleSearch.create();
|
||||
SearchCriteria<FirewallRuleVO> sc = SystemRuleSearch.create();
|
||||
sc.setParameters("type", FirewallRuleType.System.toString());
|
||||
return listBy(sc);
|
||||
}
|
||||
|
||||
@ -29,4 +29,5 @@ public interface LoadBalancerDao extends GenericDao<LoadBalancerVO, Long> {
|
||||
LoadBalancerVO findByIpAddressAndPublicPort(long ipAddressId, String publicPort);
|
||||
LoadBalancerVO findByAccountAndName(Long accountId, String name);
|
||||
List<LoadBalancerVO> listByNetworkId(long networkId);
|
||||
List<LoadBalancerVO> listInTransitionStateByNetworkId(long networkId);
|
||||
}
|
||||
|
||||
@ -28,10 +28,12 @@ import javax.ejb.Local;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.network.LoadBalancerVO;
|
||||
import com.cloud.network.rules.FirewallRule.State;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.SearchCriteria.Op;
|
||||
import com.cloud.utils.db.Transaction;
|
||||
|
||||
@Local(value={LoadBalancerDao.class})
|
||||
@ -48,6 +50,7 @@ public class LoadBalancerDaoImpl extends GenericDaoBase<LoadBalancerVO, Long> im
|
||||
private final SearchBuilder<LoadBalancerVO> ListByIp;
|
||||
private final SearchBuilder<LoadBalancerVO> IpAndPublicPortSearch;
|
||||
private final SearchBuilder<LoadBalancerVO> AccountAndNameSearch;
|
||||
protected final SearchBuilder<LoadBalancerVO> TransitionStateSearch;
|
||||
|
||||
protected final FirewallRulesCidrsDaoImpl _portForwardingRulesCidrsDao = ComponentLocator.inject(FirewallRulesCidrsDaoImpl.class);
|
||||
|
||||
@ -66,6 +69,11 @@ public class LoadBalancerDaoImpl extends GenericDaoBase<LoadBalancerVO, Long> im
|
||||
AccountAndNameSearch.and("accountId", AccountAndNameSearch.entity().getAccountId(), SearchCriteria.Op.EQ);
|
||||
AccountAndNameSearch.and("name", AccountAndNameSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
AccountAndNameSearch.done();
|
||||
|
||||
TransitionStateSearch = createSearchBuilder();
|
||||
TransitionStateSearch.and("networkId", TransitionStateSearch.entity().getNetworkId(), Op.EQ);
|
||||
TransitionStateSearch.and("state", TransitionStateSearch.entity().getState(), Op.IN);
|
||||
TransitionStateSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -119,4 +127,11 @@ public class LoadBalancerDaoImpl extends GenericDaoBase<LoadBalancerVO, Long> im
|
||||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LoadBalancerVO> listInTransitionStateByNetworkId(long networkId) {
|
||||
SearchCriteria<LoadBalancerVO> sc = TransitionStateSearch.create();
|
||||
sc.setParameters("networkId", networkId);
|
||||
sc.setParameters("state", State.Add.toString(), State.Revoke.toString());
|
||||
return listBy(sc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -688,8 +688,9 @@ public class LoadBalancingRulesManagerImpl<Type> implements LoadBalancingRulesMa
|
||||
|
||||
@Override
|
||||
public boolean applyLoadBalancerConfig(long lbRuleId) throws ResourceUnavailableException {
|
||||
List<LoadBalancerVO> lbs = new ArrayList<LoadBalancerVO>(1);
|
||||
lbs.add(_lbDao.findById(lbRuleId));
|
||||
LoadBalancerVO lb = _lbDao.findById(lbRuleId);
|
||||
//get all rules in transition state
|
||||
List<LoadBalancerVO> lbs = _lbDao.listInTransitionStateByNetworkId(lb.getNetworkId());
|
||||
return applyLoadBalancerRules(lbs, true);
|
||||
}
|
||||
|
||||
|
||||
@ -146,7 +146,6 @@ import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
||||
import com.cloud.network.dao.RemoteAccessVpnDao;
|
||||
import com.cloud.network.dao.VirtualRouterProviderDao;
|
||||
import com.cloud.network.dao.VpnUserDao;
|
||||
import com.cloud.network.element.NetworkElement;
|
||||
import com.cloud.network.lb.LoadBalancingRule;
|
||||
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
|
||||
import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user