From 945103b1f788dad8a0d2adab1155a0ea5e265e40 Mon Sep 17 00:00:00 2001 From: Abhinandan Prateek Date: Tue, 21 Jul 2015 15:22:30 +0530 Subject: [PATCH] quota: for quota calc from start date to end date, adjust the credits/debits done during this period --- .../cloudstack/quota/QuotaDBUtilsImpl.java | 23 ++++++++++--------- .../quota/dao/QuotaBalanceDaoImpl.java | 16 +------------ 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaDBUtilsImpl.java b/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaDBUtilsImpl.java index 6aade306550..6493c72f1c0 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaDBUtilsImpl.java +++ b/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaDBUtilsImpl.java @@ -93,14 +93,13 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { } }); QuotaBalanceResponse resp = new QuotaBalanceResponse(); - BigDecimal lastCredits=new BigDecimal(0); + BigDecimal lastCredits = new BigDecimal(0); for (Iterator it = quotaBalance.iterator(); it.hasNext();) { QuotaBalanceVO entry = it.next(); - //s_logger.info("Date=" + entry.getUpdatedOn().toGMTString() + " balance=" + entry.getCreditBalance() + " credit=" + entry.getCreditsId()); + s_logger.info("Date=" + entry.getUpdatedOn().toGMTString() + " balance=" + entry.getCreditBalance() + " credit=" + entry.getCreditsId()); if (entry.getCreditsId() > 0) { - lastCredits=lastCredits.add(entry.getCreditBalance()); - } - else { + lastCredits = lastCredits.add(entry.getCreditBalance()); + } else { resp.setStartQuota(entry.getCreditBalance().add(lastCredits)); break; // add only consecutive credit entries } @@ -117,14 +116,16 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { } Collections.sort(quotaBalance, new Comparator() { public int compare(QuotaBalanceVO o1, QuotaBalanceVO o2) { - return o1.getUpdatedOn().compareTo(o2.getUpdatedOn()); //asc + return o1.getUpdatedOn().compareTo(o2.getUpdatedOn()); // asc } }); - QuotaBalanceResponse resp = new QuotaBalanceResponse(); + QuotaBalanceResponse resp = new QuotaBalanceResponse(); + BigDecimal lastCredits = new BigDecimal(0); for (Iterator it = quotaBalance.iterator(); it.hasNext();) { QuotaBalanceVO entry = it.next(); if (entry.getCreditsId() > 0) { + lastCredits = lastCredits.add(entry.getCreditBalance()); resp.addCredits(entry); it.remove(); } @@ -136,7 +137,7 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { resp.setStartDate(startDate); resp.setStartQuota(startItem.getCreditBalance()); resp.setEndDate(endDate); - resp.setEndQuota(endItem.getCreditBalance()); + resp.setEndQuota(endItem.getCreditBalance().add(lastCredits)); } else { resp.setStartQuota(new BigDecimal(0)); resp.setEndQuota(new BigDecimal(0)); @@ -218,7 +219,7 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { @Override public QuotaTariffVO updateQuotaTariffPlan(QuotaTariffUpdateCmd cmd) { - short opendb=TransactionLegacy.currentTxn().getDatabaseId(); + short opendb = TransactionLegacy.currentTxn().getDatabaseId(); TransactionLegacy.open(TransactionLegacy.USAGE_DB).close(); final int resourceType = cmd.getUsageType(); final BigDecimal quotaCost = new BigDecimal(cmd.getValue()); @@ -258,7 +259,7 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { @Override @SuppressWarnings("deprecation") public Pair, Integer> getUsageRecords(long accountId, long domainId) { - short opendb=TransactionLegacy.currentTxn().getDatabaseId(); + short opendb = TransactionLegacy.currentTxn().getDatabaseId(); TransactionLegacy.open(TransactionLegacy.USAGE_DB).close(); s_logger.debug("getting usage records for account: " + accountId + ", domainId: " + domainId); Filter usageFilter = new Filter(UsageVO.class, "startDate", true, 0L, s_recordtofetch); @@ -278,7 +279,7 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { @Override public ServiceOfferingVO findServiceOffering(Long vmId, long serviceOfferingId) { - short opendb=TransactionLegacy.currentTxn().getDatabaseId(); + short opendb = TransactionLegacy.currentTxn().getDatabaseId(); TransactionLegacy txn = TransactionLegacy.open(TransactionLegacy.CLOUD_DB); ServiceOfferingVO result; try { diff --git a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDaoImpl.java b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDaoImpl.java index b0ee3b6c3fb..78dd3253516 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDaoImpl.java +++ b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDaoImpl.java @@ -124,21 +124,7 @@ public class QuotaBalanceDaoImpl extends GenericDaoBase im return new ArrayList(); } quotaUsageRecords = listBy(sc); - - // get records before startDate to find start balance - List quotaUsageOnOrBeforeStartDate = findQuotaBalance(accountId, domainId, startDate); - for (Iterator it = quotaUsageOnOrBeforeStartDate.iterator(); it.hasNext();) { - QuotaBalanceVO entry = it.next(); - s_logger.info("Date=" + entry.getUpdatedOn().toGMTString() + " balance=" + entry.getCreditBalance() + " credit=" + entry.getCreditsId()); - if (entry.getCreditsId() > 0) { - quotaUsageRecords.add(entry); - } else { - quotaUsageRecords.add(entry); - break; // add only consecutive credit entries and last - // balance entry - } - } - + quotaUsageRecords.addAll(findQuotaBalance(accountId, domainId, startDate)); } finally { txn.close(); }