Skip to content

Commit 9486a96

Browse files
author
Kishan Kavala
committed
CLOUDSTACK-5852: router search in DomainDouterDao using AllFieldsSearch filters few routers due to router_network_ref join. Created a seperate search to list running routers with filters.
Conflicts: engine/schema/src/com/cloud/vm/dao/DomainRouterDao.java
1 parent c98ac9a commit 9486a96

3 files changed

Lines changed: 45 additions & 13 deletions

File tree

engine/schema/src/com/cloud/vm/dao/DomainRouterDao.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public interface DomainRouterDao extends GenericDao<DomainRouterVO, Long> {
6969
* @param podId id of the pod. null if to get all.
7070
* @return list of DomainRouterVO
7171
*/
72-
public List<DomainRouterVO> listByPodId(Long podId);
72+
public List<DomainRouterVO> listRunningByPodId(Long podId);
7373

7474
/**
7575
* list virtual machine routers by pod id. pass in null to get all
@@ -94,7 +94,7 @@ public interface DomainRouterDao extends GenericDao<DomainRouterVO, Long> {
9494
* @param id
9595
* @return
9696
*/
97-
public List<DomainRouterVO> listByDomain(Long id);
97+
public List<DomainRouterVO> listRunningByDomain(Long id);
9898

9999
List<DomainRouterVO> findBy(long accountId, long dcId, Role role);
100100

@@ -147,5 +147,9 @@ public interface DomainRouterDao extends GenericDao<DomainRouterVO, Long> {
147147
*/
148148
void removeRouterFromGuestNetwork(long routerId, long guestNetworkId);
149149

150-
List<DomainRouterVO> listByClusterId(Long clusterId);
150+
List<DomainRouterVO> listRunningByClusterId(Long clusterId);
151+
152+
List<DomainRouterVO> listRunningByAccountId(long accountId);
153+
154+
List<DomainRouterVO> listRunningByDataCenter(long dcId);
151155
}

engine/schema/src/com/cloud/vm/dao/DomainRouterDaoImpl.java

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
public class DomainRouterDaoImpl extends GenericDaoBase<DomainRouterVO, Long> implements DomainRouterDao {
5555

5656
protected SearchBuilder<DomainRouterVO> AllFieldsSearch;
57+
protected SearchBuilder<DomainRouterVO> RunningSearch;
5758
protected SearchBuilder<DomainRouterVO> IdNetworkIdStatesSearch;
5859
protected SearchBuilder<DomainRouterVO> HostUpSearch;
5960
protected SearchBuilder<DomainRouterVO> StateNetworkTypeSearch;
@@ -139,10 +140,19 @@ protected void init() {
139140
OutsidePodSearch.done();
140141

141142
clusterSearch = createSearchBuilder();
143+
clusterSearch.and("state", clusterSearch.entity().getState(), Op.EQ);
142144
SearchBuilder<HostVO> clusterHost = _hostsDao.createSearchBuilder();
143145
clusterHost.and("clusterId", clusterHost.entity().getClusterId(), Op.EQ);
144146
clusterSearch.join("host", clusterHost, clusterSearch.entity().getHostId(), clusterHost.entity().getId(), JoinType.INNER);
145147
clusterSearch.done();
148+
149+
RunningSearch = createSearchBuilder();
150+
RunningSearch.and("dc", RunningSearch.entity().getDataCenterId(), Op.EQ);
151+
RunningSearch.and("account", RunningSearch.entity().getAccountId(), Op.EQ);
152+
RunningSearch.and("domainId", RunningSearch.entity().getDomainId(), Op.EQ);
153+
RunningSearch.and("state", RunningSearch.entity().getState(), Op.EQ);
154+
RunningSearch.and("podId", RunningSearch.entity().getPodIdToDeployIn(), Op.EQ);
155+
RunningSearch.done();
146156
}
147157

148158
@Override
@@ -200,15 +210,17 @@ public List<DomainRouterVO> listByHostId(Long hostId) {
200210
}
201211

202212
@Override
203-
public List<DomainRouterVO> listByPodId(Long podId) {
204-
SearchCriteria<DomainRouterVO> sc = AllFieldsSearch.create();
213+
public List<DomainRouterVO> listRunningByPodId(Long podId) {
214+
SearchCriteria<DomainRouterVO> sc = RunningSearch.create();
215+
sc.setParameters("state", State.Running);
205216
sc.setParameters("podId", podId);
206217
return listBy(sc);
207218
}
208219

209220
@Override
210-
public List<DomainRouterVO> listByClusterId(Long clusterId) {
221+
public List<DomainRouterVO> listRunningByClusterId(Long clusterId) {
211222
SearchCriteria<DomainRouterVO> sc = clusterSearch.create();
223+
sc.setParameters("state", State.Running);
212224
sc.setJoinParameters("host", "clusterId", clusterId);
213225
return listBy(sc);
214226
}
@@ -237,8 +249,9 @@ public List<DomainRouterVO> listIsolatedByHostId(Long hostId) {
237249
}
238250

239251
@Override
240-
public List<DomainRouterVO> listByDomain(Long domainId) {
241-
SearchCriteria<DomainRouterVO> sc = AllFieldsSearch.create();
252+
public List<DomainRouterVO> listRunningByDomain(Long domainId) {
253+
SearchCriteria<DomainRouterVO> sc = RunningSearch.create();
254+
sc.setParameters("state", State.Running);
242255
sc.setParameters("domainId", domainId);
243256
return listBy(sc);
244257
}
@@ -379,4 +392,19 @@ public List<DomainRouterVO> listByVpcId(long vpcId) {
379392
return listBy(sc);
380393
}
381394

395+
@Override
396+
public List<DomainRouterVO> listRunningByAccountId(long accountId) {
397+
SearchCriteria<DomainRouterVO> sc = RunningSearch.create();
398+
sc.setParameters("state", State.Running);
399+
sc.setParameters("account", accountId);
400+
return listBy(sc);
401+
}
402+
403+
@Override
404+
public List<DomainRouterVO> listRunningByDataCenter(long dcId) {
405+
SearchCriteria<DomainRouterVO> sc = RunningSearch.create();
406+
sc.setParameters("state", State.Running);
407+
sc.setParameters("dc", dcId);
408+
return listBy(sc);
409+
}
382410
}

server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4116,30 +4116,30 @@ public List<Long> upgradeRouterTemplate(UpgradeRouterTemplateCmd cmd) {
41164116
if(account == null){
41174117
throw new InvalidParameterValueException("Account :"+accountName+" does not exist in domain: "+domainId);
41184118
}
4119-
routers = _routerDao.listBy(account.getId());
4119+
routers = _routerDao.listRunningByAccountId(account.getId());
41204120
} else {
41214121
//List by domainId, account name not specified
4122-
routers = _routerDao.listByDomain(domainId);
4122+
routers = _routerDao.listRunningByDomain(domainId);
41234123
}
41244124
params++;
41254125
}
41264126

41274127
Long clusterId = cmd.getClusterId();
41284128
if (clusterId != null) {
41294129
params++;
4130-
routers = _routerDao.listByClusterId(clusterId);
4130+
routers = _routerDao.listRunningByClusterId(clusterId);
41314131
}
41324132

41334133
Long podId = cmd.getPodId();
41344134
if (podId != null) {
41354135
params++;
4136-
routers = _routerDao.listByPodId(podId);
4136+
routers = _routerDao.listRunningByPodId(podId);
41374137
}
41384138

41394139
Long zoneId = cmd.getZoneId();
41404140
if (zoneId != null) {
41414141
params++;
4142-
routers = _routerDao.listByDataCenter(zoneId);
4142+
routers = _routerDao.listRunningByDataCenter(zoneId);
41434143
}
41444144

41454145
if (params > 1) {

0 commit comments

Comments
 (0)