Merge branch 'master' into task/3697/vm_details_page
This commit is contained in:
		
				commit
				
					
						c7b69ec4d9
					
				
			
		
					 1 changed files with 36 additions and 20 deletions
				
			
		|  | @ -1,5 +1,6 @@ | ||||||
| import ipaddress | import ipaddress | ||||||
| 
 | 
 | ||||||
|  | from builtins import hasattr | ||||||
| from rest_framework import serializers | from rest_framework import serializers | ||||||
| 
 | 
 | ||||||
| from oca import OpenNebulaException | from oca import OpenNebulaException | ||||||
|  | @ -32,7 +33,7 @@ class VirtualMachineTemplateSerializer(serializers.Serializer): | ||||||
|             return 0 |             return 0 | ||||||
| 
 | 
 | ||||||
|     def get_memory(self, obj): |     def get_memory(self, obj): | ||||||
|         return int(obj.template.memory)/1024 |         return int(obj.template.memory) / 1024 | ||||||
| 
 | 
 | ||||||
|     def get_name(self, obj): |     def get_name(self, obj): | ||||||
|         return obj.name.strip('public-') |         return obj.name.strip('public-') | ||||||
|  | @ -57,13 +58,13 @@ class VirtualMachineSerializer(serializers.Serializer): | ||||||
|     configuration = serializers.SerializerMethodField() |     configuration = serializers.SerializerMethodField() | ||||||
| 
 | 
 | ||||||
|     template_id = serializers.ChoiceField( |     template_id = serializers.ChoiceField( | ||||||
|                 choices=[(key.id, key.name) for key in |         choices=[(key.id, key.name) for key in | ||||||
|                          OpenNebulaManager().try_get_templates() |                  OpenNebulaManager().try_get_templates() | ||||||
|                          ], |                  ], | ||||||
|                 source='template.template_id', |         source='template.template_id', | ||||||
|                 write_only=True, |         write_only=True, | ||||||
|                 default=[] |         default=[] | ||||||
|             ) |     ) | ||||||
| 
 | 
 | ||||||
|     def create(self, validated_data): |     def create(self, validated_data): | ||||||
|         owner = validated_data['owner'] |         owner = validated_data['owner'] | ||||||
|  | @ -74,10 +75,10 @@ class VirtualMachineSerializer(serializers.Serializer): | ||||||
| 
 | 
 | ||||||
|         template_id = validated_data['template']['template_id'] |         template_id = validated_data['template']['template_id'] | ||||||
|         specs = { |         specs = { | ||||||
|                     'cpu': cores, |             'cpu': cores, | ||||||
|                     'disk_size': disk, |             'disk_size': disk, | ||||||
|                     'memory': memory, |             'memory': memory, | ||||||
|                 } |         } | ||||||
| 
 | 
 | ||||||
|         try: |         try: | ||||||
|             manager = OpenNebulaManager(email=owner.email, |             manager = OpenNebulaManager(email=owner.email, | ||||||
|  | @ -92,7 +93,7 @@ class VirtualMachineSerializer(serializers.Serializer): | ||||||
|         return manager.get_vm(opennebula_id) |         return manager.get_vm(opennebula_id) | ||||||
| 
 | 
 | ||||||
|     def get_memory(self, obj): |     def get_memory(self, obj): | ||||||
|         return int(obj.template.memory)/1024 |         return int(obj.template.memory) / 1024 | ||||||
| 
 | 
 | ||||||
|     def get_disk_size(self, obj): |     def get_disk_size(self, obj): | ||||||
|         template = obj.template |         template = obj.template | ||||||
|  | @ -104,9 +105,9 @@ class VirtualMachineSerializer(serializers.Serializer): | ||||||
|     def get_price(self, obj): |     def get_price(self, obj): | ||||||
|         template = obj.template |         template = obj.template | ||||||
|         price = float(template.vcpu) * 5.0 |         price = float(template.vcpu) * 5.0 | ||||||
|         price += (int(template.memory)/1024 * 2.0) |         price += (int(template.memory) / 1024 * 2.0) | ||||||
|         for disk in template.disks: |         for disk in template.disks: | ||||||
|             price += int(disk.size)/1024 * 0.6 |             price += int(disk.size) / 1024 * 0.6 | ||||||
|         return price |         return price | ||||||
| 
 | 
 | ||||||
|     def get_configuration(self, obj): |     def get_configuration(self, obj): | ||||||
|  | @ -115,15 +116,30 @@ class VirtualMachineSerializer(serializers.Serializer): | ||||||
|         return template.name.strip('public-') |         return template.name.strip('public-') | ||||||
| 
 | 
 | ||||||
|     def get_ipv4(self, obj): |     def get_ipv4(self, obj): | ||||||
|         nic = obj.template.nics[0] |         """ | ||||||
|         if 'vm-ipv6-nat64-ipv4' in nic.network and is_in_v4_range(nic.mac): |         Get the IPv4s from the given VM | ||||||
|             return str(v4_from_mac(nic.mac)) | 
 | ||||||
|  |         :param obj: The VM in contention | ||||||
|  |         :return: Returns csv string of all IPv4s added to this VM otherwise returns "-" if no IPv4 is available | ||||||
|  |         """ | ||||||
|  |         ipv4 = [] | ||||||
|  |         for nic in obj.template.nics: | ||||||
|  |             if hasattr(nic, 'ip'): | ||||||
|  |                 ipv4.append(nic.ip) | ||||||
|  |         if len(ipv4) > 0: | ||||||
|  |             return ', '.join(ipv4) | ||||||
|         else: |         else: | ||||||
|             return '-' |             return '-' | ||||||
| 
 | 
 | ||||||
|     def get_ipv6(self, obj): |     def get_ipv6(self, obj): | ||||||
|         nic = obj.template.nics[0] |         ipv6 = [] | ||||||
|         return nic.ip6_global |         for nic in obj.template.nics: | ||||||
|  |             if hasattr(nic, 'ip6_global'): | ||||||
|  |                 ipv6.append(nic.ip6_global) | ||||||
|  |         if len(ipv6) > 0: | ||||||
|  |             return ', '.join(ipv6) | ||||||
|  |         else: | ||||||
|  |             return '-' | ||||||
| 
 | 
 | ||||||
|     def get_name(self, obj): |     def get_name(self, obj): | ||||||
|         return obj.name.strip('public-') |         return obj.name.strip('public-') | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue