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
 | 
			
		||||
from oca.pool import WrongIdError
 | 
			
		||||
 | 
			
		||||
from datacenterlight.models import VMPricing
 | 
			
		||||
from hosting.models import UserHostingKey, VMDetail
 | 
			
		||||
from opennebula_api.serializers import VirtualMachineSerializer
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -49,14 +50,29 @@ def get_or_create_vm_detail(user, manager, vm_id):
 | 
			
		|||
    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
 | 
			
		||||
    ssd parameters
 | 
			
		||||
 | 
			
		||||
    :param cpu: Number of cores 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 (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…
	
	Add table
		Add a link
		
	
		Reference in a new issue