Skip to content

Commit e6f3bfa

Browse files
committed
wip
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
1 parent add7763 commit e6f3bfa

File tree

1 file changed

+22
-34
lines changed

1 file changed

+22
-34
lines changed

server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -179,21 +179,18 @@ private Pair<List<DnsServerVO>, Integer> searchForDnsServerInternal(ListDnsServe
179179
Filter searchFilter = new Filter(DnsServerVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
180180

181181
// Step 2: Search for caller's own DNS servers using standard ACL pattern
182-
SearchBuilder<DnsServerVO> sb = dnsServerDao.createSearchBuilder();
183-
accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccountIds, listProjectResourcesCriteria);
184-
sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ);
185-
sb.done();
182+
SearchBuilder<DnsServerVO> ownerSb = dnsServerDao.createSearchBuilder();
183+
accountMgr.buildACLSearchBuilder(ownerSb, domainId, isRecursive, permittedAccountIds, listProjectResourcesCriteria);
184+
ownerSb.and("state", ownerSb.entity().getState(), SearchCriteria.Op.EQ);
185+
ownerSb.done();
186186

187-
SearchCriteria<DnsServerVO> sc = sb.create();
188-
accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccountIds, listProjectResourcesCriteria);
189-
sc.setParameters("state", DnsServer.State.Enabled);
190-
191-
Pair<List<DnsServerVO>, Integer> ownServersPair = dnsServerDao.searchAndCount(sc, searchFilter);
192-
List<DnsServerVO> dnsServers = new ArrayList<>(ownServersPair.first());
193-
int count = ownServersPair.second();
187+
SearchCriteria<DnsServerVO> ownerSc = ownerSb.create();
188+
accountMgr.buildACLSearchCriteria(ownerSc, domainId, isRecursive, permittedAccountIds, listProjectResourcesCriteria);
189+
ownerSc.setParameters("state", DnsServer.State.Enabled);
194190

195191
// Step 3: Search for public DNS servers from caller's domain and children
196192
// domains
193+
// ToDo: use ViewVO and domainpath
197194
Long callerDomainId = caller.getDomainId();
198195
DomainVO callerDomain = domainDao.findById(callerDomainId);
199196
if (callerDomain != null) {
@@ -204,30 +201,21 @@ private Pair<List<DnsServerVO>, Integer> searchForDnsServerInternal(ListDnsServe
204201
domainIds.add(childDomain.getId());
205202
}
206203

207-
SearchBuilder<DnsServerVO> publicSb = dnsServerDao.createSearchBuilder();
208-
publicSb.and("publicDns", publicSb.entity().isPublicServer(), SearchCriteria.Op.EQ);
209-
publicSb.and("publicDomainId", publicSb.entity().getDomainId(), SearchCriteria.Op.IN);
210-
publicSb.and("publicState", publicSb.entity().getState(), SearchCriteria.Op.EQ);
211-
publicSb.done();
212-
213-
SearchCriteria<DnsServerVO> publicSc = publicSb.create();
214-
publicSc.setParameters("publicDns", 1);
215-
publicSc.setParameters("publicDomainId", domainIds.toArray());
216-
publicSc.setParameters("publicState", DnsServer.State.Enabled);
217-
218-
List<DnsServerVO> publicServers = dnsServerDao.search(publicSc, null);
219-
220-
// Deduplicate: add only public servers not already in the own servers list
221-
List<Long> ownServerIds = dnsServers.stream().map(DnsServerVO::getId).collect(Collectors.toList());
222-
for (DnsServerVO publicServer : publicServers) {
223-
if (!ownServerIds.contains(publicServer.getId())) {
224-
dnsServers.add(publicServer);
225-
count++;
226-
}
227-
}
228-
}
204+
SearchBuilder<DnsServerVO> sb = dnsServerDao.createSearchBuilder();
205+
sb.and("publicDns", sb.entity().isPublicServer(), SearchCriteria.Op.EQ);
206+
sb.and("publicDomainId", sb.entity().getDomainId(), SearchCriteria.Op.IN);
207+
sb.and("publicState", sb.entity().getState(), SearchCriteria.Op.EQ);
208+
sb.done();
209+
210+
SearchCriteria<DnsServerVO> sc = sb.create();
211+
sc.setParameters("publicDns", 1);
212+
sc.setParameters("publicDomainId", domainIds.toArray());
213+
sc.setParameters("publicState", DnsServer.State.Enabled);
214+
sc.addOr("ownerSc", SearchCriteria.Op.SC, ownerSc);
229215

230-
return new Pair<>(dnsServers, count);
216+
return dnsServerDao.searchAndCount(sc, searchFilter);
217+
}
218+
return dnsServerDao.searchAndCount(ownerSc, searchFilter);
231219
}
232220

233221
@Override

0 commit comments

Comments
 (0)