Add opennebula api urls and add delete vm api

This commit is contained in:
Modulos 2017-05-11 17:39:59 +02:00
commit b7e8eceb25
4 changed files with 19 additions and 13 deletions

View file

@ -213,6 +213,9 @@ class OpenNebulaManager():
vm_id = self.oneadmin_client.call(
oca.VmTemplate.METHODS['instantiate'],
template_id,
'',
False,
''
)
try:
self.oneadmin_client.call(
@ -226,8 +229,11 @@ class OpenNebulaManager():
return vm_id
def delete_vm(self, vm_id):
vm = self._get_vm(vm_id)
vm.delete()
self.oneadmin_client.call(
oca.VirtualMachine.METHODS['action'],
'terminate',
vm_id
)
def _get_template_pool(self):
try:

View file

@ -98,14 +98,3 @@ class VirtualMachineSerializer(serializers.ModelSerializer):
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))

View file

@ -49,3 +49,12 @@ class VmDetailsView(generics.RetrieveUpdateDestroyAPIView):
queryset = VirtualMachine.objects.all()
serializer_class = VirtualMachineSerializer
def perform_destroy(self, instance):
owner = instance.owner
manager = OpenNebulaManager(email=owner.email,
password=owner.password[0:20],
create_user = True)
manager.delete_vm(instance.opennebula_id)
instance.delete()