started to repair sfadump
[sfa.git] / sfa / plc / sfa-nuke-plc.py
index bdc3892..8436035 100755 (executable)
@@ -7,27 +7,39 @@
 # is not purged by this tool and may be deleted by a command like 'rm'.
 ##
 
-import getopt
 import sys
+import os
+from optparse import OptionParser
 
 from sfa.trust.hierarchy import *
 from sfa.util.record import *
 from sfa.util.table import SfaTable
 from sfa.util.sfalogging import sfa_logger_goes_to_import,sfa_logger
 
-def process_options():
-
-   (options, args) = getopt.getopt(sys.argv[1:], '', [])
-   for opt in options:
-       name = opt[0]
-       val = opt[1]
-
 def main():
-    process_options()
-    sfa_logger_goes_to_import()
-    sfa_logger().info("Purging SFA records from database")
-    table = SfaTable()
-    table.sfa_records_purge()
-
+   usage="%prog: trash the registry DB (the 'sfa' table in the 'planetlab5' database)"
+   parser = OptionParser(usage=usage)
+   parser.add_option('-f','--file-system',dest='clean_fs',action='store_true',default=False,
+                     help='Clean up the /var/lib/sfa/authorities area as well')
+   (options,args)=parser.parse_args()
+   if args:
+      parser.print_help()
+      sys.exit(1)
+   sfa_logger_goes_to_import()
+   sfa_logger().info("Purging SFA records from database")
+   table = SfaTable()
+   table.sfa_records_purge()
+   if options.clean_fs:
+      # just remove all files that do not match 'server.key' or 'server.cert'
+      preserved_files = [ 'server.key', 'server.cert']
+      for (dir,_,files) in os.walk('/var/lib/sfa/authorities'):
+         for file in files:
+            if file in preserved_files: continue
+            path=dir+os.sep+file
+            os.unlink(path)
+            if not os.path.exists(path):
+               sfa_logger().info("Unlinked file %s"%path)
+            else:
+               sfa_logger().error("Could not unlink file %s"%path)
 if __name__ == "__main__":
-    main()
+   main()