mirror of https://github.com/apache/cloudstack.git
bug 13425: use IN to select security ingress rule
status 13425: resolved fixed Reviewed-by: frank
This commit is contained in:
parent
1b14a0f0b9
commit
cf2b87f655
|
|
@ -1053,11 +1053,10 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG
|
|||
accountId = caller.getId();
|
||||
}
|
||||
|
||||
List<SecurityGroupRulesVO> securityRulesList = new ArrayList<SecurityGroupRulesVO>();
|
||||
Filter searchFilter = new Filter(SecurityGroupVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||
Object keyword = cmd.getKeyword();
|
||||
|
||||
SearchBuilder<SecurityGroupRulesVO> sb = _securityGroupRulesDao.createSearchBuilder();
|
||||
SearchBuilder<SecurityGroupVO> sb = _securityGroupDao.createSearchBuilder();
|
||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||
sb.and("accountId", sb.entity().getAccountId(), SearchCriteria.Op.EQ);
|
||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||
|
|
@ -1070,7 +1069,7 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG
|
|||
sb.join("domainSearch", domainSearch, sb.entity().getDomainId(), domainSearch.entity().getId(), JoinBuilder.JoinType.INNER);
|
||||
}
|
||||
|
||||
SearchCriteria<SecurityGroupRulesVO> sc = sb.create();
|
||||
SearchCriteria<SecurityGroupVO> sc = sb.create();
|
||||
|
||||
if (id != null) {
|
||||
sc.setParameters("id", id);
|
||||
|
|
@ -1097,8 +1096,19 @@ public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityG
|
|||
sc.addAnd("name", SearchCriteria.Op.SC, ssc);
|
||||
}
|
||||
|
||||
securityRulesList = _securityGroupRulesDao.search(sc, searchFilter);
|
||||
List<SecurityGroupVO> securityGroups = _securityGroupDao.search(sc, searchFilter);
|
||||
|
||||
List<SecurityGroupRulesVO> securityRulesList = new ArrayList<SecurityGroupRulesVO>();
|
||||
if (securityGroups.size() > 0) {
|
||||
Long[] groupIds = new Long[securityGroups.size()];
|
||||
int i = 0;
|
||||
for (SecurityGroupVO group : securityGroups) {
|
||||
groupIds[i] = group.getId();
|
||||
i++;
|
||||
}
|
||||
securityRulesList = _securityGroupRulesDao.listSecurityRulesByGroupIds(groupIds);
|
||||
}
|
||||
|
||||
return securityRulesList;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,5 +49,6 @@ public interface SecurityGroupRulesDao extends GenericDao<SecurityGroupRulesVO,
|
|||
* List all security rules belonging to the specific group
|
||||
* @return the security group with associated ingress rules
|
||||
*/
|
||||
List<SecurityGroupRulesVO> listSecurityRulesByGroupId(long groupId);
|
||||
List<SecurityGroupRulesVO> listSecurityRulesByGroupId(long groupId);
|
||||
List<SecurityGroupRulesVO> listSecurityRulesByGroupIds(Long[] groupId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,8 @@ import com.cloud.utils.db.SearchCriteria;
|
|||
public class SecurityGroupRulesDaoImpl extends GenericDaoBase<SecurityGroupRulesVO, Long> implements SecurityGroupRulesDao {
|
||||
private SearchBuilder<SecurityGroupRulesVO> AccountGroupNameSearch;
|
||||
private SearchBuilder<SecurityGroupRulesVO> AccountSearch;
|
||||
private SearchBuilder<SecurityGroupRulesVO> GroupSearch;
|
||||
private SearchBuilder<SecurityGroupRulesVO> GroupSearch;
|
||||
private SearchBuilder<SecurityGroupRulesVO> GroupSearch2;
|
||||
|
||||
|
||||
protected SecurityGroupRulesDaoImpl() {
|
||||
|
|
@ -47,7 +48,11 @@ public class SecurityGroupRulesDaoImpl extends GenericDaoBase<SecurityGroupRules
|
|||
|
||||
GroupSearch = createSearchBuilder();
|
||||
GroupSearch.and("groupId", GroupSearch.entity().getId(), SearchCriteria.Op.EQ);
|
||||
GroupSearch.done();
|
||||
GroupSearch.done();
|
||||
|
||||
GroupSearch2 = createSearchBuilder();
|
||||
GroupSearch2.and("groupId", GroupSearch2.entity().getId(), SearchCriteria.Op.IN);
|
||||
GroupSearch2.done();
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -82,5 +87,13 @@ public class SecurityGroupRulesDaoImpl extends GenericDaoBase<SecurityGroupRules
|
|||
SearchCriteria<SecurityGroupRulesVO> sc = GroupSearch.create();
|
||||
sc.setParameters("groupId", groupId);
|
||||
return listBy(sc, searchFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SecurityGroupRulesVO> listSecurityRulesByGroupIds(Long[] groupId) {
|
||||
Filter searchFilter = new Filter(SecurityGroupRulesVO.class, "id", true, null, null);
|
||||
SearchCriteria<SecurityGroupRulesVO> sc = GroupSearch2.create();
|
||||
sc.setParameters("groupId", (Object[])groupId);
|
||||
return listBy(sc, searchFilter);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue