convert port to an int before passing it to httplib.HTTPSConnection(). It
[bootmanager.git] / source / steps / WriteNetworkConfig.py
index 524622c..9d5fd81 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, int(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()
 
@@ -155,23 +164,23 @@ def Run( vars, log ):
                 ifnum = interface
                 interface += 1
 
-            int = {}
+            inter = {}
             if network['mac']:
-                int['HWADDR'] = network['mac']
+                inter['HWADDR'] = network['mac']
 
             if network['method'] == "static":
-                int['BOOTPROTO'] = "static"
-                int['IPADDR'] = network['ip']
-                int['NETMASK'] = network['netmask']
+                inter['BOOTPROTO'] = "static"
+                inter['IPADDR'] = network['ip']
+                inter['NETMASK'] = network['netmask']
 
             elif network['method'] == "dhcp":
-                int['BOOTPROTO'] = "dhcp"
+                inter['BOOTPROTO'] = "dhcp"
                 if network['hostname']:
-                    int['DHCP_HOSTNAME'] = network['hostname']
+                    inter['DHCP_HOSTNAME'] = network['hostname']
                 else:
-                    int['DHCP_HOSTNAME'] = hostname
+                    inter['DHCP_HOSTNAME'] = hostname
                 if not network['is_primary']:
-                    int['DHCLIENTARGS'] = "-R subnet-mask"
+                    inter['DHCLIENTARGS'] = "-R subnet-mask"
 
             alias = ""
             ifname=None
@@ -192,32 +201,32 @@ def Run( vars, log ):
                     # 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
+                        inter[var]=value
 
-                    elif setting['name'].upper() in \
+                    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
+                        inter [setting['name'].upper()] = setting['value']
+                        inter ['TYPE']='Wireless'
                     else:
-                        log.write("Warning - ignored setting named %s"%setting['name'])
+                        log.write("Warning - ignored setting named %s\n"%setting['name'])
 
-            if alias and 'HWADDR' in int:
+            if alias and 'HWADDR' in inter:
                 for (dev, i) in interfaces.iteritems():
-                    if i['HWADDR'] == int['HWADDR']:
+                    if i['HWADDR'] == inter['HWADDR']:
                         break
-                del int['HWADDR']
-                interfaces[dev + alias] = int
+                del inter['HWADDR']
+                interfaces[dev + alias] =inter 
                 interface -= 1
             else:
                 if not ifname:
                     ifname="eth%d" % ifnum
                 else:
                     interface -= 1
-                interfaces[ifname] = int
+                interfaces[ifname] =inter 
 
-    for (dev, int) in interfaces.iteritems():
+    for (dev, inter) in interfaces.iteritems():
         path = "%s/etc/sysconfig/network-scripts/ifcfg-%s" % (
                SYSIMG_PATH, dev)
         f = file(path, "w")
@@ -226,7 +235,7 @@ def Run( vars, log ):
         f.write("DEVICE=%s\n" % dev)
         f.write("ONBOOT=yes\n")
         f.write("USERCTL=no\n")
-        for (key, val) in int.iteritems():
+        for (key, val) in inter.iteritems():
             f.write('%s="%s"\n' % (key, val))
 
         f.close()