createnet: Allow disabling dhcp for new virtual networks.

This commit is contained in:
Michal Novotny 2009-09-23 10:07:22 -04:00
parent b4654310f5
commit 859467b8d0
4 changed files with 86 additions and 17 deletions

View File

@ -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 += " <forward/>\n"
xml += " <ip address='%s' netmask='%s'>\n" % (str(ip[1]), str(ip.netmask()))
xml += " <dhcp>\n"
xml += " <range start='%s' end='%s'/>\n" % (str(start), str(end))
xml += " </dhcp>\n"
if self.get_config_dhcp_enable():
xml += " <dhcp>\n"
xml += " <range start='%s' end='%s'/>\n" % (str(start), str(end))
xml += " </dhcp>\n"
xml += " </ip>\n"
xml += "</network>\n"

View File

@ -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:

View File

@ -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):

View File

@ -787,11 +787,45 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<!-- MIG -->
<child>
<widget class="GtkLabel" id="label72">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Enable DHCP:</property>
</widget>
<packing>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="net-dhcp-enable">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="active">True</property>
<property name="use_underline">True</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_net_dhcp_enable_toggled"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<!-- /MIG -->
<child>
<widget class="GtkEntry" id="net-dhcp-end">
<property name="visible">True</property>
@ -804,8 +838,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
@ -821,6 +855,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
@ -831,8 +867,8 @@
<property name="label" translatable="yes">End:</property>
</widget>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@ -844,6 +880,8 @@
<property name="label" translatable="yes">Start:</property>
</widget>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@ -1195,7 +1233,7 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="label315">
<widget class="GtkLabel" id="label-dhcp-end">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">End address:</property>
@ -1211,7 +1249,7 @@
</packing>
</child>
<child>
<widget class="GtkLabel" id="label314">
<widget class="GtkLabel" id="label-dhcp-start">
<property name="visible">True</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Start address:</property>