diff --git a/api/src/com/cloud/network/rules/FirewallRule.java b/api/src/com/cloud/network/rules/FirewallRule.java index 56aa0a29921..9d097da2a42 100644 --- a/api/src/com/cloud/network/rules/FirewallRule.java +++ b/api/src/com/cloud/network/rules/FirewallRule.java @@ -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 { diff --git a/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java b/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java index e38e5a34699..e65f9297ba0 100644 --- a/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java +++ b/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java @@ -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 implements FirewallRulesDao { - private static final Logger s_logger = Logger.getLogger(FirewallRulesDaoImpl.class); protected final SearchBuilder AllFieldsSearch; protected final SearchBuilder NotRevokedSearch; protected final SearchBuilder ReleaseSearch; protected SearchBuilder VmSearch; - protected final SearchBuilder systemRuleSearch; + protected final SearchBuilder SystemRuleSearch; protected final FirewallRulesCidrsDaoImpl _firewallRulesCidrsDao = ComponentLocator.inject(FirewallRulesCidrsDaoImpl.class); @@ -83,15 +80,16 @@ public class FirewallRulesDaoImpl extends GenericDaoBase 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 listSystemRules() { - SearchCriteria sc = systemRuleSearch.create(); + SearchCriteria sc = SystemRuleSearch.create(); sc.setParameters("type", FirewallRuleType.System.toString()); return listBy(sc); } diff --git a/server/src/com/cloud/network/dao/LoadBalancerDao.java b/server/src/com/cloud/network/dao/LoadBalancerDao.java index ebc9680da40..4bc9992f3f2 100644 --- a/server/src/com/cloud/network/dao/LoadBalancerDao.java +++ b/server/src/com/cloud/network/dao/LoadBalancerDao.java @@ -28,5 +28,6 @@ public interface LoadBalancerDao extends GenericDao { List listByIpAddress(long ipAddressId); LoadBalancerVO findByIpAddressAndPublicPort(long ipAddressId, String publicPort); LoadBalancerVO findByAccountAndName(Long accountId, String name); - List listByNetworkId(long networkId); + List listByNetworkId(long networkId); + List listInTransitionStateByNetworkId(long networkId); } diff --git a/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java b/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java index 7086c548706..afb6ac2d76f 100644 --- a/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java +++ b/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java @@ -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 im private final SearchBuilder ListByIp; private final SearchBuilder IpAndPublicPortSearch; private final SearchBuilder AccountAndNameSearch; + protected final SearchBuilder TransitionStateSearch; protected final FirewallRulesCidrsDaoImpl _portForwardingRulesCidrsDao = ComponentLocator.inject(FirewallRulesCidrsDaoImpl.class); @@ -66,6 +69,11 @@ public class LoadBalancerDaoImpl extends GenericDaoBase 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 @@ -118,5 +126,12 @@ public class LoadBalancerDaoImpl extends GenericDaoBase im sc.setParameters("name", name); return findOneBy(sc); } - + + @Override + public List listInTransitionStateByNetworkId(long networkId) { + SearchCriteria sc = TransitionStateSearch.create(); + sc.setParameters("networkId", networkId); + sc.setParameters("state", State.Add.toString(), State.Revoke.toString()); + return listBy(sc); + } } diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 056e9fdb3df..afb9f7f2a6f 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -688,8 +688,9 @@ public class LoadBalancingRulesManagerImpl implements LoadBalancingRulesMa @Override public boolean applyLoadBalancerConfig(long lbRuleId) throws ResourceUnavailableException { - List lbs = new ArrayList(1); - lbs.add(_lbDao.findById(lbRuleId)); + LoadBalancerVO lb = _lbDao.findById(lbRuleId); + //get all rules in transition state + List lbs = _lbDao.listInTransitionStateByNetworkId(lb.getNetworkId()); return applyLoadBalancerRules(lbs, true); } diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 942504433f0..0ee50a1f3be 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -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;