mirror of
https://github.com/retspen/webvirtcloud
synced 2025-07-31 12:41:08 +00:00
Merge pull request #538 from catborise/master
make cd-rom and input devices optional while instance creating
This commit is contained in:
commit
2dc4048053
11 changed files with 210 additions and 55 deletions
|
@ -199,24 +199,24 @@ class CreateInstanceViewSet(viewsets.ViewSet):
|
|||
firmware["secure"] = "yes"
|
||||
|
||||
ret = conn.create_instance(
|
||||
serializer.validated_data['name'],
|
||||
serializer.validated_data['memory'],
|
||||
serializer.validated_data['vcpu'],
|
||||
serializer.validated_data['vcpu_mode'],
|
||||
util.randomUUID(),
|
||||
arch,
|
||||
machine,
|
||||
firmware,
|
||||
volume_list,
|
||||
serializer.validated_data['networks'],
|
||||
serializer.validated_data['nwfilter'],
|
||||
serializer.validated_data['graphics'],
|
||||
serializer.validated_data['virtio'],
|
||||
serializer.validated_data['listener_addr'],
|
||||
serializer.validated_data['video'],
|
||||
serializer.validated_data['console_pass'],
|
||||
serializer.validated_data['mac'],
|
||||
serializer.validated_data['qemu_ga'],
|
||||
name=serializer.validated_data['name'],
|
||||
memory=serializer.validated_data['memory'],
|
||||
vcpu=serializer.validated_data['vcpu'],
|
||||
vcpu_mode=serializer.validated_data['vcpu_mode'],
|
||||
uuid=util.randomUUID(),
|
||||
arch=arch,
|
||||
machine=machine,
|
||||
firmware=firmware,
|
||||
volumes=volume_list,
|
||||
networks=serializer.validated_data['networks'],
|
||||
nwfilter=serializer.validated_data['nwfilter'],
|
||||
graphics=serializer.validated_data['graphics'],
|
||||
virtio=serializer.validated_data['virtio'],
|
||||
listener_addr=serializer.validated_data['listener_addr'],
|
||||
video=serializer.validated_data['video'],
|
||||
console_pass=serializer.validated_data['console_pass'],
|
||||
mac=serializer.validated_data['mac'],
|
||||
qemu_ga=serializer.validated_data['qemu_ga'],
|
||||
)
|
||||
msg = f"Instance {serializer.validated_data['name']} is created"
|
||||
return Response({'status': msg })
|
||||
|
|
|
@ -3,7 +3,6 @@ from django.utils.functional import cached_property
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from libvirt import VIR_DOMAIN_XML_SECURE
|
||||
from vrtManager.create import wvmCreate
|
||||
from webvirtcloud.settings import QEMU_CONSOLE_LISTENER_ADDRESSES
|
||||
|
||||
from computes.models import Compute
|
||||
|
@ -228,7 +227,7 @@ class MigrateInstance(models.Model):
|
|||
class CreateInstance(models.Model):
|
||||
compute = models.ForeignKey(Compute, related_name='host', on_delete=models.DO_NOTHING)
|
||||
name = models.CharField(max_length=64, error_messages={'required': _('No Virtual Machine name has been entered')})
|
||||
firmware = models.CharField(max_length=50)
|
||||
firmware = models.CharField(max_length=64)
|
||||
vcpu = models.IntegerField(error_messages={'required': _('No VCPU has been entered')})
|
||||
vcpu_mode = models.CharField(max_length=20, blank=True)
|
||||
disk = models.IntegerField(blank=True)
|
||||
|
@ -238,15 +237,17 @@ class CreateInstance(models.Model):
|
|||
storage = models.CharField(max_length=256, blank=True)
|
||||
template = models.CharField(max_length=256, blank=True)
|
||||
images = models.CharField(max_length=256, blank=True)
|
||||
cache_mode = models.CharField(max_length=12, error_messages={'required': _('Please select HDD cache mode')})
|
||||
cache_mode = models.CharField(max_length=16, error_messages={'required': _('Please select HDD cache mode')})
|
||||
hdd_size = models.IntegerField(blank=True)
|
||||
meta_prealloc = models.BooleanField(default=False, blank=True)
|
||||
virtio = models.BooleanField(default=True)
|
||||
qemu_ga = models.BooleanField(default=False)
|
||||
mac = models.CharField(max_length=17, blank=True)
|
||||
console_pass = models.CharField(max_length=64, blank=True)
|
||||
graphics = models.CharField(max_length=12, error_messages={'required': _('Please select a graphics type')})
|
||||
video = models.CharField(max_length=12, error_messages={'required': _('Please select a video driver')})
|
||||
add_cdrom = models.CharField(max_length=16)
|
||||
add_input = models.CharField(max_length=16)
|
||||
graphics = models.CharField(max_length=16, error_messages={'required': _('Please select a graphics type')})
|
||||
video = models.CharField(max_length=16, error_messages={'required': _('Please select a video driver')})
|
||||
listener_addr = models.CharField(max_length=20, choices=QEMU_CONSOLE_LISTENER_ADDRESSES)
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -227,7 +227,7 @@
|
|||
<option value="cirrus">cirrus</option>
|
||||
{% endif %}
|
||||
{% for video in videos %}
|
||||
<option value="{{ video }}">{{ video }}</option>
|
||||
<option value="{{ video }}" {% if default_video == video %}selected{% endif %}>{{ video }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
@ -248,6 +248,32 @@
|
|||
<input class="form-control" type="password" name="console_pass" placeholder="{% trans "Console Password" %}" maxlength="64">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-4 col-form-label">{% trans "Add CD-Rom" %}</label>
|
||||
<div class="col-sm-7">
|
||||
<select class="form-select" id="add_cdrom" name="add_cdrom">
|
||||
<option value="None" {% if bus == default_cdrom %}selected{% endif %}>--{% trans "False" %}--</option>
|
||||
{% for bus in disk_buses %}
|
||||
<option value="{{ bus }}" {% if bus == default_cdrom %}selected {% endif %}>
|
||||
{% trans bus %}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-4 col-form-label">{% trans "Add Input Device" %}</label>
|
||||
<div class="col-sm-7">
|
||||
<select class="form-select" id="add_input" name="add_input">
|
||||
<option value="None" {% if bus == default_input_device_bus %}selected{% endif %}>--{% trans "False" %}--</option>
|
||||
{% for bus in input_device_buses %}
|
||||
<option value="{{ bus }}" {% if bus == default_input_device_bus %}selected{% endif %}>
|
||||
{% trans bus %}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-4 col-form-label">{% trans "Guest Agent" %}</label>
|
||||
<div class="col-sm-7">
|
||||
|
@ -478,6 +504,32 @@
|
|||
<input type="password" class="form-control" name="console_pass" placeholder="{% trans "Console Password" %}" maxlength="64">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 col-form-label">{% trans "Add CD-Rom" %}</label>
|
||||
<div class="col-sm-7">
|
||||
<select class="form-select" id="add_cdrom" name="add_cdrom">
|
||||
<option value="None" {% if bus == default_cdrom %}selected{% endif %} >--{% trans "False" %}--</option>
|
||||
{% for bus in disk_buses %}
|
||||
<option value="{{ bus }}" {% if bus == default_cdrom %}selected {% endif %}>
|
||||
{% trans bus %}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 col-form-label">{% trans "Add Input Device" %}</label>
|
||||
<div class="col-sm-7">
|
||||
<select class="form-select" id="add_input" name="add_input">
|
||||
<option value="None" {% if bus == default_input_device_bus %}selected{% endif %}>--{% trans "False" %}--</option>
|
||||
{% for bus in input_device_buses %}
|
||||
<option value="{{ bus }}" {% if bus == default_input_device_bus %}selected{% endif %}>
|
||||
{% trans bus %}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 col-form-label">{% trans "Guest Agent" %}</label>
|
||||
<div class="col-sm-6">
|
||||
|
@ -694,6 +746,32 @@
|
|||
<input type="password" class="form-control" name="console_pass" placeholder="{% trans "Console Password" %}" maxlength="64">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 col-form-label">{% trans "Add CD-Rom" %}</label>
|
||||
<div class="col-sm-7">
|
||||
<select class="form-select" id="add_cdrom" name="add_cdrom">
|
||||
<option value="None" {% if bus == default_cdrom %}selected{% endif %}>--{% trans "False" %}--</option>
|
||||
{% for bus in disk_buses %}
|
||||
<option value="{{ bus }}" {% if bus == default_cdrom %}selected {% endif %}>
|
||||
{% trans bus %}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 col-form-label">{% trans "Add Input Device" %}</label>
|
||||
<div class="col-sm-7">
|
||||
<select class="form-select" id="add_input" name="add_input">
|
||||
<option value="None" {% if bus == default_input_device_bus %}selected{% endif %}>--{% trans "False" %}--</option>
|
||||
{% for bus in input_device_buses %}
|
||||
<option value="{{ bus }}" {% if bus == default_input_device_bus %}selected{% endif %}>
|
||||
{% trans bus %}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-sm-3 col-form-label">{% trans "Guest Agent" %}</label>
|
||||
<div class="col-sm-6">
|
||||
|
|
|
@ -1376,6 +1376,7 @@ def create_instance(request, compute_id, arch, machine):
|
|||
default_cpu_mode = app_settings.INSTANCE_CPU_DEFAULT_MODE
|
||||
instances = conn.get_instances()
|
||||
videos = conn.get_video_models(arch, machine)
|
||||
default_video = app_settings.INSTANCE_VIDEO_DEFAULT_TYPE
|
||||
cache_modes = sorted(conn.get_cache_modes().items())
|
||||
default_cache = app_settings.INSTANCE_VOLUME_DEFAULT_CACHE
|
||||
default_io = app_settings.INSTANCE_VOLUME_DEFAULT_IO
|
||||
|
@ -1394,6 +1395,9 @@ def create_instance(request, compute_id, arch, machine):
|
|||
nwfilters = conn.get_nwfilters()
|
||||
storages = sorted(conn.get_storages(only_actives=True))
|
||||
default_graphics = app_settings.QEMU_CONSOLE_DEFAULT_TYPE
|
||||
default_cdrom = app_settings.INSTANCE_CDROM_ADD
|
||||
input_device_buses = ['default', 'virtio', 'usb']
|
||||
default_input_device_bus = app_settings.INSTANCE_INPUT_DEFAULT_DEVICE
|
||||
|
||||
dom_caps = conn.get_dom_capabilities(arch, machine)
|
||||
caps = conn.get_capabilities(arch)
|
||||
|
@ -1552,6 +1556,8 @@ def create_instance(request, compute_id, arch, machine):
|
|||
console_pass=data["console_pass"],
|
||||
mac=data["mac"],
|
||||
qemu_ga=data["qemu_ga"],
|
||||
add_cdrom=data["add_cdrom"],
|
||||
add_input=data["add_input"],
|
||||
)
|
||||
create_instance = Instance(compute_id=compute_id, name=data["name"], uuid=uuid)
|
||||
create_instance.save()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue