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…
Reference in a new issue