remove svn keywords
[nodemanager.git] / plugins / vsys.py
index 5c9b753..8d4f34c 100644 (file)
@@ -1,16 +1,12 @@
-# $Id$
-# $URL$
-
 """vsys configurator.  Maintains ACLs and script pipes inside vservers based on slice attributes."""
 
 import logger
 import os
 """vsys configurator.  Maintains ACLs and script pipes inside vservers based on slice attributes."""
 
 import logger
 import os
-from sets import Set
 
 VSYSCONF="/etc/vsys.conf"
 VSYSBKEND="/vsys"
 
 
 VSYSCONF="/etc/vsys.conf"
 VSYSBKEND="/vsys"
 
-def start(options, conf):
+def start():
     logger.log("vsys: plugin starting up...")
 
 def GetSlivers(data, config=None, plc=None):
     logger.log("vsys: plugin starting up...")
 
 def GetSlivers(data, config=None, plc=None):
@@ -39,7 +35,7 @@ def GetSlivers(data, config=None, plc=None):
                     _restart = createVsysDir(sliver['name']) or _restart
                 if attribute['value'] in scripts.keys():
                     scripts[attribute['value']].append(sliver['name'])
                     _restart = createVsysDir(sliver['name']) or _restart
                 if attribute['value'] in scripts.keys():
                     scripts[attribute['value']].append(sliver['name'])
+
     # Write the conf
     _restart = writeConf(slices, parseConf()) or _restart
     # Write out the ACLs
     # Write the conf
     _restart = writeConf(slices, parseConf()) or _restart
     # Write out the ACLs
@@ -50,15 +46,15 @@ def GetSlivers(data, config=None, plc=None):
 
 def createVsysDir(sliver):
     '''Create /vsys directory in slice.  Update vsys conf file.'''
 
 def createVsysDir(sliver):
     '''Create /vsys directory in slice.  Update vsys conf file.'''
-    try: 
+    try:
         os.mkdir("/vservers/%s/vsys" % sliver)
         return True
         os.mkdir("/vservers/%s/vsys" % sliver)
         return True
-    except OSError: 
+    except OSError:
         return False
 
 
 def touchAcls():
         return False
 
 
 def touchAcls():
-    '''Creates empty acl files for scripts.  
+    '''Creates empty acl files for scripts.
     To be ran in case of new scripts that appear in the backend.
     Returns list of available scripts.'''
     acls = []
     To be ran in case of new scripts that appear in the backend.
     Returns list of available scripts.'''
     acls = []
@@ -71,12 +67,12 @@ def touchAcls():
                 acls.append(file.replace(".acl", ""))
             else:
                 scripts.append(file)
                 acls.append(file.replace(".acl", ""))
             else:
                 scripts.append(file)
-    for new in (Set(scripts) - Set(acls)):
+    for new in (set(scripts) - set(acls)):
         logger.log("vsys: Found new script %s.  Writing empty acl." % new)
         f = open("%s/%s.acl" %(VSYSBKEND, new), "w")
         f.write("\n")
         f.close()
         logger.log("vsys: Found new script %s.  Writing empty acl." % new)
         f = open("%s/%s.acl" %(VSYSBKEND, new), "w")
         f.write("\n")
         f.close()
-    
+
     return scripts
 
 
     return scripts
 
 
@@ -89,13 +85,16 @@ def writeAcls(currentscripts, oldscripts):
     # and length of non intersection along new scripts is not 0,
     # then dicts are different.
     for (acl, oldslivers) in oldscripts.iteritems():
     # and length of non intersection along new scripts is not 0,
     # then dicts are different.
     for (acl, oldslivers) in oldscripts.iteritems():
-        if (len(oldslivers) != len(currentscripts[acl])) or \
-        (len(Set(oldslivers) - Set(currentscripts[acl])) != 0):
-            _restartvsys = True
-            logger.log("vsys: Updating %s.acl w/ slices %s" % (acl, currentscripts[acl]))
-            f = open("%s/%s.acl" % (VSYSBKEND, acl), "w")
-            for slice in currentscripts[acl]: f.write("%s\n" % slice)
-            f.close()
+        try:
+            if (len(oldslivers) != len(currentscripts[acl])) or \
+            (len(set(oldslivers) - set(currentscripts[acl])) != 0):
+                _restartvsys = True
+                logger.log("vsys: Updating %s.acl w/ slices %s" % (acl, currentscripts[acl]))
+                f = open("%s/%s.acl" % (VSYSBKEND, acl), "w")
+                for slice in currentscripts[acl]: f.write("%s\n" % slice)
+                f.close()
+        except KeyError:
+            logger.log("vsys: #:)# Warning,Not a valid Vsys script,%s"%acl)
     # Trigger a restart
     return _restartvsys
 
     # Trigger a restart
     return _restartvsys
 
@@ -110,7 +109,7 @@ def parseAcls():
                 f = open(root+"/"+file,"r+")
                 scriptname = file.replace(".acl", "")
                 scriptacls[scriptname] = []
                 f = open(root+"/"+file,"r+")
                 scriptname = file.replace(".acl", "")
                 scriptacls[scriptname] = []
-                for slice in f.readlines():  
+                for slice in f.readlines():
                     scriptacls[scriptname].append(slice.rstrip())
                 f.close()
     # return what scripts are configured for which slices.
                     scriptacls[scriptname].append(slice.rstrip())
                 f.close()
     # return what scripts are configured for which slices.
@@ -123,7 +122,7 @@ def writeConf(slivers, oldslivers):
     # and the non intersection of both arrays has length 0,
     # then the arrays are identical.
     if (len(slivers) != len(oldslivers)) or \
     # and the non intersection of both arrays has length 0,
     # then the arrays are identical.
     if (len(slivers) != len(oldslivers)) or \
-    (len(Set(oldslivers) - Set(slivers)) != 0):
+    (len(set(oldslivers) - set(slivers)) != 0):
         logger.log("vsys:  Updating %s" % VSYSCONF)
         f = open(VSYSCONF,"w")
         for sliver in slivers:
         logger.log("vsys:  Updating %s" % VSYSCONF)
         f = open(VSYSCONF,"w")
         for sliver in slivers:
@@ -139,7 +138,7 @@ def parseConf():
     '''Parse the vsys conf and return list of slices in conf.'''
     scriptacls = {}
     slicesinconf = []
     '''Parse the vsys conf and return list of slices in conf.'''
     scriptacls = {}
     slicesinconf = []
-    try: 
+    try:
         f = open(VSYSCONF)
         for line in f.readlines():
             (path, slice) = line.split()
         f = open(VSYSCONF)
         for line in f.readlines():
             (path, slice) = line.split()