Skip to content

Commit 37ebd68

Browse files
author
Julien Hervot de Mattos Vaz
committed
Simplify QuotaSummary and deprecate listall
1 parent 8cdd7fd commit 37ebd68

File tree

4 files changed

+8
-177
lines changed

4 files changed

+8
-177
lines changed

plugins/database/quota/src/main/java/org/apache/cloudstack/api/command/QuotaSummaryCmd.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class QuotaSummaryCmd extends BaseListCmd {
6060
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, required = false, entityType = DomainResponse.class, description = "Optional, If domain Id is given and the caller is domain admin then the statement is generated for domain.")
6161
private Long domainId;
6262

63+
@Deprecated
6364
@Parameter(name = ApiConstants.LIST_ALL, type = CommandType.BOOLEAN, description = "False (default) lists balance summary for account. True lists balance summary for " +
6465
"accounts which the caller has access.")
6566
private Boolean listAll;

plugins/database/quota/src/main/java/org/apache/cloudstack/api/response/QuotaResponseBuilderImpl.java

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444

4545
import com.cloud.domain.Domain;
4646
import com.cloud.exception.PermissionDeniedException;
47-
import com.cloud.projects.ProjectVO;
4847
import com.cloud.projects.dao.ProjectDao;
4948
import com.cloud.user.User;
5049
import com.cloud.user.UserVO;
@@ -163,8 +162,6 @@ public class QuotaResponseBuilderImpl implements QuotaResponseBuilder {
163162

164163
private final Class<?>[] assignableClasses = {GenericPresetVariable.class, ComputingResources.class};
165164

166-
private Set<Account.Type> accountTypesThatCanListAllQuotaSummaries = Sets.newHashSet(Account.Type.ADMIN, Account.Type.DOMAIN_ADMIN);
167-
168165
@Override
169166
public QuotaTariffResponse createQuotaTariffResponse(QuotaTariffVO tariff, boolean returnActivationRule) {
170167
final QuotaTariffResponse response = new QuotaTariffResponse();
@@ -192,31 +189,12 @@ public QuotaTariffResponse createQuotaTariffResponse(QuotaTariffVO tariff, boole
192189
public Pair<List<QuotaSummaryResponse>, Integer> createQuotaSummaryResponse(QuotaSummaryCmd cmd) {
193190
Account caller = CallContext.current().getCallingAccount();
194191

195-
if (cmd.getProjectId() != null && !cmd.isListAll() && accountTypesThatCanListAllQuotaSummaries.contains(caller.getType())) {
196-
ProjectVO projectVO = projectDao.findById(cmd.getProjectId());
197-
Long projectAccountId = projectVO.getProjectAccountId();
198-
return getQuotaSummaryResponse(projectAccountId, null, null, null, cmd);
199-
}
200-
201-
else if (cmd.getAccountId() != null && !cmd.isListAll() && accountTypesThatCanListAllQuotaSummaries.contains(caller.getType())) {
202-
return getQuotaSummaryResponse(cmd.getAccountId(), null, null, null, cmd);
203-
}
204-
205-
else if (cmd.getDomainId() != null && caller.getType() == Account.Type.DOMAIN_ADMIN && !cmd.isListAll()) {
206-
return getQuotaSummaryResponse(null, null, cmd.getDomainId(), null, cmd);
207-
}
208-
209-
else if (!accountTypesThatCanListAllQuotaSummaries.contains(caller.getType()) || !cmd.isListAll()) {
210-
return getQuotaSummaryResponse(caller.getAccountId(), null, null, null, cmd);
211-
}
212-
213-
return getQuotaSummaryResponseWithListAll(cmd, caller);
214-
}
215-
216-
protected Pair<List<QuotaSummaryResponse>, Integer> getQuotaSummaryResponseWithListAll(QuotaSummaryCmd cmd, Account caller) {
217-
Long accountId = cmd.getEntityOwnerId();
218-
if (accountId == -1) {
219-
accountId = null;
192+
Long accountId = caller.getId();
193+
if (caller.getType() != Account.Type.NORMAL) {
194+
accountId = cmd.getEntityOwnerId();
195+
if (accountId == -1) {
196+
accountId = null;
197+
}
220198
}
221199

222200
Long domainId = cmd.getDomainId();

plugins/database/quota/src/test/java/org/apache/cloudstack/api/command/QuotaSummaryCmdTest.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

plugins/database/quota/src/test/java/org/apache/cloudstack/api/response/QuotaResponseBuilderImplTest.java

Lines changed: 1 addition & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,6 @@ public void validateQuotaConfigureEmailCmdParametersTestWithTemplateNameAndEnabl
545545
@Test
546546
public void createQuotaSummaryResponseTestNotListAllAndAllAccountTypesReturnsSingleRecord() {
547547
QuotaSummaryCmd cmd = new QuotaSummaryCmd();
548-
cmd.setListAll(false);
549548

550549
try(MockedStatic<CallContext> callContextMocked = Mockito.mockStatic(CallContext.class)) {
551550
callContextMocked.when(CallContext::current).thenReturn(callContextMock);
@@ -556,6 +555,7 @@ public void createQuotaSummaryResponseTestNotListAllAndAllAccountTypesReturnsSin
556555

557556
for (Account.Type type : Account.Type.values()) {
558557
Mockito.doReturn(type).when(accountMock).getType();
558+
Mockito.doReturn("ROOT").when(quotaResponseBuilderSpy).getDomainPathByDomainIdForDomainAdmin(accountMock);
559559

560560
Pair<List<QuotaSummaryResponse>, Integer> result = quotaResponseBuilderSpy.createQuotaSummaryResponse(cmd);
561561
Assert.assertEquals(quotaSummaryResponseMock1, result);
@@ -566,40 +566,6 @@ public void createQuotaSummaryResponseTestNotListAllAndAllAccountTypesReturnsSin
566566
};
567567
}
568568

569-
@Test
570-
public void createQuotaSummaryResponseTestListAllAndAccountTypesAdminReturnsAllAndTheRestReturnsSingleRecord() {
571-
QuotaSummaryCmd cmd = new QuotaSummaryCmd();
572-
cmd.setListAll(true);
573-
574-
try(MockedStatic<CallContext> callContextMocked = Mockito.mockStatic(CallContext.class)) {
575-
callContextMocked.when(CallContext::current).thenReturn(callContextMock);
576-
577-
Mockito.doReturn(accountMock).when(callContextMock).getCallingAccount();
578-
579-
Mockito.doReturn(quotaSummaryResponseMock1).when(quotaResponseBuilderSpy).getQuotaSummaryResponse(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
580-
Mockito.doReturn(quotaSummaryResponseMock2).when(quotaResponseBuilderSpy).getQuotaSummaryResponseWithListAll(Mockito.any(), Mockito.any());
581-
582-
Set<Account.Type> accountTypesThatCanListAllQuotaSummaries = Sets.newHashSet(Account.Type.ADMIN, Account.Type.DOMAIN_ADMIN);
583-
584-
for (Account.Type type : Account.Type.values()) {
585-
Mockito.doReturn(type).when(accountMock).getType();
586-
587-
Pair<List<QuotaSummaryResponse>, Integer> result = quotaResponseBuilderSpy.createQuotaSummaryResponse(cmd);
588-
589-
if (accountTypesThatCanListAllQuotaSummaries.contains(type)) {
590-
Assert.assertEquals(quotaSummaryResponseMock2, result);
591-
} else {
592-
Assert.assertEquals(quotaSummaryResponseMock1, result);
593-
}
594-
}
595-
596-
Mockito.verify(quotaResponseBuilderSpy, Mockito.times(Account.Type.values().length - accountTypesThatCanListAllQuotaSummaries.size()))
597-
.getQuotaSummaryResponse(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
598-
599-
Mockito.verify(quotaResponseBuilderSpy, Mockito.times(accountTypesThatCanListAllQuotaSummaries.size())).getQuotaSummaryResponseWithListAll(Mockito.any(), Mockito.any());
600-
}
601-
}
602-
603569
@Test
604570
public void getDomainPathByDomainIdForDomainAdminTestAccountNotDomainAdminReturnsNull() {
605571
for (Account.Type type : Account.Type.values()) {
@@ -716,71 +682,6 @@ public void getAccountIdByAccountNameTestAccountIsNotNullReturnsAccountId() {
716682
Assert.assertEquals(expected, result);
717683
}
718684

719-
@Test
720-
public void getQuotaSummaryResponseWithListAllTestAccountNameAndDomainIdAreNullPassDomainIdAsNull() {
721-
Long expectedDomainId = null;
722-
723-
QuotaSummaryCmd cmd = new QuotaSummaryCmd();
724-
cmd.setAccountName(null);
725-
cmd.setDomainId(null);
726-
727-
Mockito.doReturn(null).when(quotaResponseBuilderSpy).getDomainPathByDomainIdForDomainAdmin(Mockito.any());
728-
Mockito.doReturn(quotaSummaryResponseMock1).when(quotaResponseBuilderSpy).getQuotaSummaryResponse(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
729-
730-
Pair<List<QuotaSummaryResponse>, Integer> result = quotaResponseBuilderSpy.getQuotaSummaryResponseWithListAll(cmd, accountMock);
731-
732-
Assert.assertEquals(quotaSummaryResponseMock1, result);
733-
Mockito.verify(quotaResponseBuilderSpy).getQuotaSummaryResponse(Mockito.any(), Mockito.any(), Mockito.eq(expectedDomainId), Mockito.any(), Mockito.any());
734-
}
735-
736-
@Test
737-
public void getQuotaSummaryResponseWithListAllTestAccountNameIsNullAndDomainIdIsNotNullPassDomainId() {
738-
Long expectedDomainId = 26l;
739-
740-
QuotaSummaryCmd cmd = new QuotaSummaryCmd();
741-
cmd.setAccountName(null);
742-
cmd.setDomainId(expectedDomainId);
743-
744-
Mockito.doReturn(domainVoMock).when(domainDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
745-
746-
Mockito.doReturn(null).when(quotaResponseBuilderSpy).getDomainPathByDomainIdForDomainAdmin(Mockito.any());
747-
Mockito.doReturn(quotaSummaryResponseMock1).when(quotaResponseBuilderSpy).getQuotaSummaryResponse(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
748-
749-
Pair<List<QuotaSummaryResponse>, Integer> result = quotaResponseBuilderSpy.getQuotaSummaryResponseWithListAll(cmd, accountMock);
750-
751-
Assert.assertEquals(quotaSummaryResponseMock1, result);
752-
Mockito.verify(quotaResponseBuilderSpy).getQuotaSummaryResponse(Mockito.any(), Mockito.any(), Mockito.eq(expectedDomainId), Mockito.any(), Mockito.any());
753-
}
754-
755-
@Test(expected = InvalidParameterValueException.class)
756-
public void getQuotaSummaryResponseWithListAllTestAccountNameIsNullAndDomainIdIsNotNullButDomainDoesNotExistThrowInvalidParameterValueException() {
757-
QuotaSummaryCmd cmd = new QuotaSummaryCmd();
758-
cmd.setAccountName(null);
759-
cmd.setDomainId(1L);
760-
761-
Mockito.doReturn(null).when(domainDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
762-
quotaResponseBuilderSpy.getQuotaSummaryResponseWithListAll(cmd, accountMock);
763-
}
764-
765-
@Test
766-
public void getQuotaSummaryResponseWithListAllTestAccountNameAndDomainIdAreNotNullPassDomainId() {
767-
Long expectedDomainId = 9837l;
768-
769-
QuotaSummaryCmd cmd = Mockito.mock(QuotaSummaryCmd.class);
770-
Mockito.lenient().doReturn("test").when(cmd).getAccountName();
771-
Mockito.doReturn(expectedDomainId).when(cmd).getDomainId();
772-
773-
Mockito.doReturn(domainVoMock).when(domainDaoMock).findByIdIncludingRemoved(Mockito.anyLong());
774-
775-
Mockito.doReturn(null).when(quotaResponseBuilderSpy).getDomainPathByDomainIdForDomainAdmin(Mockito.any());
776-
Mockito.doReturn(quotaSummaryResponseMock1).when(quotaResponseBuilderSpy).getQuotaSummaryResponse(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
777-
778-
Pair<List<QuotaSummaryResponse>, Integer> result = quotaResponseBuilderSpy.getQuotaSummaryResponseWithListAll(cmd, accountMock);
779-
780-
Assert.assertEquals(quotaSummaryResponseMock1, result);
781-
Mockito.verify(quotaResponseBuilderSpy).getQuotaSummaryResponse(Mockito.any(), Mockito.any(), Mockito.eq(expectedDomainId), Mockito.any(), Mockito.any());
782-
}
783-
784685
@Test
785686
public void validatePositionOnCreatingNewQuotaTariffTestNullValueDoNothing() {
786687
quotaResponseBuilderSpy.validatePositionOnCreatingNewQuotaTariff(quotaTariffVoMock, null);

0 commit comments

Comments
 (0)