createnet: Cleanups around hostdev UI

This commit is contained in:
Cole Robinson 2017-04-03 19:46:16 -04:00
parent 97c8412df6
commit 6d1a3db421
2 changed files with 139 additions and 151 deletions

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.14"/>
<object class="GtkImage" id="image2">
@ -54,9 +54,9 @@
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;span size='large' color='white'&gt;Create virtual network&lt;/span&gt;</property>
<property name="use_markup">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@ -68,9 +68,9 @@
<object class="GtkLabel" id="header-pagenum">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label">&lt;span color='#59B0E2'&gt;Step foo of bar&lt;/span&gt;</property>
<property name="use_markup">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@ -122,10 +122,10 @@
<object class="GtkLabel" id="label167">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Choose a name for your virtual network:</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@ -204,12 +204,12 @@
<object class="GtkLabel" id="label173">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Network _Name:</property>
<property name="use_markup">True</property>
<property name="use_underline">True</property>
<property name="justify">right</property>
<property name="mnemonic_widget">net-name</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -259,11 +259,11 @@
<object class="GtkLabel" id="label19">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Choose &lt;b&gt;IPv4&lt;/b&gt; address space for the virtual network:</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">45</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@ -313,9 +313,9 @@
<object class="GtkLabel" id="label385">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Network:</property>
<property name="use_underline">True</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="expand">False</property>
@ -377,13 +377,13 @@
<object class="GtkLabel" id="label387">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Hint:&lt;/b&gt; The network should be chosen from one of the IPv4 private address ranges. eg 10.0.0.0/8 or 192.168.0.0/16</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="width_chars">40</property>
<property name="max_width_chars">50</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@ -401,8 +401,8 @@
<object class="GtkLabel" id="net-info-gateway">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">192.168.100.1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
@ -413,8 +413,8 @@
<object class="GtkLabel" id="net-info-type">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">?</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
@ -425,8 +425,8 @@
<object class="GtkLabel" id="label25">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Gateway:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -437,8 +437,8 @@
<object class="GtkLabel" id="label28">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Type:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -514,8 +514,8 @@
<object class="GtkLabel" id="label26">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Start:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -526,8 +526,8 @@
<object class="GtkLabel" id="label27">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">End:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -598,9 +598,9 @@
<object class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">&lt;b&gt;to&lt;/b&gt; Network:</property>
<property name="use_markup">True</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -611,9 +611,9 @@
<object class="GtkLabel" id="label20">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">&lt;b&gt;via&lt;/b&gt; Gateway:</property>
<property name="use_markup">True</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -677,11 +677,11 @@
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Choose &lt;b&gt;IPv6&lt;/b&gt; address space for the virtual network:</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">45</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@ -731,9 +731,9 @@
<object class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Network:</property>
<property name="use_underline">True</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="expand">False</property>
@ -795,12 +795,12 @@
<object class="GtkLabel" id="label11">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Note:&lt;/b&gt; The network could be chosen from one of the IPv6 private address ranges. eg FC00::/7. The prefix must be &lt;b&gt;64&lt;/b&gt;. A typical IPv6 network address will look something like: fd00:e81d:a6d7:55::/64</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">45</property>
<property name="xalign">0</property>
<property name="yalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@ -818,8 +818,8 @@
<object class="GtkLabel" id="net-info-gateway-ip6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">fd00:100::1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
@ -830,8 +830,8 @@
<object class="GtkLabel" id="net-info-type-ip6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">?</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
@ -842,8 +842,8 @@
<object class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Type:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -854,8 +854,8 @@
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Gateway:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -931,8 +931,8 @@
<object class="GtkLabel" id="label29">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Start:</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -943,8 +943,8 @@
<object class="GtkLabel" id="label38">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">End:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -1000,9 +1000,9 @@
<object class="GtkLabel" id="label24">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;to&lt;/b&gt; Network:</property>
<property name="use_markup">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -1013,9 +1013,9 @@
<object class="GtkLabel" id="label30">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">&lt;b&gt;via&lt;/b&gt; Gateway:</property>
<property name="use_markup">True</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -1090,103 +1090,15 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkAlignment" id="alignment5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">15</property>
<child>
<object class="GtkBox" id="box14">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkRadioButton" id="net-forward-mode-hostdev">
<property name="label" translatable="yes">_Pool containing all of VFs of a SR-IOV device</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="valign">start</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
<property name="group">net-forward-dev</property>
<signal name="toggled" handler="on_net_forward_toggled" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment8">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">25</property>
<child>
<object class="GtkGrid" id="net-forward-hostdev-table">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_spacing">4</property>
<property name="column_spacing">6</property>
<child>
<object class="GtkLabel" id="label393">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">Device _List:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">net-forward</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="pf-list">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label205">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Connected to a &lt;b&gt;physical network&lt;/b&gt;:</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">50</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@ -1258,7 +1170,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
<property name="position">0</property>
</packing>
</child>
<child>
@ -1277,10 +1189,10 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Destination:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">net-forward</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -1292,10 +1204,10 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">_Mode:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">net-forward-mode</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@ -1330,6 +1242,83 @@
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box14">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkRadioButton" id="net-forward-mode-hostdev">
<property name="label" translatable="yes">_Pool containing all of VFs of a SR-IOV device</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="valign">start</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
<property name="group">net-forward-dev</property>
<signal name="toggled" handler="on_net_forward_toggled" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment8">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">25</property>
<child>
<object class="GtkTable" id="net-forward-hostdev-table">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="column_spacing">6</property>
<property name="row_spacing">4</property>
<child>
<object class="GtkLabel" id="label393">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Device _List:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">net-forward</property>
<property name="xalign">1</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="pf-list">
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="x_options">GTK_FILL</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
@ -1374,11 +1363,11 @@
<object class="GtkLabel" id="label13">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">If an IPv6 network address is &lt;b&gt;not&lt;/b&gt; specified, this will enable IPv6 internal routing between virtual machines. By default, IPv4 internal routing is enabled.</property>
<property name="use_markup">True</property>
<property name="wrap">True</property>
<property name="max_width_chars">30</property>
<property name="xalign">0</property>
</object>
</child>
</object>
@ -1404,8 +1393,8 @@
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">DNS Domain Name:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>

View File

@ -22,6 +22,7 @@ import logging
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import Pango
import ipaddr
@ -123,7 +124,8 @@ class vmmCreateNetwork(vmmGObjectUI):
pf_list = self.widget("pf-list")
pf_model = Gtk.ListStore(str, str)
pf_list.set_model(pf_model)
uiutil.init_combo_text_column(pf_list, 0)
text = uiutil.init_combo_text_column(pf_list, 0)
text.set_property("ellipsize", Pango.EllipsizeMode.MIDDLE)
# [ label, dev name ]
fw_list = self.widget("net-forward")
@ -173,9 +175,8 @@ class vmmCreateNetwork(vmmGObjectUI):
self.widget("net-enable-ipv6-networking").set_active(False)
pf_model = self.widget("pf-list").get_model()
pf_model.clear()
# Populate physical forward devices
fw_model = self.widget("net-forward").get_model()
fw_model.clear()
fw_model.append([_("Any physical device"), None])
@ -189,6 +190,14 @@ class vmmCreateNetwork(vmmGObjectUI):
for name in devnames:
fw_model.append([_("Physical device %s") % name, name])
self.widget("net-forward").set_active(0)
self.widget("net-forward-mode").set_active(0)
# Populate hostdev forward devices
pf_model = self.widget("pf-list").get_model()
pf_model.clear()
devprettynames = []
ifnames = []
@ -204,19 +213,16 @@ class vmmCreateNetwork(vmmGObjectUI):
devprettynames.append(devprettyname)
ifnames.append(ifname)
break
if not devprettynames:
for devprettyname, ifname in zip(devprettynames, ifnames):
pf_model.append([_("%s") % devprettyname, ifname])
if len(pf_model) is 0:
pf_model.append([_("No available device"), None])
else:
for devprettyname, ifname in zip(devprettynames, ifnames):
pf_model.append([_("%s") % devprettyname, ifname])
self.widget("pf-list").set_active(0)
self.widget("net-forward").set_active(0)
self.widget("net-forward-mode").set_active(0)
self.widget("net-forward-none").set_active(True)
##################
# UI get helpers #
##################
@ -517,27 +523,20 @@ class vmmCreateNetwork(vmmGObjectUI):
self.widget("create-finish").grab_focus()
def change_forward_type(self, ignore):
index = self.widget("pf-list").get_active()
model = self.widget("pf-list").get_model()
item = model[index]
if item[1] is None:
sriov_capable = False
else:
sriov_capable = True
sriov_capable = bool(len(self.widget("pf-list").get_model()))
self.widget("net-forward-mode-hostdev").set_sensitive(sriov_capable)
vf_pool = self.widget("net-forward-mode-hostdev").get_active()
if not vf_pool:
skip_fwd = self.widget("net-forward-none").get_active()
self.widget("net-forward-mode").set_sensitive(not skip_fwd)
self.widget("net-forward").set_sensitive(not skip_fwd)
else:
self.widget("net-forward-mode").set_sensitive(False)
self.widget("net-forward").set_sensitive(False)
is_hostdev = self.widget("net-forward-mode-hostdev").get_active()
fwd_sensitive = False
if not is_hostdev:
fwd_sensitive = not self.widget("net-forward-none").get_active()
self.widget("net-forward-hostdev-table").set_sensitive(vf_pool)
self.widget("net-enable-ipv6-networking-box").set_sensitive(not vf_pool)
self.widget("dns-domain-name-box").set_sensitive(not vf_pool)
self.widget("net-forward-mode").set_sensitive(fwd_sensitive)
self.widget("net-forward").set_sensitive(fwd_sensitive)
self.widget("net-forward-hostdev-table").set_sensitive(is_hostdev)
self.widget("net-enable-ipv6-networking-box").set_sensitive(
not is_hostdev)
self.widget("dns-domain-name-box").set_sensitive(not is_hostdev)
def change_ipv4_enable(self, ignore):
enabled = self.get_config_ipv4_enable()