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: