mirror of
https://github.com/retspen/webvirtcloud
synced 2025-07-31 12:41:08 +00:00
Instances overhaul
This commit is contained in:
parent
f23e6b000f
commit
47009d47ca
69 changed files with 5011 additions and 4127 deletions
66
instances/forms.py
Normal file
66
instances/forms.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
import re
|
||||
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from appsettings.models import AppSettings
|
||||
from webvirtcloud.settings import QEMU_CONSOLE_LISTEN_ADDRESSES, QEMU_KEYMAPS
|
||||
|
||||
from .models import Flavor
|
||||
|
||||
|
||||
class FlavorForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Flavor
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ConsoleForm(forms.Form):
|
||||
type = forms.ChoiceField()
|
||||
listen_on = forms.ChoiceField()
|
||||
generate_password = forms.BooleanField(required=False)
|
||||
clear_password = forms.BooleanField(required=False)
|
||||
password = forms.CharField(widget=forms.PasswordInput(render_value=True), required=False)
|
||||
clear_keymap = forms.BooleanField(required=False)
|
||||
keymap = forms.ChoiceField(required=False)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(ConsoleForm, self).__init__(*args, **kwargs)
|
||||
type_choices = ((c, c) for c in AppSettings.objects.get(key="QEMU_CONSOLE_DEFAULT_TYPE").choices_as_list())
|
||||
keymap_choices = [('auto', 'Auto')] + list((c, c) for c in QEMU_KEYMAPS)
|
||||
self.fields['type'] = forms.ChoiceField(choices=type_choices)
|
||||
self.fields['listen_on'] = forms.ChoiceField(choices=QEMU_CONSOLE_LISTEN_ADDRESSES)
|
||||
self.fields['keymap'] = forms.ChoiceField(choices=keymap_choices)
|
||||
|
||||
|
||||
class NewVMForm(forms.Form):
|
||||
name = forms.CharField(error_messages={'required': _('No Virtual Machine name has been entered')}, max_length=64)
|
||||
firmware = forms.CharField(max_length=50, required=False)
|
||||
vcpu = forms.IntegerField(error_messages={'required': _('No VCPU has been entered')})
|
||||
vcpu_mode = forms.CharField(max_length=20, required=False)
|
||||
disk = forms.IntegerField(required=False)
|
||||
memory = forms.IntegerField(error_messages={'required': _('No RAM size has been entered')})
|
||||
networks = forms.CharField(error_messages={'required': _('No Network pool has been choosen')})
|
||||
nwfilter = forms.CharField(required=False)
|
||||
storage = forms.CharField(max_length=20, required=False)
|
||||
template = forms.CharField(required=False)
|
||||
images = forms.CharField(required=False)
|
||||
cache_mode = forms.CharField(error_messages={'required': _('Please select HDD cache mode')})
|
||||
hdd_size = forms.IntegerField(required=False)
|
||||
meta_prealloc = forms.BooleanField(required=False)
|
||||
virtio = forms.BooleanField(required=False)
|
||||
qemu_ga = forms.BooleanField(required=False)
|
||||
mac = forms.CharField(required=False)
|
||||
console_pass = forms.CharField(required=False, empty_value="", widget=forms.PasswordInput())
|
||||
graphics = forms.CharField(error_messages={'required': _('Please select a graphics type')})
|
||||
video = forms.CharField(error_messages={'required': _('Please select a video driver')})
|
||||
listener_addr = forms.ChoiceField(required=True, widget=forms.RadioSelect, choices=QEMU_CONSOLE_LISTEN_ADDRESSES)
|
||||
|
||||
def clean_name(self):
|
||||
name = self.cleaned_data['name']
|
||||
have_symbol = re.match('^[a-zA-Z0-9._-]+$', name)
|
||||
if not have_symbol:
|
||||
raise forms.ValidationError(_('The name of the virtual machine must not contain any special characters'))
|
||||
elif len(name) > 64:
|
||||
raise forms.ValidationError(_('The name of the virtual machine must not exceed 20 characters'))
|
||||
return name
|
||||
Loading…
Add table
Add a link
Reference in a new issue