29 from common.states
import vm_states
30 from cm.utils.decorators
import admin_cm_log
31 from cm.utils.exception
import CMException
32 from cm.models.user
import User
33 from cm.models.vm
import VM
34 from cm.utils.threads.vm
import VMThread
53 def create(caller_id, name, description, image_id, template_id, public_ip_id, iso_list, disk_list, vnc, node_id):
54 user = User.get(caller_id)
55 vms = VM.create(user, name=name, description=description, image_id=image_id,
56 template_id=template_id, public_ip_id=public_ip_id, iso_list=iso_list, disk_list=disk_list,
57 vnc=vnc, groups=[], node_id=node_id)
59 thread = VMThread(vm,
'create')
62 return [vm.dict
for vm
in vms]
78 for vm_id
in vm_id_list:
79 vms.append(VM.admin_get(vm_id))
80 return VM.destroy(vms)
92 def erase(caller_id, vm_id_list):
94 for vm_id
in vm_id_list:
95 vm = VM.admin_get(vm_id)
111 vm = VM.admin_get(vm_id)
112 user = User.get(vm.user.id)
117 VM.save_and_shutdown(user.id, vm, name, description)
133 vms = VM.objects.exclude(state__in=[vm_states[
'closed'], vm_states[
'erased']]).order_by(
'-id')
137 vms = vms.filter(user__id__exact=user_id)
139 return [vm.long_dict
for vm
in vms]
151 vm = VM.admin_get(vm_id)
152 vm_mod = vm.long_dict
169 return VM.restart(vm_id_list)
184 def edit(caller_id, vm_id, name=None, description=None):
186 vm = VM.admin_get(vm_id)
191 vm.description = description
204 vm = VM.admin_get(vm_id)
210 raise CMException(
'vnc_attach')
222 vm = VM.admin_get(vm_id)
228 raise CMException(
'vnc_detach')