1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2025-07-31 12:41:08 +00:00

lint with black python. convert f style strings to old one. some small fixes

This commit is contained in:
catborise 2020-11-05 12:34:31 +03:00
parent c20c353a40
commit 508e3609be
54 changed files with 2123 additions and 1824 deletions

View file

@ -1,15 +1,21 @@
import re
from django import forms
from django.utils.translation import gettext_lazy as _
class AddNetPool(forms.Form):
name = forms.CharField(error_messages={'required': _('No pool name has been entered')},
max_length=20)
subnet = forms.CharField(error_messages={'required': _('No IPv4 subnet has been entered')},
max_length=20, required=False)
subnet6 = forms.CharField(error_messages={'required': _('No IPv6 subnet has been entered')},
max_length=42, required=False)
name = forms.CharField(error_messages={"required": _("No pool name has been entered")}, max_length=20)
subnet = forms.CharField(
error_messages={"required": _("No IPv4 subnet has been entered")},
max_length=20,
required=False,
)
subnet6 = forms.CharField(
error_messages={"required": _("No IPv6 subnet has been entered")},
max_length=42,
required=False,
)
forward = forms.CharField(max_length=100)
dhcp4 = forms.BooleanField(required=False)
dhcp6 = forms.BooleanField(required=False)
@ -18,38 +24,38 @@ class AddNetPool(forms.Form):
openvswitch = forms.BooleanField(required=False)
def clean_name(self):
name = self.cleaned_data['name']
have_symbol = re.match('^[a-zA-Z0-9\.\_\-]+$', name)
name = self.cleaned_data["name"]
have_symbol = re.match(r"^[a-zA-Z0-9\.\_\-]+$", name)
if not have_symbol:
raise forms.ValidationError(_('The pool name must not contain any special characters'))
raise forms.ValidationError(_("The pool name must not contain any special characters"))
elif len(name) > 20:
raise forms.ValidationError(_('The pool name must not exceed 20 characters'))
raise forms.ValidationError(_("The pool name must not exceed 20 characters"))
return name
def clean_subnet(self):
subnet = self.cleaned_data['subnet']
have_symbol = re.match('^[0-9./]+$', subnet if subnet else ".")
subnet = self.cleaned_data["subnet"]
have_symbol = re.match("^[0-9./]+$", subnet if subnet else ".")
if not have_symbol:
raise forms.ValidationError(_('The IPv4 subnet must not contain any special characters'))
raise forms.ValidationError(_("The IPv4 subnet must not contain any special characters"))
elif len(subnet) > 20:
raise forms.ValidationError(_('The IPv4 subnet must not exceed 20 characters'))
raise forms.ValidationError(_("The IPv4 subnet must not exceed 20 characters"))
return subnet
def clean_subnet6(self):
subnet = self.cleaned_data['subnet6']
have_symbol = re.match('^[0-9a-fA-F:/]+$', subnet if subnet else ":")
subnet = self.cleaned_data["subnet6"]
have_symbol = re.match("^[0-9a-fA-F:/]+$", subnet if subnet else ":")
if not have_symbol:
raise forms.ValidationError(_('The IPv6 subnet must not contain any special characters'))
raise forms.ValidationError(_("The IPv6 subnet must not contain any special characters"))
elif len(subnet) > 42:
raise forms.ValidationError(_('The IPv6 subnet must not exceed 42 characters'))
raise forms.ValidationError(_("The IPv6 subnet must not exceed 42 characters"))
return subnet
def clean_bridge_name(self):
bridge_name = self.cleaned_data['bridge_name']
if self.cleaned_data['forward'] in ['bridge', 'macvtap']:
have_symbol = re.match('^[a-zA-Z0-9\.\_\:\-]+$', bridge_name)
bridge_name = self.cleaned_data["bridge_name"]
if self.cleaned_data["forward"] in ["bridge", "macvtap"]:
have_symbol = re.match(r"^[a-zA-Z0-9\.\_\:\-]+$", bridge_name)
if not have_symbol:
raise forms.ValidationError(_('The pool bridge name must not contain any special characters'))
raise forms.ValidationError(_("The pool bridge name must not contain any special characters"))
elif len(bridge_name) > 20:
raise forms.ValidationError(_('The pool bridge name must not exceed 20 characters'))
raise forms.ValidationError(_("The pool bridge name must not exceed 20 characters"))
return bridge_name

View file

@ -30,35 +30,37 @@ def networks(request, compute_id):
compute.type,
)
networks = conn.get_networks_info()
dhcp4 = netmask4 = gateway4 = ''
dhcp6 = prefix6 = gateway6 = ''
dhcp4 = netmask4 = gateway4 = ""
dhcp6 = prefix6 = gateway6 = ""
ipv4 = ipv6 = False
if request.method == 'POST':
if 'create' in request.POST:
if request.method == "POST":
if "create" in request.POST:
form = AddNetPool(request.POST)
if form.is_valid():
data = form.cleaned_data
if data['name'] in networks:
if data["name"] in networks:
msg = _("Network pool name already in use")
messages.error(request, msg)
errors = True
if data['forward'] in ['bridge', 'macvtap'] and data['bridge_name'] == '':
messages.error(request, _('Please enter bridge/dev name'))
if data["forward"] in ["bridge", "macvtap"] and data["bridge_name"] == "":
messages.error(request, _("Please enter bridge/dev name"))
errors = True
if data['subnet']:
if data["subnet"]:
ipv4 = True
gateway4, netmask4, dhcp4 = network_size(data['subnet'], data['dhcp4'])
if data['subnet6']:
gateway4, netmask4, dhcp4 = network_size(data["subnet"], data["dhcp4"])
if data["subnet6"]:
ipv6 = True
gateway6, prefix6, dhcp6 = network_size(data['subnet6'], data['dhcp6'])
if prefix6 != '64':
messages.error(request, _('For libvirt, the IPv6 network prefix must be /64'))
gateway6, prefix6, dhcp6 = network_size(data["subnet6"], data["dhcp6"])
if prefix6 != "64":
messages.error(
request, _("For libvirt, the IPv6 network prefix must be /64")
)
errors = True
if not errors:
conn.create_network(
data['name'],
data['forward'],
data["name"],
data["forward"],
ipv4,
gateway4,
netmask4,
@ -67,11 +69,13 @@ def networks(request, compute_id):
gateway6,
prefix6,
dhcp6,
data['bridge_name'],
data['openvswitch'],
data['fixed'],
data["bridge_name"],
data["openvswitch"],
data["fixed"],
)
return HttpResponseRedirect(
reverse("network", args=[compute_id, data["name"]])
)
return HttpResponseRedirect(reverse('network', args=[compute_id, data['name']]))
else:
for msg_err in form.errors.values():
messages.error(request, msg_err.as_text())
@ -79,7 +83,7 @@ def networks(request, compute_id):
except libvirtError as lib_err:
messages.error(request, lib_err)
return render(request, 'networks.html', locals())
return render(request, "networks.html", locals())
@superuser_only
@ -128,112 +132,119 @@ def network(request, compute_id, pool):
xml = conn._XMLDesc(0)
except libvirtError as lib_err:
messages.error(request, lib_err)
return HttpResponseRedirect(reverse('networks', args=compute_id))
return HttpResponseRedirect(reverse("networks", args=compute_id))
if request.method == 'POST':
if 'start' in request.POST:
if request.method == "POST":
if "start" in request.POST:
try:
conn.start()
return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err:
messages.error(request, lib_err)
if 'stop' in request.POST:
if "stop" in request.POST:
try:
conn.stop()
return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err:
messages.error(request, lib_err)
if 'delete' in request.POST:
if "delete" in request.POST:
try:
conn.delete()
return HttpResponseRedirect(reverse('networks', args=[compute_id]))
return HttpResponseRedirect(reverse("networks", args=[compute_id]))
except libvirtError as lib_err:
messages.error(request, lib_err)
if 'set_autostart' in request.POST:
if "set_autostart" in request.POST:
try:
conn.set_autostart(1)
return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err:
messages.error(request, lib_err)
if 'unset_autostart' in request.POST:
if "unset_autostart" in request.POST:
try:
conn.set_autostart(0)
return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err:
messages.error(request, lib_err)
if 'modify_fixed_address' in request.POST:
name = request.POST.get('name', '')
address = request.POST.get('address', '')
family = request.POST.get('family', 'ipv4')
if "modify_fixed_address" in request.POST:
name = request.POST.get("name", "")
address = request.POST.get("address", "")
family = request.POST.get("family", "ipv4")
if family == 'ipv4':
mac_duid = request.POST.get('mac', '')
if family == 'ipv6':
mac_duid = request.POST.get('id', '')
if family == "ipv4":
mac_duid = request.POST.get("mac", "")
if family == "ipv6":
mac_duid = request.POST.get("id", "")
try:
ret_val = conn.modify_fixed_address(name, address, mac_duid, family)
messages.success(request, _(f"{family.upper()} Fixed Address Operation Completed."))
messages.success(request, _("Fixed address operation completed for %(family)s") % {"family": family.upper()})
return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err:
messages.error(request, lib_err)
except ValueError as val_err:
messages.error(request, val_err)
if 'delete_fixed_address' in request.POST:
ip = request.POST.get('address', '')
family = request.POST.get('family', 'ipv4')
if "delete_fixed_address" in request.POST:
ip = request.POST.get("address", "")
family = request.POST.get("family", "ipv4")
conn.delete_fixed_address(ip, family)
messages.success(request, _(f"{family.upper()} Fixed Address is Deleted."))
messages.success(request, _("%(family)s Fixed Address is Deleted.") % {"family": family.upper()})
return HttpResponseRedirect(request.get_full_path())
if 'modify_dhcp_range' in request.POST:
range_start = request.POST.get('range_start', '')
range_end = request.POST.get('range_end', '')
family = request.POST.get('family', 'ipv4')
if "modify_dhcp_range" in request.POST:
range_start = request.POST.get("range_start", "")
range_end = request.POST.get("range_end", "")
family = request.POST.get("family", "ipv4")
try:
conn.modify_dhcp_range(range_start, range_end, family)
messages.success(request, _(f"{family.upper()} DHCP Range is Changed."))
messages.success(request, _("%(family)s DHCP Range is Changed.") % {"family": family.upper()})
return HttpResponseRedirect(request.get_full_path())
except libvirtError as lib_err:
messages.error(request, lib_err)
if 'edit_network' in request.POST:
edit_xml = request.POST.get('edit_xml', '')
if "edit_network" in request.POST:
edit_xml = request.POST.get("edit_xml", "")
if edit_xml:
conn.edit_network(edit_xml)
if conn.is_active():
messages.success(request, _("Network XML is changed. \\" "Stop and start network to activate new config."))
messages.success(
request,
_(
"Network XML is changed. \\"
"Stop and start network to activate new config."
),
)
else:
messages.success(request, _("Network XML is changed."))
return HttpResponseRedirect(request.get_full_path())
if 'set_qos' in request.POST:
qos_dir = request.POST.get('qos_direction', '')
average = request.POST.get('qos_average') or 0
peak = request.POST.get('qos_peak') or 0
burst = request.POST.get('qos_burst') or 0
if "set_qos" in request.POST:
qos_dir = request.POST.get("qos_direction", "")
average = request.POST.get("qos_average") or 0
peak = request.POST.get("qos_peak") or 0
burst = request.POST.get("qos_burst") or 0
try:
conn.set_qos(qos_dir, average, peak, burst)
if conn.is_active():
messages.success(
request,
_(f"{qos_dir.capitalize()} QoS is set. Network XML is changed.") +
_("Stop and start network to activate new config"))
_("%(qos_dir)s QoS is updated. Network XML is changed. Stop and start network to activate new config") % {"qos_dir": qos_dir.capitalize()}
)
else:
messages.success(request, _("{} QoS is set").format(qos_dir.capitalize()))
messages.success(request, _("%(qos_dir)s QoS is set") % {"qos_dir": qos_dir.capitalize()})
except libvirtError as lib_err:
messages.error(request, lib_err)
return HttpResponseRedirect(request.get_full_path())
if 'unset_qos' in request.POST:
qos_dir = request.POST.get('qos_direction', '')
if "unset_qos" in request.POST:
qos_dir = request.POST.get("qos_direction", "")
conn.unset_qos(qos_dir)
if conn.is_active():
messages.success(
request,
_(f"{qos_dir.capitalize()} QoS is deleted. Network XML is changed. ") +
_("Stop and start network to activate new config."))
_("%(qos_dir)s QoS is deleted. Network XML is changed. \
Stop and start network to activate new config") % {"qos_dir": qos_dir.capitalize()}
)
else:
messages.success(request, _(f"{qos_dir.capitalize()} QoS is deleted"))
messages.success(request, _("%(qos_dir)s QoS is deleted") % {"qos_dir": qos_dir.capitalize()})
return HttpResponseRedirect(request.get_full_path())
conn.close()
return render(request, 'network.html', locals())
return render(request, "network.html", locals())