diff --git a/src/virtManager/createnet.py b/src/virtManager/createnet.py
index 997ee3aa3..6293c2d65 100644
--- a/src/virtManager/createnet.py
+++ b/src/virtManager/createnet.py
@@ -62,6 +62,7 @@ class vmmCreateNetwork(gobject.GObject):
"on_create_finish_clicked" : self.finish,
"on_net_forward_toggled" : self.change_forward_type,
"on_net_network_changed": self.change_network,
+ "on_net_dhcp_enable_toggled": self.change_dhcp_enable,
"on_net_dhcp_start_changed": self.change_dhcp_start,
"on_net_dhcp_end_changed": self.change_dhcp_end,
"on_create_help_clicked": self.show_help,
@@ -109,6 +110,7 @@ class vmmCreateNetwork(gobject.GObject):
self.window.get_widget("net-name").set_text("")
self.window.get_widget("net-network").set_text("192.168.100.0/24")
+ self.window.get_widget("net-dhcp-enable").set_active(True)
self.window.get_widget("net-dhcp-start").set_text("")
self.window.get_widget("net-dhcp-end").set_text("")
self.window.get_widget("net-forward-none").set_active(True)
@@ -162,6 +164,11 @@ class vmmCreateNetwork(gobject.GObject):
else:
self.window.get_widget("net-info-type").set_text(_("Other"))
+ def change_dhcp_enable(self, src):
+ val = src.get_active()
+ self.window.get_widget("net-dhcp-start").set_sensitive(val)
+ self.window.get_widget("net-dhcp-end").set_sensitive(val)
+
def change_dhcp_start(self, src):
end = self.get_config_dhcp_start()
self.change_dhcp(src, end)
@@ -219,6 +226,9 @@ class vmmCreateNetwork(gobject.GObject):
name = model[active][2]
return [True, name]
+ def get_config_dhcp_enable(self):
+ return self.window.get_widget("net-dhcp-enable").get_active()
+
def page_changed(self, notebook, page, page_number):
# would you like some spaghetti with your salad, sir?
@@ -247,10 +257,21 @@ class vmmCreateNetwork(gobject.GObject):
self.window.get_widget("summary-ip4-gateway").set_text(str(ip[1]))
self.window.get_widget("summary-ip4-netmask").set_text(str(ip.netmask()))
- start = self.get_config_dhcp_start()
- end = self.get_config_dhcp_end()
- self.window.get_widget("summary-dhcp-start").set_text(str(start))
- self.window.get_widget("summary-dhcp-end").set_text(str(end))
+ if self.get_config_dhcp_enable():
+ start = self.get_config_dhcp_start()
+ end = self.get_config_dhcp_end()
+ self.window.get_widget("summary-dhcp-start").set_text(str(start))
+ self.window.get_widget("summary-dhcp-end").set_text(str(end))
+ self.window.get_widget("label-dhcp-start").set_text( _("Start address:") )
+ self.window.get_widget("label-dhcp-start").show()
+ self.window.get_widget("label-dhcp-end").show()
+ self.window.get_widget("summary-dhcp-start").show()
+ self.window.get_widget("summary-dhcp-end").show()
+ else:
+ self.window.get_widget("label-dhcp-start").set_text( _("Status:") )
+ self.window.get_widget("summary-dhcp-start").set_text( _("Disabled") )
+ self.window.get_widget("label-dhcp-end").hide()
+ self.window.get_widget("summary-dhcp-end").hide()
fw = self.get_config_forwarding()
if fw[0]:
@@ -289,9 +310,12 @@ class vmmCreateNetwork(gobject.GObject):
xml += " \n"
xml += " \n" % (str(ip[1]), str(ip.netmask()))
- xml += " \n"
- xml += " \n" % (str(start), str(end))
- xml += " \n"
+
+ if self.get_config_dhcp_enable():
+ xml += " \n"
+ xml += " \n" % (str(start), str(end))
+ xml += " \n"
+
xml += " \n"
xml += "\n"
diff --git a/src/virtManager/host.py b/src/virtManager/host.py
index 5a5e760bd..3cb56a831 100644
--- a/src/virtManager/host.py
+++ b/src/virtManager/host.py
@@ -344,8 +344,12 @@ class vmmHost(gobject.GObject):
self.window.get_widget("net-ip4-network").set_text(str(network))
dhcp = net.get_ipv4_dhcp_range()
- self.window.get_widget("net-ip4-dhcp-start").set_text(str(dhcp[0]))
- self.window.get_widget("net-ip4-dhcp-end").set_text(str(dhcp[1]))
+ if dhcp is not None:
+ self.window.get_widget("net-ip4-dhcp-start").set_text(str(dhcp[0]))
+ self.window.get_widget("net-ip4-dhcp-end").set_text(str(dhcp[1]))
+ else:
+ self.window.get_widget("net-ip4-dhcp-start").set_text("Disabled")
+ self.window.get_widget("net-ip4-dhcp-end").set_text("Disabled")
(forward, forwardDev) = net.get_ipv4_forward()
if forward:
diff --git a/src/virtManager/network.py b/src/virtManager/network.py
index 5fe9edb8c..64cbce913 100644
--- a/src/virtManager/network.py
+++ b/src/virtManager/network.py
@@ -109,6 +109,9 @@ class vmmNetwork(gobject.GObject):
xml = self.get_xml()
dhcpstart = util.get_xml_path(xml, "/network/ip/dhcp/range[1]/@start")
dhcpend = util.get_xml_path(xml, "/network/ip/dhcp/range[1]/@end")
+ if not dhcpstart or not dhcpend:
+ return None
+
return [IP(dhcpstart), IP(dhcpend)]
def is_read_only(self):
diff --git a/src/vmm-create-net.glade b/src/vmm-create-net.glade
index 9fc65ddb7..515263874 100644
--- a/src/vmm-create-net.glade
+++ b/src/vmm-create-net.glade
@@ -787,11 +787,45 @@
1
2
- 2
- 3
+ 4
+ 5
GTK_FILL
+
+
+
+ True
+ 0
+ Enable DHCP:
+
+
+ 0
+ 1
+ GTK_FILL
+
+
+
+
+
+ True
+ True
+ True
+ True
+ 0
+ True
+
+
+
+ 1
+ 2
+ 0
+ 1
+ GTK_FILL
+
+
+
+
True
@@ -804,8 +838,8 @@
1
2
- 1
- 2
+ 2
+ 3
@@ -821,6 +855,8 @@
1
2
+ 1
+ 2
@@ -831,8 +867,8 @@
End:
- 1
- 2
+ 2
+ 3
GTK_FILL
@@ -844,6 +880,8 @@
Start:
+ 1
+ 2
GTK_FILL
@@ -1195,7 +1233,7 @@
-
+
True
1
End address:
@@ -1211,7 +1249,7 @@
-
+
True
1
Start address: