Search in sources :

Example 1 with ServiceOfferingVO

use of org.apache.cloudstack.quota.vo.ServiceOfferingVO in project cloudstack by apache.

the class QuotaManagerImpl method updateQuotaRunningVMUsage.

public List<QuotaUsageVO> updateQuotaRunningVMUsage(UsageVO usageRecord, final BigDecimal aggregationRatio) {
    List<QuotaUsageVO> quotalist = new ArrayList<QuotaUsageVO>();
    QuotaUsageVO quota_usage;
    BigDecimal cpuquotausgage, speedquotausage, memoryquotausage, vmusage;
    BigDecimal onehourcostpercpu, onehourcostper100mhz, onehourcostper1mb, onehourcostforvmusage;
    BigDecimal rawusage;
    // get service offering details
    ServiceOfferingVO serviceoffering = _serviceOfferingDao.findServiceOffering(usageRecord.getVmInstanceId(), usageRecord.getOfferingId());
    if (serviceoffering == null)
        return quotalist;
    rawusage = new BigDecimal(usageRecord.getRawUsage());
    QuotaTariffVO tariff = _quotaTariffDao.findTariffPlanByUsageType(QuotaTypes.CPU_NUMBER, usageRecord.getEndDate());
    if (tariff != null && tariff.getCurrencyValue().compareTo(BigDecimal.ZERO) != 0 && serviceoffering.getCpu() != null) {
        BigDecimal cpu = new BigDecimal(serviceoffering.getCpu());
        onehourcostpercpu = tariff.getCurrencyValue().multiply(aggregationRatio);
        cpuquotausgage = rawusage.multiply(onehourcostpercpu).multiply(cpu);
        quota_usage = new QuotaUsageVO(usageRecord.getId(), usageRecord.getZoneId(), usageRecord.getAccountId(), usageRecord.getDomainId(), QuotaTypes.CPU_NUMBER, cpuquotausgage, usageRecord.getStartDate(), usageRecord.getEndDate());
        _quotaUsageDao.persistQuotaUsage(quota_usage);
        quotalist.add(quota_usage);
    }
    tariff = _quotaTariffDao.findTariffPlanByUsageType(QuotaTypes.CPU_CLOCK_RATE, usageRecord.getEndDate());
    if (tariff != null && tariff.getCurrencyValue().compareTo(BigDecimal.ZERO) != 0 && serviceoffering.getSpeed() != null) {
        BigDecimal speed = new BigDecimal(serviceoffering.getSpeed() / 100.00);
        onehourcostper100mhz = tariff.getCurrencyValue().multiply(aggregationRatio);
        speedquotausage = rawusage.multiply(onehourcostper100mhz).multiply(speed);
        quota_usage = new QuotaUsageVO(usageRecord.getId(), usageRecord.getZoneId(), usageRecord.getAccountId(), usageRecord.getDomainId(), QuotaTypes.CPU_CLOCK_RATE, speedquotausage, usageRecord.getStartDate(), usageRecord.getEndDate());
        _quotaUsageDao.persistQuotaUsage(quota_usage);
        quotalist.add(quota_usage);
    }
    tariff = _quotaTariffDao.findTariffPlanByUsageType(QuotaTypes.MEMORY, usageRecord.getEndDate());
    if (tariff != null && tariff.getCurrencyValue().compareTo(BigDecimal.ZERO) != 0 && serviceoffering.getRamSize() != null) {
        BigDecimal memory = new BigDecimal(serviceoffering.getRamSize());
        onehourcostper1mb = tariff.getCurrencyValue().multiply(aggregationRatio);
        memoryquotausage = rawusage.multiply(onehourcostper1mb).multiply(memory);
        quota_usage = new QuotaUsageVO(usageRecord.getId(), usageRecord.getZoneId(), usageRecord.getAccountId(), usageRecord.getDomainId(), QuotaTypes.MEMORY, memoryquotausage, usageRecord.getStartDate(), usageRecord.getEndDate());
        _quotaUsageDao.persistQuotaUsage(quota_usage);
        quotalist.add(quota_usage);
    }
    tariff = _quotaTariffDao.findTariffPlanByUsageType(QuotaTypes.RUNNING_VM, usageRecord.getEndDate());
    if (tariff != null && tariff.getCurrencyValue().compareTo(BigDecimal.ZERO) != 0) {
        onehourcostforvmusage = tariff.getCurrencyValue().multiply(aggregationRatio);
        vmusage = rawusage.multiply(onehourcostforvmusage);
        quota_usage = new QuotaUsageVO(usageRecord.getId(), usageRecord.getZoneId(), usageRecord.getAccountId(), usageRecord.getDomainId(), QuotaTypes.RUNNING_VM, vmusage, usageRecord.getStartDate(), usageRecord.getEndDate());
        _quotaUsageDao.persistQuotaUsage(quota_usage);
        quotalist.add(quota_usage);
    }
    usageRecord.setQuotaCalculated(1);
    _usageDao.persistUsage(usageRecord);
    return quotalist;
}
Also used : QuotaTariffVO(org.apache.cloudstack.quota.vo.QuotaTariffVO) ArrayList(java.util.ArrayList) ServiceOfferingVO(org.apache.cloudstack.quota.vo.ServiceOfferingVO) BigDecimal(java.math.BigDecimal) QuotaUsageVO(org.apache.cloudstack.quota.vo.QuotaUsageVO)

Aggregations

BigDecimal (java.math.BigDecimal)1 ArrayList (java.util.ArrayList)1 QuotaTariffVO (org.apache.cloudstack.quota.vo.QuotaTariffVO)1 QuotaUsageVO (org.apache.cloudstack.quota.vo.QuotaUsageVO)1 ServiceOfferingVO (org.apache.cloudstack.quota.vo.ServiceOfferingVO)1