diff --git a/opennebula_api/serializers.py b/opennebula_api/serializers.py index c7418aa5..3a77c0d8 100644 --- a/opennebula_api/serializers.py +++ b/opennebula_api/serializers.py @@ -46,7 +46,7 @@ class VirtualMachineSerializer(serializers.Serializer): """Serializer to map the virtual machine instance into JSON format.""" name = serializers.SerializerMethodField() - cores = serializers.IntegerField(source='template.vcpu') + cores = serializers.SerializerMethodField() disk = serializers.IntegerField(write_only=True) set_memory = serializers.IntegerField(write_only=True, label='Memory') memory = serializers.SerializerMethodField() @@ -99,6 +99,9 @@ class VirtualMachineSerializer(serializers.Serializer): return manager.get_vm(opennebula_id) + def get_cores(self, obj): + return int(float(obj.template.cpu) * 10) + def get_memory(self, obj): return int(obj.template.memory) / 1024 @@ -127,19 +130,23 @@ class VirtualMachineSerializer(serializers.Serializer): def get_price(self, obj): template = obj.template - price = float(template.vcpu) * 5.0 + price = float(template.cpu) * 10 * 5.0 price += (int(template.memory) / 1024 * 2.0) for disk in template.disks: price += int(disk.size) / 1024 * 0.6 return price def get_configuration(self, obj): - template_id = obj.template.template_id - template = OpenNebulaManager().get_template(template_id) - if template.name.startswith('public-'): - return template.name.lstrip('public-') + if hasattr(obj, 'template'): + if hasattr(obj, 'template.template_id'): + template_id = obj.template.template_id + template = OpenNebulaManager().get_template(template_id) + if template.name.startswith('public-'): + return template.name.lstrip('public-') + else: + return template.name else: - return template.name + return "" def get_ipv4(self, obj): """ diff --git a/utils/hosting_utils.py b/utils/hosting_utils.py index ec97a320..ee65fccf 100644 --- a/utils/hosting_utils.py +++ b/utils/hosting_utils.py @@ -47,7 +47,8 @@ def get_or_create_vm_detail(user, manager, vm_id): vm_detail_obj = VMDetail.objects.create( user=user, vm_id=vm_id, disk_size=vm['disk_size'], cores=vm['cores'], memory=vm['memory'], - configuration=vm['configuration'], ipv4=vm['ipv4'], + configuration="" if vm['configuration'] is None else vm['configuration'], + ipv4=vm['ipv4'], ipv6=vm['ipv6'] ) return vm_detail_obj