dont know how this got in there, but reverting to original copy
[bootmanager.git] / source / steps / WriteNetworkConfig.py
index f7a1262..a58cc87 100644 (file)
@@ -14,6 +14,7 @@ import utils
 import BootServerRequest
 import ModelOptions
 import urlparse
+import httplib
 import BootAPI
 
 def Run( vars, log ):
@@ -97,10 +98,6 @@ def Run( vars, log ):
     utils.makedirs("%s/etc/planetlab" % SYSIMG_PATH)
     plc_config = file("%s/etc/planetlab/plc_config" % SYSIMG_PATH, "w")
 
-    bs= BootServerRequest.BootServerRequest()
-    if bs.BOOTSERVER_CERTS:
-        print >> plc_config, "PLC_BOOT_HOST='%s'" % bs.BOOTSERVER_CERTS.keys()[0]
-
     api_url = vars['BOOT_API_SERVER']
     (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(api_url)
     parts = netloc.split(':')
@@ -109,9 +106,21 @@ def Run( vars, log ):
         port = parts[1]
     else:
         port = '80'
-    print >> plc_config, "PLC_API_HOST='%s'" % host
-    print >> plc_config, "PLC_API_PORT='%s'" % port
-    print >> plc_config, "PLC_API_PATH='%s'" % path
+    try:
+        log.write("getting via https://%s/PlanetLabConf/get_plc_config.php" % host)
+        bootserver = httplib.HTTPSConnection(host, port)
+        bootserver.connect()
+        bootserver.request("GET","https://%s/PlanetLabConf/get_plc_config.php" % host)
+        plc_config.write("%s" % bootserver.getresponse().read())
+        bootserver.close()
+    except:
+        log.write("Failed.  Using old method.")
+        bs= BootServerRequest.BootServerRequest()
+        if bs.BOOTSERVER_CERTS:
+            print >> plc_config, "PLC_BOOT_HOST='%s'" % bs.BOOTSERVER_CERTS.keys()[0]
+        print >> plc_config, "PLC_API_HOST='%s'" % host
+        print >> plc_config, "PLC_API_PORT='%s'" % port
+        print >> plc_config, "PLC_API_PATH='%s'" % path
 
     plc_config.close()
 
@@ -174,20 +183,34 @@ def Run( vars, log ):
                     int['DHCLIENTARGS'] = "-R subnet-mask"
 
             alias = ""
+            ifname=None
             if len(network['nodenetwork_setting_ids']) > 0:
                 settings = BootAPI.call_api_function(vars, "GetNodeNetworkSettings",
                     ({'nodenetwork_setting_id': network['nodenetwork_setting_ids']},))
                 for setting in settings:
-                    if setting['category'].upper() == "WLAN":
-                        if setting['name'].upper() == "SSID":
-                            int['ESSID'] = setting['value']
-                        elif setting['name'].upper() == "IWCONFIG":
-                            int['IWCONFIG'] = setting['value']
-                        elif setting['name'].upper() == "MODE":
-                            int['MODE'] = setting['value']
-                    elif setting['category'].upper() == "MULTIHOME":
-                        if setting['name'].upper() == "ALIAS":
-                            alias = ":" + setting['value']
+                    # to explicitly set interface name
+                    if   setting['name'].upper() == "IFNAME":
+                        ifname=setting['value']
+                    elif setting['name'].upper() == "DRIVER":
+                        # xxx not sure how to do that yet - probably add a line in modprobe.conf
+                        pass
+                    elif setting['name'].upper() == "ALIAS":
+                        alias = ":" + setting['value']
+
+                    # a hack for testing before a new setting is hardcoded here
+                    # use the backdoor setting and put as a value 'var=value'
+                    elif setting['name'].upper() == "BACKDOOR":
+                        [var,value]=setting['value'].split('=',1)
+                        int[var]=value
+
+                    elif setting['name'].lower() in \
+                            [  "mode", "essid", "nw", "freq", "channel", "sens", "rate",
+                               "key", "key1", "key2", "key3", "key4", "securitymode", 
+                               "iwconfig", "iwpriv" ] :
+                        int [setting['name'].upper()] = setting['value']
+                        int ['TYPE']='Wireless'
+                    else:
+                        log.write("Warning - ignored setting named %s\n"%setting['name'])
 
             if alias and 'HWADDR' in int:
                 for (dev, i) in interfaces.iteritems():
@@ -197,7 +220,11 @@ def Run( vars, log ):
                 interfaces[dev + alias] = int
                 interface -= 1
             else:
-                interfaces["eth%d" % ifnum] = int
+                if not ifname:
+                    ifname="eth%d" % ifnum
+                else:
+                    interface -= 1
+                interfaces[ifname] = int
 
     for (dev, int) in interfaces.iteritems():
         path = "%s/etc/sysconfig/network-scripts/ifcfg-%s" % (