Add authentication
This commit is contained in:
parent
ef00d676f5
commit
358d70570a
7 changed files with 149 additions and 30 deletions
|
|
@ -60,6 +60,8 @@ class VirtualMachineSerializer(serializers.ModelSerializer):
|
|||
state = serializers.CharField(read_only=True, source='get_state')
|
||||
price = serializers.FloatField(read_only=True, source='get_price')
|
||||
|
||||
owner = serializers.ReadOnlyField(source='owner.name')
|
||||
|
||||
vm_template = VirtualMachineTemplateSerializer(read_only=True)
|
||||
|
||||
vm_template_id = TemplatePrimaryKeyRelatedField(
|
||||
|
|
@ -71,15 +73,18 @@ class VirtualMachineSerializer(serializers.ModelSerializer):
|
|||
model = VirtualMachine
|
||||
fields = ('id', 'opennebula_id', 'vm_template', 'vm_template_id', 'cores', 'name',
|
||||
'disk_size', 'memory', 'ip', 'deploy_id', 'state', 'vm_id',
|
||||
'price')
|
||||
'price', 'owner')
|
||||
read_only_fields = ('opennebula_id', )
|
||||
|
||||
def validate(self, data):
|
||||
# Create the opennebula model
|
||||
manager = OpenNebulaManager(create_user = False)
|
||||
|
||||
try:
|
||||
template_id = data['vm_template'].opennebula_id
|
||||
owner = self.context.get('request').user
|
||||
manager = OpenNebulaManager(email=owner.email,
|
||||
password=owner.password[0:20],
|
||||
create_user = True)
|
||||
opennebula_id = manager.create_vm(template_id)
|
||||
data.update({'opennebula_id':opennebula_id})
|
||||
except OpenNebulaException as err:
|
||||
|
|
@ -90,4 +95,17 @@ class VirtualMachineSerializer(serializers.ModelSerializer):
|
|||
def create(self, validated_data):
|
||||
return VirtualMachine.objects.create(**validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
pass
|
||||
|
||||
def delete(self, instance, validated_data):
|
||||
try:
|
||||
owner = instance.owner
|
||||
manager = OpenNebulaManager(email=owner.email,
|
||||
password=owner.password[0:20],
|
||||
create_user = True)
|
||||
manager.delete_vm(template_id)
|
||||
except OpenNebulaException as err:
|
||||
raise serializers.ValidationError("OpenNebulaException occured. {0}".format(err))
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue