Update get_vm_price method to use pricing defined in VMPricing
This commit is contained in:
parent
0ea9051de1
commit
283a0d25d1
1 changed files with 19 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
from oca.pool import WrongIdError
|
from oca.pool import WrongIdError
|
||||||
|
|
||||||
|
from datacenterlight.models import VMPricing
|
||||||
from hosting.models import UserHostingKey, VMDetail
|
from hosting.models import UserHostingKey, VMDetail
|
||||||
from opennebula_api.serializers import VirtualMachineSerializer
|
from opennebula_api.serializers import VirtualMachineSerializer
|
||||||
|
|
||||||
|
@ -49,14 +50,29 @@ def get_or_create_vm_detail(user, manager, vm_id):
|
||||||
return vm_detail_obj
|
return vm_detail_obj
|
||||||
|
|
||||||
|
|
||||||
def get_vm_price(cpu, memory, disk_size):
|
def get_vm_price(cpu, memory, disk_size, hdd_size=0, pricing_name='default'):
|
||||||
"""
|
"""
|
||||||
A helper function that computes price of a VM from given cpu, ram and
|
A helper function that computes price of a VM from given cpu, ram and
|
||||||
ssd parameters
|
ssd parameters
|
||||||
|
|
||||||
:param cpu: Number of cores of the VM
|
:param cpu: Number of cores of the VM
|
||||||
:param memory: RAM of the VM
|
:param memory: RAM of the VM
|
||||||
:param disk_size: Disk space of the VM
|
:param disk_size: Disk space of the VM (SSD)
|
||||||
|
:param hdd_size: The HDD size
|
||||||
|
:param pricing_name: The pricing name to be used
|
||||||
:return: The price of the VM
|
:return: The price of the VM
|
||||||
"""
|
"""
|
||||||
return (cpu * 5) + (memory * 2) + (disk_size * 0.6)
|
try:
|
||||||
|
pricing = VMPricing.objects.get(name=pricing_name)
|
||||||
|
except Exception as ex:
|
||||||
|
logger.error(
|
||||||
|
"Error getting VMPricing object for {pricing_name}."
|
||||||
|
"Details: {details}".format(
|
||||||
|
pricing_name=pricing_name, details=str(ex)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return None
|
||||||
|
return ((cpu * pricing.cores_unit_price) +
|
||||||
|
(memory * pricing.ram_unit_price) +
|
||||||
|
(disk_size * pricing.sdd_unit_price) +
|
||||||
|
(hdd_size * pricing.hdd_unit_price))
|
||||||
|
|
Loading…
Reference in a new issue