plugins are now able to add device specific text to /etc/networking/interfaces
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Mon, 19 Mar 2007 18:56:16 +0000 (18:56 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Mon, 19 Mar 2007 18:56:16 +0000 (18:56 +0000)
example:

where = PluginDescriptor.WHERE_NETWORKSETUP, fnc={"ifaceSupported": callFunction, "configStrings": configStrings}

with
def PluginFunction(session, iface):
session.open(<MainPlugin>, iface)

def callFunction(iface):
if <iface is supported by plugin>:
return PluginFunction
else:
return None

def configSrings(iface):
return "# would add this to adapter iface into /etc/networking/interfaces"

lib/python/Components/Network.py
lib/python/Screens/NetworkSetup.py

index 884f97c..37af0c9 100644 (file)
@@ -113,6 +113,9 @@ class Network:
                                        fp.write("      netmask %d.%d.%d.%d\n" % tuple(iface['netmask']))
                                        if iface.has_key('gateway'):
                                                fp.write("      gateway %d.%d.%d.%d\n" % tuple(iface['gateway']))
+                                               
+                       if iface.has_key("configStrings"):
+                               fp.write("\n" + iface["configStrings"] + "\n")
                        fp.write("\n")
                fp.close()
                self.writeNameserverConfig()
@@ -211,6 +214,7 @@ class Network:
                return None
        
        def setAdapterAttribute(self, iface, attribute, value):
+               print "setting for adapter", iface, "attribute", attribute, " to value", value
                if self.ifaces.has_key(iface):
                        self.ifaces[iface][attribute] = value
 
index 640da61..b4dbc63 100644 (file)
@@ -138,9 +138,14 @@ class AdapterSetup(Screen, ConfigListScreen):
                
                self.extended = None
                for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
-                       callFnc = p.__call__(self.iface)
+                       callFnc = p.__call__["ifaceSupported"](self.iface)
                        if callFnc is not None:
                                self.extended = callFnc
+                               print p.__call__
+                               if p.__call__.has_key("configStrings"):
+                                       self.configStrings = p.__call__["configStrings"]
+                               else:
+                                       self.configStrings = None
                                self.extendedSetup = getConfigListEntry(_('Extended Setup...'), NoSave(ConfigNothing()))
                                self.list.append(self.extendedSetup)
 
@@ -172,8 +177,12 @@ class AdapterSetup(Screen, ConfigListScreen):
                                iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
                        else:
                                iNetwork.removeAdapterAttribute(self.iface, "gateway")
-                                       
-                                       
+                       
+                       print "self.extended:", self.extended
+                       print "self.configStrings:", self.configStrings
+                       if self.extended is not None and self.configStrings is not None:
+                               iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
+
                        iNetwork.deactivateNetworkConfig()
                        iNetwork.writeNetworkConfig()    
                        iNetwork.activateNetworkConfig()