From a539574ef04991a746656cc4a6bcaa1df9776726 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 22 Jul 2015 16:04:38 +0530 Subject: [PATCH] quota: fix stuff Signed-off-by: Rohit Yadav --- plugins/database/quota/pom.xml | 5 +++++ .../org/apache/cloudstack/quota/QuotaDBUtilsImpl.java | 11 ++++++++++- .../src/org/apache/cloudstack/quota/QuotaTypes.java | 3 +-- .../apache/cloudstack/quota/dao/QuotaTariffDao.java | 2 ++ .../cloudstack/quota/dao/QuotaTariffDaoImpl.java | 11 +++++++++++ pom.xml | 1 + 6 files changed, 30 insertions(+), 3 deletions(-) diff --git a/plugins/database/quota/pom.xml b/plugins/database/quota/pom.xml index 6ea1ab18ad5..3748f978d17 100644 --- a/plugins/database/quota/pom.xml +++ b/plugins/database/quota/pom.xml @@ -39,5 +39,10 @@ commons-lang3 ${cs.commons-lang3.version} + + joda-time + joda-time + ${cs.joda-time.version} + 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 6c26a5986ed..340fb504a18 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaDBUtilsImpl.java +++ b/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaDBUtilsImpl.java @@ -37,6 +37,7 @@ import org.apache.cloudstack.api.response.QuotaTariffResponse; import org.apache.cloudstack.quota.dao.QuotaCreditsDao; import org.apache.cloudstack.quota.dao.QuotaTariffDao; import org.apache.log4j.Logger; +import org.joda.time.DateTimeComparator; import org.springframework.stereotype.Component; import javax.ejb.Local; @@ -228,6 +229,7 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { short opendb = TransactionLegacy.currentTxn().getDatabaseId(); TransactionLegacy.open(TransactionLegacy.USAGE_DB).close(); QuotaTariffVO result = null; + boolean updateRecord = false; try { final int resourceType = cmd.getUsageType(); final BigDecimal quotaCost = new BigDecimal(cmd.getValue()); @@ -237,6 +239,9 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { throw new InvalidParameterValueException(String.format("Invalid Usage Resource type=%d provided", resourceType)); } s_logger.debug(String.format("Updating Quota Tariff Plan: Old value=%s, new value=%s for resource type=%d", result.getCurrencyValue(), quotaCost, resourceType)); + if (DateTimeComparator.getDateOnlyInstance().compare(result.getEffectiveOn(), effectiveDate) == 0) { + updateRecord = true; + } result.setCurrencyValue(quotaCost); result.setEffectiveOn(effectiveDate); } catch (Exception pokemon) { @@ -245,7 +250,11 @@ public class QuotaDBUtilsImpl implements QuotaDBUtils { TransactionLegacy.open(opendb).close(); } if (result != null) { - _quotaTariffDao.updateQuotaTariff(result); + if (updateRecord) { + _quotaTariffDao.updateQuotaTariff(result); + } else { + result = _quotaTariffDao.addQuotaTariff(result); + } } return result; } diff --git a/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaTypes.java b/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaTypes.java index 434dd5bf653..05eaf1622b7 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaTypes.java +++ b/plugins/database/quota/src/org/apache/cloudstack/quota/QuotaTypes.java @@ -27,9 +27,8 @@ public class QuotaTypes extends UsageTypes { public static final int CPU_NUMBER = 16; public static final int MEMORY = 17; - public static List responseList = new ArrayList(); - public static List listQuotaUsageTypes() { + final List responseList = new ArrayList(); responseList.add(new QuotaTypeResponse(RUNNING_VM, "Running Vm Usage")); responseList.add(new QuotaTypeResponse(ALLOCATED_VM, "Allocated Vm Usage")); responseList.add(new QuotaTypeResponse(IP_ADDRESS, "IP Address Usage")); diff --git a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaTariffDao.java b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaTariffDao.java index 7e128ba0032..ad8ea5dc36b 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaTariffDao.java +++ b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaTariffDao.java @@ -30,4 +30,6 @@ public interface QuotaTariffDao extends GenericDao { List listAllTariffPlans(Date onOrBefore); boolean updateQuotaTariff(QuotaTariffVO plan); + + QuotaTariffVO addQuotaTariff(QuotaTariffVO plan); } diff --git a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaTariffDaoImpl.java b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaTariffDaoImpl.java index 0bc46208126..bcdb123db8a 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaTariffDaoImpl.java +++ b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaTariffDaoImpl.java @@ -117,4 +117,15 @@ public class QuotaTariffDaoImpl extends GenericDaoBase impl TransactionLegacy.open(opendb).close(); // Switch back return result; } + + @Override + public QuotaTariffVO addQuotaTariff(QuotaTariffVO plan) { + final short opendb = TransactionLegacy.currentTxn().getDatabaseId(); + TransactionLegacy.open(TransactionLegacy.USAGE_DB).close(); // Switch to + // Usage DB + plan.setId(null); + QuotaTariffVO result = this.persist(plan); + TransactionLegacy.open(opendb).close(); // Switch back + return result; + } } diff --git a/pom.xml b/pom.xml index 6d868e5c6b5..2dfb9eb1440 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,7 @@ 2.5.3 2.9.1 2.6.1 + 2.8.1