Update open_api/vms to include ssh_key and specs
This commit is contained in:
		
					parent
					
						
							
								beb0a8926c
							
						
					
				
			
			
				commit
				
					
						cee507e34f
					
				
			
		
					 1 changed files with 19 additions and 3 deletions
				
			
		|  | @ -70,16 +70,19 @@ class VirtualMachineSerializer(serializers.Serializer): | ||||||
|     """Serializer to map the virtual machine instance into JSON format.""" |     """Serializer to map the virtual machine instance into JSON format.""" | ||||||
| 
 | 
 | ||||||
|     name        = serializers.CharField(read_only=True) |     name        = serializers.CharField(read_only=True) | ||||||
|     cores       = serializers.IntegerField(read_only=True, source='template.vcpu')  |     cores       = serializers.IntegerField(source='template.vcpu')  | ||||||
|  |     disk        = serializers.IntegerField(write_only=True) | ||||||
|  |     memory      = serializers.IntegerField(source='template.memory') | ||||||
|  |      | ||||||
| 
 | 
 | ||||||
|     disk_size   = serializers.SerializerMethodField() |     disk_size   = serializers.SerializerMethodField() | ||||||
|     memory      = serializers.SerializerMethodField() |  | ||||||
|     ip          = serializers.CharField(read_only=True, |     ip          = serializers.CharField(read_only=True, | ||||||
|                                         source='user_template.ungleich_public_ip', |                                         source='user_template.ungleich_public_ip', | ||||||
|                                         default='-') |                                         default='-') | ||||||
|     vm_id       = serializers.IntegerField(read_only=True, source='id') |     vm_id       = serializers.IntegerField(read_only=True, source='id') | ||||||
|     state       = serializers.CharField(read_only=True, source='str_state') |     state       = serializers.CharField(read_only=True, source='str_state') | ||||||
|     price       = serializers.SerializerMethodField() |     price       = serializers.SerializerMethodField() | ||||||
|  |     ssh_key     = serializers.CharField(write_only=True) | ||||||
| 
 | 
 | ||||||
|     template_id = serializers.ChoiceField( |     template_id = serializers.ChoiceField( | ||||||
|                 choices=[(key.id, key.name) for key in |                 choices=[(key.id, key.name) for key in | ||||||
|  | @ -90,13 +93,26 @@ class VirtualMachineSerializer(serializers.Serializer): | ||||||
| 
 | 
 | ||||||
|     def create(self, validated_data): |     def create(self, validated_data): | ||||||
|         owner = validated_data['owner'] |         owner = validated_data['owner'] | ||||||
|  |         ssh_key = validated_data['ssh_key'] | ||||||
|  |         cores = validated_data['template']['vcpu'] | ||||||
|  |         memory = validated_data['template']['memory'] | ||||||
|  |         disk = validated_data['disk'] | ||||||
|  | 
 | ||||||
|         template_id = validated_data['template']['template_id'] |         template_id = validated_data['template']['template_id'] | ||||||
|  |         specs = { | ||||||
|  |                     'cpu' : cores, | ||||||
|  |                     'disk_size' : disk, | ||||||
|  |                     'memory' : memory, | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|         try: |         try: | ||||||
|             manager = OpenNebulaManager(email=owner.email, |             manager = OpenNebulaManager(email=owner.email, | ||||||
|                                         password=owner.password, |                                         password=owner.password, | ||||||
|                                         ) |                                         ) | ||||||
|             opennebula_id = manager.create_vm(template_id) |             opennebula_id = manager.create_vm(template_id=template_id, | ||||||
|  |                                               ssh_key=ssh_key, | ||||||
|  |                                               specs=specs) | ||||||
|         except OpenNebulaException as err: |         except OpenNebulaException as err: | ||||||
|             raise serializers.ValidationError("OpenNebulaException occured. {0}".format(err)) |             raise serializers.ValidationError("OpenNebulaException occured. {0}".format(err)) | ||||||
|          |          | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue