Merge branch 'calculate_price' into opennebula_api
This commit is contained in:
		
				commit
				
					
						4016dcfea9
					
				
			
		
					 2 changed files with 19 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -14,6 +14,18 @@ class VirtualMachineTemplate(models.Model):
 | 
			
		|||
    core_price = models.FloatField()
 | 
			
		||||
    disk_size_price = models.FloatField()
 | 
			
		||||
 | 
			
		||||
    def calculate_price(self):
 | 
			
		||||
        manager = OpenNebulaManager()
 | 
			
		||||
        template = manger._get_template(self.opennebula_id).template
 | 
			
		||||
 | 
			
		||||
        price = int(template.vpcu) * self.core_price
 | 
			
		||||
        price += int(template.memory) / 1024 * self.memory_price
 | 
			
		||||
        try:
 | 
			
		||||
            price += int(template.disk.size) / 1024 * self.disk_size_price
 | 
			
		||||
        except AttributeError:
 | 
			
		||||
            for disk in template.disks:
 | 
			
		||||
                price += int(disk.size) / 1024 * self.disk_size_price
 | 
			
		||||
        return price
 | 
			
		||||
 | 
			
		||||
class VirtualMachine(models.Model):
 | 
			
		||||
    """This class represents an opennebula virtual machine."""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,6 +69,13 @@ class VirtualMachineTemplateTestCase(TestCase):
 | 
			
		|||
        new_count = VirtualMachineTemplate.objects.count()
 | 
			
		||||
        self.assertNotEqual(old_count, new_count)
 | 
			
		||||
 | 
			
		||||
    def test_model_can_calculate_price(self):
 | 
			
		||||
        price = self.cores * self.core_price
 | 
			
		||||
        price += self.memory * self.memory_price
 | 
			
		||||
        price += self.disk_size * self.disk_size_price 
 | 
			
		||||
        self.assertEqual(price, self.template.calculate_price())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class VirtualMachineTestCase(TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue