diff --git a/engine/schema/src/main/java/com/cloud/network/dao/FirewallRulesDaoImpl.java b/engine/schema/src/main/java/com/cloud/network/dao/FirewallRulesDaoImpl.java index 27bf7ba6aa83..a8395373c8a4 100644 --- a/engine/schema/src/main/java/com/cloud/network/dao/FirewallRulesDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/network/dao/FirewallRulesDaoImpl.java @@ -18,6 +18,7 @@ import java.util.List; +import javax.annotation.PostConstruct; import javax.inject.Inject; import org.springframework.stereotype.Component; @@ -47,8 +48,8 @@ public class FirewallRulesDaoImpl extends GenericDaoBase i protected final SearchBuilder AllFieldsSearch; protected final SearchBuilder NotRevokedSearch; protected final SearchBuilder ReleaseSearch; - protected SearchBuilder VmSearch; - protected SearchBuilder FirewallByPortsAndNetwork; + protected final SearchBuilder VmSearch = createSearchBuilder(); + protected final SearchBuilder FirewallByPortsAndNetwork; protected final SearchBuilder SystemRuleSearch; protected final GenericSearchBuilder RulesByIpCount; protected final SearchBuilder RoutingFirewallRulesSearch; @@ -121,6 +122,17 @@ protected FirewallRulesDaoImpl() { RoutingFirewallRulesSearch.done(); } + @PostConstruct + public void init() { + SearchBuilder IpSearch = _ipDao.createSearchBuilder(); + IpSearch.and("associatedWithVmId", IpSearch.entity().getAssociatedWithVmId(), SearchCriteria.Op.EQ); + IpSearch.and("oneToOneNat", IpSearch.entity().isOneToOneNat(), SearchCriteria.Op.NNULL); + + VmSearch.and("purpose", VmSearch.entity().getPurpose(), Op.EQ); + VmSearch.join("ipSearch", IpSearch, VmSearch.entity().getSourceIpAddressId(), IpSearch.entity().getId(), JoinBuilder.JoinType.INNER); + VmSearch.done(); + } + @Override public List listSystemRules() { SearchCriteria sc = SystemRuleSearch.create(); @@ -216,17 +228,6 @@ public boolean revoke(FirewallRuleVO rule) { @Override public List listStaticNatByVmId(long vmId) { - if (VmSearch == null) { - SearchBuilder IpSearch = _ipDao.createSearchBuilder(); - IpSearch.and("associatedWithVmId", IpSearch.entity().getAssociatedWithVmId(), SearchCriteria.Op.EQ); - IpSearch.and("oneToOneNat", IpSearch.entity().isOneToOneNat(), SearchCriteria.Op.NNULL); - - VmSearch = createSearchBuilder(); - VmSearch.and("purpose", VmSearch.entity().getPurpose(), Op.EQ); - VmSearch.join("ipSearch", IpSearch, VmSearch.entity().getSourceIpAddressId(), IpSearch.entity().getId(), JoinBuilder.JoinType.INNER); - VmSearch.done(); - } - SearchCriteria sc = VmSearch.create(); sc.setParameters("purpose", Purpose.StaticNat); sc.setJoinParameters("ipSearch", "associatedWithVmId", vmId);