Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Debian Java (http://www.linux-archive.org/debian-java/)
-   -   Network spoke: implement apply method (http://www.linux-archive.org/debian-java/672116-network-spoke-implement-apply-method.html)

Radek Vykydal 05-29-2012 08:12 AM

Network spoke: implement apply method
 
---
pyanaconda/network.py | 148 ++++++++++++++++++-----------------
pyanaconda/ui/gui/spokes/network.py | 39 +++++++++-
2 files changed, 114 insertions(+), 73 deletions(-)

diff --git a/pyanaconda/network.py b/pyanaconda/network.py
index 61470c6..7e4796f 100644
--- a/pyanaconda/network.py
+++ b/pyanaconda/network.py
@@ -586,77 +586,7 @@ class Network:

for devName in devNames:
dev = self.netdevices[devName]
-
- line = "network"
-
- # ipv4 and ipv6
- if dev.get("ONBOOT"):
- line += " --onboot %s" % dev.get("ONBOOT")
- line += " --device %s" % dev.iface
- if dev.get('MTU') and dev.get('MTU') != "0":
- line += " --mtu=%s" % dev.get('MTU')
-
- # ipv4
- if not dev.get('BOOTPROTO'):
- line += " --noipv4"
- else:
- if dev.get('BOOTPROTO').lower() == 'dhcp':
- line += " --bootproto dhcp"
- if dev.get('DHCPCLASS'):
- line += " --dhcpclass %s" % dev.get('DHCPCLASS')
- elif dev.get('IPADDR'):
- line += " --bootproto static --ip %s" % dev.get('IPADDR')
- netmask = dev.get('NETMASK')
- prefix = dev.get('PREFIX')
- if not netmask and prefix:
- netmask = isys.prefix2netmask(int(prefix))
- if netmask:
- line += " --netmask %s" % netmask
- # note that --gateway is common for ipv4 and ipv6
- if dev.get('GATEWAY'):
- line += " --gateway %s" % dev.get('GATEWAY')
-
- # ipv6
- if (not dev.get('IPV6INIT') or
- dev.get('IPV6INIT') == "no"):
- line += " --noipv6"
- else:
- if dev.get('IPV6_AUTOCONF') == "yes":
- line += " --ipv6 auto"
- else:
- if dev.get('IPV6ADDR'):
- line += " --ipv6 %s" % dev.get('IPV6ADDR')
- if dev.get('IPV6_DEFAULTGW'):
- line += " --gateway %s" % dev.get('IPV6_DEFAULTGW')
- if dev.get('DHCPV6') == "yes":
- line += " --ipv6 dhcp"
-
- # ipv4 and ipv6
- dnsline = '
- for key in dev.info.keys():
- if key.upper().startswith('DNS'):
- if dnsline == ':
- dnsline = dev.get(key)
- else:
- dnsline += "," + dev.get(key)
- if dnsline:
- line += " --nameserver %s" % dnsline
-
- if dev.get("ETHTOOL_OPTS"):
- line += " --ethtool %s" % dev.get("ETHTOOL_OPTS")
-
- if dev.get("ESSID"):
- line += " --essid %s" % dev.get("ESSID")
-
- # hostname
- if dev.get("DHCP_HOSTNAME"):
- line += " --hostname %s" % dev.get("DHCP_HOSTNAME")
- elif dev.get("BOOTPROTO").lower != "dhcp":
- if (self.hostname and
- self.hostname != "localhost.localdomain"):
- line += " --hostname %s" % self.hostname
-
- line += "
"
+ line = "%s" % kickstartNetworkData(dev, self.hostname)
f.write(line)

def hasNameServers(self, hash):
@@ -921,6 +851,82 @@ class Network:

return netargs

+def kickstartNetworkData(ifcfg, hostname=None):
+
+ from pyanaconda.kickstart import NetworkData
+ kwargs = {}
+
+ # ipv4 and ipv6
+ if not ifcfg.get("ESSID"):
+ kwargs["device"] = ifcfg.iface
+ if ifcfg.get("ONBOOT") and ifcfg.get("ONBOOT" ) == "no":
+ kwargs["onboot"] = False
+ if ifcfg.get('MTU') and ifcfg.get('MTU') != "0":
+ kwargs["mtu"] = ifcfg.get('MTU')
+
+ # ipv4
+ if not ifcfg.get('BOOTPROTO'):
+ kwargs["noipv4"] = True
+ else:
+ if ifcfg.get('BOOTPROTO').lower() == 'dhcp':
+ kwargs["bootProto"] = "dhcp"
+ if ifcfg.get('DHCPCLASS'):
+ kwargs["dhcpclass"] = ifcfg.get('DHCPCLASS')
+ elif ifcfg.get('IPADDR'):
+ kwargs["bootProto"] = "static"
+ kwargs["ip"] = ifcfg.get('IPADDR')
+ netmask = ifcfg.get('NETMASK')
+ prefix = ifcfg.get('PREFIX')
+ if not netmask and prefix:
+ netmask = isys.prefix2netmask(int(prefix))
+ if netmask:
+ kwargs["netmask"] = netmask
+ # note that --gateway is common for ipv4 and ipv6
+ if ifcfg.get('GATEWAY'):
+ kwargs["gateway"] = ifcfg.get('GATEWAY')
+
+ # ipv6
+ if (not ifcfg.get('IPV6INIT') or
+ ifcfg.get('IPV6INIT') == "no"):
+ kwargs["noipv6"] = True
+ else:
+ if ifcfg.get('IPV6_AUTOCONF') == "yes":
+ kwargs["ipv6"] = "auto"
+ else:
+ if ifcfg.get('IPV6ADDR'):
+ kwargs["ipv6"] = ifcfg.get('IPV6ADDR')
+ if ifcfg.get('IPV6_DEFAULTGW'):
+ kwargs["gateway"] = ifcfg.get('IPV6_DEFAULTGW')
+ if ifcfg.get('DHCPV6') == "yes":
+ kwargs["ipv6"] = "dhcp"
+
+ # ipv4 and ipv6
+ dnsline = '
+ for key in ifcfg.info.keys():
+ if key.upper().startswith('DNS'):
+ if dnsline == ':
+ dnsline = ifcfg.get(key)
+ else:
+ dnsline += "," + ifcfg.get(key)
+ if dnsline:
+ kwargs["nameserver"] = dnsline
+
+ if ifcfg.get("ETHTOOL_OPTS"):
+ kwargs["ethtool"] = ifcfg.get("ETHTOOL_OPTS")
+
+ if ifcfg.get("ESSID"):
+ kwargs["essid"] = ifcfg.get("ESSID")
+
+ # hostname
+ if ifcfg.get("DHCP_HOSTNAME"):
+ kwargs["hostname"] = ifcfg.get("DHCP_HOSTNAME")
+ elif ifcfg.get("BOOTPROTO").lower != "dhcp":
+ if (hostname and
+ hostname != "localhost.localdomain"):
+ kwargs["hostname"] = hostname
+
+ return NetworkData(**kwargs)
+
def getSSIDs(devices_to_scan=None):

rv = {}
diff --git a/pyanaconda/ui/gui/spokes/network.py b/pyanaconda/ui/gui/spokes/network.py
index c513b94..0552650 100644
--- a/pyanaconda/ui/gui/spokes/network.py
+++ b/pyanaconda/ui/gui/spokes/network.py
@@ -39,6 +39,8 @@ from pyanaconda.ui.gui.spokes import NormalSpoke, StandaloneSpoke
from pyanaconda.ui.gui.categories.software import SoftwareCategory
from pyanaconda.ui.gui.hubs.summary import SummaryHub

+from pyanaconda.network import NetworkDevice, netscriptsDir, kickstartNetworkData, getActiveNetDevs
+
from gi.repository import GLib, GObject, Pango, Gio, NetworkManager, NMClient
import dbus
import socket
@@ -923,6 +925,11 @@ class NetworkControlBox():

return sec_str

+ @property
+ def listed_devices(self):
+ return [row[DEVICES_COLUMN_OBJECT] for
+ row in self.builder.get_object("liststore_devices")]
+
class NetworkSpoke(NormalSpoke):
builderObjects = ["networkWindow", "liststore_wireless_network", "liststore_devices"]
mainWidgetName = "networkWindow"
@@ -938,7 +945,11 @@ class NetworkSpoke(NormalSpoke):
self.network_control_box = NetworkControlBox(self.builder)

def apply(self):
- pass
+ self.data.network.network = []
+ for dev in self.network_control_box.listed_devices:
+ network_data = getKSNetworkData(dev)
+ if network_data is not None:
+ self.data.network.network.append(network_data)

@property
def completed(self):
@@ -957,7 +968,6 @@ class NetworkSpoke(NormalSpoke):
NormalSpoke.refresh(self)
self.network_control_box.refresh()

-
class NetworkStandaloneSpoke(StandaloneSpoke):
builderObjects = ["networkStandaloneWindow", "networkControlBox_vbox", "liststore_wireless_network", "liststore_devices"]
mainWidgetName = "networkStandaloneWindow"
@@ -976,6 +986,12 @@ class NetworkStandaloneSpoke(StandaloneSpoke):
self._now_available = False

def apply(self):
+ self.data.network.network = []
+ for dev in self.network_control_box.listed_devices:
+ network_data = getKSNetworkData(dev)
+ if network_data is not None:
+ self.data.network.network.append(network_data)
+
self._now_available = self.network_control_box.status() != _("Not connected")

if not self.payload.baseRepo and not self._initially_available and self._now_available:
@@ -1002,6 +1018,25 @@ class NetworkStandaloneSpoke(StandaloneSpoke):
self.window.hide()
Gtk.main_quit()

+def getKSNetworkData(device):
+ retval = None
+
+ ifcfg_suffix = None
+ if device.get_device_type() == NetworkManager.DeviceType.ETHERNET:
+ ifcfg_suffix = device.get_iface()
+ elif device.get_device_type() == NetworkManager.DeviceType.WIFI:
+ ap = device.get_active_access_point()
+ if ap:
+ ifcfg_suffix = ap.get_ssid()
+
+ if ifcfg_suffix:
+ device_cfg = NetworkDevice(netscriptsDir, ifcfg_suffix)
+ device_cfg.loadIfcfgFile()
+ retval = kickstartNetworkData(device_cfg)
+ if device.get_iface() in getActiveNetDevs():
+ retval.activate = True
+
+ return retval

if __name__ == "__main__":

--
1.7.4

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


All times are GMT. The time now is 07:05 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.