blind and brutal 2to3
[nodemanager.git] / plugins / interfaces.py
index 45fd183..fe303a3 100644 (file)
@@ -5,7 +5,7 @@ Configure interfaces inside a container by pulling down files via URL.
 import logger
 import os
 import curlwrapper
-import xmlrpclib
+import xmlrpc.client
 try:
     from hashlib import sha1 as sha
 except ImportError:
@@ -26,16 +26,24 @@ def start():
 def GetSlivers(data, config=None, plc=None):
 
     if 'slivers' not in data:
-        logger.log_missing_data("interfaces.GetSlivers",'slivers')
+        logger.log_missing_data("interfaces.GetSlivers", 'slivers')
         return
 
     for sliver in data['slivers']:
         slicename = sliver['name']
+
+        if not os.path.exists("/vservers/%s" % slicename):
+            # Avoid creating slice directory if slice does not exist, as it
+            # breaks slice creation when sliver_lxc eventually gets around
+            # to creating the sliver.
+            logger.log("vserver %s does not exist yet. Skipping interfaces." % slicename)
+            continue
+
         for tag in sliver['attributes']:
             if tag['tagname'] == 'interface':
                 interfaces = eval(tag['value'])
 
-                if not isinstance(interfaces, (list,tuple)):
+                if not isinstance(interfaces, (list, tuple)):
                     # if interface is not a list, then make it into a singleton list
                     interfaces = [interfaces]
 
@@ -47,7 +55,7 @@ def GetSlivers(data, config=None, plc=None):
                         url = mydict['url']
                         try:
                             contents = curlwrapper.retrieve(url)
-                        except xmlrpclib.ProtocolError,e:
+                        except xmlrpc.client.ProtocolError as e:
                             logger.log('interfaces (%s): failed to retrieve %s' % (slicename, url))
                             continue
                     else:
@@ -58,7 +66,7 @@ def GetSlivers(data, config=None, plc=None):
                             logger.log('interfaces (%s): no DEVICE specified' % slicename)
                             continue
 
-                        for key, value in mydict.items():
+                        for key, value in list(mydict.items()):
                             if key in ['bridge', 'vlan']:
                                 continue
                             contents += '%s="%s"\n' % (key, value)
@@ -81,9 +89,12 @@ def GetSlivers(data, config=None, plc=None):
                         logger.log('interfaces (%s): error writing file %s' % (slicename, dest))
                         continue
 
-                    try:
-                        subprocess.check_call(['/usr/sbin/lxcsu', slicename, '/sbin/service',
-                                               'network', 'restart'])
-                    except:
+                    result = logger.log_call(['/usr/sbin/lxcsu', slicename, '/sbin/service', 'network', 'restart'])
+                    if not result:
                         logger.log('interfaces (%s): error restarting network service' % slicename)
-                    
+#                    try:
+#                        subprocess.check_call(['/usr/sbin/lxcsu', slicename, '/sbin/service',
+#                                               'network', 'restart'])
+#                    except:
+#                        logger.log('interfaces (%s): error restarting network service' % slicename)
+