1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2024-12-25 23:55:24 +00:00

network: Add network pool mac info. dhcp->dhcp4 conversion.

This commit is contained in:
catborise 2019-11-07 14:07:57 +03:00
parent c5a96b7662
commit 78ec7ac746
5 changed files with 24 additions and 16 deletions

View file

@ -9,7 +9,7 @@ class AddNetPool(forms.Form):
subnet = forms.CharField(error_messages={'required': _('No subnet has been entered')}, subnet = forms.CharField(error_messages={'required': _('No subnet has been entered')},
max_length=20) max_length=20)
forward = forms.CharField(max_length=100) forward = forms.CharField(max_length=100)
dhcp = forms.BooleanField(required=False) dhcp4 = forms.BooleanField(required=False)
fixed = forms.BooleanField(required=False) fixed = forms.BooleanField(required=False)
bridge_name = forms.CharField(max_length=20, required=False) bridge_name = forms.CharField(max_length=20, required=False)
openvswitch = forms.BooleanField(required=False) openvswitch = forms.BooleanField(required=False)

View file

@ -27,9 +27,9 @@
</div> </div>
</div> </div>
<div class="form-group bridge_name_form_group_dhcp"> <div class="form-group bridge_name_form_group_dhcp">
<label class="col-sm-4 control-label">{% trans "DHCP" %}</label> <label class="col-sm-4 control-label">{% trans "DHCPv4" %}</label>
<div class="col-sm-6"> <div class="col-sm-6">
<input type="checkbox" name="dhcp" value="true" checked> <input type="checkbox" name="dhcp4" value="true" checked>
</div> </div>
</div> </div>
<div class="form-group bridge_name_form_group_dhcp"> <div class="form-group bridge_name_form_group_dhcp">

View file

@ -39,14 +39,16 @@
<div class="row"> <div class="row">
<div class="col-xs-6 col-sm-4"> <div class="col-xs-6 col-sm-4">
<p>{% trans "Network name" %}:</p> <p>{% trans "Network Name" %}:</p>
<p>{% trans "Device" %}:</p> <p>{% trans "Device" %}:</p>
<p>{% trans "MAC" %}:</p>
<p>{% trans "State" %}:</p> <p>{% trans "State" %}:</p>
<p>{% trans "Autostart" %}:</p> <p>{% trans "Autostart" %}:</p>
</div> </div>
<div class="col-xs-6 col-sm-6"> <div class="col-xs-6 col-sm-6">
<p>{{ pool }}</p> <p>{{ pool }}</p>
<p>{{ device }}</p> <p>{{ device }}</p>
<p>{{ net_mac }}</p>
<p> <p>
<form action="" method="post" role="form">{% csrf_token %} <form action="" method="post" role="form">{% csrf_token %}
{% ifequal state 0 %} {% ifequal state 0 %}
@ -102,8 +104,8 @@
<div class="col-xs-6 col-sm-4"> <div class="col-xs-6 col-sm-4">
<p>{% trans "IPv4 Forwarding" %}:</p> <p>{% trans "IPv4 Forwarding" %}:</p>
<p>{% trans "Network" %}:</p> <p>{% trans "Network" %}:</p>
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
<p>{% trans "DHCP" %}:</p> <p>{% trans "DHCP" %}:</p>
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
<p>{% trans "Start" %}:</p> <p>{% trans "Start" %}:</p>
<p>{% trans "End" %}:</p> <p>{% trans "End" %}:</p>
{% endif %} {% endif %}
@ -123,7 +125,7 @@
{% trans "ISOLATE" %} {% trans "ISOLATE" %}
{% endif %} {% endif %}
</p> </p>
<p>{{ ipv4_network }}</p> <p>{{ ipv4_network|default:"-" }}</p>
<p> <p>
{% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %} {% if ipv4_dhcp_range_start and ipv4_dhcp_range_end %}
<span class="text-success">{% trans "ON" %}</span> <span class="text-success">{% trans "ON" %}</span>
@ -227,8 +229,8 @@
<div class="col-xs-6 col-sm-4"> <div class="col-xs-6 col-sm-4">
<p>{% trans "IPv6 Forwarding" %}:</p> <p>{% trans "IPv6 Forwarding" %}:</p>
<p>{% trans "Network" %}:</p> <p>{% trans "Network" %}:</p>
{% if ipv6_dhcp_range_start and ipv6_dhcp_range_end %}
<p>{% trans "DHCP" %}:</p> <p>{% trans "DHCP" %}:</p>
{% if ipv6_dhcp_range_start and ipv6_dhcp_range_end %}
<p>{% trans "Start" %}:</p> <p>{% trans "Start" %}:</p>
<p>{% trans "End" %}:</p> <p>{% trans "End" %}:</p>
{% endif %} {% endif %}
@ -241,7 +243,7 @@
{% trans "ROUTE" %} {% trans "ROUTE" %}
{% endif %} {% endif %}
</p> </p>
<p>{{ ipv6_network }}</p> <p>{{ ipv6_network|default:"-" }}</p>
<p> <p>
{% if ipv6_dhcp_range_start and ipv6_dhcp_range_end %} {% if ipv6_dhcp_range_start and ipv6_dhcp_range_end %}
<span class="text-success">{% trans "ON" %}</span> <span class="text-success">{% trans "ON" %}</span>

View file

@ -43,13 +43,13 @@ def networks(request, compute_id):
if data['forward'] == 'bridge' and data['bridge_name'] == '': if data['forward'] == 'bridge' and data['bridge_name'] == '':
error_messages.append('Please enter bridge name') error_messages.append('Please enter bridge name')
try: try:
gateway, netmask, dhcp = network_size(data['subnet'], data['dhcp']) gateway, netmask, dhcp4 = network_size(data['subnet'], data['dhcp4'])
except: except:
error_msg = _("Input subnet pool error") error_msg = _("Input subnet pool error")
error_messages.append(error_msg) error_messages.append(error_msg)
if not error_messages: if not error_messages:
conn.create_network(data['name'], data['forward'], gateway, netmask, conn.create_network(data['name'], data['forward'], gateway, netmask,
dhcp, data['bridge_name'], data['openvswitch'], data['fixed']) dhcp4, 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: else:
for msg_err in form.errors.values(): for msg_err in form.errors.values():
@ -86,6 +86,7 @@ def network(request, compute_id, pool):
state = conn.is_active() state = conn.is_active()
device = conn.get_bridge_device() device = conn.get_bridge_device()
autostart = conn.get_autostart() autostart = conn.get_autostart()
net_mac = conn.get_network_mac()
net_forward = conn.get_network_forward() net_forward = conn.get_network_forward()
dhcp_range_start = ipv4_dhcp_range_end = dict() dhcp_range_start = ipv4_dhcp_range_end = dict()

View file

@ -38,7 +38,7 @@ class wvmNetworks(wvmConnect):
def define_network(self, xml): def define_network(self, xml):
self.wvm.networkDefineXML(xml) self.wvm.networkDefineXML(xml)
def create_network(self, name, forward, gateway, mask, dhcp, bridge, openvswitch, fixed=False): def create_network(self, name, forward, gateway, mask, dhcp4, bridge, openvswitch, fixed=False):
xml = """ xml = """
<network> <network>
<name>%s</name>""" % name <name>%s</name>""" % name
@ -55,12 +55,12 @@ class wvmNetworks(wvmConnect):
if forward != 'bridge': if forward != 'bridge':
xml += """ xml += """
<ip address='%s' netmask='%s'>""" % (gateway, mask) <ip address='%s' netmask='%s'>""" % (gateway, mask)
if dhcp: if dhcp4:
xml += """<dhcp> xml += """<dhcp>
<range start='%s' end='%s' />""" % (dhcp[0], dhcp[1]) <range start='%s' end='%s' />""" % (dhcp4[0], dhcp4[1])
if fixed: if fixed:
fist_oct = int(dhcp[0].strip().split('.')[3]) fist_oct = int(dhcp4[0].strip().split('.')[3])
last_oct = int(dhcp[1].strip().split('.')[3]) last_oct = int(dhcp4[1].strip().split('.')[3])
for ip in range(fist_oct, last_oct + 1): for ip in range(fist_oct, last_oct + 1):
xml += """<host mac='%s' ip='%s.%s' />""" % (util.randomMAC(), gateway[:-2], ip) xml += """<host mac='%s' ip='%s.%s' />""" % (util.randomMAC(), gateway[:-2], ip)
xml += """</dhcp>""" xml += """</dhcp>"""
@ -119,7 +119,7 @@ class wvmNetwork(wvmConnect):
ip_networks = dict() ip_networks = dict()
xml = self._XMLDesc(0) xml = self._XMLDesc(0)
if util.get_xml_path(xml, "/network/ip") is None: if util.get_xml_path(xml, "/network/ip") is None:
return None return ip_networks
tree = etree.fromstring(xml) tree = etree.fromstring(xml)
ips = tree.findall('.ip') ips = tree.findall('.ip')
for ip in ips: for ip in ips:
@ -144,6 +144,11 @@ class wvmNetwork(wvmConnect):
ip_networks[family] = ret ip_networks[family] = ret
return ip_networks return ip_networks
def get_network_mac(self):
xml = self._XMLDesc(0)
mac = util.get_xml_path(xml, "/network/mac/@address")
return mac
def get_network_forward(self): def get_network_forward(self):
xml = self._XMLDesc(0) xml = self._XMLDesc(0)
fw = util.get_xml_path(xml, "/network/forward/@mode") fw = util.get_xml_path(xml, "/network/forward/@mode")