Start serialization
This commit is contained in:
parent
ec945cc31b
commit
ba0cc137bc
2 changed files with 135 additions and 0 deletions
|
|
@ -14,12 +14,115 @@ class VirtualMachineTemplate(models.Model):
|
|||
core_price = models.FloatField()
|
||||
disk_size_price = models.FloatField()
|
||||
|
||||
def get_name(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
template = self.manager._get_template(template_id=self.opennebula_id)
|
||||
return template.name
|
||||
|
||||
def get_cores(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
template = self.manager._get_template(template_id=self.opennebula_id).template
|
||||
return int(template.vcpu)
|
||||
|
||||
def get_disk_size(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
template = self.manager._get_template(template_id=self.opennebula_id).template
|
||||
return int(template.disk.size) / 1024
|
||||
|
||||
def get_memory(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
template = self.manager._get_template(template_id=self.opennebula_id).template
|
||||
return int(template.memory) / 1024
|
||||
|
||||
class VirtualMachine(models.Model):
|
||||
"""This class represents an opennebula virtual machine."""
|
||||
opennebula_id = models.IntegerField()
|
||||
template = models.ForeignKey(VirtualMachineTemplate)
|
||||
|
||||
VM_STATE = {
|
||||
'0': 'INIT',
|
||||
'1': 'PENDING',
|
||||
'2': 'HOLD',
|
||||
'3': 'ACTIVE',
|
||||
'4': 'STOPPED',
|
||||
'5': 'SUSPENDED',
|
||||
'6': 'DONE',
|
||||
'8': 'POWEROFF',
|
||||
'9': 'UNDEPLOYED',
|
||||
'10': 'CLONING',
|
||||
'11': 'CLONING_FAILURE',
|
||||
}
|
||||
|
||||
def get_name(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
vm = self.manager._get_vm(vm_id=self.opennebula_id)
|
||||
return vm.name
|
||||
|
||||
def get_cores(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
template = self.manager._get_vm(vm_id=self.opennebula_id).template
|
||||
return int(template.vcpu)
|
||||
|
||||
def get_disk_size(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
template = self.manager._get_vm(vm_id=self.opennebula_id).template
|
||||
try:
|
||||
return template.disk.size
|
||||
except AttributeError:
|
||||
disk_size = 0
|
||||
for disk in template.disks:
|
||||
disk_size += disk.size
|
||||
return disk_size / 1024
|
||||
|
||||
|
||||
def get_memory(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
template = self.manager._get_vm(vm_id=self.opennebula_id).template
|
||||
return int(template.memory)
|
||||
|
||||
def get_id(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
vm = self.manager._get_vm(vm_id=self.opennebula_id)
|
||||
return vm.id
|
||||
|
||||
def get_ip(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
vm = self.manager._get_vm(vm_id=self.opennebula_id)
|
||||
try:
|
||||
return vm.user_template.ungleich_public_ip
|
||||
except AttributeError:
|
||||
return '-'
|
||||
|
||||
def get_state(self):
|
||||
if self.manager is None:
|
||||
self.manager = OpenNebulaManager()
|
||||
|
||||
vm = self.manager._get_vm(vm_id=self.opennebula_id)
|
||||
return self.VM_STATE.get(str(vm.state))
|
||||
|
||||
def get_pirce(self)
|
||||
return 0.0
|
||||
|
||||
class OpenNebulaManager():
|
||||
"""This class represents an opennebula manager."""
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue